ETH Price: $1,861.06 (-2.30%)
Gas: 63 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multi Chain

Multichain Addresses

6 addresses found via Blockscan
Transaction Hash
Method
Block
From
To
Value
Safe Transfer Fr...173728362023-05-30 16:10:351 day 11 mins ago1685463035IN
COOLDOGS: COOLDOGS Token
0 ETH0.0017038655.52221869
Safe Transfer Fr...173728362023-05-30 16:10:351 day 11 mins ago1685463035IN
COOLDOGS: COOLDOGS Token
0 ETH0.0078958456.07284709
Set Approval For...173712112023-05-30 10:40:111 day 5 hrs ago1685443211IN
COOLDOGS: COOLDOGS Token
0 ETH0.0016360335.46262608
Set Approval For...173669452023-05-29 20:14:231 day 20 hrs ago1685391263IN
COOLDOGS: COOLDOGS Token
0 ETH0.0015413433.4101763
Set Approval For...173609622023-05-29 0:02:592 days 16 hrs ago1685318579IN
COOLDOGS: COOLDOGS Token
0 ETH0.001272927.59155802
Set Approval For...173594252023-05-28 18:53:472 days 21 hrs ago1685300027IN
COOLDOGS: COOLDOGS Token
0 ETH0.0011519624.96999355
Safe Transfer Fr...173592972023-05-28 18:28:112 days 21 hrs ago1685298491IN
COOLDOGS: COOLDOGS Token
0 ETH0.00338230.35860873
Set Approval For...173548792023-05-28 3:34:473 days 12 hrs ago1685244887IN
COOLDOGS: COOLDOGS Token
0 ETH0.0009797121.23621095
Set Approval For...173548792023-05-28 3:34:473 days 12 hrs ago1685244887IN
COOLDOGS: COOLDOGS Token
0 ETH0.0009802221.23621095
Set Approval For...173504272023-05-27 12:36:234 days 3 hrs ago1685190983IN
COOLDOGS: COOLDOGS Token
0 ETH0.0013502729.25328703
Set Approval For...173499962023-05-27 11:08:474 days 5 hrs ago1685185727IN
COOLDOGS: COOLDOGS Token
0 ETH0.0010856623.53291835
Set Approval For...173486032023-05-27 6:26:474 days 9 hrs ago1685168807IN
COOLDOGS: COOLDOGS Token
0 ETH0.0010713523.22270796
Set Approval For...173485502023-05-27 6:16:114 days 10 hrs ago1685168171IN
COOLDOGS: COOLDOGS Token
0 ETH0.0010996123.82290304
Set Approval For...173476442023-05-27 3:13:234 days 13 hrs ago1685157203IN
COOLDOGS: COOLDOGS Token
0 ETH0.0014675131.80994313
Set Approval For...173467952023-05-27 0:20:594 days 16 hrs ago1685146859IN
COOLDOGS: COOLDOGS Token
0 ETH0.0010995523.83397577
Set Approval For...173279802023-05-24 8:51:357 days 7 hrs ago1684918295IN
COOLDOGS: COOLDOGS Token
0 ETH0.0014269930.93157168
Set Approval For...173256382023-05-24 0:58:117 days 15 hrs ago1684889891IN
COOLDOGS: COOLDOGS Token
0 ETH0.0016396135.54018028
Set Approval For...173243292023-05-23 20:34:237 days 19 hrs ago1684874063IN
COOLDOGS: COOLDOGS Token
0 ETH0.0023114250.10248401
Safe Transfer Fr...173219282023-05-23 12:26:598 days 3 hrs ago1684844819IN
COOLDOGS: COOLDOGS Token
0 ETH0.0061614743.75982422
Set Approval For...173057752023-05-21 5:48:5910 days 10 hrs ago1684648139IN
COOLDOGS: COOLDOGS Token
0 ETH0.0013501929.25150532
Set Approval For...172946922023-05-19 16:22:4711 days 23 hrs ago1684513367IN
COOLDOGS: COOLDOGS Token
0 ETH0.00236851.30216704
Set Approval For...172841942023-05-18 4:54:3513 days 11 hrs ago1684385675IN
COOLDOGS: COOLDOGS Token
0 ETH0.0010536943.35136813
Set Approval For...172835792023-05-18 2:49:5913 days 13 hrs ago1684378199IN
COOLDOGS: COOLDOGS Token
0 ETH0.0013737256.65774575
Transfer From172791462023-05-17 11:45:3514 days 4 hrs ago1684323935IN
COOLDOGS: COOLDOGS Token
0 ETH0.005678147.68675377
Safe Transfer Fr...172686492023-05-16 0:12:3515 days 16 hrs ago1684195955IN
COOLDOGS: COOLDOGS Token
0 ETH0.0055140239.15818846
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Txn Hash Block From To Value
136297282021-11-17 0:21:39560 days 16 hrs ago1637108499
COOLDOGS: COOLDOGS Token
0.15 ETH
136297282021-11-17 0:21:39560 days 16 hrs ago1637108499
COOLDOGS: COOLDOGS Token
0.25 ETH
136297282021-11-17 0:21:39560 days 16 hrs ago1637108499
COOLDOGS: COOLDOGS Token
0.05 ETH
136297282021-11-17 0:21:39560 days 16 hrs ago1637108499
COOLDOGS: COOLDOGS Token
0.15 ETH
136297282021-11-17 0:21:39560 days 16 hrs ago1637108499
COOLDOGS: COOLDOGS Token
0.15 ETH
136297282021-11-17 0:21:39560 days 16 hrs ago1637108499
COOLDOGS: COOLDOGS Token
0.1 ETH
136297282021-11-17 0:21:39560 days 16 hrs ago1637108499
COOLDOGS: COOLDOGS Token
0.25 ETH
136297282021-11-17 0:21:39560 days 16 hrs ago1637108499
COOLDOGS: COOLDOGS Token
0.1 ETH
136297282021-11-17 0:21:39560 days 16 hrs ago1637108499
COOLDOGS: COOLDOGS Token
0.05 ETH
136297282021-11-17 0:21:39560 days 16 hrs ago1637108499
COOLDOGS: COOLDOGS Token
0.5 ETH
136297272021-11-17 0:21:06560 days 16 hrs ago1637108466
COOLDOGS: COOLDOGS Token
0.01 ETH
136297272021-11-17 0:21:06560 days 16 hrs ago1637108466
COOLDOGS: COOLDOGS Token
0.01 ETH
136297272021-11-17 0:21:06560 days 16 hrs ago1637108466
COOLDOGS: COOLDOGS Token
0.05 ETH
136297272021-11-17 0:21:06560 days 16 hrs ago1637108466
COOLDOGS: COOLDOGS Token
0.05 ETH
136297272021-11-17 0:21:06560 days 16 hrs ago1637108466
COOLDOGS: COOLDOGS Token
0.05 ETH
136297272021-11-17 0:21:06560 days 16 hrs ago1637108466
COOLDOGS: COOLDOGS Token
0.15 ETH
136297272021-11-17 0:21:06560 days 16 hrs ago1637108466
COOLDOGS: COOLDOGS Token
0.05 ETH
136297272021-11-17 0:21:06560 days 16 hrs ago1637108466
COOLDOGS: COOLDOGS Token
0.05 ETH
136297272021-11-17 0:21:06560 days 16 hrs ago1637108466
COOLDOGS: COOLDOGS Token
0.05 ETH
136297272021-11-17 0:21:06560 days 16 hrs ago1637108466
COOLDOGS: COOLDOGS Token
0.25 ETH
136297272021-11-17 0:21:06560 days 16 hrs ago1637108466
COOLDOGS: COOLDOGS Token
0.1 ETH
136297272021-11-17 0:21:06560 days 16 hrs ago1637108466
COOLDOGS: COOLDOGS Token
0.5 ETH
136297272021-11-17 0:21:06560 days 16 hrs ago1637108466
COOLDOGS: COOLDOGS Token
0.05 ETH
136297272021-11-17 0:21:06560 days 16 hrs ago1637108466
COOLDOGS: COOLDOGS Token
0.3 ETH
136297262021-11-17 0:20:42560 days 16 hrs ago1637108442
COOLDOGS: COOLDOGS Token
0.1 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
COOLDOGS

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 2 of 2: smart.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import 'db.sol';
library Address {
  
    function isContract(address account) internal view returns (bool) {
       
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

}
library SafeMath {

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        require(c / a == b);
        return c;
    }

    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        // uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return a / b;
    }

    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        require(c >= a);
        return c;
    }
}


interface IAccessControl {
    function hasRole(bytes32 role, address account) external view returns (bool);
    function getRoleAdmin(bytes32 role) external view returns (bytes32);
    function grantRole(bytes32 role, address account) external;
    function revokeRole(bytes32 role, address account) external;
    function renounceRole(bytes32 role, address account) external;
}

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

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

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);
    event Mint(uint indexed index, address indexed minter);
    event Deposit(address indexed account, uint indexed amount);
    event Withdraw(address indexed account, uint indexed amount);
    event NewBid(address indexed bidder, uint indexed amount, uint indexed tokenId);
    event Trade(address indexed seller, address indexed buyer, uint indexed tokenId,uint amount);
    event SellNft(address indexed owner,uint indexed tokenId,uint indexed minPrice);
    event CancelSellNft(address indexed owner,uint indexed tokenId);
    event SaleIsStarted();

    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom(address from, address to, uint256 tokenId) external;
    function transferFrom(address from, address to, uint256 tokenId) external;
    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator) external view returns (bool);
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}

interface IERC721Metadata is IERC721 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

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

}

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

abstract contract AccessControl is Context, IAccessControl, ERC165 {
    struct RoleData {
        mapping (address => bool) members;
        bytes32 adminRole;
    }

    mapping (bytes32 => RoleData) private _roles;
    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IAccessControl).interfaceId
            || super.supportsInterface(interfaceId);
    }

    function hasRole(bytes32 role, address account) public view override returns (bool) {
        return _roles[role].members[account];
    }

    function getRoleAdmin(bytes32 role) public view override returns (bytes32) {
        return _roles[role].adminRole;
    }

    function grantRole(bytes32 role, address account) public virtual override {
        require(hasRole(getRoleAdmin(role), _msgSender()), "AccessControl: sender must be an admin to grant");

        _grantRole(role, account);
    }

    function revokeRole(bytes32 role, address account) public virtual override {
        require(hasRole(getRoleAdmin(role), _msgSender()), "AccessControl: sender must be an admin to revoke");

        _revokeRole(role, account);
    }

    function renounceRole(bytes32 role, address account) public virtual override {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");

        _revokeRole(role, account);
    }

    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        emit RoleAdminChanged(role, getRoleAdmin(role), adminRole);
        _roles[role].adminRole = adminRole;
    }

    function _grantRole(bytes32 role, address account) private {
        if (!hasRole(role, account)) {
            _roles[role].members[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) private {
        if (hasRole(role, account)) {
            _roles[role].members[account] = false;
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}

contract ERC721 is  Context, ERC165, AccessControl, IERC721, IERC721Metadata {
    using Address for address;
    using SafeMath for uint256;

    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
    bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE");

    string private _name;
    string private _symbol;
    string public _preSaleAddrs;
    string internal baseURI;
    uint internal price = 0.05 ether;
    uint internal presellPrice = 0.05 ether;
    uint256 internal tokensSold = 0;
    bool public _startSale = false;

    uint256 constant MAX_SUPPLY = 5000;
    address public royalty;


    mapping (uint => ForSale) public nftForSale;
    mapping (uint256 => address) private _owners;
    mapping (address => uint256) private _balances;
    mapping (uint256 => address) private _tokenApprovals;
    mapping (address => mapping (address => bool)) private _operatorApprovals;
    mapping (uint256 => string) private _tokenURIs; 
    mapping (address => uint256[]) public tokensPerOwner;
    mapping(address => uint256[]) internal ownerToIds;
    mapping(uint256 => uint256) internal idToOwnerIndex;
   
    struct ForSale {
        uint nft_uid;
        address owner;
        address bidder;
        uint minValue;
        uint highestBid;
    }
   
    constructor (string memory name_, string memory symbol_,string memory baseURI_,address _royalty) {
        _name = name_;
        _symbol = symbol_;
        baseURI = baseURI_;
        royalty = _royalty;
    }
    

    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165, AccessControl) 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 totalSupply() public view returns (uint256) {
        return tokensSold;
    }

    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        return string(abi.encodePacked(_baseURI(), toString(tokenId)));
    }

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


    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "ERC721: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    function transferFrom(address from, address to, uint256 tokenId) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {
        _mint(to, tokenId);
        require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function 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 _addNFToken(address _to, uint256 _tokenId) internal {
        require(_owners[_tokenId] == address(0), "Cannot add, already owned.");
        _owners[_tokenId] = _to;

        ownerToIds[_to].push(_tokenId);
        idToOwnerIndex[_tokenId] = ownerToIds[_to].length.sub(1);
    }

    function _removeNFToken(address _from, uint256 _tokenId) internal {
        require(_owners[_tokenId] == _from, "Incorrect owner.");
        delete _owners[_tokenId];
        delete nftForSale[_tokenId];
        uint256 tokenToRemoveIndex = idToOwnerIndex[_tokenId];
        uint256 lastTokenIndex = ownerToIds[_from].length.sub(1);

        if (lastTokenIndex != tokenToRemoveIndex) {
            uint256 lastToken = ownerToIds[_from][lastTokenIndex];
            ownerToIds[_from][tokenToRemoveIndex] = lastToken;
            idToOwnerIndex[lastToken] = tokenToRemoveIndex;
        }

        ownerToIds[_from].pop();
        emit CancelSellNft(_msgSender(),_tokenId);
    }
	function _getAddrQuantity(address to) internal virtual returns (uint256 value) {
		return _balances[to];
	}
    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;
        tokensSold += 1;
        tokensPerOwner[to].push(tokenId);
        _addNFToken(to, tokenId);
        emit Mint(tokenId, to);
        emit Transfer(address(0), to, tokenId);
    } 
    function devMint(uint count, address recipient) external {
        require(hasRole(MINTER_ROLE, _msgSender()), "You must have minter role to change baseURI");
        require(tokensSold+count <=5000, "The tokens limit has reached.");
        for (uint i = 0; i < count; i++) {
            uint256 _tokenId = tokensSold + 1;
            _mint(recipient, _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];
        tokensPerOwner[owner].push(tokenId);
        emit Transfer(owner, address(0), tokenId);
    }

    function _transfer(address from, address to, uint256 tokenId) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        _approve(address(0), tokenId);
        
        _removeNFToken(from, tokenId);
        _addNFToken(to, tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        
        emit Transfer(from, to, tokenId);
    }

    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)
        private returns (bool)
    {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    // solhint-disable-next-line no-inline-assembly
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { }
}
contract COOLDOGS is ERC721  {
    using SafeMath for uint256;
    using db for address;

    bool private lock = false;
    bool public contractPaused;
    uint256 constant CONTRACT_ROYALTY = 2;//Contract royalty in percent
    
    mapping (address => uint256) public ethBalance;



    constructor() ERC721("COOLDOGS", "COOLDOGS", " http://cooldogs.io/json/" ,address(0xFf156F43db92180d035093fc1775Fe678Bbbc659)) {

        _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
        _setupRole(ADMIN_ROLE, _msgSender());
        _setupRole(MINTER_ROLE, _msgSender());
    }
    modifier nonReentrant {
        require(!lock, "ReentrancyGuard: reentrant call");
        lock = true;
        _;
        lock = false;
    }
	modifier contains (string memory what, string memory where) {
		bytes memory whatBytes = bytes (what);
		bytes memory whereBytes = bytes (where);

		bool found = false;
		for (uint i = 0; i < whereBytes.length - whatBytes.length; i++) {
			bool flag = true;
			for (uint j = 0; j < whatBytes.length; j++)
				if (whereBytes [i + j] != whatBytes [j]) {
					flag = false;
					break;
				}
			if (flag) {
				found = true;
				break;
			}
		}
		require (found);

		_;
	}

    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721) returns (bool) {
        return super.supportsInterface(interfaceId);
    }

    function pauseContract(bool _paused) external  {
        require(hasRole(MINTER_ROLE, _msgSender()), "You must have minter role to pause the contract");
        contractPaused = _paused;
    }

    function setBaseURI(string memory newURI) public returns (bool) {
        require(hasRole(MINTER_ROLE, _msgSender()), "You must have minter role to change baseURI");
        baseURI = newURI;
        return true;

    }

    function changeRoyaltyAddr(address _newRoyaltyAddr) public returns(bool){
        require(hasRole(MINTER_ROLE, _msgSender()), "You must have minter role to change royalty address");
        royalty = _newRoyaltyAddr;
        return true;
    }


    function getTokensByOwner(address _owner) public view returns (uint256[] memory){
        return ownerToIds[_owner];
    }

    function toSellNFT(uint tokenId, uint minPrice) public returns (bool){
        require(_isApprovedOrOwner(_msgSender(), tokenId), "The seller is not owner or approved");
        nftForSale[tokenId] =ForSale(tokenId,_msgSender(),address(0),minPrice,0);
        emit SellNft(_msgSender(),tokenId,minPrice);
        return true;
    }

    function toCancelSaleOfNFT(uint tokenId) public returns (bool){
        require(_isApprovedOrOwner(_msgSender(), tokenId), "The seller is not owner or approved");
        delete nftForSale[tokenId];
        emit CancelSellNft(_msgSender(),tokenId);
        return true;
    }


    function toMakeBid(uint tokenId) public payable nonReentrant returns(bool){
        require(_exists(tokenId), "The token is nonexistent");
        ForSale memory order = nftForSale[tokenId];
        require(order.owner != address(0),"The token is not for sale");
        require(!_isApprovedOrOwner(_msgSender(), tokenId), "The owner can't make bid");
        if (order.bidder == _msgSender()){
            require(msg.value > 0,"Insufficient funds to make bid");
            order.highestBid = order.highestBid.add(msg.value);
        } else{
            require(msg.value >= order.minValue && msg.value > order.highestBid, "Insufficient funds to make bid");
            order.highestBid = msg.value;
            order.bidder = _msgSender();
        }
        ethBalance[_msgSender()] = ethBalance[_msgSender()].add(msg.value);
        nftForSale[tokenId] = order;
        emit Deposit(_msgSender(),msg.value);
        emit NewBid(_msgSender(),order.highestBid,tokenId);
        return true;
    }

    function toAcceptBid(uint tokenId) public nonReentrant returns(bool){
        require(!contractPaused);
        require(_exists(tokenId), "The token is nonexistent");
        ForSale memory order = nftForSale[tokenId];
        require(order.owner != address(0),"The token is not for sale");
        require(_isApprovedOrOwner(_msgSender(), tokenId), "Only owner or approved can accept the bid");
        require(ethBalance[order.bidder] >= order.highestBid,"Insufficient funds of the bidder balance");
        delete nftForSale[tokenId];
        uint256 total_royalty = order.highestBid / 100 * CONTRACT_ROYALTY;
        ethBalance[order.bidder] = ethBalance[order.bidder].sub(order.highestBid);
        ethBalance[_msgSender()] = ethBalance[_msgSender()].add(order.highestBid);
        ethBalance[_msgSender()] = ethBalance[_msgSender()].sub(total_royalty);
        (bool success, ) = royalty.call{value:total_royalty}("");
        require(success);
        _transfer(order.owner,order.bidder,tokenId);
        emit CancelSellNft(_msgSender(),tokenId);
        emit Trade(_msgSender(),order.bidder,order.highestBid,tokenId);
        emit Transfer(order.owner,order.bidder,tokenId);
        return true;
    }

    function startSale() external {
        require(hasRole(MINTER_ROLE, _msgSender()), "You must have minter role to change baseURI");
        require(!_startSale);
        _startSale = true;
        emit SaleIsStarted();
    }
 
    function buyNFT(uint quantity)external payable nonReentrant returns(bool, uint){
        require(!contractPaused);
		require(quantity>0, "Quantity must be more than 0");
		require(quantity<11, "Quantity must be less than 11"); 
		if (!_startSale) {
			require (_msgSender().checkAddr(), "The sale hasn't started."); 
			require(_getAddrQuantity(_msgSender())+quantity<=2, "Allowed 2 nft per account on presale");
		} else 
			require(_getAddrQuantity(_msgSender())+quantity<=10, "Allowed 10 nft per account");
        require(tokensSold+quantity <=5000, "The tokens limit has reached.");
        if (_startSale)
            require(msg.value*quantity >= price, "Insufficient funds to purchase.");
        else 
            require(msg.value*quantity >= presellPrice, "Insufficient funds to purchase.");
        (bool success, ) = royalty.call{value:msg.value}("");
        require(success); 
        uint _tokenId;
		for (uint i = 0; i < quantity; i++) {
			_tokenId = tokensSold + 1;
			_mint(_msgSender(), _tokenId);       
		}			
        return (true,_tokenId);
    }

    function withdraw(uint amount) external nonReentrant {
        require(!contractPaused);
        require(amount <= ethBalance[_msgSender()],"Insufficient funds to withdraw.");
        ethBalance[_msgSender()] = ethBalance[_msgSender()].sub(amount);
        (bool success, ) = msg.sender.call{value:amount}("");
        require(success);
        emit Withdraw(_msgSender(), amount);
    }

    function deposit() external payable {
        ethBalance[_msgSender()] = ethBalance[_msgSender()].add(msg.value);
        emit Deposit(_msgSender(), msg.value);
    }


}

File 1 of 2: db.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

library db {

    function checkAddr(address s) external  pure returns(bool value){ 
		// presale addresses 
		if (s!=address(0x62941F356d3970E8D664DEc2c582Ee2EC3805548) && 
			s!=address(0xDEcE12D4d665Fb56074bC55E570Df6712A55b752) && 
			s!=address(0x150190d0366614235b2C5565d9cAA252B11dD991) && 
			s!=address(0x51788f5368ee42DF50b3C55FcE45922E5F9EdeFa) && 
			s!=address(0xb49E2b3880747dd6A0b1b358ed8E45FAF10ddd8C) && 
			s!=address(0x95518B05380fB6a2e17aF6e9803E9e2A35f4b8C0) && 
			s!=address(0xbeE1d3c370BA866f37e82E1904b99501DD6691c7) && 
			s!=address(0xbE738E69458300681D73DC2ffD70A5a036A92085) && 
			s!=address(0x6327091c07bEE2B0C1a6c8d7264588Ef8eC8630f) && 
			s!=address(0x3b948564D44A2E6dd9c1b91D2dCb2E96E466Dca6) && 
			s!=address(0x81780b4510B14578698A4491387D8a9878435809) && 
			s!=address(0xf9CCF3FA201e8F37D1D97ED49A100263B9341C1C) && 
			s!=address(0xC9eBf230c414230bE5d6E18fe701A4e57b372882) && 
			s!=address(0x7aE8D7E6f91578b65db930B157804F41bc638162) && 
			s!=address(0xc87bc4ACe7686A59a1D74E375f1E317ce63CD674) && 
			s!=address(0x48832ae2f9E1e55D03cE2A9205778dC24e679CE0) && 
			s!=address(0x295b5608733c6A9AA3cb09c1bF8ba0EA20a55241) && 
			s!=address(0x51a6267e133E67f8b6659E2717C0c89b67E8C1b8) && 
			s!=address(0x63F55dbCcEB9eABB160D43F2EE4fBa250B1a4cA7) && 
			s!=address(0x06614468348405A7a33f986b17A1c38e84976838) && 
			s!=address(0xC76d6052cF0c3a398EEBC36024A8b687734f8FeB) && 
			s!=address(0x7Cf05c0d20E07a137B6bDd7609dD7193D6bAa56E) && 
			s!=address(0x049cfB79a2E95AcE64E9daa1515A4D82eCfb0E15) && 
			s!=address(0x87ADd8D1b9c51F48999ea310Dab4aE40d7BF0d74) && 
			s!=address(0x49373c9b31644Bae4Bb62c13e5Fb8Ba237B4256b) && 
			s!=address(0x2cf36532203fe6565Fd12a89a2C2AdbB0bfBf572) && 
			s!=address(0xD9d12559B86A11dA9d248204991b4e2A410E36Ad) && 
			s!=address(0x6cB6f90F9CF02F1099c13Aa962a4a0BE7f6264e3) && 
			s!=address(0xD1e34CBCd7a4758CCF4D28249e8cB13748bAc556) && 
			s!=address(0x8396a60f85bbA2939CD51fa6c8Bc5991245741E7) && 
			s!=address(0xf37C9b5eC24dF24EB004104D78a5Ce49184cfFfc) && 
			s!=address(0x30bb881A96213b4dcA453564E9eEca366F4dB4d4) && 
			s!=address(0xC8FE7A7ACcDBEC1768cB032aBBe42462a482E81b) && 
			s!=address(0x72a4dc78c0C4A2F804eC467cbD6c3f89063cE62a) && 
			s!=address(0x5df4F4708A4973e80397d54cA7BFAC85a576c6A9) && 
			s!=address(0xF710CB8b6e445272300a95991C7a60fEeB95Fa7C) && 
			s!=address(0x4ee71A9e87968819299aC8a58eC2a7EefA510EC7) && 
			s!=address(0x650C29081b64702807C08D9Caad8cf54d6BA0d22) && 
			s!=address(0xdDC9FD90FC8D5a5692455480d47Ce1C6aEe8B5c2) && 
			s!=address(0x7949ef5B6FfEE4344Ad67Ec6BdAef53Ef9E8C6Bf) && 
			s!=address(0xB53D91d342b020C7CC25367EdBf8e96D6C5E4c6F) && 
			s!=address(0xD7DFaBD435c7A446F2F045305144f0f003352a24) && 
			s!=address(0xa3f7FE5f82eA5DB2e8F163AfB99494b3f0c278a6) && 
			s!=address(0x9C2821F70cfef1bB0E69A1d6FC0c1a3E074c880e) && 
			s!=address(0xdD80e1a7527e860B5541580b219Bb82e6CDA2D2d) && 
			s!=address(0x2397Ad315FaCA9c593C0571C527FAbdfd6b9723C) && 
			s!=address(0xF7161CFe40D4B21D9B6F87C19d9Ff424D8675d3E) && 
			s!=address(0xE42bCC958fA7b7CC2457A96378B438F7f083150e) && 
			s!=address(0x0E9387d15170732d7a487686CD3584929f0D8a5c) && 
			s!=address(0x7B26DC03A87b06A13F7a5C6e302c34dbB48F1fEa) && 
			s!=address(0x69a1C8BAf95EE4A36dCd6E9BCdaAE42B055D4e82) && 
			s!=address(0xaEC5065f734B0D68164db2e8fC2C00286da29E9f) && 
			s!=address(0xfBE6006A193560150F63902B7C8B69fa8739Bc95) && 
			s!=address(0xF94FE01dd17116C09bF7076b2DEe0FC114ba047C) && 
			s!=address(0x4b1C90314de121236D1F196268d8e542Dc6701cb) && 
			s!=address(0x01253e208f245BDF3bfA3BfDee025FDE9E70c305) && 
			s!=address(0x36Ade9BAe1ec913244713A2983Df1b63Cf7C5Ea8) && 
			s!=address(0xf1F62C800C5e42F028F82518a9FBd803d57D2762) && 
			s!=address(0x0D626f36A6cEcfFd69B8C34f30dAD2CE8Fa59847) && 
			s!=address(0x3Cb0893587298AD4385395e999420Cc99c24c3Cd) && 
			s!=address(0x46d81a39f3D94BfaC36c0121855Ca1f71B1b2D79) && 
			s!=address(0x951caE59AB0feEd5aeEEB56C6d5e1aB07408521c) && 
			s!=address(0xe78B4EFF96DD4cA9e49995335532410f69394cfB) && 
			s!=address(0x8047c7FD3e9d36E6f50edED32013D6424c61A0E3) && 
			s!=address(0xF063718bC448EFC9399Aa7D7D256f3B3b4b8680a) && 
			s!=address(0xEbB7Eb5046Fa95590233688a61f5A8ca0B092DA3) && 
			s!=address(0xB811693939bB37971AF154A5B5eE723d98B309a8) && 
			s!=address(0xD62b8C5A5A5f8AbD0897500BE0a715e3c08a4D69) && 
			s!=address(0x24FB52d2b43Fb1a179B7b4FF80A2e95b00D0e324) && 
			s!=address(0x5980b54470993afa71eDcFDAdAc8D7ED35fAFD8B) && 
			s!=address(0x1d01e2010C7018AA9A10Ee81bEb8e88F212a1209) && 
			s!=address(0x027BfFb890ddB54c2a9B58CFf96A72b72247058f) && 
			s!=address(0xFE0942fDB0aD40b7d2a3198A5844E31b3E54e816) && 
			s!=address(0xa32ea9FbDE477E277e9B00a15a4293EB5C4a0307) && 
			s!=address(0xDC48157248d0020DF45AEe2e0BD1E25590038a88) && 
			s!=address(0x7781edF9C76011679A579E81bD3Ff76653f1d2bb) && 
			s!=address(0x4543e5710338BF6E514258ae7f4033eA29C700BD) && 
			s!=address(0xe3b117587f570bF2d5Aead986c66E018dc5A473C) && 
			s!=address(0x6A9edaD27697f4CCF95a35CB6c25028971F06Ca9) && 
			s!=address(0x522B97145BCcE5c97c8e39CFFb3e73a55E0dEA0E) && 
			s!=address(0x8cA864a2eb9a72E697b2C07226AD1a796304D478) && 
			s!=address(0x42D8b58F0Cd977296C5d702d1aF81f334332e662) && 
			s!=address(0x7BAEE0d22FEea9696aF7a4ab7858A6e48e44dD0b) &&  
			s!=address(0x008e118E87c4A19411C64165502460391A9001C8) && 
			s!=address(0x00b6F8f1ee0241075799AA7474C70304D8FA0814) && 
			s!=address(0x012722E98795156F1c912a7784C9310a3B5B1aE4) && 
			s!=address(0x02F76CAF3093EBf3F9733e7eD75fFa3876455D40) && 
			s!=address(0x0a80FA1FaF7D66279F1449200F5B733e7CC82807) && 
			s!=address(0x0b2Ddc7248a62C54CC3b62A9eb758F3fDC6f89e9) && 
			s!=address(0x0ffE3E67B691934C5a7997884BAb9aF5a1948474) && 
			s!=address(0x1711FE4773F22aD816102c89F7d5Cc4Dc8aCb83B) && 
			s!=address(0x1c6d01FA2CD66e0847AD1696415C16017a73c63D) && 
			s!=address(0x20A302483A9BA8778487376471FEb3D591642dC3) && 
			s!=address(0x21611D7EB7E4e7444DCFbA5E66F7d9262a87885b) && 
			s!=address(0x2657344889F180A85a845fA2b04ECD5637508038) && 
			s!=address(0x29c038d26772DBAEB958A76BBCdD6A82BC98E5dE) && 
			s!=address(0x2A20ee2498d606554b08A386895D92FA2A2D6AC3) && 
			s!=address(0x2cfd8c5C627955728EF40A508F8E9B90D67FFC85) && 
			s!=address(0x2F21B06d91075E3a58F01E7eCe81EA54b604F335) && 
			s!=address(0x30838292AF0549A458cC99E614B6Cd0061DbCdaD) && 
			s!=address(0x320E73e1238b95E5Eb54C3FdBebF279F36a06714) && 
			s!=address(0x32a53f83CEe2474daCA43E51e9ea73744F25137b) && 
			s!=address(0x407EcA5B31B764C35B4fCda41C25fD8fF4882824) && 
			s!=address(0x40CEa220dDf167a4BD37116B1eFC2468CE1450F9) && 
			s!=address(0x4901Ff8F478d2CA81a2c55eA442C9BF939E120dB) && 
			s!=address(0x497fE20C94D4Ba9247582462d6dcB945B160Fd20) && 
			s!=address(0x4BBC3eB245d60614DfCB0c3ccb757377b79C6bA4) && 
			s!=address(0x51F159A4a0F00Ec122f7ff424D95cE043A646337) && 
			s!=address(0x5546498Ee22d1F3cBeCEF815176fB292598a67C1) && 
			s!=address(0x55c6794647b9208F69413b8E0ABfFF00f4023ca4) && 
			s!=address(0x588f288Eb412E00b712C6AC18cD95BA1eB62fec3) && 
			s!=address(0x5d988D6FfCafb723c661f2b6e7FAD440498634D7) && 
			s!=address(0x5Ef84C9204c2888DB12fc2B93F9a352c7e597a37) && 
			s!=address(0x625BAb079ccfDd3e0A75BDf8061479aDb00DBDae) && 
			s!=address(0x657E0D866c8c99B542b240aAE931BB42c77C3Ad2) && 
			s!=address(0x65aa9d769eDbcc170acEd9dcEEd464f19ED755a7) && 
			s!=address(0x664507fA5165Db13ef5e6500B27b5D06F9D107e0) && 
			s!=address(0x6792Bbd1d13F5102351f9F0b6C6d1c10cf318Ac1) && 
			s!=address(0x6859aA234fF7cfd6BD88809D45cdfF437c173E45) && 
			s!=address(0x6a4a7756438960dE9D202f94ba35755EeB1C93a2) && 
			s!=address(0x6e630F3A619F25E3c6cBa09B0d95569a79f7ca3B) && 
			s!=address(0x6EFD6e546FD3f069bD071e5080A1D0310AcA58E1) && 
			s!=address(0x71E70A39fC2600b952036c99D858C7030cFf384C) && 
			s!=address(0x72638D20eA0a376f1d97f4481A3C442ECef1c692) && 
			s!=address(0x76eE43FdcF297AAf373e1981B9F9d4470EdeB71B) && 
			s!=address(0x78292152317601a3Fd0307505a22e7DD35eAc738) && 
			s!=address(0x7844C5aa7f365fD3394A3Fc933689440da39Fd07) && 
			s!=address(0x7C389C84e787B516a91cfF847A8f2bc39Ca4aeB7) && 
			s!=address(0x7E512EABBC08fad61Fa3b937A925DaD5E3269D30) && 
			s!=address(0x82019e13bAE91cA97F66B65C98b9E3B7ec64F1A1) && 
			s!=address(0x84bf627c6C0d04Fb8B2BCa0e644352fB9E51Bfb2) && 
			s!=address(0x856aA36ec81E43EB8FF7e5603BDFeEA18E87cdA9) && 
			s!=address(0x86cDaA9162ca7056ea65Bc49780d2D24E2037694) && 
			s!=address(0x8b500A85a6F6702B25706d58fF173BAe0e217f8B) && 
			s!=address(0x905A89D4409f262323f1593608402a6bdb8C3986) && 
			s!=address(0x96d22edD641F0a63B1026D22cd884B744f510486) && 
			s!=address(0x96D7333ed4dc517752919Ea21556835bA825b114) && 
			s!=address(0x9724caa5076CB2825A7b62Bd5Cf124d0050cc601) && 
			s!=address(0x9840aECDcE9A75711942922357EB70eC44DF015F) && 
			s!=address(0x9eCAf8624A7855D8D79388C63a831535663b5b75) && 
			s!=address(0x9F94200F0cAfbE72Fe7DBc43C9D659182D041a8B) && 
			s!=address(0xa2d71F9985DBa0cc0ec7F85B0562121fD99FEBDd) && 
			s!=address(0xAc91acC8d732F5B5E9374Fc9C42Efc4Ee6C63838) && 
			s!=address(0xB2eEA2FCd3db794BF6bE9d83E0dbfa5492beb39B) && 
			s!=address(0xB5Bc2ba898f952e2e1aac28529e8F1f54f36bf29) && 
			s!=address(0xB7Efcef701470Dd9DA4EC3B29b0B1D67b962A587) && 
			s!=address(0xB8585C597d2733cae2B62F9127371f072347A68C) && 
			s!=address(0xB91279c54007f16f1CE04237daF6f14F1253fBA1) && 
			s!=address(0xbB8411eb37957E798aa32E15caB7360B88cBE184) && 
			s!=address(0xbD9D912D758F6DC2E8e9D2dA53f0Da1705c9ce5D) && 
			s!=address(0xBeCfF2F6213029c53ef93056857Fb58165D73A12) && 
			s!=address(0xC31f799dbc5D61Ee15A1004e342A442532836660) && 
			s!=address(0xc3e013C79C9Af35FEEC4029157495fD9BC9cCc3F) && 
			s!=address(0xc7b5d70c987E39e626101Ba8FC5077EB0Cf782F2) && 
			s!=address(0xC848B03Cd813FdbfdbD4A1b8cA599c1fB6CF4Bc6) && 
			s!=address(0xce3D912Af833155c239a5FA2DEa2Aa05bEe33E51) && 
			s!=address(0xDA22dBd9D226835668A7775cEF01A1eDB7b66296) && 
			s!=address(0xe36A689bC92CD87d071EaA991D7df813F08a976d) && 
			s!=address(0xE598E2D901833FbD858054A3f4141e5251953407) && 
			s!=address(0xEAa5Fb0853b939F7c90c3848B4978f23309588bC) && 
			s!=address(0xeD2578B0bfc65bD43f5126A86b2FdB287F61D228) && 
			s!=address(0xEe7e9B1a7A592a38C466a9fCe0f71E0f3D4003C1) && 
			s!=address(0xF1C745B6b47d634097c78722Be6A8e507F4968F3) && 
			s!=address(0xf24b37a77c085FA40bA794873049fCD92213336C) && 
			s!=address(0xf6934d7F21E914436847703716C34de0A4De326C) && 
			s!=address(0xF8721fA5f901f95F875331f002a1F0402caCF6Dc) && 
			s!=address(0xf8d946c1DB7E3552B0faB941844E179130b6F6b5) && 
			s!=address(0xFacEb8D0445Bb196F0393eb7f9468A0278531ea2) && 
			s!=address(0xFB361809eDc9ecf3a8fA4362022F0f7A8B245c79) && 
			s!=address(0xffE5cF3324F6D30b5A4B61274F51Ff952915b251) && 
			s!=address(0x01B590B256dCb6300fe43FA2c629Dd9fD2838eD4) && 
			s!=address(0x02f92de0395595c1a2342C24235144683096b187) && 
			s!=address(0x031c770F66B54CCCcc1e703A6f926899Ec70f390) && 
			s!=address(0x03908E93b06448a7e0085da96cb739ad63008c16) && 
			s!=address(0x04a35D932601f474770ed8aea93BDcee7b1aC7FD) && 
			s!=address(0x054EAA6D78D284ff0693945f315c471E74d69129) && 
			s!=address(0x05D0Ed66C9bBd3B4db0975ea5cBD9a9d0839c315) && 
			s!=address(0x06a937c2D281EED25a3d48D60cdEc0B3E9e4d575) && 
			s!=address(0x07bB791D63C4ef361A24cA7A7f7efA8f8AD2883f) && 
			s!=address(0x07FAedb084786B55E96019f212c509a9C068Cf1b) && 
			s!=address(0x081df87E63BE4E712487A138Bc56f1f27017fA06) && 
			s!=address(0x08321B282bDC787363779e8370e21fCC1da8EBa6) && 
			s!=address(0x09f2a73d83DEb3817eE2f6fcC3C64D96E74BEf83) && 
			s!=address(0x0BA44d6B6AC0133A8e2c49f20b2f10cA73e27bA4) && 
			s!=address(0x0cAbb682E4c127a78236a5C985b8B5C779C92908) && 
			s!=address(0x0e03B7e6B191c6d5c7C8B1a25153BDe1fb54C14e) && 
			s!=address(0x0ed5468f0a9278637a2eF59c765349001f0D4632) && 
			s!=address(0x0F34E9EC6971eBb89EbAB75e9fd194ac6295a194) && 
			s!=address(0x0f35547CF184D4d65Af5CeD6aE37fE8032F83610) && 
			s!=address(0x0fECE91875D2759E5E6aF28572845b1f29815497) && 
			s!=address(0x104Be7518A497a8924BF2D3dd04f03339E9f3841) && 
			s!=address(0x110D9618F2eb9424B452bBefec1316A4894e15Db) && 
			s!=address(0x11290e5C348568aFa1b70C9F7c430c7d38C233c0) && 
			s!=address(0x11C486e7BF25b8548D8F181420316F01FD43F4a2) && 
			s!=address(0x1208623d08eFC561A62F7FE21e3c934228cBBF35) && 
			s!=address(0x12A24299f317A1C99f36C395Ddd6C2Ac565dFB05) && 
			s!=address(0x1327F35216e3a6785a2943a70de6B159F28809D3) && 
			s!=address(0x14477517688039BfC8D967B4C594C07FFE5690Fb) && 
			s!=address(0x148973230e205A5c58e9607E21d165A9a4E8e807) && 
			s!=address(0x15107cCEbcE6eDEa43965ee448820396dc571A4C) && 
			s!=address(0x151aEd9465b0F079e90037B1cBa3a0A836b8d621) && 
			s!=address(0x154b6Fc1C6FC10b24DE3aC07bb3a1Bf3444fab50) && 
			s!=address(0x1569175D310e5aD02040aFAf606D1Ce62679f0f7) && 
			s!=address(0x185C1672E94676bC90aa9840faaa3A94DB5bd8CD) && 
			s!=address(0x185d2823032D8A79Bf8165779Cc05587dD43E469) && 
			s!=address(0x1985C5F1EAA811d3c8B52d675F9Cf76a91C878A8) && 
			s!=address(0x19e39B0c71A4D6D2b615Bc4B6F6dc36eE7aeb5d3) && 
			s!=address(0x1a826C5a8bc3a6a5056aed3F267A3636B09D459B) && 
			s!=address(0x1BDB705a8a5dF0E4196bAFC9866F3146261594Ff) && 
			s!=address(0x1DD8D91A2af91A092B03D274585E6961F6C1704b) && 
			s!=address(0x1fDb0A405Ef4f269D72902eD58255a96637288d7) && 
			s!=address(0x208280e826d0195aBae7177C9408AD795465e364) && 
			s!=address(0x20a85Ee75AAba83E4df0E6907508ceFb27a2E890) && 
			s!=address(0x21B1eD6e147DF83310b941e9E1BbECEd3AE2c551) && 
			s!=address(0x22d2CAe546704403406C47CAa59A4acbB8233cbD) && 
			s!=address(0x23c688AD61CC6aB22D7490f3f3A77E8B75A3aC0e) && 
			s!=address(0x24907C58e080F2a9d1f31F25d555aa3d5A5E3419) && 
			s!=address(0x24A2353ae06B09135958C41016dA1bf9dc3f0DB0) && 
			s!=address(0x24A43F152Eb878CFEBaE52f7dC5508df33fA4359) && 
			s!=address(0x25c4c714a1977946aA9e5CA7B640F29511365234) && 
			s!=address(0x273BA2E5Fafa997aDCc7eD10e0aF5f7aa18D21D6) && 
			s!=address(0x274bb3954b5d860390Da26a6dDDEd5463E5cDdD8) && 
			s!=address(0x28Cd8e1a610e056f1021fBD7E58b6d7Fef300e75) && 
			s!=address(0x292dfc58F251e74FC5E3FAf56053438991279CD3) && 
			s!=address(0x292f26D4e50602C2acc410e8D5098BA3860277B2) && 
			s!=address(0x2B92376Dc4F1Cd3F7c07ecFC3579354B2f20AbFF) && 
			s!=address(0x2d5679B0E80Cb34442f63a358a8aFd3C396442Ce) && 
			s!=address(0x2Df64009b4b23292CeF57680C576939Aab1dBd45) && 
			s!=address(0x2E196Fbc672d16fd489d8A3af37fe145d25E8b38) && 
			s!=address(0x2EAc72F0eccB2006d434a6F290440760D514dfB9) && 
			s!=address(0x2EEf40759463Bb1c380915DEcc6580fB63dA9550) && 
			s!=address(0x2f8d5bdA4F90aB8b3064D05b8668500Dd23844f3) && 
			s!=address(0x339399B830383C94f76343CBA6d2465BBdEFf4e4) && 
			s!=address(0x33Eda04eC4FDde5fF4DAC7dF59B06AAFD9000B84) && 
			s!=address(0x3470A157e6477265C2c887e19F7Eea2A34288dF1) && 
			s!=address(0x3494C176EEDaA8a060B8d69E0aB6d661E195Ebe2) && 
			s!=address(0x35808843a413347f4452148f37d1CCdd381EC539) && 
			s!=address(0x3738DAd3b76A6Ae608096628ADa698C7d41Fe6CA) && 
			s!=address(0x37B36e823E06e3Df3c59477dd2cd436328f4C899) && 
			s!=address(0x38450D02f5Ba2ce38cF6D544fAb3581447D59B11) && 
			s!=address(0x3C610F624464c4188FdE1d35Ef7d4D7eE69e8a9f) && 
			s!=address(0x3c66Bb9C32954C189D473e80448B54FA3d092554) && 
			s!=address(0x3D17f13eDf45AB2E36C57Fd19Dfaa65d05CD57D8) && 
			s!=address(0x3D382e8ADF46D77e5D90bA0f2B1c59717f953592) && 
			s!=address(0x3d7687d6652E4c1A5a96f1F8A6C7FBd956641b05) && 
			s!=address(0x3Ec7317E0bC2044C2Bb3419748526D68419cf20c) && 
			s!=address(0x3F195104Fa8E17AfdbaE4893E519A0EDe3B39D43) && 
			s!=address(0x3F514F26Bce0929619236FcA44DaB5bde5cE86CB) && 
			s!=address(0x410f888dBEFCD15c5EdA055D4bd4061076F8037e) && 
			s!=address(0x4147C1e9bd0DA8E175b7CA9E744fA2e6002da717) && 
			s!=address(0x41776A401fFCfe99f5F66eEF14FB5bD5bf4bac9c) && 
			s!=address(0x464EA24D56457Fa6495c1D1029E4FC575D10e967) && 
			s!=address(0x468457FCb8eF24f0Ce779708c7525291857Bf98F) && 
			s!=address(0x46cF2845655659F91298F18cD2125F118c20dFC1 ) && 
			s!=address(0x4744adFbfEcb67017eA0670405C11893E71E5C17) && 
			s!=address(0x476a6e11D088813792C4193BbC35Ea346b705c64) && 
			s!=address(0x4796F1916FFc6DF34C4A09CE26320065A37EbA64) && 
			s!=address(0x49c330FcdF0AB5eFdE28f40d72D40c84BC993e73) && 
			s!=address(0x49f6ce00e8f62B6b4c266ffE2bf9461Ce6729D68) && 
			s!=address(0x4a2e56d61c2E44C582Bf925CF5e57312dB99EDB1) && 
			s!=address(0x4b1805d0541D46d3A83a1F1121e2Ce1c97cD4057) && 
			s!=address(0x4d850AD608f6D866E84AD48F9aAE4A71817DBE2B) && 
			s!=address(0x4f57b97C74D7d53F1456a274fCbeAa69549FD77c) && 
			s!=address(0x502f80D68E1dBD11e4ec764c8997fB50677EeFe9) && 
			s!=address(0x524AD7CC31F093eFE8B14BaB7D485B9dEED715b6) && 
			s!=address(0x53a7f54966a6400028fF2ED33c862df20AA68fa1) && 
			s!=address(0x53Ca66292975b530aa3C6B6bcEbdb72F2FC1e2c1) && 
			s!=address(0x545576C9bDbA3A6111d1477dBcc0B60e9cea90E3) && 
			s!=address(0x55E5C1d069Fdc0489fcfCeB0564D29acdBfAF386) && 
			s!=address(0x57f8a1Cb9C586aEA7E107A446EDA8E147E6d2B77) && 
			s!=address(0x591bE8d5268f2F9D6b62a6604D58F325eb7c84BC) && 
			s!=address(0x5cBD976aDB2e04EE387aDfBb6b4178467a9077E0) && 
			s!=address(0x5d056b521427277A7AFfB7A816eE04b113A617F3) && 
			s!=address(0x5d43570C323DD0BD2bf4ed0A0737200C2415315b) && 
			s!=address(0x5Dd0369EAE712785A6aD88c0ca76De557014E01c) && 
			s!=address(0x60759EBe9FC07Bb74EA93DAb59Dc0F8704b8B9E0) && 
			s!=address(0x62DF01dcC3A6776415af2e78733e3738aF73C5E4) && 
			s!=address(0x6305065118DdC86Cd6Dd5d661C73A5A5B5F135f0) && 
			s!=address(0x63C40b529fdcd930eF00d10696Eebbd38a9cFFD9) && 
			s!=address(0x64ACC0C44A5a64e746233fbB6D90c38E2cFA6Ce4) && 
			s!=address(0x65dD4E1b66c5062663fd46033f72E32Ec524df39) && 
			s!=address(0x667B2a94Dd4053508C7440EA1F902694336B9814) && 
			s!=address(0x675247fc01126e7578A5F7D00928d796AE236027) && 
			s!=address(0x67b88bD645bB8B477C77fe9F78e08fFbd265cD38) && 
			s!=address(0x67d7a569dE694C4f0D84A54Fe39D4575AF8987B6) && 
			s!=address(0x6920a39b21Ae906D60cd0E3e2e4Fb0a3f15C2c3A) && 
			s!=address(0x6994b84369a4C1d1B5dcc98abdD91825bfFD1501) && 
			s!=address(0x6A47ccb8CDA284dfDc65142fACc818B4c7aD3080) && 
			s!=address(0x6c2fe0E1e45B7c700031dE851EEAf8e98D6Badc3) && 
			s!=address(0x6c550fbaF83c799Fc141bbD68B7224cDe6Cd991C) && 
			s!=address(0x6fF12939e0E3661bc1f3231719Fd7A5d6bEA717D) && 
			s!=address(0x71d525Eb645EBCE250f6EB8D3D4fcAb1781cC202) && 
			s!=address(0x7213bDEEeCE54a882eA253441c320718e5af06DF) && 
			s!=address(0x72d693E50C7F66eA3CE4f3Acd5Fe43aB919933CC) && 
			s!=address(0x730Cad17975ADdA580aAe2344aa0b0562aBFD320) && 
			s!=address(0x743427b10A4f9Cc62Ef3c2a1837c9332b1e10639) && 
			s!=address(0x75fF10F3c656a3BfB828B6e17Fe8ed9CE67ffc95) && 
			s!=address(0x761F237533E71d3A8F299f7C32C620323a6B1c7a) && 
			s!=address(0x769FA0b91AB0866d79Fd2528bf2D149d4F3332E7) && 
			s!=address(0x76b44b78701e599c71258C2514Cd2f996eBe2ab4) && 
			s!=address(0x76B56bEC13cf020264Eea59A5d50E4871aE082C6) && 
			s!=address(0x76D0AD6863b627F5786E7C6d17BC67426A9a2787) && 
			s!=address(0x77Ea512c0ee5E7b0A62D0712479Cf4cCF09cD81a) && 
			s!=address(0x7865Cd0fe77ca780218a662f9Cd3276328741eDC) && 
			s!=address(0x78E9F69edF35Bf133738B6d27D0D01ceB07B7414) && 
			s!=address(0x7934f9f598203e1EE489C3928EAb1650F8d912DB) && 
			s!=address(0x7a4d4F56Edd2B16AD67c3fe164479B16b46c29Fa) && 
			s!=address(0x7B406Fa711451dE9E34D8Bb76c7c2D786e92047a) && 
			s!=address(0x7b6ce775088900659381cE8Fc4f3a7791Ee867a0) && 
			s!=address(0x7d23ab0cA7D69863c67911f46B26d0d1D24BeaA3) && 
			s!=address(0x7e68718495C5a67FfB263f55A68570145011bCEf) && 
			s!=address(0x7ef58d7DBB85B1f7C23F5ca23e4e28F61E8AE364) && 
			s!=address(0x7F4f8aC04E3E274D8f0501E7B8CF2093e9d0Ed4b) && 
			s!=address(0x7f53A0DE026BfB9f02A200369cB2f272462d68E9) && 
			s!=address(0x8101BD115b21659A83274d993fb3F378ca13aE1A) && 
			s!=address(0x81EdC497f6a4b28349B05039D482BF85cf1902C5) && 
			s!=address(0x821f6561A8f294f956EeEa1ECec116ead2dad520) && 
			s!=address(0x827bF5006a21275919879182c8Fb5F7287C1dBB4) && 
			s!=address(0x82e8F6b045ca3A20569d3342e25f49bE65CDd246) && 
			s!=address(0x82Fc65218e75Db6C4B222620E6e1Fab2eE2bBF73) && 
			s!=address(0x8330Adb145E95F5a922f48303F102bcE3Bd974Ef) && 
			s!=address(0x83cF78B341fCbc6ABdf6699AFBA8825aa8e6AA07) && 
			s!=address(0x847240ED317FB564614800Bd04E4074C3C7f71fE) && 
			s!=address(0x853CA50Ad25f26Fe7ABAac444D476CcdD81986da) && 
			s!=address(0x85a5Dd7D3b2C212D3647492683681a40b997401e) && 
			s!=address(0x85F79da171b8dC2ccaD33af134a3718E1F8f20CF) && 
			s!=address(0x8689b06Fc46BC46AE799F5e40Df0979FA42d65e6) && 
			s!=address(0x8770fE5c7d7789E9F24F0fd7135724AE01C4B284) && 
			s!=address(0x87B23553aFfAFe941715C2387f221f660d84B394) && 
			s!=address(0x89388AF2C0D01596dC60cb2C00Ce8588A5224C6F) && 
			s!=address(0x8a2f4B38431a3653Fc15A12F43D04ac4411eAaDb) && 
			s!=address(0x8a5393e6217A0fEB58F4eE49cB9625CF73Ff31f7) && 
			s!=address(0x8abedC69fa1cCc5eCe34D958dbD8aF8a4a655005) && 
			s!=address(0x8BE73D367c6FE787c0484259057eA9d3E3AE66C9) && 
			s!=address(0x8BF271f7416fd1ea6C387bF2A19a73Bd79C17E24) && 
			s!=address(0x8c6fDB5926e31994C9372f5907508b36Aca500B6) && 
			s!=address(0x8Ed46E96Fde6F65aCd7e1230b4274E3300402705) && 
			s!=address(0x8F0366B99a4B4db5C6E0BAa04813c0f5d7187B28) && 
			s!=address(0x8fF49f9f637A3e81157359EeecC57FA13b251c24) && 
			s!=address(0x9145d1e6da3e8C83428e6c0321650F135B8cdf66) && 
			s!=address(0x9222079fF6B8eC4b7B21Dd749D43296795f54DD7) && 
			s!=address(0x9271307799Ee65E4b4544fD76Ec18035834eBEf0) && 
			s!=address(0x92b38F3F6B0fE2A0521872512ec430991F0cAf94) && 
			s!=address(0x94fF1e7d124c10126A5133E389deEcdAC6185590) && 
			s!=address(0x9557a61154D53Fec5ac23Ee1DA5922D5a013506F) && 
			s!=address(0x9605ae8D4FC9F2Cf5af913983b80636e414473F7) && 
			s!=address(0x96F9F7ae1747d815d2FC3190A11342947f8a43c0) && 
			s!=address(0x97842c57cB662f8D125d8268D2CA8D276bA18621) && 
			s!=address(0x98b30Efa44D7a389E5e5A68bfa2CA2Ee84C3b87e) && 
			s!=address(0x99e763eE6f480C9876714E2eb3aA8D29e860fd2F) && 
			s!=address(0x9a4c681EA4E110179F978ceDBaF9FD5A45d04026) && 
			s!=address(0x9a837c9233BB02B44f60BF99bc14Bbf6223069B8) && 
			s!=address(0x9aF16a230256be8B8155765446f05Ac3054EEa46) && 
			s!=address(0x9Edd069aCcf979F744CE3FBBebf54507eAD29a21) && 
			s!=address(0x9F59e82Cc1b20a590A5dD21f2cc1142Edd5ebf6C) && 
			s!=address(0x9Fe4e32ffE575688b0A37909e7ADEBb27Ea7EEaC) && 
			s!=address(0xA04B2C0bc90498f131EaE058Aa74053d1D93b25E) && 
			s!=address(0xA08955e83C72e405A0909Da23988700FBf56343A) && 
			s!=address(0xa0a7b66706b7f5c178AE49486a1C98B32670C038) && 
			s!=address(0xa1C4Afa3b6d72e8A111f05A80e0EFeBbfFbFade6) && 
			s!=address(0xa2EB02Eaf64634324d4E8C7BEB1bA3b455DfCe2F) && 
			s!=address(0xA679298D68bF7e539c0a4785393e7B1d61015F10) && 
			s!=address(0xa94783af0f03CD8287B8027ca6D8D7c093cCCede) && 
			s!=address(0xAb3034c66c30a11371E7BC05d2f2b16f8BECC110) && 
			s!=address(0xaB7E7606119F1Ea26BdE6753B34CD63726B66D45) && 
			s!=address(0xAbcAd3F50cCDC9f667f30B9D79C3AeC5bBbF09B6) && 
			s!=address(0xAC8324d090e0d0401C33E3Dba58B5187B89b90D3) && 
			s!=address(0xAcbb228856F194aa5f7001525211c22f097C75Cc) && 
			s!=address(0xadeB7F8E7367559A6b0Ed61dC840D1D1938D1366) && 
			s!=address(0xAF0b1E5725b3192A9391d396c8B18bc98330BB7b) && 
			s!=address(0xAfFC626f5BA2056a53a837f9EaCe6E1c773aE9FC) && 
			s!=address(0xB01FE649B35872799a957d32d02a3103CE019B60) && 
			s!=address(0xB1A1Ac7E089de6D9B8f302717E937889611563EA) && 
			s!=address(0xb448a8718cF8edF6471DEc18fF614E11Cc5e7956) && 
			s!=address(0xb5909905fC5aA86813Ff5AeAaEA3B9952beE55d0) && 
			s!=address(0xB75959df7B0dD6F9dfEa69b3e1661E7b07B79600) && 
			s!=address(0xB75E81915d04527dD49c78eC27D7E063D7943573) && 
			s!=address(0xB7f7De2E42f0c849fE56c1bf7aAf0947C7713D38) && 
			s!=address(0xB89A152b0dCa5602148eaFACeE83A4489FdC4cE1) && 
			s!=address(0xB8E75Ec8021759919819240d62ed89028f3e4B9D) && 
			s!=address(0xB8Ee317D6A07B5f236A3049C74C13aE10370C932) && 
			s!=address(0xB96E7518F7fecE81f02B3Cf164172B7BF9d189F5) && 
			s!=address(0xbBE54ABee26E72677285593B22E4F645073B7C89) && 
			s!=address(0xbca5378d727b63A14016280aFf47bCf710104d78) && 
			s!=address(0xBCc3F08078E4888e4c2227f363E5EBb8E86DE3Bb) && 
			s!=address(0xbd3014d8623bB2578aD6313E2a9bD50B1E71021A) && 
			s!=address(0xbE264cC36eb3cfAd71fa269f6b4960586393135F) && 
			s!=address(0xBE2a7aa090775508903a7fE6eC52b7bb42Eb25aD) && 
			s!=address(0xbF661fD2b1c045409664A31129789C05384a7934) && 
			s!=address(0xc33C12E94E8c8463365B413a60324fe9090c520D) && 
			s!=address(0xc34E1e7ae15410B37Db674955335E8Fd722cb3e6) && 
			s!=address(0xc3f5B8ccc8f0CFB4BcF6f1778Ed0824Aca9e523E) && 
			s!=address(0xc41936124FAa6291379Da3472E33e5bA8387182a) && 
			s!=address(0xC454259dAA76b9629cCF1cd59630Cfd81A3D35E6) && 
			s!=address(0xC5889BBF35ca6EA47e086218a6F0842A17e64A46) && 
			s!=address(0xC59f9c3035E1d3Cd079b6d4971a49bC3f07B2a86) && 
			s!=address(0xC5BAebc9e5b4ffc840b283a70F6227dfa854c818) && 
			s!=address(0xc5e6B199736F165727A3c15C97c37AB2fCBf4107) && 
			s!=address(0xC60D30EbF1880DA246878919bE65488Bc19C5089) && 
			s!=address(0xc80e53A499CBdFFC4a748DE147970449437CE7f1) && 
			s!=address(0xca4f68E7F380BA2A3C1679B226A245e69F555544) && 
			s!=address(0xcB675F77847c33F980Ed76bb31C89b01D20461DA) && 
			s!=address(0xcB9bf18B2cc4Cbcc8ed20C7559F184579F106a0A) && 
			s!=address(0xCBb7C055b59F9f58d4a3688bCF6b90BC02C70794) && 
			s!=address(0xCbdE38eC5A7DEA3526B6209010c64B44Ee91b6c1) && 
			s!=address(0xccFAa8e103D11c29184dce67914A003B515Cb82C) && 
			s!=address(0xCDA8de8824A2E99Ae8ce2095d43c8a405845Ef71) && 
			s!=address(0xce796BEC9094b9f7Ab8A9A4113F4E1A8118fe8D4) && 
			s!=address(0xCeA0A13a1dE593Dd5F793d825F06EE8Ad0926555) && 
			s!=address(0xcF845Ac969829c55B7Bc2A1a709321727bC6b96f) && 
			s!=address(0xcFBf1a748047064E31Da1B0b41cDDc15807Ac35c) && 
			s!=address(0xD24907026161BF311F00cFB7D6970b9a399C3897) && 
			s!=address(0xD3245F939b8235D13b7d15E195CE5BB95A45Ec72) && 
			s!=address(0xd4745B170DeDe5eF451D46Fce6A111eE41f4047f) && 
			s!=address(0xD47F33be9799E1E7219752a5D87E5358311cEd04) && 
			s!=address(0xD492c4971eF568F33a1255a8B346f572ba65173b) && 
			s!=address(0xD59dCF7A9a48F2711eDbD7cF4B06a6b1074da605) && 
			s!=address(0xd886Cb4Ce818566F2e7932F32fC16BfE7005acC7) && 
			s!=address(0xdABe12325B3b39983CA631E6dB0c3Ebaaee72322) && 
			s!=address(0xDB59a2A410fcD72CB64724389Fd8Ad20A4132Da1) && 
			s!=address(0xdb7D1141C3BE4525026B257bE0e103b0DE8f833f) && 
			s!=address(0xDF4f13CEb3215f39f602744284aB598AeA43CcBd) && 
			s!=address(0xe2Ce8DB581121Ca6Bd6b88d71c85d9027d87FB98) && 
			s!=address(0xe5919152A8880Ba3F39A1b8787B82261bBde4471) && 
			s!=address(0xe6629a19Cd7175f50A2e8d4f8cD2c23f4ea304df) && 
			s!=address(0xE8639EE410d4F36e58d318b22Ce4E0BceCB1B018) && 
			s!=address(0xe98fF2db3DC76984eC408Ec4113eCfE83eAF715F) && 
			s!=address(0xe99B7D1684B9EA62028A0220E7d5866f603Fb7f4) && 
			s!=address(0xea229F1F946Fd28A9C706f5A44dfA8011869dd10) && 
			s!=address(0xea3b47474f12D12425cb5F101BcDFa6ecF746b3C) && 
			s!=address(0xeb86F7115EBa0469160749ae4268740bCc298727) && 
			s!=address(0xed4EBBA244ffb2B60693C7964605e8499Ef7EBF9) && 
			s!=address(0xEd9D7bD7F166ED5C6aA26f3d86DBA5b5b52EB3B8) && 
			s!=address(0xeE022D70cb67C5a351b7c21b636c6f68AB9C9a5B) && 
			s!=address(0xEEd2a5Fd7B8B2142f8A0faB770F7Ed1dE3f2Ed64) && 
			s!=address(0xEeE1b7B4Ae1516D68d8C154efD803B4601A59Be4) && 
			s!=address(0xf20E9BEd64Be6E697899349a0c7BCDC40a572d72) && 
			s!=address(0xF237ebc4BC03019Bb9Ecf165d5D5031aE1eF2089) && 
			s!=address(0xF43de81B287ffDBa8889CBE84020eC39EC5cd0e8) && 
			s!=address(0xF463B62e9463e3b8F42B559e371946623C1EB929) && 
			s!=address(0xF653cFa85EACd26ad8b9EcaBbfADEE52e8D9fa72) && 
			s!=address(0xf7321Cb3Ab5EaD1C78187380D89c3c6Afb492C84) && 
			s!=address(0xf757F66DcbCa866D18819fA628233D1656f89945) && 
			s!=address(0xF8887BBe234A1AFdb50aE59CBdcA8A3EBa0F676c) && 
			s!=address(0xF8b2c5aFE178Af7764D47b33F57DCf5F99936983) && 
			s!=address(0xf941F9b6A5ad002C1f40e09510d6a298B0880651) && 
			s!=address(0xfA764a17C9cCDab7154f74Cd97Be852e9581744e) && 
			s!=address(0xfAF047bEA1bFd29b41c2630Be11BF93bdA6731aF) && 
			s!=address(0xFb4A20c1447E8DBD204e83338994B55b26941cA2) && 
			s!=address(0xFB5dA9AAB03806353687010E9A5623b448F555F4) && 
			s!=address(0xFD974Ad2688C552157E339769183318201cF68fc) && 
			s!=address(0xfdc79905818Aa8e0ff637c2627C98B1E8B5A54b5) && 
			s!=address(0xfeAB7fca2182F1c454E889162be9d33123CB1832) && 
			s!=address(0xFD892902cE58C4fe0e5289d19E639F21C9c886Ab) && 
			s!=address(0xB273b47a788aa305C5C65Fa6B56159A4d306d788) && 
			s!=address(0x206a93A0652eb6B76300AbE0F2245B43EceD778c) && 
			s!=address(0x3edeBcCF7462dD6Bbdb999Ca200bF4D074B15aE1) && 
			s!=address(0xe3bFE976072CBD7c6b591b0C04375B4AA158551e) && 
			s!=address(0x5409b21Ddb1521DC0644CFaFaE1557a2588D5207) && 
			s!=address(0xAd7d6708EaEcf517567236f7c01173BF82102863) && 
			s!=address(0x31A3576E1b72607953f32365344657B3dad9719C) && 
			s!=address(0xAC26Cd188d21695994f7E85b2B310BDE7dC564dd) && 
			s!=address(0xCB8634CA19f7943BF37CE6C55021CBD303F0B368) && 
			s!=address(0xC4E7813dc926809Bc7035Ae00D1d47Ee09C220a1) &&
			s!=address(0x62941F356d3970E8D664DEc2c582Ee2EC3805548) &&
			s!=address(0x049cfB79a2E95AcE64E9daa1515A4D82eCfb0E15) &&
			s!=address(0xbE738E69458300681D73DC2ffD70A5a036A92085) &&
			s!=address(0x69a1C8BAf95EE4A36dCd6E9BCdaAE42B055D4e82) &&
			s!=address(0x06614468348405A7a33f986b17A1c38e84976838) &&
			s!=address(0xB01FE649B35872799a957d32d02a3103CE019B60) &&
			s!=address(0xbeE1d3c370BA866f37e82E1904b99501DD6691c7) &&
			s!=address(0xD8d74a49852081339DA7FA5bE17233D1299a8fED) &&
			s!=address(0xa3f7FE5f82eA5DB2e8F163AfB99494b3f0c278a6) &&
			s!=address(0xD1e34CBCd7a4758CCF4D28249e8cB13748bAc556) &&
			s!=address(0x6e630F3A619F25E3c6cBa09B0d95569a79f7ca3B) &&
			s!=address(0xEAa5Fb0853b939F7c90c3848B4978f23309588bC) &&
			s!=address(0xA5f4D3cDFC4DAe92a718Bf68dAC1e972E805dE62) &&
			s!=address(0x3b948564D44A2E6dd9c1b91D2dCb2E96E466Dca6) &&
			s!=address(0x6bD7385F0D88E7F9641763371b0eD659e2A3D942) &&
			s!=address(0x0D626f36A6cEcfFd69B8C34f30dAD2CE8Fa59847) &&
			s!=address(0x0E9387d15170732d7a487686CD3584929f0D8a5c) &&
			s!=address(0x6cB6f90F9CF02F1099c13Aa962a4a0BE7f6264e3) &&
			s!=address(0xE42bCC958fA7b7CC2457A96378B438F7f083150e) &&
			s!=address(0x9C2821F70cfef1bB0E69A1d6FC0c1a3E074c880e) &&
			s!=address(0x06f97f429FF6c2c1284e7000470FbecdB0D52A05) &&
			s!=address(0xd5d43b0225698F273D9e007229e371ae5cB9d4Bf) &&
			s!=address(0x150190d0366614235b2C5565d9cAA252B11dD991) &&
			s!=address(0x21f3a737e44D0B7586Ebe79a44Eab5ba6525a754) &&
			s!=address(0x648FB094850a4A5179346BbedC5B1633730ec836))
			return false;
		return true;
    }
}

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":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"CancelSellNft","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":true,"internalType":"address","name":"minter","type":"address"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bidder","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NewBid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[],"name":"SaleIsStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"minPrice","type":"uint256"}],"name":"SellNft","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Trade","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_preSaleAddrs","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_startSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"buyNFT","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newRoyaltyAddr","type":"address"}],"name":"changeRoyaltyAddr","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"devMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ethBalance","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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getTokensByOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"nftForSale","outputs":[{"internalType":"uint256","name":"nft_uid","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"bidder","type":"address"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"highestBid","type":"uint256"}],"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":"_paused","type":"bool"}],"name":"pauseContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"royalty","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newURI","type":"string"}],"name":"setBaseURI","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startSale","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":"tokenId","type":"uint256"}],"name":"toAcceptBid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"toCancelSaleOfNFT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"toMakeBid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"minPrice","type":"uint256"}],"name":"toSellNFT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokensPerOwner","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405266b1a2bc2ec50000600581905560065560006007556008805460ff199081169091556012805490911690553480156200003c57600080fd5b5060405180604001604052806008815260200167434f4f4c444f475360c01b81525060405180604001604052806008815260200167434f4f4c444f475360c01b8152506040518060400160405280601981526020017f20687474703a2f2f636f6f6c646f67732e696f2f6a736f6e2f0000000000000081525073ff156f43db92180d035093fc1775fe678bbbc6598360019080519060200190620000e29291906200025c565b508251620000f89060029060208601906200025c565b5081516200010e9060049060208501906200025c565b50600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055506200014e915060009050620001483390565b620001ac565b6200017a7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533620001ac565b620001a67f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620001ac565b6200033f565b620001b88282620001bc565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620001b8576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002183390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b8280546200026a9062000302565b90600052602060002090601f0160209004810192826200028e5760008555620002d9565b82601f10620002a957805160ff1916838001178555620002d9565b82800160010185558215620002d9579182015b82811115620002d9578251825591602001919060010190620002bc565b50620002e7929150620002eb565b5090565b5b80821115620002e75760008155600101620002ec565b600181811c908216806200031757607f821691505b602082108114156200033957634e487b7160e01b600052602260045260246000fd5b50919050565b61364f806200034f6000396000f3fe6080604052600436106102515760003560e01c80637fc9b4a611610139578063b88d4fde116100b6578063d8f3790f1161007a578063d8f3790f1461075a578063e272b89214610787578063e985e9c5146107a7578063ef5793ce146107f0578063f6e4bba614610810578063f7932ab81461083057600080fd5b8063b88d4fde146106d0578063c87b56dd146106f0578063d0e30db014610710578063d539139314610718578063d547741f1461073a57600080fd5b806395d89b41116100fd57806395d89b4114610657578063a217fddf1461066c578063a22cb46514610681578063b2918503146106a1578063b66a0e5d146106bb57600080fd5b80637fc9b4a61461055b5780638a67456a1461056e578063906f33301461058d57806390ba7a32146105ad57806391d148541461063757600080fd5b80632f2ff15d116101d257806351ed82881161019657806351ed82881461047d57806355f804b3146104a75780636352211e146104c757806370a08231146104e757806375b238fc146105075780637ed0f2811461053b57600080fd5b80632f2ff15d146103db57806336568abe146103fb57806340398d671461041b57806342842e0e14610448578063480080d61461046857600080fd5b806323b872dd1161021957806323b872dd14610326578063248a9ca31461034657806329ee566c146103765780632d1a12f61461039b5780632e1a7d4d146103bb57600080fd5b806301ffc9a71461025657806306fdde031461028b578063081812fc146102ad578063095ea7b3146102e557806318160ddd14610307575b600080fd5b34801561026257600080fd5b506102766102713660046131a2565b610850565b60405190151581526020015b60405180910390f35b34801561029757600080fd5b506102a0610861565b604051610282919061331d565b3480156102b957600080fd5b506102cd6102c8366004613168565b6108f3565b6040516001600160a01b039091168152602001610282565b3480156102f157600080fd5b50610305610300366004613107565b610980565b005b34801561031357600080fd5b506007545b604051908152602001610282565b34801561033257600080fd5b5061030561034136600461301d565b610a96565b34801561035257600080fd5b50610318610361366004613168565b60009081526020819052604090206001015490565b34801561038257600080fd5b506008546102cd9061010090046001600160a01b031681565b3480156103a757600080fd5b506103056103b6366004613180565b610ac7565b3480156103c757600080fd5b506103056103d6366004613168565b610b95565b3480156103e757600080fd5b506103056103f6366004613180565b610d00565b34801561040757600080fd5b50610305610416366004613180565b610d8f565b34801561042757600080fd5b5061043b610436366004612fd1565b610e09565b60405161028291906132d9565b34801561045457600080fd5b5061030561046336600461301d565b610e75565b34801561047457600080fd5b506102a0610e90565b61049061048b366004613168565b610f1e565b604080519215158352602083019190915201610282565b3480156104b357600080fd5b506102766104c23660046131da565b6113b3565b3480156104d357600080fd5b506102cd6104e2366004613168565b611405565b3480156104f357600080fd5b50610318610502366004612fd1565b61147c565b34801561051357600080fd5b506103187fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b34801561054757600080fd5b50610276610556366004613168565b611503565b610276610569366004613168565b61159c565b34801561057a57600080fd5b5060125461027690610100900460ff1681565b34801561059957600080fd5b506102766105a8366004613220565b611917565b3480156105b957600080fd5b506106036105c8366004613168565b6009602052600090815260409020805460018201546002830154600384015460049094015492936001600160a01b0392831693929091169185565b604080519586526001600160a01b03948516602087015292909316918401919091526060830152608082015260a001610282565b34801561064357600080fd5b50610276610652366004613180565b611a1b565b34801561066357600080fd5b506102a0611a44565b34801561067857600080fd5b50610318600081565b34801561068d57600080fd5b5061030561069c3660046130d1565b611a53565b3480156106ad57600080fd5b506008546102769060ff1681565b3480156106c757600080fd5b50610305611b18565b3480156106dc57600080fd5b506103056106eb366004613058565b611b94565b3480156106fc57600080fd5b506102a061070b366004613168565b611bcb565b610305611c72565b34801561072457600080fd5b506103186000805160206135fa83398151915281565b34801561074657600080fd5b50610305610755366004613180565b611cbd565b34801561076657600080fd5b50610318610775366004612fd1565b60136020526000908152604090205481565b34801561079357600080fd5b506103056107a2366004613130565b611d3d565b3480156107b357600080fd5b506102766107c2366004612feb565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205460ff1690565b3480156107fc57600080fd5b5061031861080b366004613107565b611dd3565b34801561081c57600080fd5b5061027661082b366004613168565b611e04565b34801561083c57600080fd5b5061027661084b366004612fd1565b612269565b600061085b82612317565b92915050565b60606001805461087090613526565b80601f016020809104026020016040519081016040528092919081815260200182805461089c90613526565b80156108e95780601f106108be576101008083540402835291602001916108e9565b820191906000526020600020905b8154815290600101906020018083116108cc57829003601f168201915b5050505050905090565b60006108fe82612357565b6109645760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600c60205260409020546001600160a01b031690565b600061098b82611405565b9050806001600160a01b0316836001600160a01b031614156109f95760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161095b565b336001600160a01b0382161480610a155750610a1581336107c2565b610a875760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161095b565b610a918383612374565b505050565b610aa033826123e2565b610abc5760405162461bcd60e51b815260040161095b90613410565b610a918383836124cc565b610adf6000805160206135fa83398151915233611a1b565b610afb5760405162461bcd60e51b815260040161095b90613382565b61138882600754610b0c9190613498565b1115610b5a5760405162461bcd60e51b815260206004820152601d60248201527f54686520746f6b656e73206c696d69742068617320726561636865642e000000604482015260640161095b565b60005b82811015610a915760006007546001610b769190613498565b9050610b828382612664565b5080610b8d81613561565b915050610b5d565b60125460ff1615610bb85760405162461bcd60e51b815260040161095b90613461565b6012805460ff191660011790819055610100900460ff1615610bd957600080fd5b33600090815260136020526040902054811115610c385760405162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e742066756e647320746f2077697468647261772e00604482015260640161095b565b610c628160136000335b6001600160a01b03168152602081019190915260400160002054906127ff565b3360008181526013602052604080822093909355915183908381818185875af1925050503d8060008114610cb2576040519150601f19603f3d011682016040523d82523d6000602084013e610cb7565b606091505b5050905080610cc557600080fd5b604051829033907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436490600090a350506012805460ff19169055565b600082815260208190526040902060010154610d1d905b33611a1b565b610d815760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201526e0818591b5a5b881d1bc819dc985b9d608a1b606482015260840161095b565b610d8b828261281f565b5050565b6001600160a01b0381163314610dff5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161095b565b610d8b82826128a3565b6001600160a01b038116600090815260106020908152604091829020805483518184028101840190945280845260609392830182828015610e6957602002820191906000526020600020905b815481526020019060010190808311610e55575b50505050509050919050565b610a9183838360405180602001604052806000815250611b94565b60038054610e9d90613526565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec990613526565b8015610f165780601f10610eeb57610100808354040283529160200191610f16565b820191906000526020600020905b815481529060010190602001808311610ef957829003601f168201915b505050505081565b601254600090819060ff1615610f465760405162461bcd60e51b815260040161095b90613461565b6012805460ff191660011790819055610100900460ff1615610f6757600080fd5b60008311610fb75760405162461bcd60e51b815260206004820152601c60248201527f5175616e74697479206d757374206265206d6f7265207468616e203000000000604482015260640161095b565b600b83106110075760405162461bcd60e51b815260206004820152601d60248201527f5175616e74697479206d757374206265206c657373207468616e203131000000604482015260640161095b565b60085460ff166111765733604051630f55ce5360e01b81526001600160a01b03909116600482015273751fc9716985d50fc5cefad7e267702730a44a3590630f55ce539060240160206040518083038186803b15801561106657600080fd5b505af415801561107a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109e919061314c565b6110ea5760405162461bcd60e51b815260206004820152601860248201527f5468652073616c65206861736e277420737461727465642e0000000000000000604482015260640161095b565b60028361110d335b6001600160a01b03166000908152600b602052604090205490565b6111179190613498565b11156111715760405162461bcd60e51b8152602060048201526024808201527f416c6c6f7765642032206e667420706572206163636f756e74206f6e2070726560448201526373616c6560e01b606482015260840161095b565b6111da565b600a83611182336110f2565b61118c9190613498565b11156111da5760405162461bcd60e51b815260206004820152601a60248201527f416c6c6f776564203130206e667420706572206163636f756e74000000000000604482015260640161095b565b611388836007546111eb9190613498565b11156112395760405162461bcd60e51b815260206004820152601d60248201527f54686520746f6b656e73206c696d69742068617320726561636865642e000000604482015260640161095b565b60085460ff16156112a45760055461125184346134c4565b101561129f5760405162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e742066756e647320746f2070757263686173652e00604482015260640161095b565b6112ff565b6006546112b184346134c4565b10156112ff5760405162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e742066756e647320746f2070757263686173652e00604482015260640161095b565b60085460405160009161010090046001600160a01b03169034908381818185875af1925050503d8060008114611351576040519150601f19603f3d011682016040523d82523d6000602084013e611356565b606091505b505090508061136457600080fd5b6000805b8581101561139c5760075461137e906001613498565b915061138a3383612664565b8061139481613561565b915050611368565b506012805460ff1916905560019590945092505050565b60006113cd6000805160206135fa83398151915233611a1b565b6113e95760405162461bcd60e51b815260040161095b90613382565b81516113fc906004906020850190612ea6565b50600192915050565b6000818152600a60205260408120546001600160a01b03168061085b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161095b565b60006001600160a01b0382166114e75760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161095b565b506001600160a01b03166000908152600b602052604090205490565b6000611510335b836123e2565b61152c5760405162461bcd60e51b815260040161095b906133cd565b6000828152600960205260408082208281556001810180546001600160a01b031990811690915560028201805490911690556003810183905560040182905551839133917f6d97e11e5e36c8f052a95826e5998a393bc23c1ca95dc24d00e28ce375dae1fc9190a3506001919050565b60125460009060ff16156115c25760405162461bcd60e51b815260040161095b90613461565b6012805460ff191660011790556115d882612357565b61161f5760405162461bcd60e51b8152602060048201526018602482015277151a19481d1bdad95b881a5cc81b9bdb995e1a5cdd195b9d60421b604482015260640161095b565b600082815260096020908152604091829020825160a0810184528154815260018201546001600160a01b0390811693820184905260028301541693810193909352600381015460608401526004015460808301526116bb5760405162461bcd60e51b815260206004820152601960248201527854686520746f6b656e206973206e6f7420666f722073616c6560381b604482015260640161095b565b6116c6335b846123e2565b156117135760405162461bcd60e51b815260206004820152601860248201527f546865206f776e65722063616e2774206d616b65206269640000000000000000604482015260640161095b565b60408101516001600160a01b031633141561179157600034116117785760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742066756e647320746f206d616b65206269640000604482015260640161095b565b60808101516117879034612908565b6080820152611801565b806060015134101580156117a85750806080015134115b6117f45760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742066756e647320746f206d616b65206269640000604482015260640161095b565b3460808201523360408201525b61182b3460136000335b6001600160a01b0316815260208101919091526040016000205490612908565b336000818152601360209081526040808320949094558682526009815283822085518155908501516001820180546001600160a01b039283166001600160a01b03199182161790915586860151600284018054919093169116179055606085015160038201556080850151600490910155915134927fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c91a38281608001516118d03390565b6001600160a01b03167f87f5b2fe112bf269d30fb8ca9dc0bde0afd0cc39258e13fafd75fe794795bf0e60405160405180910390a450506012805460ff1916905550600190565b6000611922336116c0565b61193e5760405162461bcd60e51b815260040161095b906133cd565b6040518060a001604052808481526020016119563390565b6001600160a01b0390811682526000602080840182905260408085018890526060948501839052888352600982529182902085518155908501516001820180549185166001600160a01b0319928316179055918501516002820180549190941692169190911790915590820151600382015560809091015160049091015581836119dd3390565b6001600160a01b03167f3717c35c2bbd44105584b2f11db3f276443b6788fbbd518272b823fa5988802460405160405180910390a450600192915050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606002805461087090613526565b6001600160a01b038216331415611aac5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161095b565b336000818152600d602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611b306000805160206135fa83398151915233611a1b565b611b4c5760405162461bcd60e51b815260040161095b90613382565b60085460ff1615611b5c57600080fd5b6008805460ff191660011790556040517f3a40cba5bc9ba53b982e020c19f51fdf3b4e536da88b16beafe417447277536d90600090a1565b611b9d3361150a565b611bb95760405162461bcd60e51b815260040161095b90613410565b611bc584848484612923565b50505050565b6060611bd682612357565b611c3a5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161095b565b611c42612956565b611c4b83612965565b604051602001611c5c92919061326d565b6040516020818303038152906040529050919050565b611c8034601360003361180b565b3360008181526013602052604080822093909355915134927fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c91a3565b600082815260208190526040902060010154611cd890610d17565b610dff5760405162461bcd60e51b815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201526f2061646d696e20746f207265766f6b6560801b606482015260840161095b565b611d556000805160206135fa83398151915233611a1b565b611db95760405162461bcd60e51b815260206004820152602f60248201527f596f75206d7573742068617665206d696e74657220726f6c6520746f2070617560448201526e1cd9481d1a194818dbdb9d1c9858dd608a1b606482015260840161095b565b601280549115156101000261ff0019909216919091179055565b600f6020528160005260406000208181548110611def57600080fd5b90600052602060002001600091509150505481565b60125460009060ff1615611e2a5760405162461bcd60e51b815260040161095b90613461565b6012805460ff191660011790819055610100900460ff1615611e4b57600080fd5b611e5482612357565b611e9b5760405162461bcd60e51b8152602060048201526018602482015277151a19481d1bdad95b881a5cc81b9bdb995e1a5cdd195b9d60421b604482015260640161095b565b600082815260096020908152604091829020825160a0810184528154815260018201546001600160a01b039081169382018490526002830154169381019390935260038101546060840152600401546080830152611f375760405162461bcd60e51b815260206004820152601960248201527854686520746f6b656e206973206e6f7420666f722073616c6560381b604482015260640161095b565b611f40336116c0565b611f9e5760405162461bcd60e51b815260206004820152602960248201527f4f6e6c79206f776e6572206f7220617070726f7665642063616e2061636365706044820152681d081d1a1948189a5960ba1b606482015260840161095b565b60808101516040808301516001600160a01b0316600090815260136020522054101561201d5760405162461bcd60e51b815260206004820152602860248201527f496e73756666696369656e742066756e6473206f6620746865206269646465726044820152672062616c616e636560c01b606482015260840161095b565b60008381526009602052604081208181556001810180546001600160a01b0319908116909155600280830180549092169091556003820183905560049091018290556080830151612070906064906134b0565b61207a91906134c4565b60808301516040808501516001600160a01b03166000908152601360205220549192506120a791906127ff565b6040808401516001600160a01b03166000908152601360208190529181209290925560808401516120db929091903361180b565b3360008181526013602081905260408220939093556120fe928492909190610c42565b33600090815260136020526040808220929092556008549151909161010090046001600160a01b03169083908381818185875af1925050503d8060008114612162576040519150601f19603f3d011682016040523d82523d6000602084013e612167565b606091505b505090508061217557600080fd5b61218883602001518460400151876124cc565b604051859033907f6d97e11e5e36c8f052a95826e5998a393bc23c1ca95dc24d00e28ce375dae1fc90600090a3608083015160408401516001600160a01b0316336001600160a01b03167f4b5796113f074ebf8f11d5bcdeb6349b2fbe47abed78419cdcdbbc15c6fcf8458860405161220391815260200190565b60405180910390a48483604001516001600160a01b031684602001516001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450506012805460ff1916905550600192915050565b60006122836000805160206135fa83398151915233611a1b565b6122eb5760405162461bcd60e51b815260206004820152603360248201527f596f75206d7573742068617665206d696e74657220726f6c6520746f206368616044820152726e676520726f79616c7479206164647265737360681b606482015260840161095b565b50600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055600190565b60006001600160e01b031982166380ac58cd60e01b148061234857506001600160e01b03198216635b5e139f60e01b145b8061085b575061085b82612a7f565b6000908152600a60205260409020546001600160a01b0316151590565b6000818152600c6020526040902080546001600160a01b0319166001600160a01b03841690811790915581906123a982611405565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006123ed82612357565b61244e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161095b565b600061245983611405565b9050806001600160a01b0316846001600160a01b031614806124945750836001600160a01b0316612489846108f3565b6001600160a01b0316145b806124c457506001600160a01b038082166000908152600d602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166124df82611405565b6001600160a01b0316146125475760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161095b565b6001600160a01b0382166125a95760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161095b565b6125b4600082612374565b6125be8382612ab4565b6125c88282612cca565b6001600160a01b0383166000908152600b602052604081208054600192906125f19084906134e3565b90915550506001600160a01b0382166000908152600b6020526040812080546001929061261f908490613498565b909155505060405181906001600160a01b0380851691908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90600090a4505050565b6001600160a01b0382166126ba5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161095b565b6126c381612357565b156127105760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161095b565b6001600160a01b0382166000908152600b60205260408120805460019290612739908490613498565b925050819055506001600760008282546127539190613498565b90915550506001600160a01b0382166000908152600f602090815260408220805460018101825590835291200181905561278d8282612cca565b6040516001600160a01b0383169082907ff3cea5493d790af0133817606f7350a91d7f154ea52eaa79d179d4d231e5010290600090a360405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60008282111561280e57600080fd5b61281882846134e3565b9392505050565b6128298282611a1b565b610d8b576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561285f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6128ad8282611a1b565b15610d8b576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006129148284613498565b90508281101561085b57600080fd5b61292e8484846124cc565b61293a84848484612d99565b611bc55760405162461bcd60e51b815260040161095b90613330565b60606004805461087090613526565b6060816129895750506040805180820190915260018152600360fc1b602082015290565b8160005b81156129b3578061299d81613561565b91506129ac9050600a836134b0565b915061298d565b60008167ffffffffffffffff8111156129dc57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612a06576020820181803683370190505b5090505b84156124c457612a1b6001836134e3565b9150612a28600a8661357c565b612a33906030613498565b60f81b818381518110612a5657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350612a78600a866134b0565b9450612a0a565b60006001600160e01b03198216637965db0b60e01b148061085b57506301ffc9a760e01b6001600160e01b031983161461085b565b6000818152600a60205260409020546001600160a01b03838116911614612b105760405162461bcd60e51b815260206004820152601060248201526f24b731b7b93932b1ba1037bbb732b91760811b604482015260640161095b565b6000818152600a6020908152604080832080546001600160a01b03199081169091556009835281842084815560018181018054841690556002820180549093169092556003810185905560040184905560118352818420546001600160a01b0387168552601090935290832054919291612b89916127ff565b9050818114612c3c576001600160a01b0384166000908152601060205260408120805483908110612bca57634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508060106000876001600160a01b03166001600160a01b031681526020019081526020016000208481548110612c1c57634e487b7160e01b600052603260045260246000fd5b600091825260208083209091019290925591825260119052604090208290555b6001600160a01b0384166000908152601060205260409020805480612c7157634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905582612c8f3390565b6001600160a01b03167f6d97e11e5e36c8f052a95826e5998a393bc23c1ca95dc24d00e28ce375dae1fc60405160405180910390a350505050565b6000818152600a60205260409020546001600160a01b031615612d2f5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f74206164642c20616c7265616479206f776e65642e000000000000604482015260640161095b565b6000818152600a6020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452601083529083208054600181810183558286529385200185905592529054612d86916127ff565b6000918252601160205260409091205550565b60006001600160a01b0384163b15612e9b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612ddd90339089908890889060040161329c565b602060405180830381600087803b158015612df757600080fd5b505af1925050508015612e27575060408051601f3d908101601f19168201909252612e24918101906131be565b60015b612e81573d808015612e55576040519150601f19603f3d011682016040523d82523d6000602084013e612e5a565b606091505b508051612e795760405162461bcd60e51b815260040161095b90613330565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506124c4565b506001949350505050565b828054612eb290613526565b90600052602060002090601f016020900481019282612ed45760008555612f1a565b82601f10612eed57805160ff1916838001178555612f1a565b82800160010185558215612f1a579182015b82811115612f1a578251825591602001919060010190612eff565b50612f26929150612f2a565b5090565b5b80821115612f265760008155600101612f2b565b600067ffffffffffffffff80841115612f5a57612f5a6135bc565b604051601f8501601f19908116603f01168101908282118183101715612f8257612f826135bc565b81604052809350858152868686011115612f9b57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114612fcc57600080fd5b919050565b600060208284031215612fe2578081fd5b61281882612fb5565b60008060408385031215612ffd578081fd5b61300683612fb5565b915061301460208401612fb5565b90509250929050565b600080600060608486031215613031578081fd5b61303a84612fb5565b925061304860208501612fb5565b9150604084013590509250925092565b6000806000806080858703121561306d578081fd5b61307685612fb5565b935061308460208601612fb5565b925060408501359150606085013567ffffffffffffffff8111156130a6578182fd5b8501601f810187136130b6578182fd5b6130c587823560208401612f3f565b91505092959194509250565b600080604083850312156130e3578182fd5b6130ec83612fb5565b915060208301356130fc816135d2565b809150509250929050565b60008060408385031215613119578182fd5b61312283612fb5565b946020939093013593505050565b600060208284031215613141578081fd5b8135612818816135d2565b60006020828403121561315d578081fd5b8151612818816135d2565b600060208284031215613179578081fd5b5035919050565b60008060408385031215613192578182fd5b8235915061301460208401612fb5565b6000602082840312156131b3578081fd5b8135612818816135e3565b6000602082840312156131cf578081fd5b8151612818816135e3565b6000602082840312156131eb578081fd5b813567ffffffffffffffff811115613201578182fd5b8201601f81018413613211578182fd5b6124c484823560208401612f3f565b60008060408385031215613232578182fd5b50508035926020909101359150565b600081518084526132598160208601602086016134fa565b601f01601f19169290920160200192915050565b6000835161327f8184602088016134fa565b8351908301906132938183602088016134fa565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906132cf90830184613241565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015613311578351835292840192918401916001016132f5565b50909695505050505050565b6020815260006128186020830184613241565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602b908201527f596f75206d7573742068617665206d696e74657220726f6c6520746f2063686160408201526a6e6765206261736555524960a81b606082015260800190565b60208082526023908201527f5468652073656c6c6572206973206e6f74206f776e6572206f7220617070726f6040820152621d995960ea1b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600082198211156134ab576134ab613590565b500190565b6000826134bf576134bf6135a6565b500490565b60008160001904831182151516156134de576134de613590565b500290565b6000828210156134f5576134f5613590565b500390565b60005b838110156135155781810151838201526020016134fd565b83811115611bc55750506000910152565b600181811c9082168061353a57607f821691505b6020821081141561355b57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561357557613575613590565b5060010190565b60008261358b5761358b6135a6565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80151581146135e057600080fd5b50565b6001600160e01b0319811681146135e057600080fdfe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220c3f9647eb38df3e0e017a7789de0955be90e30fdf559af4cfbeb09849f09bb9464736f6c63430008040033

Deployed ByteCode Sourcemap

17571:7044:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18812:161;;;;;;;;;;-1:-1:-1;18812:161:1;;;;;:::i;:::-;;:::i;:::-;;;8332:14:2;;8325:22;8307:41;;8295:2;8280:18;18812:161:1;;;;;;;;9275:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10372:221::-;;;;;;;;;;-1:-1:-1;10372:221:1;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6782:32:2;;;6764:51;;6752:2;6737:18;10372:221:1;6719:102:2;9967:397:1;;;;;;;;;;-1:-1:-1;9967:397:1;;;;;:::i;:::-;;:::i;:::-;;9497:89;;;;;;;;;;-1:-1:-1;9568:10:1;;9497:89;;;8768:25:2;;;8756:2;8741:18;9497:89:1;8723:76:2;11076:252:1;;;;;;;;;;-1:-1:-1;11076:252:1;;;;;:::i;:::-;;:::i;5305:123::-;;;;;;;;;;-1:-1:-1;5305:123:1;;;;;:::i;:::-;5371:7;5398:12;;;;;;;;;;:22;;;;5305:123;7554:22;;;;;;;;;;-1:-1:-1;7554:22:1;;;;;;;-1:-1:-1;;;;;7554:22:1;;;15093:386;;;;;;;;;;-1:-1:-1;15093:386:1;;;;;:::i;:::-;;:::i;24037:394::-;;;;;;;;;;-1:-1:-1;24037:394:1;;;;;:::i;:::-;;:::i;5436:232::-;;;;;;;;;;-1:-1:-1;5436:232:1;;;;;:::i;:::-;;:::i;5919:218::-;;;;;;;;;;-1:-1:-1;5919:218:1;;;;;:::i;:::-;;:::i;19673:124::-;;;;;;;;;;-1:-1:-1;19673:124:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11336:151::-;;;;;;;;;;-1:-1:-1;11336:151:1;;;;;:::i;:::-;;:::i;7287:27::-;;;;;;;;;;;;;:::i;22937:1092::-;;;;;;:::i;:::-;;:::i;:::-;;;;8552:14:2;;8545:22;8527:41;;8599:2;8584:18;;8577:34;;;;8500:18;22937:1092:1;8482:135:2;19184:224:1;;;;;;;;;;-1:-1:-1;19184:224:1;;;;;:::i;:::-;;:::i;9028:239::-;;;;;;;;;;-1:-1:-1;9028:239:1;;;;;:::i;:::-;;:::i;8812:208::-;;;;;;;;;;-1:-1:-1;8812:208:1;;;;;:::i;:::-;;:::i;7162:60::-;;;;;;;;;;;;7199:23;7162:60;;20149:280;;;;;;;;;;-1:-1:-1;20149:280:1;;;;;:::i;:::-;;:::i;20439:1016::-;;;;;;:::i;:::-;;:::i;17701:26::-;;;;;;;;;;-1:-1:-1;17701:26:1;;;;;;;;;;;19805:336;;;;;;;;;;-1:-1:-1;19805:336:1;;;;;:::i;:::-;;:::i;7587:43::-;;;;;;;;;;-1:-1:-1;7587:43:1;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7587:43:1;;;;;;;;;;;;;;;24188:25:2;;;-1:-1:-1;;;;;24287:15:2;;;24282:2;24267:18;;24260:43;24339:15;;;;24319:18;;;24312:43;;;;24386:2;24371:18;;24364:34;24429:3;24414:19;;24407:35;24175:3;24160:19;7587:43:1;24142:306:2;5158:139:1;;;;;;;;;;-1:-1:-1;5158:139:1;;;;;:::i;:::-;;:::i;9383:104::-;;;;;;;;;;;;;:::i;4567:49::-;;;;;;;;;;-1:-1:-1;4567:49:1;4612:4;4567:49;;10601:295;;;;;;;;;;-1:-1:-1;10601:295:1;;;;;:::i;:::-;;:::i;7474:30::-;;;;;;;;;;-1:-1:-1;7474:30:1;;;;;;;;22699:229;;;;;;;;;;;;;:::i;11495:285::-;;;;;;;;;;-1:-1:-1;11495:285:1;;;;;:::i;:::-;;:::i;9594:256::-;;;;;;;;;;-1:-1:-1;9594:256:1;;;;;:::i;:::-;;:::i;24439:169::-;;;:::i;7093:62::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7093:62:1;;5676:235;;;;;;;;;;-1:-1:-1;5676:235:1;;;;;:::i;:::-;;:::i;17813:46::-;;;;;;;;;;-1:-1:-1;17813:46:1;;;;;:::i;:::-;;;;;;;;;;;;;;18981:195;;;;;;;;;;-1:-1:-1;18981:195:1;;;;;:::i;:::-;;:::i;10904:164::-;;;;;;;;;;-1:-1:-1;10904:164:1;;;;;:::i;:::-;-1:-1:-1;;;;;11025:25:1;;;11001:4;11025:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;10904:164;7934:52;;;;;;;;;;-1:-1:-1;7934:52:1;;;;;:::i;:::-;;:::i;21463:1228::-;;;;;;;;;;-1:-1:-1;21463:1228:1;;;;;:::i;:::-;;:::i;19416:247::-;;;;;;;;;;-1:-1:-1;19416:247:1;;;;;:::i;:::-;;:::i;18812:161::-;18905:4;18929:36;18953:11;18929:23;:36::i;:::-;18922:43;18812:161;-1:-1:-1;;18812:161:1:o;9275:100::-;9329:13;9362:5;9355:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9275:100;:::o;10372:221::-;10448:7;10476:16;10484:7;10476;:16::i;:::-;10468:73;;;;-1:-1:-1;;;10468:73:1;;17355:2:2;10468:73:1;;;17337:21:2;17394:2;17374:18;;;17367:30;17433:34;17413:18;;;17406:62;-1:-1:-1;;;17484:18:2;;;17477:42;17536:19;;10468:73:1;;;;;;;;;-1:-1:-1;10561:24:1;;;;:15;:24;;;;;;-1:-1:-1;;;;;10561:24:1;;10372:221::o;9967:397::-;10048:13;10064:23;10079:7;10064:14;:23::i;:::-;10048:39;;10112:5;-1:-1:-1;;;;;10106:11:1;:2;-1:-1:-1;;;;;10106:11:1;;;10098:57;;;;-1:-1:-1;;;10098:57:1;;21235:2:2;10098:57:1;;;21217:21:2;21274:2;21254:18;;;21247:30;21313:34;21293:18;;;21286:62;-1:-1:-1;;;21364:18:2;;;21357:31;21405:19;;10098:57:1;21207:223:2;10098:57:1;4101:10;-1:-1:-1;;;;;10176:21:1;;;;:62;;-1:-1:-1;10201:37:1;10218:5;4101:10;10904:164;:::i;10201:37::-;10168:154;;;;-1:-1:-1;;;10168:154:1;;15395:2:2;10168:154:1;;;15377:21:2;15434:2;15414:18;;;15407:30;15473:34;15453:18;;;15446:62;15544:26;15524:18;;;15517:54;15588:19;;10168:154:1;15367:246:2;10168:154:1;10335:21;10344:2;10348:7;10335:8;:21::i;:::-;9967:397;;;:::o;11076:252::-;11184:41;4101:10;11217:7;11184:18;:41::i;:::-;11176:103;;;;-1:-1:-1;;;11176:103:1;;;;;;;:::i;:::-;11292:28;11302:4;11308:2;11312:7;11292:9;:28::i;15093:386::-;15169:34;-1:-1:-1;;;;;;;;;;;4101:10:1;5158:139;:::i;15169:34::-;15161:90;;;;-1:-1:-1;;;15161:90:1;;;;;;;:::i;:::-;15289:4;15281:5;15270:10;;:16;;;;:::i;:::-;:23;;15262:65;;;;-1:-1:-1;;;15262:65:1;;22055:2:2;15262:65:1;;;22037:21:2;22094:2;22074:18;;;22067:30;22133:31;22113:18;;;22106:59;22182:18;;15262:65:1;22027:179:2;15262:65:1;15343:6;15338:134;15359:5;15355:1;:9;15338:134;;;15386:16;15405:10;;15418:1;15405:14;;;;:::i;:::-;15386:33;;15434:26;15440:9;15451:8;15434:5;:26::i;:::-;-1:-1:-1;15366:3:1;;;;:::i;:::-;;;;15338:134;;24037:394;18207:4;;;;18206:5;18198:49;;;;-1:-1:-1;;;18198:49:1;;;;;;;:::i;:::-;18258:4;:11;;-1:-1:-1;;18258:11:1;18265:4;18258:11;;;;;;24110:14;::::1;18258:11:::0;24110:14:::1;24109:15;24101:24;;;::::0;::::1;;4101:10:::0;24154:24:::1;::::0;;;:10:::1;:24;::::0;;;;;24144:34;::::1;;24136:77;;;::::0;-1:-1:-1;;;24136:77:1;;18537:2:2;24136:77:1::1;::::0;::::1;18519:21:2::0;18576:2;18556:18;;;18549:30;18615:33;18595:18;;;18588:61;18666:18;;24136:77:1::1;18509:181:2::0;24136:77:1::1;24251:36;24280:6:::0;24251:10:::1;:24;4101:10:::0;24262:12:::1;-1:-1:-1::0;;;;;24251:24:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;24251:24:1;;;:28:::1;:36::i;:::-;4101:10:::0;24224:24:::1;::::0;;;:10:::1;:24;::::0;;;;;:63;;;;24317:33;;24339:6;;24224:24;24317:33;24224:24;24317:33;24339:6;4101:10;24317:33:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24298:52;;;24369:7;24361:16;;;::::0;::::1;;24393:30;::::0;24416:6;;4101:10;;24393:30:::1;::::0;;;::::1;-1:-1:-1::0;;18292:4:1;:12;;-1:-1:-1;;18292:12:1;;;24037:394::o;5436:232::-;5371:7;5398:12;;;;;;;;;;:22;;;5529:41;;5537:18;4101:10;5158:139;:::i;5529:41::-;5521:101;;;;-1:-1:-1;;;5521:101:1;;9230:2:2;5521:101:1;;;9212:21:2;9269:2;9249:18;;;9242:30;9308:34;9288:18;;;9281:62;-1:-1:-1;;;9359:18:2;;;9352:45;9414:19;;5521:101:1;9202:237:2;5521:101:1;5635:25;5646:4;5652:7;5635:10;:25::i;:::-;5436:232;;:::o;5919:218::-;-1:-1:-1;;;;;6015:23:1;;4101:10;6015:23;6007:83;;;;-1:-1:-1;;;6007:83:1;;23533:2:2;6007:83:1;;;23515:21:2;23572:2;23552:18;;;23545:30;23611:34;23591:18;;;23584:62;-1:-1:-1;;;23662:18:2;;;23655:45;23717:19;;6007:83:1;23505:237:2;6007:83:1;6103:26;6115:4;6121:7;6103:11;:26::i;19673:124::-;-1:-1:-1;;;;;19771:18:1;;;;;;:10;:18;;;;;;;;;19764:25;;;;;;;;;;;;;;;;;19736:16;;19764:25;;;19771:18;19764:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19673:124;;;:::o;11336:151::-;11440:39;11457:4;11463:2;11467:7;11440:39;;;;;;;;;;;;:16;:39::i;7287:27::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22937:1092::-;18207:4;;23005;;;;18207;;18206:5;18198:49;;;;-1:-1:-1;;;18198:49:1;;;;;;;:::i;:::-;18258:4;:11;;-1:-1:-1;;18258:11:1;18265:4;18258:11;;;;;;23036:14;::::1;18258:11:::0;23036:14:::1;23035:15;23027:24;;;::::0;::::1;;23073:1;23064:8;:10;23056:51;;;::::0;-1:-1:-1;;;23056:51:1;;10065:2:2;23056:51:1::1;::::0;::::1;10047:21:2::0;10104:2;10084:18;;;10077:30;10143;10123:18;;;10116:58;10191:18;;23056:51:1::1;10037:178:2::0;23056:51:1::1;23129:2;23120:8;:11;23112:53;;;::::0;-1:-1:-1;;;23112:53:1;;13438:2:2;23112:53:1::1;::::0;::::1;13420:21:2::0;13477:2;13457:18;;;13450:30;13516:31;13496:18;;;13489:59;13565:18;;23112:53:1::1;13410:179:2::0;23112:53:1::1;23176:10;::::0;::::1;;23171:282;;4101:10:::0;23203:24:::1;::::0;-1:-1:-1;;;23203:24:1;;-1:-1:-1;;;;;23203:22:1;;::::1;:24;::::0;::::1;6764:51:2::0;23203:22:1::1;::::0;::::1;::::0;6737:18:2;;23203:24:1::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23194:62;;;::::0;-1:-1:-1;;;23194:62:1;;11199:2:2;23194:62:1::1;::::0;::::1;11181:21:2::0;11238:2;11218:18;;;11211:30;11277:26;11257:18;;;11250:54;11321:18;;23194:62:1::1;11171:174:2::0;23194:62:1::1;23312:1;23302:8:::0;23271:30:::1;4101:10:::0;23288:12:::1;-1:-1:-1::0;;;;;14577:13:1;14550;14577;;;:9;:13;;;;;;;14486:109;23271:30:::1;:39;;;;:::i;:::-;:42;;23263:91;;;::::0;-1:-1:-1;;;23263:91:1;;22768:2:2;23263:91:1::1;::::0;::::1;22750:21:2::0;22807:2;22787:18;;;22780:30;22846:34;22826:18;;;22819:62;-1:-1:-1;;;22897:18:2;;;22890:34;22941:19;;23263:91:1::1;22740:226:2::0;23263:91:1::1;23171:282;;;23420:2;23410:8:::0;23379:30:::1;4101:10:::0;23396:12:::1;4021:98:::0;23379:30:::1;:39;;;;:::i;:::-;:43;;23371:82;;;::::0;-1:-1:-1;;;23371:82:1;;22413:2:2;23371:82:1::1;::::0;::::1;22395:21:2::0;22452:2;22432:18;;;22425:30;22491:28;22471:18;;;22464:56;22537:18;;23371:82:1::1;22385:176:2::0;23371:82:1::1;23494:4;23483:8;23472:10;;:19;;;;:::i;:::-;:26;;23464:68;;;::::0;-1:-1:-1;;;23464:68:1;;22055:2:2;23464:68:1::1;::::0;::::1;22037:21:2::0;22094:2;22074:18;;;22067:30;22133:31;22113:18;;;22106:59;22182:18;;23464:68:1::1;22027:179:2::0;23464:68:1::1;23547:10;::::0;::::1;;23543:208;;;23602:5;::::0;23580:18:::1;23590:8:::0;23580:9:::1;:18;:::i;:::-;:27;;23572:71;;;::::0;-1:-1:-1;;;23572:71:1;;13078:2:2;23572:71:1::1;::::0;::::1;13060:21:2::0;13117:2;13097:18;;;13090:30;13156:33;13136:18;;;13129:61;13207:18;;23572:71:1::1;13050:181:2::0;23572:71:1::1;23543:208;;;23703:12;::::0;23681:18:::1;23691:8:::0;23681:9:::1;:18;:::i;:::-;:34;;23673:78;;;::::0;-1:-1:-1;;;23673:78:1;;13078:2:2;23673:78:1::1;::::0;::::1;13060:21:2::0;13117:2;13097:18;;;13090:30;13156:33;13136:18;;;13129:61;13207:18;;23673:78:1::1;13050:181:2::0;23673:78:1::1;23781:7;::::0;:33:::1;::::0;23763:12:::1;::::0;23781:7:::1;::::0;::::1;-1:-1:-1::0;;;;;23781:7:1::1;::::0;23800:9:::1;::::0;23763:12;23781:33;23763:12;23781:33;23800:9;23781:7;:33:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23762:52;;;23833:7;23825:16;;;::::0;::::1;;23853:13;::::0;23871:115:::1;23892:8;23888:1;:12;23871:115;;;23924:10;::::0;:14:::1;::::0;23937:1:::1;23924:14;:::i;:::-;23913:25:::0;-1:-1:-1;23944:29:1::1;4101:10:::0;23964:8:::1;23944:5;:29::i;:::-;23902:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23871:115;;;-1:-1:-1::0;18292:4:1;:12;;-1:-1:-1;;18292:12:1;;;24007:4:::1;::::0;24012:8;;-1:-1:-1;22937:1092:1;-1:-1:-1;;;22937:1092:1:o;19184:224::-;19242:4;19267:34;-1:-1:-1;;;;;;;;;;;4101:10:1;5158:139;:::i;19267:34::-;19259:90;;;;-1:-1:-1;;;19259:90:1;;;;;;;:::i;:::-;19360:16;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;19394:4:1;;19184:224;-1:-1:-1;;19184:224:1:o;9028:239::-;9100:7;9136:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9136:16:1;9171:19;9163:73;;;;-1:-1:-1;;;9163:73:1;;16231:2:2;9163:73:1;;;16213:21:2;16270:2;16250:18;;;16243:30;16309:34;16289:18;;;16282:62;-1:-1:-1;;;16360:18:2;;;16353:39;16409:19;;9163:73:1;16203:231:2;8812:208:1;8884:7;-1:-1:-1;;;;;8912:19:1;;8904:74;;;;-1:-1:-1;;;8904:74:1;;15820:2:2;8904:74:1;;;15802:21:2;15859:2;15839:18;;;15832:30;15898:34;15878:18;;;15871:62;-1:-1:-1;;;15949:18:2;;;15942:40;15999:19;;8904:74:1;15792:232:2;8904:74:1;-1:-1:-1;;;;;;8996:16:1;;;;;:9;:16;;;;;;;8812:208::o;20149:280::-;20206:4;20230:41;4101:10;20249:12;20263:7;20230:18;:41::i;:::-;20222:89;;;;-1:-1:-1;;;20222:89:1;;;;;;;:::i;:::-;20329:19;;;;:10;:19;;;;;;20322:26;;;;;;;;-1:-1:-1;;;;;;20322:26:1;;;;;;;;;;;;;;;;;;;;;;;;;;;20364:35;20329:19;;4101:10;;20364:35;;20329:19;20364:35;-1:-1:-1;20417:4:1;;20149:280;-1:-1:-1;20149:280:1:o;20439:1016::-;18207:4;;20508;;18207;;18206:5;18198:49;;;;-1:-1:-1;;;18198:49:1;;;;;;;:::i;:::-;18258:4;:11;;-1:-1:-1;;18258:11:1;18265:4;18258:11;;;20532:16:::1;20540:7:::0;20532::::1;:16::i;:::-;20524:53;;;::::0;-1:-1:-1;;;20524:53:1;;14625:2:2;20524:53:1::1;::::0;::::1;14607:21:2::0;14664:2;14644:18;;;14637:30;-1:-1:-1;;;14683:18:2;;;14676:54;14747:18;;20524:53:1::1;14597:174:2::0;20524:53:1::1;20588:20;20611:19:::0;;;:10:::1;:19;::::0;;;;;;;;20588:42;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;20588:42:1;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;;;;::::1;;::::0;;;;;20641:62:::1;;;::::0;-1:-1:-1;;;20641:62:1;;20132:2:2;20641:62:1::1;::::0;::::1;20114:21:2::0;20171:2;20151:18;;;20144:30;-1:-1:-1;;;20190:18:2;;;20183:55;20255:18;;20641:62:1::1;20104:175:2::0;20641:62:1::1;20723:41;4101:10:::0;20742:12:::1;20756:7;20723:18;:41::i;:::-;20722:42;20714:79;;;::::0;-1:-1:-1;;;20714:79:1;;16641:2:2;20714:79:1::1;::::0;::::1;16623:21:2::0;16680:2;16660:18;;;16653:30;16719:26;16699:18;;;16692:54;16763:18;;20714:79:1::1;16613:174:2::0;20714:79:1::1;20808:12;::::0;::::1;::::0;-1:-1:-1;;;;;20808:28:1::1;4101:10:::0;20808:28:::1;20804:399;;;20872:1;20860:9;:13;20852:55;;;::::0;-1:-1:-1;;;20852:55:1;;17768:2:2;20852:55:1::1;::::0;::::1;17750:21:2::0;17807:2;17787:18;;;17780:30;17846:32;17826:18;;;17819:60;17896:18;;20852:55:1::1;17740:180:2::0;20852:55:1::1;20941:16;::::0;::::1;::::0;:31:::1;::::0;20962:9:::1;20941:20;:31::i;:::-;20922:16;::::0;::::1;:50:::0;20804:399:::1;;;21025:5;:14;;;21012:9;:27;;:59;;;;;21055:5;:16;;;21043:9;:28;21012:59;21004:102;;;::::0;-1:-1:-1;;;21004:102:1;;17768:2:2;21004:102:1::1;::::0;::::1;17750:21:2::0;17807:2;17787:18;;;17780:30;17846:32;17826:18;;;17819:60;17896:18;;21004:102:1::1;17740:180:2::0;21004:102:1::1;21140:9;21121:16;::::0;::::1;:28:::0;4101:10;21164:12:::1;::::0;::::1;:27:::0;20804:399:::1;21240:39;21269:9;21240:10;:24;4101:10:::0;21251:12:::1;-1:-1:-1::0;;;;;21240:24:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;21240:24:1;;;:28:::1;:39::i;:::-;4101:10:::0;21213:24:::1;::::0;;;:10:::1;:24;::::0;;;;;;;:66;;;;21290:19;;;:10:::1;:19:::0;;;;;:27;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;21290:27:1;;::::1;-1:-1:-1::0;;;;;;21290:27:1;;::::1;;::::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;21333:31;;21354:9:::1;::::0;21333:31:::1;::::0;::::1;21417:7;21400:5;:16;;;21387:12;4101:10:::0;;4021:98;21387:12:::1;-1:-1:-1::0;;;;;21380:45:1::1;;;;;;;;;;;-1:-1:-1::0;;18292:4:1;:12;;-1:-1:-1;;18292:12:1;;;-1:-1:-1;21443:4:1::1;::::0;20439:1016::o;19805:336::-;19869:4;19893:41;4101:10;19912:12;4021:98;19893:41;19885:89;;;;-1:-1:-1;;;19885:89:1;;;;;;;:::i;:::-;20006:51;;;;;;;;20014:7;20006:51;;;;20022:12;4101:10;;4021:98;20022:12;-1:-1:-1;;;;;20006:51:1;;;;;20043:1;20006:51;;;;;;;;;;;;;;;;;;;;;19985:19;;;:10;:19;;;;;;:72;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19985:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20046:8;19996:7;20081:12;4101:10;;4021:98;20081:12;-1:-1:-1;;;;;20073:38:1;;;;;;;;;;;-1:-1:-1;20129:4:1;19805:336;;;;:::o;5158:139::-;5236:4;5260:12;;;;;;;;;;;-1:-1:-1;;;;;5260:29:1;;;;;;;;;;;;;;;5158:139::o;9383:104::-;9439:13;9472:7;9465:14;;;;;:::i;10601:295::-;-1:-1:-1;;;;;10704:24:1;;4101:10;10704:24;;10696:62;;;;-1:-1:-1;;;10696:62:1;;12369:2:2;10696:62:1;;;12351:21:2;12408:2;12388:18;;;12381:30;12447:27;12427:18;;;12420:55;12492:18;;10696:62:1;12341:175:2;10696:62:1;4101:10;10771:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;10771:42:1;;;;;;;;;;;;:53;;-1:-1:-1;;10771:53:1;;;;;;;;;;10840:48;;8307:41:2;;;10771:42:1;;4101:10;10840:48;;8280:18:2;10840:48:1;;;;;;;10601:295;;:::o;22699:229::-;22748:34;-1:-1:-1;;;;;;;;;;;4101:10:1;5158:139;:::i;22748:34::-;22740:90;;;;-1:-1:-1;;;22740:90:1;;;;;;;:::i;:::-;22850:10;;;;22849:11;22841:20;;;;;;22872:10;:17;;-1:-1:-1;;22872:17:1;22885:4;22872:17;;;22905:15;;;;22872:10;;22905:15;22699:229::o;11495:285::-;11627:41;4101:10;11646:12;4021:98;11627:41;11619:103;;;;-1:-1:-1;;;11619:103:1;;;;;;;:::i;:::-;11733:39;11747:4;11753:2;11757:7;11766:5;11733:13;:39::i;:::-;11495:285;;;;:::o;9594:256::-;9667:13;9701:16;9709:7;9701;:16::i;:::-;9693:76;;;;-1:-1:-1;;;9693:76:1;;18897:2:2;9693:76:1;;;18879:21:2;18936:2;18916:18;;;18909:30;18975:34;18955:18;;;18948:62;-1:-1:-1;;;19026:18:2;;;19019:45;19081:19;;9693:76:1;18869:237:2;9693:76:1;9811:10;:8;:10::i;:::-;9823:17;9832:7;9823:8;:17::i;:::-;9794:47;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9780:62;;9594:256;;;:::o;24439:169::-;24513:39;24542:9;24513:10;:24;4101:10;24524:12;4021:98;24513:39;4101:10;24486:24;;;;:10;:24;;;;;;:66;;;;24568:32;;24590:9;;24568:32;;;24439:169::o;5676:235::-;5371:7;5398:12;;;;;;;;;;:22;;;5770:41;;5778:18;5305:123;5770:41;5762:102;;;;-1:-1:-1;;;5762:102:1;;14978:2:2;5762:102:1;;;14960:21:2;15017:2;14997:18;;;14990:30;15056:34;15036:18;;;15029:62;-1:-1:-1;;;15107:18:2;;;15100:46;15163:19;;5762:102:1;14950:238:2;18981:195:1;19047:34;-1:-1:-1;;;;;;;;;;;4101:10:1;5158:139;:::i;19047:34::-;19039:94;;;;-1:-1:-1;;;19039:94:1;;14209:2:2;19039:94:1;;;14191:21:2;14248:2;14228:18;;;14221:30;14287:34;14267:18;;;14260:62;-1:-1:-1;;;14338:18:2;;;14331:45;14393:19;;19039:94:1;14181:237:2;19039:94:1;19144:14;:24;;;;;;;-1:-1:-1;;19144:24:1;;;;;;;;;18981:195::o;7934:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21463:1228::-;18207:4;;21526;;18207;;18206:5;18198:49;;;;-1:-1:-1;;;18198:49:1;;;;;;;:::i;:::-;18258:4;:11;;-1:-1:-1;;18258:11:1;18265:4;18258:11;;;;;;21551:14;::::1;18258:11:::0;21551:14:::1;21550:15;21542:24;;;::::0;::::1;;21585:16;21593:7;21585;:16::i;:::-;21577:53;;;::::0;-1:-1:-1;;;21577:53:1;;14625:2:2;21577:53:1::1;::::0;::::1;14607:21:2::0;14664:2;14644:18;;;14637:30;-1:-1:-1;;;14683:18:2;;;14676:54;14747:18;;21577:53:1::1;14597:174:2::0;21577:53:1::1;21641:20;21664:19:::0;;;:10:::1;:19;::::0;;;;;;;;21641:42;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;21641:42:1;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;;;;::::1;;::::0;;;;;21694:62:::1;;;::::0;-1:-1:-1;;;21694:62:1;;20132:2:2;21694:62:1::1;::::0;::::1;20114:21:2::0;20171:2;20151:18;;;20144:30;-1:-1:-1;;;20190:18:2;;;20183:55;20255:18;;21694:62:1::1;20104:175:2::0;21694:62:1::1;21775:41;4101:10:::0;21794:12:::1;4021:98:::0;21775:41:::1;21767:95;;;::::0;-1:-1:-1;;;21767:95:1;;19313:2:2;21767:95:1::1;::::0;::::1;19295:21:2::0;19352:2;19332:18;;;19325:30;19391:34;19371:18;;;19364:62;-1:-1:-1;;;19442:18:2;;;19435:39;19491:19;;21767:95:1::1;19285:231:2::0;21767:95:1::1;21909:16;::::0;::::1;::::0;21892:12:::1;::::0;;::::1;::::0;-1:-1:-1;;;;;21881:24:1::1;;::::0;;;:10:::1;:24;::::0;;;:44:::1;;21873:96;;;::::0;-1:-1:-1;;;21873:96:1;;19723:2:2;21873:96:1::1;::::0;::::1;19705:21:2::0;19762:2;19742:18;;;19735:30;19801:34;19781:18;;;19774:62;-1:-1:-1;;;19852:18:2;;;19845:38;19900:19;;21873:96:1::1;19695:230:2::0;21873:96:1::1;21987:19;::::0;;;:10:::1;:19;::::0;;;;21980:26;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;21980:26:1;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;22041:16:::1;::::0;::::1;::::0;:22:::1;::::0;22060:3:::1;::::0;22041:22:::1;:::i;:::-;:41;;;;:::i;:::-;22149:16;::::0;::::1;::::0;22131:12:::1;::::0;;::::1;::::0;-1:-1:-1;;;;;22120:24:1::1;;::::0;;;:10:::1;:24;::::0;;;22017:65;;-1:-1:-1;22120:46:1::1;::::0;:24;:28:::1;:46::i;:::-;22104:12;::::0;;::::1;::::0;-1:-1:-1;;;;;22093:24:1::1;;::::0;;;:10:::1;:24;::::0;;;;;;:73;;;;22233:16:::1;::::0;::::1;::::0;22204:46:::1;::::0;22233:16;;22093:10;4101;22215:12:::1;4021:98:::0;22204:46:::1;4101:10:::0;22177:24:::1;::::0;;;:10:::1;:24;::::0;;;;;;:73;;;;22288:43:::1;::::0;22317:13;;22177:10;;:24;22299:12:::1;4021:98:::0;22288:43:::1;4101:10:::0;22261:24:::1;::::0;;;:10:::1;:24;::::0;;;;;:70;;;;22361:7:::1;::::0;:37;;22261:24;;22361:7:::1;::::0;::::1;-1:-1:-1::0;;;;;22361:7:1::1;::::0;22380:13;;22261:24;22361:37;22261:24;22361:37;22380:13;22361:7;:37:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22342:56;;;22417:7;22409:16;;;::::0;::::1;;22436:43;22446:5;:11;;;22458:5;:12;;;22471:7;22436:9;:43::i;:::-;22495:35;::::0;22522:7;;4101:10;;22495:35:::1;::::0;;;::::1;22578:16;::::0;::::1;::::0;22565:12:::1;::::0;::::1;::::0;-1:-1:-1;;;;;22546:57:1::1;4101:10:::0;-1:-1:-1;;;;;22546:57:1::1;;22595:7;22546:57;;;;8768:25:2::0;;8756:2;8741:18;;8723:76;22546:57:1::1;;;;;;;;22653:7;22640:5;:12;;;-1:-1:-1::0;;;;;22619:42:1::1;22628:5;:11;;;-1:-1:-1::0;;;;;22619:42:1::1;;;;;;;;;;;-1:-1:-1::0;;18292:4:1;:12;;-1:-1:-1;;18292:12:1;;;-1:-1:-1;22679:4:1::1;::::0;21463:1228;-1:-1:-1;;21463:1228:1:o;19416:247::-;19483:4;19507:34;-1:-1:-1;;;;;;;;;;;4101:10:1;5158:139;:::i;19507:34::-;19499:98;;;;-1:-1:-1;;;19499:98:1;;10779:2:2;19499:98:1;;;10761:21:2;10818:2;10798:18;;;10791:30;10857:34;10837:18;;;10830:62;-1:-1:-1;;;10908:18:2;;;10901:49;10967:19;;19499:98:1;10751:241:2;19499:98:1;-1:-1:-1;19608:7:1;:25;;-1:-1:-1;;;;;19608:25:1;;;;;-1:-1:-1;;;;;;19608:25:1;;;;;;;;;:7;;19416:247::o;8497:307::-;8614:4;-1:-1:-1;;;;;;8638:40:1;;-1:-1:-1;;;8638:40:1;;:105;;-1:-1:-1;;;;;;;8695:48:1;;-1:-1:-1;;;8695:48:1;8638:105;:158;;;;8760:36;8784:11;8760:23;:36::i;12068:127::-;12133:4;12157:16;;;:7;:16;;;;;;-1:-1:-1;;;;;12157:16:1;:30;;;12068:127::o;16440:174::-;16515:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;16515:29:1;-1:-1:-1;;;;;16515:29:1;;;;;;;;:24;;16569:23;16515:24;16569:14;:23::i;:::-;-1:-1:-1;;;;;16560:46:1;;;;;;;;;;;16440:174;;:::o;12203:348::-;12296:4;12321:16;12329:7;12321;:16::i;:::-;12313:73;;;;-1:-1:-1;;;12313:73:1;;13796:2:2;12313:73:1;;;13778:21:2;13835:2;13815:18;;;13808:30;13874:34;13854:18;;;13847:62;-1:-1:-1;;;13925:18:2;;;13918:42;13977:19;;12313:73:1;13768:234:2;12313:73:1;12397:13;12413:23;12428:7;12413:14;:23::i;:::-;12397:39;;12466:5;-1:-1:-1;;;;;12455:16:1;:7;-1:-1:-1;;;;;12455:16:1;;:51;;;;12499:7;-1:-1:-1;;;;;12475:31:1;:20;12487:7;12475:11;:20::i;:::-;-1:-1:-1;;;;;12475:31:1;;12455:51;:87;;;-1:-1:-1;;;;;;11025:25:1;;;11001:4;11025:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;12510:32;12447:96;12203:348;-1:-1:-1;;;;12203:348:1:o;15879:553::-;16004:4;-1:-1:-1;;;;;15977:31:1;:23;15992:7;15977:14;:23::i;:::-;-1:-1:-1;;;;;15977:31:1;;15969:85;;;;-1:-1:-1;;;15969:85:1;;18127:2:2;15969:85:1;;;18109:21:2;18166:2;18146:18;;;18139:30;18205:34;18185:18;;;18178:62;-1:-1:-1;;;18256:18:2;;;18249:39;18305:19;;15969:85:1;18099:231:2;15969:85:1;-1:-1:-1;;;;;16073:16:1;;16065:65;;;;-1:-1:-1;;;16065:65:1;;11964:2:2;16065:65:1;;;11946:21:2;12003:2;11983:18;;;11976:30;12042:34;12022:18;;;12015:62;-1:-1:-1;;;12093:18:2;;;12086:34;12137:19;;16065:65:1;11936:226:2;16065:65:1;16195:29;16212:1;16216:7;16195:8;:29::i;:::-;16245;16260:4;16266:7;16245:14;:29::i;:::-;16285:24;16297:2;16301:7;16285:11;:24::i;:::-;-1:-1:-1;;;;;16322:15:1;;;;;;:9;:15;;;;;:20;;16341:1;;16322:15;:20;;16341:1;;16322:20;:::i;:::-;;;;-1:-1:-1;;;;;;;16353:13:1;;;;;;:9;:13;;;;;:18;;16370:1;;16353:13;:18;;16370:1;;16353:18;:::i;:::-;;;;-1:-1:-1;;16397:27:1;;16416:7;;-1:-1:-1;;;;;16397:27:1;;;;;;;;;;;;;15879:553;;;:::o;14601:485::-;-1:-1:-1;;;;;14681:16:1;;14673:61;;;;-1:-1:-1;;;14673:61:1;;16994:2:2;14673:61:1;;;16976:21:2;;;17013:18;;;17006:30;17072:34;17052:18;;;17045:62;17124:18;;14673:61:1;16966:182:2;14673:61:1;14754:16;14762:7;14754;:16::i;:::-;14753:17;14745:58;;;;-1:-1:-1;;;14745:58:1;;10422:2:2;14745:58:1;;;10404:21:2;10461:2;10441:18;;;10434:30;10500;10480:18;;;10473:58;10548:18;;14745:58:1;10394:178:2;14745:58:1;-1:-1:-1;;;;;14874:13:1;;;;;;:9;:13;;;;;:18;;14891:1;;14874:13;:18;;14891:1;;14874:18;:::i;:::-;;;;;;;;14917:1;14903:10;;:15;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;14929:18:1;;;;;;:14;:18;;;;;;;:32;;;;;;;;;;;;;;;;14972:24;14944:2;14953:7;14972:11;:24::i;:::-;15012:17;;-1:-1:-1;;;;;15012:17:1;;;15017:7;;15012:17;;;;;15045:33;;15070:7;;-1:-1:-1;;;;;15045:33:1;;;15062:1;;15045:33;;15062:1;;15045:33;14601:485;;:::o;1114:124::-;1172:7;1205:1;1200;:6;;1192:15;;;;;;1225:5;1229:1;1225;:5;:::i;:::-;1218:12;1114:124;-1:-1:-1;;;1114:124:1:o;6468:229::-;6543:22;6551:4;6557:7;6543;:22::i;:::-;6538:152;;6582:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6582:29:1;;;;;;;;;:36;;-1:-1:-1;;6582:36:1;6614:4;6582:36;;;6665:12;4101:10;;4021:98;6665:12;-1:-1:-1;;;;;6638:40:1;6656:7;-1:-1:-1;;;;;6638:40:1;6650:4;6638:40;;;;;;;;;;6468:229;;:::o;6705:230::-;6780:22;6788:4;6794:7;6780;:22::i;:::-;6776:152;;;6851:5;6819:12;;;;;;;;;;;-1:-1:-1;;;;;6819:29:1;;;;;;;;;;:37;;-1:-1:-1;;6819:37:1;;;6876:40;4101:10;;6819:12;;6876:40;;6851:5;6876:40;6705:230;;:::o;1313:142::-;1371:9;1397:5;1401:1;1397;:5;:::i;:::-;1393:9;;1426:1;1421;:6;;1413:15;;;;;11788:272;11902:28;11912:4;11918:2;11922:7;11902:9;:28::i;:::-;11949:48;11972:4;11978:2;11982:7;11991:5;11949:22;:48::i;:::-;11941:111;;;;-1:-1:-1;;;11941:111:1;;;;;;;:::i;9858:99::-;9909:13;9942:7;9935:14;;;;;:::i;12935:545::-;12991:13;13034:10;13030:53;;-1:-1:-1;;13061:10:1;;;;;;;;;;;;-1:-1:-1;;;13061:10:1;;;;;12935:545::o;13030:53::-;13108:5;13093:12;13149:78;13156:9;;13149:78;;13182:8;;;;:::i;:::-;;-1:-1:-1;13205:10:1;;-1:-1:-1;13213:2:1;13205:10;;:::i;:::-;;;13149:78;;;13237:19;13269:6;13259:17;;;;;;-1:-1:-1;;;13259:17:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13259:17:1;;13237:39;;13287:154;13294:10;;13287:154;;13321:11;13331:1;13321:11;;:::i;:::-;;-1:-1:-1;13390:10:1;13398:2;13390:5;:10;:::i;:::-;13377:24;;:2;:24;:::i;:::-;13364:39;;13347:6;13354;13347:14;;;;;;-1:-1:-1;;;13347:14:1;;;;;;;;;;;;:56;-1:-1:-1;;;;;13347:56:1;;;;;;;;-1:-1:-1;13418:11:1;13427:2;13418:11;;:::i;:::-;;;13287:154;;4933:217;5018:4;-1:-1:-1;;;;;;5042:47:1;;-1:-1:-1;;;5042:47:1;;:100;;-1:-1:-1;;;;;;;;;;4283:40:1;;;5106:36;4174:157;13792:691;13877:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;13877:26:1;;;:17;;:26;13869:55;;;;-1:-1:-1;;;13869:55:1;;20486:2:2;13869:55:1;;;20468:21:2;20525:2;20505:18;;;20498:30;-1:-1:-1;;;20544:18:2;;;20537:46;20600:18;;13869:55:1;20458:166:2;13869:55:1;13942:17;;;;:7;:17;;;;;;;;13935:24;;-1:-1:-1;;;;;;13935:24:1;;;;;;13977:10;:20;;;;;13970:27;;;13935:24;13970:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14037:14;:24;;;;;;-1:-1:-1;;;;;14097:17:1;;;;:10;:17;;;;;;:24;14037;;13942:17;14097:31;;:28;:31::i;:::-;14072:56;;14163:18;14145:14;:36;14141:247;;-1:-1:-1;;;;;14218:17:1;;14198;14218;;;:10;:17;;;;;:33;;14236:14;;14218:33;;;;-1:-1:-1;;;14218:33:1;;;;;;;;;;;;;;;;;14198:53;;14306:9;14266:10;:17;14277:5;-1:-1:-1;;;;;14266:17:1;-1:-1:-1;;;;;14266:17:1;;;;;;;;;;;;14284:18;14266:37;;;;;;-1:-1:-1;;;14266:37:1;;;;;;;;;;;;;;;;;;;;:49;;;;14330:25;;;:14;:25;;;;;:46;;;14141:247;-1:-1:-1;;;;;14400:17:1;;;;;;:10;:17;;;;;:23;;;;;-1:-1:-1;;;14400:23:1;;;;;;;;;;;;;;;;;;;;;;;;;;14466:8;14453:12;4101:10;;4021:98;14453:12;-1:-1:-1;;;;;14439:36:1;;;;;;;;;;;13792:691;;;;:::o;13490:294::-;13599:1;13570:17;;;:7;:17;;;;;;-1:-1:-1;;;;;13570:17:1;:31;13562:70;;;;-1:-1:-1;;;13562:70:1;;12723:2:2;13562:70:1;;;12705:21:2;12762:2;12742:18;;;12735:30;12801:28;12781:18;;;12774:56;12847:18;;13562:70:1;12695:176:2;13562:70:1;13643:17;;;;:7;:17;;;;;;;;:23;;-1:-1:-1;;;;;;13643:23:1;-1:-1:-1;;;;;13643:23:1;;;;;;;;13679:15;;;:10;:15;;;;;:30;;-1:-1:-1;13679:30:1;;;;;;;;;;;;;;;13747:15;;:22;;:29;;:26;:29::i;:::-;13720:24;;;;:14;:24;;;;;;:56;-1:-1:-1;13490:294:1:o;16622:843::-;16743:4;-1:-1:-1;;;;;16769:13:1;;235:20;274:8;16765:693;;16805:72;;-1:-1:-1;;;16805:72:1;;-1:-1:-1;;;;;16805:36:1;;;;;:72;;4101:10;;16856:4;;16862:7;;16871:5;;16805:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16805:72:1;;;;;;;;-1:-1:-1;;16805:72:1;;;;;;;;;;;;:::i;:::-;;;16801:602;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17051:13:1;;17047:341;;17094:60;;-1:-1:-1;;;17094:60:1;;;;;;;:::i;17047:341::-;17338:6;17332:13;17323:6;17319:2;17315:15;17308:38;16801:602;-1:-1:-1;;;;;;16928:55:1;-1:-1:-1;;;16928:55:1;;-1:-1:-1;16921:62:1;;16765:693;-1:-1:-1;17442:4:1;16622:843;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:2;78:5;108:18;149:2;141:6;138:14;135:2;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:2;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:2;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:2;;;532:1;529;522:12;491:2;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;88:557;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:2;;757:42;;747:2;;813:1;810;803:12;747:2;699:124;;;:::o;828:196::-;887:6;940:2;928:9;919:7;915:23;911:32;908:2;;;961:6;953;946:22;908:2;989:29;1008:9;989:29;:::i;1029:270::-;1097:6;1105;1158:2;1146:9;1137:7;1133:23;1129:32;1126:2;;;1179:6;1171;1164:22;1126:2;1207:29;1226:9;1207:29;:::i;:::-;1197:39;;1255:38;1289:2;1278:9;1274:18;1255:38;:::i;:::-;1245:48;;1116:183;;;;;:::o;1304:338::-;1381:6;1389;1397;1450:2;1438:9;1429:7;1425:23;1421:32;1418:2;;;1471:6;1463;1456:22;1418:2;1499:29;1518:9;1499:29;:::i;:::-;1489:39;;1547:38;1581:2;1570:9;1566:18;1547:38;:::i;:::-;1537:48;;1632:2;1621:9;1617:18;1604:32;1594:42;;1408:234;;;;;:::o;1647:696::-;1742:6;1750;1758;1766;1819:3;1807:9;1798:7;1794:23;1790:33;1787:2;;;1841:6;1833;1826:22;1787:2;1869:29;1888:9;1869:29;:::i;:::-;1859:39;;1917:38;1951:2;1940:9;1936:18;1917:38;:::i;:::-;1907:48;;2002:2;1991:9;1987:18;1974:32;1964:42;;2057:2;2046:9;2042:18;2029:32;2084:18;2076:6;2073:30;2070:2;;;2121:6;2113;2106:22;2070:2;2149:22;;2202:4;2194:13;;2190:27;-1:-1:-1;2180:2:2;;2236:6;2228;2221:22;2180:2;2264:73;2329:7;2324:2;2311:16;2306:2;2302;2298:11;2264:73;:::i;:::-;2254:83;;;1777:566;;;;;;;:::o;2348:325::-;2413:6;2421;2474:2;2462:9;2453:7;2449:23;2445:32;2442:2;;;2495:6;2487;2480:22;2442:2;2523:29;2542:9;2523:29;:::i;:::-;2513:39;;2602:2;2591:9;2587:18;2574:32;2615:28;2637:5;2615:28;:::i;:::-;2662:5;2652:15;;;2432:241;;;;;:::o;2678:264::-;2746:6;2754;2807:2;2795:9;2786:7;2782:23;2778:32;2775:2;;;2828:6;2820;2813:22;2775:2;2856:29;2875:9;2856:29;:::i;:::-;2846:39;2932:2;2917:18;;;;2904:32;;-1:-1:-1;;;2765:177:2:o;2947:251::-;3003:6;3056:2;3044:9;3035:7;3031:23;3027:32;3024:2;;;3077:6;3069;3062:22;3024:2;3121:9;3108:23;3140:28;3162:5;3140:28;:::i;3203:255::-;3270:6;3323:2;3311:9;3302:7;3298:23;3294:32;3291:2;;;3344:6;3336;3329:22;3291:2;3381:9;3375:16;3400:28;3422:5;3400:28;:::i;3463:190::-;3522:6;3575:2;3563:9;3554:7;3550:23;3546:32;3543:2;;;3596:6;3588;3581:22;3543:2;-1:-1:-1;3624:23:2;;3533:120;-1:-1:-1;3533:120:2:o;3658:264::-;3726:6;3734;3787:2;3775:9;3766:7;3762:23;3758:32;3755:2;;;3808:6;3800;3793:22;3755:2;3849:9;3836:23;3826:33;;3878:38;3912:2;3901:9;3897:18;3878:38;:::i;3927:255::-;3985:6;4038:2;4026:9;4017:7;4013:23;4009:32;4006:2;;;4059:6;4051;4044:22;4006:2;4103:9;4090:23;4122:30;4146:5;4122:30;:::i;4187:259::-;4256:6;4309:2;4297:9;4288:7;4284:23;4280:32;4277:2;;;4330:6;4322;4315:22;4277:2;4367:9;4361:16;4386:30;4410:5;4386:30;:::i;4451:480::-;4520:6;4573:2;4561:9;4552:7;4548:23;4544:32;4541:2;;;4594:6;4586;4579:22;4541:2;4639:9;4626:23;4672:18;4664:6;4661:30;4658:2;;;4709:6;4701;4694:22;4658:2;4737:22;;4790:4;4782:13;;4778:27;-1:-1:-1;4768:2:2;;4824:6;4816;4809:22;4768:2;4852:73;4917:7;4912:2;4899:16;4894:2;4890;4886:11;4852:73;:::i;5400:258::-;5468:6;5476;5529:2;5517:9;5508:7;5504:23;5500:32;5497:2;;;5550:6;5542;5535:22;5497:2;-1:-1:-1;;5578:23:2;;;5648:2;5633:18;;;5620:32;;-1:-1:-1;5487:171:2:o;5663:257::-;5704:3;5742:5;5736:12;5769:6;5764:3;5757:19;5785:63;5841:6;5834:4;5829:3;5825:14;5818:4;5811:5;5807:16;5785:63;:::i;:::-;5902:2;5881:15;-1:-1:-1;;5877:29:2;5868:39;;;;5909:4;5864:50;;5712:208;-1:-1:-1;;5712:208:2:o;5925:470::-;6104:3;6142:6;6136:13;6158:53;6204:6;6199:3;6192:4;6184:6;6180:17;6158:53;:::i;:::-;6274:13;;6233:16;;;;6296:57;6274:13;6233:16;6330:4;6318:17;;6296:57;:::i;:::-;6369:20;;6112:283;-1:-1:-1;;;;6112:283:2:o;7034:488::-;-1:-1:-1;;;;;7303:15:2;;;7285:34;;7355:15;;7350:2;7335:18;;7328:43;7402:2;7387:18;;7380:34;;;7450:3;7445:2;7430:18;;7423:31;;;7228:4;;7471:45;;7496:19;;7488:6;7471:45;:::i;:::-;7463:53;7237:285;-1:-1:-1;;;;;;7237:285:2:o;7527:635::-;7698:2;7750:21;;;7820:13;;7723:18;;;7842:22;;;7669:4;;7698:2;7921:15;;;;7895:2;7880:18;;;7669:4;7967:169;7981:6;7978:1;7975:13;7967:169;;;8042:13;;8030:26;;8111:15;;;;8076:12;;;;8003:1;7996:9;7967:169;;;-1:-1:-1;8153:3:2;;7678:484;-1:-1:-1;;;;;;7678:484:2:o;8804:219::-;8953:2;8942:9;8935:21;8916:4;8973:44;9013:2;9002:9;8998:18;8990:6;8973:44;:::i;9444:414::-;9646:2;9628:21;;;9685:2;9665:18;;;9658:30;9724:34;9719:2;9704:18;;9697:62;-1:-1:-1;;;9790:2:2;9775:18;;9768:48;9848:3;9833:19;;9618:240::o;11350:407::-;11552:2;11534:21;;;11591:2;11571:18;;;11564:30;11630:34;11625:2;11610:18;;11603:62;-1:-1:-1;;;11696:2:2;11681:18;;11674:41;11747:3;11732:19;;11524:233::o;20629:399::-;20831:2;20813:21;;;20870:2;20850:18;;;20843:30;20909:34;20904:2;20889:18;;20882:62;-1:-1:-1;;;20975:2:2;20960:18;;20953:33;21018:3;21003:19;;20803:225::o;21435:413::-;21637:2;21619:21;;;21676:2;21656:18;;;21649:30;21715:34;21710:2;21695:18;;21688:62;-1:-1:-1;;;21781:2:2;21766:18;;21759:47;21838:3;21823:19;;21609:239::o;22971:355::-;23173:2;23155:21;;;23212:2;23192:18;;;23185:30;23251:33;23246:2;23231:18;;23224:61;23317:2;23302:18;;23145:181::o;24453:128::-;24493:3;24524:1;24520:6;24517:1;24514:13;24511:2;;;24530:18;;:::i;:::-;-1:-1:-1;24566:9:2;;24501:80::o;24586:120::-;24626:1;24652;24642:2;;24657:18;;:::i;:::-;-1:-1:-1;24691:9:2;;24632:74::o;24711:168::-;24751:7;24817:1;24813;24809:6;24805:14;24802:1;24799:21;24794:1;24787:9;24780:17;24776:45;24773:2;;;24824:18;;:::i;:::-;-1:-1:-1;24864:9:2;;24763:116::o;24884:125::-;24924:4;24952:1;24949;24946:8;24943:2;;;24957:18;;:::i;:::-;-1:-1:-1;24994:9:2;;24933:76::o;25014:258::-;25086:1;25096:113;25110:6;25107:1;25104:13;25096:113;;;25186:11;;;25180:18;25167:11;;;25160:39;25132:2;25125:10;25096:113;;;25227:6;25224:1;25221:13;25218:2;;;-1:-1:-1;;25262:1:2;25244:16;;25237:27;25067:205::o;25277:380::-;25356:1;25352:12;;;;25399;;;25420:2;;25474:4;25466:6;25462:17;25452:27;;25420:2;25527;25519:6;25516:14;25496:18;25493:38;25490:2;;;25573:10;25568:3;25564:20;25561:1;25554:31;25608:4;25605:1;25598:15;25636:4;25633:1;25626:15;25490:2;;25332:325;;;:::o;25662:135::-;25701:3;-1:-1:-1;;25722:17:2;;25719:2;;;25742:18;;:::i;:::-;-1:-1:-1;25789:1:2;25778:13;;25709:88::o;25802:112::-;25834:1;25860;25850:2;;25865:18;;:::i;:::-;-1:-1:-1;25899:9:2;;25840:74::o;25919:127::-;25980:10;25975:3;25971:20;25968:1;25961:31;26011:4;26008:1;26001:15;26035:4;26032:1;26025:15;26051:127;26112:10;26107:3;26103:20;26100:1;26093:31;26143:4;26140:1;26133:15;26167:4;26164:1;26157:15;26183:127;26244:10;26239:3;26235:20;26232:1;26225:31;26275:4;26272:1;26265:15;26299:4;26296:1;26289:15;26315:118;26401:5;26394:13;26387:21;26380:5;26377:32;26367:2;;26423:1;26420;26413:12;26367:2;26357:76;:::o;26438:131::-;-1:-1:-1;;;;;;26512:32:2;;26502:43;;26492:2;;26559:1;26556;26549:12

Swarm Source

ipfs://c3f9647eb38df3e0e017a7789de0955be90e30fdf559af4cfbeb09849f09bb94

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Cool Dogs are a collection of 5000 programmatically, randomly generated NFTs on the Ethereum blockchain.

Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.