ETH Price: $2,873.16 (-10.83%)
Gas: 20 Gwei

Token

TheGoldenPups (GoldenPups)
 

Overview

Max Total Supply

3,392 GoldenPups

Holders

805

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
abhinay.eth
0xbf9b7422f5e37135899dc1f4afa865f8e7b84182
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
TheGoldenPups

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-11
*/

pragma solidity ^0.8.0;

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


pragma solidity ^0.8.0;

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


pragma solidity ^0.8.0;

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

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


pragma solidity ^0.8.0;

library Address {

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

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

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

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

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


pragma solidity ^0.8.0;

interface IERC1155Receiver is IERC165 {


    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    )
        external
        returns(bytes4);

    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    )
        external
        returns(bytes4);
}



pragma solidity ^0.8.0;

interface IERC1155 is IERC165 {

    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
    event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values);
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);
    event URI(string value, uint256 indexed id);
    
    function balanceOf(address account, uint256 id) external view returns (uint256);
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory);
    function setApprovalForAll(address operator, bool approved) external;
    function isApprovedForAll(address account, address operator) external view returns (bool);
    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;
    function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external;
}


pragma solidity ^0.8.0;

library Strings {
    bytes16 private constant alphabet = "0123456789abcdef";
    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

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

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

}



pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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

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

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

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



pragma solidity ^0.8.0;

abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }


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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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


pragma solidity ^0.8.0;

interface IERC1155MetadataURI is IERC1155 {
    function uri(uint256 id) external view returns (string memory);
}


pragma solidity ^0.8.0;

contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
    using Address for address;

    mapping (uint256 => mapping(address => uint256)) private _balances;
    mapping (address => mapping(address => bool)) private _operatorApprovals;
    string private _uri;

    constructor (string memory uri_) {
        _setURI(uri_);
    }

    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return interfaceId == type(IERC1155).interfaceId
            || interfaceId == type(IERC1155MetadataURI).interfaceId
            || super.supportsInterface(interfaceId);
    }

    function uri(uint256) public view virtual override returns (string memory) {
        return _uri;
    }

    function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
        require(account != address(0), "ERC1155: balance query for the zero address");
        return _balances[id][account];
    }

    function balanceOfBatch(
        address[] memory accounts,
        uint256[] memory ids
    )
        public
        view
        virtual
        override
        returns (uint256[] memory)
    {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");
        uint256[] memory batchBalances = new uint256[](accounts.length);
        for (uint256 i = 0; i < accounts.length; ++i) {
            batchBalances[i] = balanceOf(accounts[i], ids[i]);
        }
        return batchBalances;
    }

  
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(_msgSender() != operator, "ERC1155: setting approval status for self");
        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

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

 
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    )
        public
        virtual
        override
    {
        require(to != address(0), "ERC1155: transfer to the zero address");
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not owner nor approved"
        );

        address operator = _msgSender();
        _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);
        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
        _balances[id][from] = fromBalance - amount;
        _balances[id][to] += amount;
        emit TransferSingle(operator, from, to, id, amount);
        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
    }

   
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    )
        public
        virtual
        override
    {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        require(to != address(0), "ERC1155: transfer to the zero address");
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: transfer caller is not owner nor approved"
        );

        address operator = _msgSender();
        _beforeTokenTransfer(operator, from, to, ids, amounts, data);
        for (uint256 i = 0; i < ids.length; ++i) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
            _balances[id][from] = fromBalance - amount;
            _balances[id][to] += amount;
        }

        emit TransferBatch(operator, from, to, ids, amounts);
        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
    }

   
    function _setURI(string memory newuri) internal virtual {
        _uri = newuri;
    }

    function _mint(address account, uint256 id, uint256 amount, bytes memory data) internal virtual {
        require(account != address(0), "ERC1155: mint to the zero address");
        address operator = _msgSender();
        _beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);
        _balances[id][account] += amount;
        emit TransferSingle(operator, address(0), account, id, amount);
        _doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data);
    }

    function _mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        address operator = _msgSender();
        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);

        for (uint i = 0; i < ids.length; i++) {
            _balances[ids[i]][to] += amounts[i];
        }

        emit TransferBatch(operator, address(0), to, ids, amounts);
        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
    }


    function _burn(address account, uint256 id, uint256 amount) internal virtual {
        require(account != address(0), "ERC1155: burn from the zero address");
        address operator = _msgSender();
        _beforeTokenTransfer(operator, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");
        uint256 accountBalance = _balances[id][account];
        require(accountBalance >= amount, "ERC1155: burn amount exceeds balance");
        _balances[id][account] = accountBalance - amount;

        emit TransferSingle(operator, account, address(0), id, amount);
    }

    function _burnBatch(address account, uint256[] memory ids, uint256[] memory amounts) internal virtual {
        require(account != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        address operator = _msgSender();
        _beforeTokenTransfer(operator, account, address(0), ids, amounts, "");
        for (uint i = 0; i < ids.length; i++) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 accountBalance = _balances[id][account];
            require(accountBalance >= amount, "ERC1155: burn amount exceeds balance");
            _balances[id][account] = accountBalance - amount;
        }

        emit TransferBatch(operator, account, address(0), ids, amounts);
    }

   
    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    )
        internal
        virtual
    { }

    function _doSafeTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    )
        private
    {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
                if (response != IERC1155Receiver(to).onERC1155Received.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _doSafeBatchTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    )
        private
    {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (bytes4 response) {
                if (response != IERC1155Receiver(to).onERC1155BatchReceived.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
        uint256[] memory array = new uint256[](1);
        array[0] = element;

        return array;
    }
}


pragma solidity 0.8.0;

interface IERC20 {
	function totalSupply() external view returns (uint256);
	function balanceOf(address account) external view returns (uint256);
	function transfer(address recipient, uint256 amount) external returns (bool);
	function allowance(address owner, address spender) external view returns (uint256);
	function approve(address spender, uint256 amount) external returns (bool);
	function transferFrom(
		address sender,
		address recipient,
		uint256 amount
	) external returns (bool);

	event Transfer(address indexed from, address indexed to, uint256 value);
	event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract TheGoldenPups is ERC1155, Ownable {
    
	using SafeMath for uint256;
	using Strings for string;
	
	uint256 public goldenSold;
	uint256 public giveAways = 1;
	mapping(uint256 => uint256) private _totalSupply;
	mapping(uint256 => string) public _tokenURIs;
    
    string public name = "TheGoldenPups";
    string public symbol = "GoldenPups";
	string public _baseURI = "https://thegoldenpups.io/api/golden/";
	uint256 public itemPrice;
	address public companyWallet = 0xCA0F61A6481bd3bd3cb3a0e5C80192E25Ac0878c;

	constructor() ERC1155(_baseURI) {
		itemPrice = 30000000000000000; // 0.03 ETH
	}

	function setItemPrice(uint256 _price) public onlyOwner {
		itemPrice = _price;
	}

	function getItemPrice() public view returns (uint256) {
		return itemPrice;
	}

	function buyPup(uint256 _howMany) public payable {
	    require(goldenSold + _howMany <= 9949, "All sold out");
		require(_howMany <= 10, "max 10 goldens at once");
		require(itemPrice.mul(_howMany) == msg.value, "insufficient ETH");
		uint256 id = goldenSold + 51;
		for (uint256 i = 0; i < _howMany; i++) {
			getGolden(id+i);
		}
        goldenSold = goldenSold + _howMany;
	}

	function getGolden(uint256 id) private {
	    if (_totalSupply[id] == 0) {
			_totalSupply[id] = 1;
			_mint(msg.sender, id, 1, "0x0000");
			return;
		}
	}

	function mint(address to) public onlyOwner {
	    require(giveAways <= 50, "max 50 giveAways allowed");
        require(_totalSupply[giveAways] == 0, "this golden is already owned by someone");
		_totalSupply[giveAways] = 1;
		_mint(to, giveAways, 1, "0x0000");	
		giveAways ++;
	}

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

	function uri(uint256 tokenId) public view override returns (string memory) {
		return string(abi.encodePacked(_baseURI, uint2str(tokenId)));
	}
	
	function tokenURI(uint256 tokenId) public view returns (string memory) {
		return string(abi.encodePacked(_baseURI, uint2str(tokenId)));
	}

	function uint2str(uint256 _i) internal pure returns (string memory _uintAsString) {
		if (_i == 0) {
			return "0";
		}
		uint256 j = _i;
		uint256 len;
		while (j != 0) {
			len++;
			j /= 10;
		}
		bytes memory bstr = new bytes(len);
		uint256 k = len;
		while (_i != 0) {
			k = k - 1;
			uint8 temp = (48 + uint8(_i - (_i / 10) * 10));
			bytes1 b1 = bytes1(temp);
			bstr[k] = b1;
			_i /= 10;
		}
		return string(bstr);
	}

	function totalSupply(uint256 id) public view virtual returns (uint256) {
		return _totalSupply[id];
	}

	function exists(uint256 id) public view virtual returns (bool) {
		return totalSupply(id) > 0;
	}
	
	function withdraw() public onlyOwner {
		uint256 balance = address(this).balance;
		payable(companyWallet).transfer(balance);
	}

	function reclaimToken(IERC20 token) public onlyOwner {
		require(address(token) != address(0));
		uint256 balance = token.balanceOf(address(this));
		token.transfer(msg.sender, balance);
	}
	
	function changeComapnyWallet(address target) public onlyOwner {
		companyWallet = target;
	}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"_baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_tokenURIs","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_howMany","type":"uint256"}],"name":"buyPup","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"changeComapnyWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"companyWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getItemPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"giveAways","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goldenSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"itemPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reclaimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setItemPrice","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":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

600160055560c0604052600d60808190526c546865476f6c64656e5075707360981b60a0908152620000359160089190620001fc565b5060408051808201909152600a80825269476f6c64656e5075707360b01b60209092019182526200006991600991620001fc565b506040518060600160405280602481526020016200298d6024913980516200009a91600a91602090910190620001fc565b50600c80546001600160a01b03191673ca0f61a6481bd3bd3cb3a0e5c80192e25ac0878c179055348015620000ce57600080fd5b50600a8054620000de90620002a2565b80601f01602080910402602001604051908101604052809291908181526020018280546200010c90620002a2565b80156200015d5780601f1062000131576101008083540402835291602001916200015d565b820191906000526020600020905b8154815290600101906020018083116200013f57829003601f168201915b50505050506200017381620001df60201b60201c565b50600062000180620001f8565b600380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350666a94d74f430000600b55620002df565b8051620001f4906002906020840190620001fc565b5050565b3390565b8280546200020a90620002a2565b90600052602060002090601f0160209004810192826200022e576000855562000279565b82601f106200024957805160ff191683800117855562000279565b8280016001018555821562000279579182015b82811115620002795782518255916020019190600101906200025c565b50620002879291506200028b565b5090565b5b808211156200028757600081556001016200028c565b600281046001821680620002b757607f821691505b60208210811415620002d957634e487b7160e01b600052602260045260246000fd5b50919050565b61269e80620002ef6000396000f3fe6080604052600436106101cc5760003560e01c806355f804b3116100f7578063a22cb46511610095578063dac6db1c11610064578063dac6db1c146104c2578063e985e9c5146104d7578063f242432a146104f7578063f2fde38b14610517576101cc565b8063a22cb4651461046f578063bd85b0391461048f578063c0886e9c146104af578063c87b56dd146102ad576101cc565b8063743976a0116100d1578063743976a0146104105780638da5cb5b1461042557806395d89b411461043a57806398ca77951461044f576101cc565b806355f804b3146103bb5780636a627842146103db578063715018a6146103fb576101cc565b806314a369ab1161016f5780632eb2c2d61161013e5780632eb2c2d6146103395780633ccfd60b146103595780634e1273f41461036e5780634f558e791461039b576101cc565b806314a369ab146102cd57806317ffc320146102e25780631ec32d15146103025780632083ad8214610324576101cc565b8063095eb8c9116101ab578063095eb8c9146102565780630b0d7825146102785780630bb78ec11461028d5780630e89341c146102ad576101cc565b8062fdd58e146101d157806301ffc9a71461020757806306fdde0314610234575b600080fd5b3480156101dd57600080fd5b506101f16101ec366004611b1e565b610537565b6040516101fe91906123ce565b60405180910390f35b34801561021357600080fd5b50610227610222366004611c25565b61058e565b6040516101fe9190611f0b565b34801561024057600080fd5b506102496105d6565b6040516101fe9190611f16565b34801561026257600080fd5b5061027661027136600461198c565b610664565b005b34801561028457600080fd5b506101f16106c5565b34801561029957600080fd5b506102496102a8366004611cab565b6106cb565b3480156102b957600080fd5b506102496102c8366004611cab565b6106e4565b3480156102d957600080fd5b506101f1610718565b3480156102ee57600080fd5b506102766102fd36600461198c565b61071e565b34801561030e57600080fd5b50610317610877565b6040516101fe9190611e03565b34801561033057600080fd5b506101f1610886565b34801561034557600080fd5b506102766103543660046119e0565b61088d565b34801561036557600080fd5b50610276610af3565b34801561037a57600080fd5b5061038e610389366004611b49565b610b70565b6040516101fe9190611ed3565b3480156103a757600080fd5b506102276103b6366004611cab565b610c90565b3480156103c757600080fd5b506102766103d6366004611c5d565b610ca3565b3480156103e757600080fd5b506102766103f636600461198c565b610cf5565b34801561040757600080fd5b50610276610de6565b34801561041c57600080fd5b50610249610e6f565b34801561043157600080fd5b50610317610e7c565b34801561044657600080fd5b50610249610e8b565b34801561045b57600080fd5b5061027661046a366004611cab565b610e98565b34801561047b57600080fd5b5061027661048a366004611af1565b610edc565b34801561049b57600080fd5b506101f16104aa366004611cab565b610faa565b6102766104bd366004611cab565b610fbc565b3480156104ce57600080fd5b506101f1611090565b3480156104e357600080fd5b506102276104f23660046119a8565b611096565b34801561050357600080fd5b50610276610512366004611a8a565b6110c4565b34801561052357600080fd5b5061027661053236600461198c565b61125a565b60006001600160a01b0383166105685760405162461bcd60e51b815260040161055f90611fc5565b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b14806105bf57506001600160e01b031982166303a24d0760e21b145b806105ce57506105ce8261131b565b90505b919050565b600880546105e390612502565b80601f016020809104026020016040519081016040528092919081815260200182805461060f90612502565b801561065c5780601f106106315761010080835404028352916020019161065c565b820191906000526020600020905b81548152906001019060200180831161063f57829003601f168201915b505050505081565b61066c611334565b6001600160a01b031661067d610e7c565b6001600160a01b0316146106a35760405162461bcd60e51b815260040161055f906121fe565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60045481565b600760205260009081526040902080546105e390612502565b6060600a6106f183611338565b604051602001610702929190611d5d565b6040516020818303038152906040529050919050565b60055481565b610726611334565b6001600160a01b0316610737610e7c565b6001600160a01b03161461075d5760405162461bcd60e51b815260040161055f906121fe565b6001600160a01b03811661077057600080fd5b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061079f903090600401611e03565b60206040518083038186803b1580156107b757600080fd5b505afa1580156107cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ef9190611cc3565b60405163a9059cbb60e01b81529091506001600160a01b0383169063a9059cbb906108209033908590600401611eba565b602060405180830381600087803b15801561083a57600080fd5b505af115801561084e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108729190611c09565b505050565b600c546001600160a01b031681565b600b545b90565b81518351146108ae5760405162461bcd60e51b815260040161055f90612315565b6001600160a01b0384166108d45760405162461bcd60e51b815260040161055f9061211d565b6108dc611334565b6001600160a01b0316856001600160a01b031614806109025750610902856104f2611334565b61091e5760405162461bcd60e51b815260040161055f90612162565b6000610928611334565b9050610938818787878787610aeb565b60005b8451811015610a8557600085828151811061096657634e487b7160e01b600052603260045260246000fd5b60200260200101519050600085838151811061099257634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156109e25760405162461bcd60e51b815260040161055f906121b4565b6109ec82826124bb565b60008085815260200190815260200160002060008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055508160008085815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254610a6a919061243f565b9250508190555050505080610a7e9061253d565b905061093b565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ad5929190611ee6565b60405180910390a4610aeb81878787878761147e565b505050505050565b610afb611334565b6001600160a01b0316610b0c610e7c565b6001600160a01b031614610b325760405162461bcd60e51b815260040161055f906121fe565b600c5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610b6c573d6000803e3d6000fd5b5050565b60608151835114610b935760405162461bcd60e51b815260040161055f906122cc565b6000835167ffffffffffffffff811115610bbd57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610be6578160200160208202803683370190505b50905060005b8451811015610c8857610c4d858281518110610c1857634e487b7160e01b600052603260045260246000fd5b6020026020010151858381518110610c4057634e487b7160e01b600052603260045260246000fd5b6020026020010151610537565b828281518110610c6d57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610c818161253d565b9050610bec565b509392505050565b600080610c9c83610faa565b1192915050565b610cab611334565b6001600160a01b0316610cbc610e7c565b6001600160a01b031614610ce25760405162461bcd60e51b815260040161055f906121fe565b8051610b6c90600a906020840190611810565b610cfd611334565b6001600160a01b0316610d0e610e7c565b6001600160a01b031614610d345760405162461bcd60e51b815260040161055f906121fe565b60326005541115610d575760405162461bcd60e51b815260040161055f90612010565b60055460009081526006602052604090205415610d865760405162461bcd60e51b815260040161055f906120d6565b600160066000600554815260200190815260200160002081905550610dce8160055460016040518060400160405280600681526020016503078303030360d41b81525061158c565b60058054906000610dde8361253d565b919050555050565b610dee611334565b6001600160a01b0316610dff610e7c565b6001600160a01b031614610e255760405162461bcd60e51b815260040161055f906121fe565b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600a80546105e390612502565b6003546001600160a01b031690565b600980546105e390612502565b610ea0611334565b6001600160a01b0316610eb1610e7c565b6001600160a01b031614610ed75760405162461bcd60e51b815260040161055f906121fe565b600b55565b816001600160a01b0316610eee611334565b6001600160a01b03161415610f155760405162461bcd60e51b815260040161055f90612283565b8060016000610f22611334565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610f66611334565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f9e9190611f0b565b60405180910390a35050565b60009081526006602052604090205490565b6126dd81600454610fcd919061243f565b1115610feb5760405162461bcd60e51b815260040161055f9061225d565b600a81111561100c5760405162461bcd60e51b815260040161055f9061239e565b600b54349061101b9083611673565b146110385760405162461bcd60e51b815260040161055f90612233565b60006004546033611049919061243f565b905060005b8281101561107a57611068611063828461243f565b611686565b806110728161253d565b91505061104e565b5081600454611089919061243f565b6004555050565b600b5481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b0384166110ea5760405162461bcd60e51b815260040161055f9061211d565b6110f2611334565b6001600160a01b0316856001600160a01b031614806111185750611118856104f2611334565b6111345760405162461bcd60e51b815260040161055f9061208d565b600061113e611334565b905061115e81878761114f886116e0565b611158886116e0565b87610aeb565b6000848152602081815260408083206001600160a01b038a1684529091529020548381101561119f5760405162461bcd60e51b815260040161055f906121b4565b6111a984826124bb565b6000868152602081815260408083206001600160a01b038c811685529252808320939093558816815290812080548692906111e590849061243f565b92505081905550856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161123b9291906123d7565b60405180910390a4611251828888888888611739565b50505050505050565b611262611334565b6001600160a01b0316611273610e7c565b6001600160a01b0316146112995760405162461bcd60e51b815260040161055f906121fe565b6001600160a01b0381166112bf5760405162461bcd60e51b815260040161055f90612047565b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b031981166301ffc9a760e01b14919050565b3390565b60608161135d57506040805180820190915260018152600360fc1b60208201526105d1565b8160005b811561138757806113718161253d565b91506113809050600a8361247c565b9150611361565b60008167ffffffffffffffff8111156113b057634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156113da576020820181803683370190505b509050815b8515611475576113f06001826124bb565b905060006113ff600a8861247c565b61140a90600a61249c565b61141490886124bb565b61141f906030612457565b905060008160f81b90508084848151811061144a57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535061146c600a8961247c565b975050506113df565b50949350505050565b611490846001600160a01b031661180a565b15610aeb5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906114c99089908990889088908890600401611e17565b602060405180830381600087803b1580156114e357600080fd5b505af1925050508015611513575060408051601f3d908101601f1916820190925261151091810190611c41565b60015b61155c5761151f61258a565b8061152a5750611544565b8060405162461bcd60e51b815260040161055f9190611f16565b60405162461bcd60e51b815260040161055f90611f29565b6001600160e01b0319811663bc197c8160e01b146112515760405162461bcd60e51b815260040161055f90611f7d565b6001600160a01b0384166115b25760405162461bcd60e51b815260040161055f9061235d565b60006115bc611334565b90506115ce8160008761114f886116e0565b6000848152602081815260408083206001600160a01b0389168452909152812080548592906115fe90849061243f565b92505081905550846001600160a01b031660006001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516116559291906123d7565b60405180910390a461166c81600087878787611739565b5050505050565b600061167f828461249c565b9392505050565b6000818152600660205260409020546116dd57600160066000838152602001908152602001600020819055506116dd338260016040518060400160405280600681526020016503078303030360d41b81525061158c565b50565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061172857634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b61174b846001600160a01b031661180a565b15610aeb5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906117849089908990889088908890600401611e75565b602060405180830381600087803b15801561179e57600080fd5b505af19250505080156117ce575060408051601f3d908101601f191682019092526117cb91810190611c41565b60015b6117da5761151f61258a565b6001600160e01b0319811663f23a6e6160e01b146112515760405162461bcd60e51b815260040161055f90611f7d565b3b151590565b82805461181c90612502565b90600052602060002090601f01602090048101928261183e5760008555611884565b82601f1061185757805160ff1916838001178555611884565b82800160010185558215611884579182015b82811115611884578251825591602001919060010190611869565b50611890929150611894565b5090565b5b808211156118905760008155600101611895565b600067ffffffffffffffff8311156118c3576118c361256e565b6118d6601f8401601f19166020016123e5565b90508281528383830111156118ea57600080fd5b828260208301376000602084830101529392505050565b600082601f830112611911578081fd5b813560206119266119218361240f565b6123e5565b8281528181019085830183850287018401881015611942578586fd5b855b8581101561196057813584529284019290840190600101611944565b5090979650505050505050565b600082601f83011261197d578081fd5b61167f838335602085016118a9565b60006020828403121561199d578081fd5b813561167f8161262f565b600080604083850312156119ba578081fd5b82356119c58161262f565b915060208301356119d58161262f565b809150509250929050565b600080600080600060a086880312156119f7578081fd5b8535611a028161262f565b94506020860135611a128161262f565b9350604086013567ffffffffffffffff80821115611a2e578283fd5b611a3a89838a01611901565b94506060880135915080821115611a4f578283fd5b611a5b89838a01611901565b93506080880135915080821115611a70578283fd5b50611a7d8882890161196d565b9150509295509295909350565b600080600080600060a08688031215611aa1578081fd5b8535611aac8161262f565b94506020860135611abc8161262f565b93506040860135925060608601359150608086013567ffffffffffffffff811115611ae5578182fd5b611a7d8882890161196d565b60008060408385031215611b03578182fd5b8235611b0e8161262f565b915060208301356119d581612644565b60008060408385031215611b30578182fd5b8235611b3b8161262f565b946020939093013593505050565b60008060408385031215611b5b578081fd5b823567ffffffffffffffff80821115611b72578283fd5b818501915085601f830112611b85578283fd5b81356020611b956119218361240f565b82815281810190858301838502870184018b1015611bb1578788fd5b8796505b84871015611bdc578035611bc88161262f565b835260019690960195918301918301611bb5565b5096505086013592505080821115611bf2578283fd5b50611bff85828601611901565b9150509250929050565b600060208284031215611c1a578081fd5b815161167f81612644565b600060208284031215611c36578081fd5b813561167f81612652565b600060208284031215611c52578081fd5b815161167f81612652565b600060208284031215611c6e578081fd5b813567ffffffffffffffff811115611c84578182fd5b8201601f81018413611c94578182fd5b611ca3848235602084016118a9565b949350505050565b600060208284031215611cbc578081fd5b5035919050565b600060208284031215611cd4578081fd5b5051919050565b6000815180845260208085019450808401835b83811015611d0a57815187529582019590820190600101611cee565b509495945050505050565b60008151808452611d2d8160208601602086016124d2565b601f01601f19169290920160200192915050565b60008151611d538185602086016124d2565b9290920192915050565b8254600090819060028104600180831680611d7957607f831692505b6020808410821415611d9957634e487b7160e01b87526022600452602487fd5b818015611dad5760018114611dbe57611dea565b60ff19861689528489019650611dea565b611dc78b612433565b885b86811015611de25781548b820152908501908301611dc9565b505084890196505b505050505050611dfa8185611d41565b95945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528516602082015260a060408201819052600090611e4390830186611cdb565b8281036060840152611e558186611cdb565b90508281036080840152611e698185611d15565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611eaf90830184611d15565b979650505050505050565b6001600160a01b03929092168252602082015260400190565b60006020825261167f6020830184611cdb565b600060408252611ef96040830185611cdb565b8281036020840152611dfa8185611cdb565b901515815260200190565b60006020825261167f6020830184611d15565b60208082526034908201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606082015260800190565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6020808252602b908201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60408201526a65726f206164647265737360a81b606082015260800190565b60208082526018908201527f6d61782035302067697665417761797320616c6c6f7765640000000000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526029908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260408201526808185c1c1c9bdd995960ba1b606082015260800190565b60208082526027908201527f7468697320676f6c64656e20697320616c7265616479206f776e656420627920604082015266736f6d656f6e6560c81b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526032908201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f0d2dce6eaccccd2c6d2cadce8408aa8960831b604082015260600190565b6020808252600c908201526b105b1b081cdbdb19081bdd5d60a21b604082015260600190565b60208082526029908201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604082015268103337b91039b2b63360b91b606082015260800190565b60208082526029908201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b6020808252601690820152756d617820313020676f6c64656e73206174206f6e636560501b604082015260600190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156124075761240761256e565b604052919050565b600067ffffffffffffffff8211156124295761242961256e565b5060209081020190565b60009081526020902090565b6000821982111561245257612452612558565b500190565b600060ff821660ff84168060ff0382111561247457612474612558565b019392505050565b60008261249757634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156124b6576124b6612558565b500290565b6000828210156124cd576124cd612558565b500390565b60005b838110156124ed5781810151838201526020016124d5565b838111156124fc576000848401525b50505050565b60028104600182168061251657607f821691505b6020821081141561253757634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561255157612551612558565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60e01c90565b600060443d101561259a5761088a565b600481823e6308c379a06125ae8251612584565b146125b85761088a565b6040513d600319016004823e80513d67ffffffffffffffff81602484011181841117156125e8575050505061088a565b82840192508251915080821115612602575050505061088a565b503d8301602082840101111561261a5750505061088a565b601f01601f1916810160200160405291505090565b6001600160a01b03811681146116dd57600080fd5b80151581146116dd57600080fd5b6001600160e01b0319811681146116dd57600080fdfea2646970667358221220c3caff6b772ab141610f34f96936a2164bed84125c4fbcd70bb242048ed0cee664736f6c6343000800003368747470733a2f2f746865676f6c64656e707570732e696f2f6170692f676f6c64656e2f

Deployed Bytecode

0x6080604052600436106101cc5760003560e01c806355f804b3116100f7578063a22cb46511610095578063dac6db1c11610064578063dac6db1c146104c2578063e985e9c5146104d7578063f242432a146104f7578063f2fde38b14610517576101cc565b8063a22cb4651461046f578063bd85b0391461048f578063c0886e9c146104af578063c87b56dd146102ad576101cc565b8063743976a0116100d1578063743976a0146104105780638da5cb5b1461042557806395d89b411461043a57806398ca77951461044f576101cc565b806355f804b3146103bb5780636a627842146103db578063715018a6146103fb576101cc565b806314a369ab1161016f5780632eb2c2d61161013e5780632eb2c2d6146103395780633ccfd60b146103595780634e1273f41461036e5780634f558e791461039b576101cc565b806314a369ab146102cd57806317ffc320146102e25780631ec32d15146103025780632083ad8214610324576101cc565b8063095eb8c9116101ab578063095eb8c9146102565780630b0d7825146102785780630bb78ec11461028d5780630e89341c146102ad576101cc565b8062fdd58e146101d157806301ffc9a71461020757806306fdde0314610234575b600080fd5b3480156101dd57600080fd5b506101f16101ec366004611b1e565b610537565b6040516101fe91906123ce565b60405180910390f35b34801561021357600080fd5b50610227610222366004611c25565b61058e565b6040516101fe9190611f0b565b34801561024057600080fd5b506102496105d6565b6040516101fe9190611f16565b34801561026257600080fd5b5061027661027136600461198c565b610664565b005b34801561028457600080fd5b506101f16106c5565b34801561029957600080fd5b506102496102a8366004611cab565b6106cb565b3480156102b957600080fd5b506102496102c8366004611cab565b6106e4565b3480156102d957600080fd5b506101f1610718565b3480156102ee57600080fd5b506102766102fd36600461198c565b61071e565b34801561030e57600080fd5b50610317610877565b6040516101fe9190611e03565b34801561033057600080fd5b506101f1610886565b34801561034557600080fd5b506102766103543660046119e0565b61088d565b34801561036557600080fd5b50610276610af3565b34801561037a57600080fd5b5061038e610389366004611b49565b610b70565b6040516101fe9190611ed3565b3480156103a757600080fd5b506102276103b6366004611cab565b610c90565b3480156103c757600080fd5b506102766103d6366004611c5d565b610ca3565b3480156103e757600080fd5b506102766103f636600461198c565b610cf5565b34801561040757600080fd5b50610276610de6565b34801561041c57600080fd5b50610249610e6f565b34801561043157600080fd5b50610317610e7c565b34801561044657600080fd5b50610249610e8b565b34801561045b57600080fd5b5061027661046a366004611cab565b610e98565b34801561047b57600080fd5b5061027661048a366004611af1565b610edc565b34801561049b57600080fd5b506101f16104aa366004611cab565b610faa565b6102766104bd366004611cab565b610fbc565b3480156104ce57600080fd5b506101f1611090565b3480156104e357600080fd5b506102276104f23660046119a8565b611096565b34801561050357600080fd5b50610276610512366004611a8a565b6110c4565b34801561052357600080fd5b5061027661053236600461198c565b61125a565b60006001600160a01b0383166105685760405162461bcd60e51b815260040161055f90611fc5565b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b14806105bf57506001600160e01b031982166303a24d0760e21b145b806105ce57506105ce8261131b565b90505b919050565b600880546105e390612502565b80601f016020809104026020016040519081016040528092919081815260200182805461060f90612502565b801561065c5780601f106106315761010080835404028352916020019161065c565b820191906000526020600020905b81548152906001019060200180831161063f57829003601f168201915b505050505081565b61066c611334565b6001600160a01b031661067d610e7c565b6001600160a01b0316146106a35760405162461bcd60e51b815260040161055f906121fe565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60045481565b600760205260009081526040902080546105e390612502565b6060600a6106f183611338565b604051602001610702929190611d5d565b6040516020818303038152906040529050919050565b60055481565b610726611334565b6001600160a01b0316610737610e7c565b6001600160a01b03161461075d5760405162461bcd60e51b815260040161055f906121fe565b6001600160a01b03811661077057600080fd5b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061079f903090600401611e03565b60206040518083038186803b1580156107b757600080fd5b505afa1580156107cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ef9190611cc3565b60405163a9059cbb60e01b81529091506001600160a01b0383169063a9059cbb906108209033908590600401611eba565b602060405180830381600087803b15801561083a57600080fd5b505af115801561084e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108729190611c09565b505050565b600c546001600160a01b031681565b600b545b90565b81518351146108ae5760405162461bcd60e51b815260040161055f90612315565b6001600160a01b0384166108d45760405162461bcd60e51b815260040161055f9061211d565b6108dc611334565b6001600160a01b0316856001600160a01b031614806109025750610902856104f2611334565b61091e5760405162461bcd60e51b815260040161055f90612162565b6000610928611334565b9050610938818787878787610aeb565b60005b8451811015610a8557600085828151811061096657634e487b7160e01b600052603260045260246000fd5b60200260200101519050600085838151811061099257634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156109e25760405162461bcd60e51b815260040161055f906121b4565b6109ec82826124bb565b60008085815260200190815260200160002060008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055508160008085815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254610a6a919061243f565b9250508190555050505080610a7e9061253d565b905061093b565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ad5929190611ee6565b60405180910390a4610aeb81878787878761147e565b505050505050565b610afb611334565b6001600160a01b0316610b0c610e7c565b6001600160a01b031614610b325760405162461bcd60e51b815260040161055f906121fe565b600c5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610b6c573d6000803e3d6000fd5b5050565b60608151835114610b935760405162461bcd60e51b815260040161055f906122cc565b6000835167ffffffffffffffff811115610bbd57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610be6578160200160208202803683370190505b50905060005b8451811015610c8857610c4d858281518110610c1857634e487b7160e01b600052603260045260246000fd5b6020026020010151858381518110610c4057634e487b7160e01b600052603260045260246000fd5b6020026020010151610537565b828281518110610c6d57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610c818161253d565b9050610bec565b509392505050565b600080610c9c83610faa565b1192915050565b610cab611334565b6001600160a01b0316610cbc610e7c565b6001600160a01b031614610ce25760405162461bcd60e51b815260040161055f906121fe565b8051610b6c90600a906020840190611810565b610cfd611334565b6001600160a01b0316610d0e610e7c565b6001600160a01b031614610d345760405162461bcd60e51b815260040161055f906121fe565b60326005541115610d575760405162461bcd60e51b815260040161055f90612010565b60055460009081526006602052604090205415610d865760405162461bcd60e51b815260040161055f906120d6565b600160066000600554815260200190815260200160002081905550610dce8160055460016040518060400160405280600681526020016503078303030360d41b81525061158c565b60058054906000610dde8361253d565b919050555050565b610dee611334565b6001600160a01b0316610dff610e7c565b6001600160a01b031614610e255760405162461bcd60e51b815260040161055f906121fe565b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600a80546105e390612502565b6003546001600160a01b031690565b600980546105e390612502565b610ea0611334565b6001600160a01b0316610eb1610e7c565b6001600160a01b031614610ed75760405162461bcd60e51b815260040161055f906121fe565b600b55565b816001600160a01b0316610eee611334565b6001600160a01b03161415610f155760405162461bcd60e51b815260040161055f90612283565b8060016000610f22611334565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610f66611334565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f9e9190611f0b565b60405180910390a35050565b60009081526006602052604090205490565b6126dd81600454610fcd919061243f565b1115610feb5760405162461bcd60e51b815260040161055f9061225d565b600a81111561100c5760405162461bcd60e51b815260040161055f9061239e565b600b54349061101b9083611673565b146110385760405162461bcd60e51b815260040161055f90612233565b60006004546033611049919061243f565b905060005b8281101561107a57611068611063828461243f565b611686565b806110728161253d565b91505061104e565b5081600454611089919061243f565b6004555050565b600b5481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b0384166110ea5760405162461bcd60e51b815260040161055f9061211d565b6110f2611334565b6001600160a01b0316856001600160a01b031614806111185750611118856104f2611334565b6111345760405162461bcd60e51b815260040161055f9061208d565b600061113e611334565b905061115e81878761114f886116e0565b611158886116e0565b87610aeb565b6000848152602081815260408083206001600160a01b038a1684529091529020548381101561119f5760405162461bcd60e51b815260040161055f906121b4565b6111a984826124bb565b6000868152602081815260408083206001600160a01b038c811685529252808320939093558816815290812080548692906111e590849061243f565b92505081905550856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161123b9291906123d7565b60405180910390a4611251828888888888611739565b50505050505050565b611262611334565b6001600160a01b0316611273610e7c565b6001600160a01b0316146112995760405162461bcd60e51b815260040161055f906121fe565b6001600160a01b0381166112bf5760405162461bcd60e51b815260040161055f90612047565b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b031981166301ffc9a760e01b14919050565b3390565b60608161135d57506040805180820190915260018152600360fc1b60208201526105d1565b8160005b811561138757806113718161253d565b91506113809050600a8361247c565b9150611361565b60008167ffffffffffffffff8111156113b057634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156113da576020820181803683370190505b509050815b8515611475576113f06001826124bb565b905060006113ff600a8861247c565b61140a90600a61249c565b61141490886124bb565b61141f906030612457565b905060008160f81b90508084848151811061144a57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535061146c600a8961247c565b975050506113df565b50949350505050565b611490846001600160a01b031661180a565b15610aeb5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906114c99089908990889088908890600401611e17565b602060405180830381600087803b1580156114e357600080fd5b505af1925050508015611513575060408051601f3d908101601f1916820190925261151091810190611c41565b60015b61155c5761151f61258a565b8061152a5750611544565b8060405162461bcd60e51b815260040161055f9190611f16565b60405162461bcd60e51b815260040161055f90611f29565b6001600160e01b0319811663bc197c8160e01b146112515760405162461bcd60e51b815260040161055f90611f7d565b6001600160a01b0384166115b25760405162461bcd60e51b815260040161055f9061235d565b60006115bc611334565b90506115ce8160008761114f886116e0565b6000848152602081815260408083206001600160a01b0389168452909152812080548592906115fe90849061243f565b92505081905550846001600160a01b031660006001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516116559291906123d7565b60405180910390a461166c81600087878787611739565b5050505050565b600061167f828461249c565b9392505050565b6000818152600660205260409020546116dd57600160066000838152602001908152602001600020819055506116dd338260016040518060400160405280600681526020016503078303030360d41b81525061158c565b50565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061172857634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b61174b846001600160a01b031661180a565b15610aeb5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906117849089908990889088908890600401611e75565b602060405180830381600087803b15801561179e57600080fd5b505af19250505080156117ce575060408051601f3d908101601f191682019092526117cb91810190611c41565b60015b6117da5761151f61258a565b6001600160e01b0319811663f23a6e6160e01b146112515760405162461bcd60e51b815260040161055f90611f7d565b3b151590565b82805461181c90612502565b90600052602060002090601f01602090048101928261183e5760008555611884565b82601f1061185757805160ff1916838001178555611884565b82800160010185558215611884579182015b82811115611884578251825591602001919060010190611869565b50611890929150611894565b5090565b5b808211156118905760008155600101611895565b600067ffffffffffffffff8311156118c3576118c361256e565b6118d6601f8401601f19166020016123e5565b90508281528383830111156118ea57600080fd5b828260208301376000602084830101529392505050565b600082601f830112611911578081fd5b813560206119266119218361240f565b6123e5565b8281528181019085830183850287018401881015611942578586fd5b855b8581101561196057813584529284019290840190600101611944565b5090979650505050505050565b600082601f83011261197d578081fd5b61167f838335602085016118a9565b60006020828403121561199d578081fd5b813561167f8161262f565b600080604083850312156119ba578081fd5b82356119c58161262f565b915060208301356119d58161262f565b809150509250929050565b600080600080600060a086880312156119f7578081fd5b8535611a028161262f565b94506020860135611a128161262f565b9350604086013567ffffffffffffffff80821115611a2e578283fd5b611a3a89838a01611901565b94506060880135915080821115611a4f578283fd5b611a5b89838a01611901565b93506080880135915080821115611a70578283fd5b50611a7d8882890161196d565b9150509295509295909350565b600080600080600060a08688031215611aa1578081fd5b8535611aac8161262f565b94506020860135611abc8161262f565b93506040860135925060608601359150608086013567ffffffffffffffff811115611ae5578182fd5b611a7d8882890161196d565b60008060408385031215611b03578182fd5b8235611b0e8161262f565b915060208301356119d581612644565b60008060408385031215611b30578182fd5b8235611b3b8161262f565b946020939093013593505050565b60008060408385031215611b5b578081fd5b823567ffffffffffffffff80821115611b72578283fd5b818501915085601f830112611b85578283fd5b81356020611b956119218361240f565b82815281810190858301838502870184018b1015611bb1578788fd5b8796505b84871015611bdc578035611bc88161262f565b835260019690960195918301918301611bb5565b5096505086013592505080821115611bf2578283fd5b50611bff85828601611901565b9150509250929050565b600060208284031215611c1a578081fd5b815161167f81612644565b600060208284031215611c36578081fd5b813561167f81612652565b600060208284031215611c52578081fd5b815161167f81612652565b600060208284031215611c6e578081fd5b813567ffffffffffffffff811115611c84578182fd5b8201601f81018413611c94578182fd5b611ca3848235602084016118a9565b949350505050565b600060208284031215611cbc578081fd5b5035919050565b600060208284031215611cd4578081fd5b5051919050565b6000815180845260208085019450808401835b83811015611d0a57815187529582019590820190600101611cee565b509495945050505050565b60008151808452611d2d8160208601602086016124d2565b601f01601f19169290920160200192915050565b60008151611d538185602086016124d2565b9290920192915050565b8254600090819060028104600180831680611d7957607f831692505b6020808410821415611d9957634e487b7160e01b87526022600452602487fd5b818015611dad5760018114611dbe57611dea565b60ff19861689528489019650611dea565b611dc78b612433565b885b86811015611de25781548b820152908501908301611dc9565b505084890196505b505050505050611dfa8185611d41565b95945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528516602082015260a060408201819052600090611e4390830186611cdb565b8281036060840152611e558186611cdb565b90508281036080840152611e698185611d15565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611eaf90830184611d15565b979650505050505050565b6001600160a01b03929092168252602082015260400190565b60006020825261167f6020830184611cdb565b600060408252611ef96040830185611cdb565b8281036020840152611dfa8185611cdb565b901515815260200190565b60006020825261167f6020830184611d15565b60208082526034908201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606082015260800190565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6020808252602b908201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60408201526a65726f206164647265737360a81b606082015260800190565b60208082526018908201527f6d61782035302067697665417761797320616c6c6f7765640000000000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526029908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260408201526808185c1c1c9bdd995960ba1b606082015260800190565b60208082526027908201527f7468697320676f6c64656e20697320616c7265616479206f776e656420627920604082015266736f6d656f6e6560c81b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526032908201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f0d2dce6eaccccd2c6d2cadce8408aa8960831b604082015260600190565b6020808252600c908201526b105b1b081cdbdb19081bdd5d60a21b604082015260600190565b60208082526029908201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604082015268103337b91039b2b63360b91b606082015260800190565b60208082526029908201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b6020808252601690820152756d617820313020676f6c64656e73206174206f6e636560501b604082015260600190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156124075761240761256e565b604052919050565b600067ffffffffffffffff8211156124295761242961256e565b5060209081020190565b60009081526020902090565b6000821982111561245257612452612558565b500190565b600060ff821660ff84168060ff0382111561247457612474612558565b019392505050565b60008261249757634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156124b6576124b6612558565b500290565b6000828210156124cd576124cd612558565b500390565b60005b838110156124ed5781810151838201526020016124d5565b838111156124fc576000848401525b50505050565b60028104600182168061251657607f821691505b6020821081141561253757634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561255157612551612558565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60e01c90565b600060443d101561259a5761088a565b600481823e6308c379a06125ae8251612584565b146125b85761088a565b6040513d600319016004823e80513d67ffffffffffffffff81602484011181841117156125e8575050505061088a565b82840192508251915080821115612602575050505061088a565b503d8301602082840101111561261a5750505061088a565b601f01601f1916810160200160405291505090565b6001600160a01b03811681146116dd57600080fd5b80151581146116dd57600080fd5b6001600160e01b0319811681146116dd57600080fdfea2646970667358221220c3caff6b772ab141610f34f96936a2164bed84125c4fbcd70bb242048ed0cee664736f6c63430008000033

Deployed Bytecode Sourcemap

20434:3142:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11382:231;;;;;;;;;;-1:-1:-1;11382:231:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10964:297;;;;;;;;;;-1:-1:-1;10964:297:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;20718:36::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;23477:94::-;;;;;;;;;;-1:-1:-1;23477:94:0;;;;;:::i;:::-;;:::i;:::-;;20548:25;;;;;;;;;;;;;:::i;20661:44::-;;;;;;;;;;-1:-1:-1;20661:44:0;;;;;:::i;:::-;;:::i;22178:145::-;;;;;;;;;;-1:-1:-1;22178:145:0;;;;;:::i;:::-;;:::i;20577:28::-;;;;;;;;;;;;;:::i;23278:193::-;;;;;;;;;;-1:-1:-1;23278:193:0;;;;;:::i;:::-;;:::i;20895:73::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;21150:80::-;;;;;;;;;;;;;:::i;13661:1233::-;;;;;;;;;;-1:-1:-1;13661:1233:0;;;;;:::i;:::-;;:::i;23142:131::-;;;;;;;;;;;;;:::i;11621:543::-;;;;;;;;;;-1:-1:-1;11621:543:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23037:99::-;;;;;;;;;;-1:-1:-1;23037:99:0;;;;;:::i;:::-;;:::i;22087:86::-;;;;;;;;;;-1:-1:-1;22087:86:0;;;;;:::i;:::-;;:::i;21795:287::-;;;;;;;;;;-1:-1:-1;21795:287:0;;;;;:::i;:::-;;:::i;10019:148::-;;;;;;;;;;;;;:::i;20800:63::-;;;;;;;;;;;;;:::i;9796:87::-;;;;;;;;;;;;;:::i;20761:35::-;;;;;;;;;;;;;:::i;21062:83::-;;;;;;;;;;-1:-1:-1;21062:83:0;;;;;:::i;:::-;;:::i;12176:309::-;;;;;;;;;;-1:-1:-1;12176:309:0;;;;;:::i;:::-;;:::i;22928:104::-;;;;;;;;;;-1:-1:-1;22928:104:0;;;;;:::i;:::-;;:::i;21235:388::-;;;;;;:::i;:::-;;:::i;20867:24::-;;;;;;;;;;;;;:::i;12493:168::-;;;;;;;;;;-1:-1:-1;12493:168:0;;;;;:::i;:::-;;:::i;12672:976::-;;;;;;;;;;-1:-1:-1;12672:976:0;;;;;:::i;:::-;;:::i;10175:244::-;;;;;;;;;;-1:-1:-1;10175:244:0;;;;;:::i;:::-;;:::i;11382:231::-;11468:7;-1:-1:-1;;;;;11496:21:0;;11488:77;;;;-1:-1:-1;;;11488:77:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;11583:9:0;:13;;;;;;;;;;;-1:-1:-1;;;;;11583:22:0;;;;;;;;;;;;11382:231::o;10964:297::-;11066:4;-1:-1:-1;;;;;;11090:41:0;;-1:-1:-1;;;11090:41:0;;:110;;-1:-1:-1;;;;;;;11148:52:0;;-1:-1:-1;;;11148:52:0;11090:110;:163;;;;11217:36;11241:11;11217:23;:36::i;:::-;11083:170;;10964:297;;;;:::o;20718:36::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23477:94::-;9942:12;:10;:12::i;:::-;-1:-1:-1;;;;;9931:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;9931:23:0;;9923:68;;;;-1:-1:-1;;;9923:68:0;;;;;;;:::i;:::-;23544:13:::1;:22:::0;;-1:-1:-1;;;;;;23544:22:0::1;-1:-1:-1::0;;;;;23544:22:0;;;::::1;::::0;;;::::1;::::0;;23477:94::o;20548:25::-;;;;:::o;20661:44::-;;;;;;;;;;;;;;;;:::i;22178:145::-;22238:13;22289:8;22299:17;22308:7;22299:8;:17::i;:::-;22272:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22258:60;;22178:145;;;:::o;20577:28::-;;;;:::o;23278:193::-;9942:12;:10;:12::i;:::-;-1:-1:-1;;;;;9931:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;9931:23:0;;9923:68;;;;-1:-1:-1;;;9923:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23344:28:0;::::1;23336:37;;;::::0;::::1;;23396:30;::::0;-1:-1:-1;;;23396:30:0;;23378:15:::1;::::0;-1:-1:-1;;;;;23396:15:0;::::1;::::0;::::1;::::0;:30:::1;::::0;23420:4:::1;::::0;23396:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23431:35;::::0;-1:-1:-1;;;23431:35:0;;23378:48;;-1:-1:-1;;;;;;23431:14:0;::::1;::::0;::::1;::::0;:35:::1;::::0;23446:10:::1;::::0;23378:48;;23431:35:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10002:1;23278:193:::0;:::o;20895:73::-;;;-1:-1:-1;;;;;20895:73:0;;:::o;21150:80::-;21216:9;;21150:80;;:::o;13661:1233::-;13926:7;:14;13912:3;:10;:28;13904:81;;;;-1:-1:-1;;;13904:81:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14004:16:0;;13996:66;;;;-1:-1:-1;;;13996:66:0;;;;;;;:::i;:::-;14103:12;:10;:12::i;:::-;-1:-1:-1;;;;;14095:20:0;:4;-1:-1:-1;;;;;14095:20:0;;:60;;;;14119:36;14136:4;14142:12;:10;:12::i;14119:36::-;14073:160;;;;-1:-1:-1;;;14073:160:0;;;;;;;:::i;:::-;14246:16;14265:12;:10;:12::i;:::-;14246:31;;14288:60;14309:8;14319:4;14325:2;14329:3;14334:7;14343:4;14288:20;:60::i;:::-;14364:9;14359:377;14383:3;:10;14379:1;:14;14359:377;;;14415:10;14428:3;14432:1;14428:6;;;;;;-1:-1:-1;;;14428:6:0;;;;;;;;;;;;;;;14415:19;;14449:14;14466:7;14474:1;14466:10;;;;;;-1:-1:-1;;;14466:10:0;;;;;;;;;;;;;;;;;;;;14493:19;14515:13;;;;;;;;;;-1:-1:-1;;;;;14515:19:0;;;;;;;;;;;;14466:10;;-1:-1:-1;14557:21:0;;;;14549:76;;;;-1:-1:-1;;;14549:76:0;;;;;;;:::i;:::-;14662:20;14676:6;14662:11;:20;:::i;:::-;14640:9;:13;14650:2;14640:13;;;;;;;;;;;:19;14654:4;-1:-1:-1;;;;;14640:19:0;-1:-1:-1;;;;;14640:19:0;;;;;;;;;;;;:42;;;;14718:6;14697:9;:13;14707:2;14697:13;;;;;;;;;;;:17;14711:2;-1:-1:-1;;;;;14697:17:0;-1:-1:-1;;;;;14697:17:0;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;14359:377;;;14395:3;;;;:::i;:::-;;;14359:377;;;;14783:2;-1:-1:-1;;;;;14753:47:0;14777:4;-1:-1:-1;;;;;14753:47:0;14767:8;-1:-1:-1;;;;;14753:47:0;;14787:3;14792:7;14753:47;;;;;;;:::i;:::-;;;;;;;;14811:75;14847:8;14857:4;14863:2;14867:3;14872:7;14881:4;14811:35;:75::i;:::-;13661:1233;;;;;;:::o;23142:131::-;9942:12;:10;:12::i;:::-;-1:-1:-1;;;;;9931:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;9931:23:0;;9923:68;;;;-1:-1:-1;;;9923:68:0;;;;;;;:::i;:::-;23236:13:::1;::::0;23228:40:::1;::::0;23202:21:::1;::::0;-1:-1:-1;;;;;23236:13:0::1;::::0;23228:40;::::1;;;::::0;23202:21;;23184:15:::1;23228:40:::0;23184:15;23228:40;23202:21;23236:13;23228:40;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10002:1;23142:131::o:0;11621:543::-;11802:16;11863:3;:10;11844:8;:15;:29;11836:83;;;;-1:-1:-1;;;11836:83:0;;;;;;;:::i;:::-;11930:30;11977:8;:15;11963:30;;;;;;-1:-1:-1;;;11963:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11963:30:0;;11930:63;;12009:9;12004:122;12028:8;:15;12024:1;:19;12004:122;;;12084:30;12094:8;12103:1;12094:11;;;;;;-1:-1:-1;;;12094:11:0;;;;;;;;;;;;;;;12107:3;12111:1;12107:6;;;;;;-1:-1:-1;;;12107:6:0;;;;;;;;;;;;;;;12084:9;:30::i;:::-;12065:13;12079:1;12065:16;;;;;;-1:-1:-1;;;12065:16:0;;;;;;;;;;;;;;;;;;:49;12045:3;;;:::i;:::-;;;12004:122;;;-1:-1:-1;12143:13:0;11621:543;-1:-1:-1;;;11621:543:0:o;23037:99::-;23094:4;23130:1;23112:15;23124:2;23112:11;:15::i;:::-;:19;;23037:99;-1:-1:-1;;23037:99:0:o;22087:86::-;9942:12;:10;:12::i;:::-;-1:-1:-1;;;;;9931:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;9931:23:0;;9923:68;;;;-1:-1:-1;;;9923:68:0;;;;;;;:::i;:::-;22151:17;;::::1;::::0;:8:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;21795:287::-:0;9942:12;:10;:12::i;:::-;-1:-1:-1;;;;;9931:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;9931:23:0;;9923:68;;;;-1:-1:-1;;;9923:68:0;;;;;;;:::i;:::-;21867:2:::1;21854:9;;:15;;21846:52;;;;-1:-1:-1::0;;;21846:52:0::1;;;;;;;:::i;:::-;21930:9;::::0;21917:23:::1;::::0;;;:12:::1;:23;::::0;;;;;:28;21909:80:::1;;;;-1:-1:-1::0;;;21909:80:0::1;;;;;;;:::i;:::-;22020:1;21994:12;:23;22007:9;;21994:23;;;;;;;;;;;:27;;;;22026:33;22032:2;22036:9;;22047:1;22026:33;;;;;;;;;;;;;-1:-1:-1::0;;;22026:33:0::1;;::::0;:5:::1;:33::i;:::-;22065:9;:12:::0;;;:9:::1;:12;::::0;::::1;:::i;:::-;;;;;;21795:287:::0;:::o;10019:148::-;9942:12;:10;:12::i;:::-;-1:-1:-1;;;;;9931:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;9931:23:0;;9923:68;;;;-1:-1:-1;;;9923:68:0;;;;;;;:::i;:::-;10110:6:::1;::::0;10089:40:::1;::::0;10126:1:::1;::::0;-1:-1:-1;;;;;10110:6:0::1;::::0;10089:40:::1;::::0;10126:1;;10089:40:::1;10140:6;:19:::0;;-1:-1:-1;;;;;;10140:19:0::1;::::0;;10019:148::o;20800:63::-;;;;;;;:::i;9796:87::-;9869:6;;-1:-1:-1;;;;;9869:6:0;9796:87;:::o;20761:35::-;;;;;;;:::i;21062:83::-;9942:12;:10;:12::i;:::-;-1:-1:-1;;;;;9931:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;9931:23:0;;9923:68;;;;-1:-1:-1;;;9923:68:0;;;;;;;:::i;:::-;21122:9:::1;:18:::0;21062:83::o;12176:309::-;12295:8;-1:-1:-1;;;;;12279:24:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;12279:24:0;;;12271:78;;;;-1:-1:-1;;;12271:78:0;;;;;;;:::i;:::-;12405:8;12360:18;:32;12379:12;:10;:12::i;:::-;-1:-1:-1;;;;;12360:32:0;;;;;;;;;;;;;;;;;-1:-1:-1;12360:32:0;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;12360:53:0;;;;;;;;;;;12444:12;:10;:12::i;:::-;-1:-1:-1;;;;;12429:48:0;;12468:8;12429:48;;;;;;:::i;:::-;;;;;;;;12176:309;;:::o;22928:104::-;22990:7;23011:16;;;:12;:16;;;;;;;22928:104::o;21235:388::-;21325:4;21313:8;21300:10;;:21;;;;:::i;:::-;:29;;21292:54;;;;-1:-1:-1;;;21292:54:0;;;;;;;:::i;:::-;21371:2;21359:8;:14;;21351:49;;;;-1:-1:-1;;;21351:49:0;;;;;;;:::i;:::-;21413:9;;21440;;21413:23;;21427:8;21413:13;:23::i;:::-;:36;21405:65;;;;-1:-1:-1;;;21405:65:0;;;;;;;:::i;:::-;21475:10;21488;;21501:2;21488:15;;;;:::i;:::-;21475:28;;21513:9;21508:66;21532:8;21528:1;:12;21508:66;;;21553:15;21563:4;21566:1;21563:2;:4;:::i;:::-;21553:9;:15::i;:::-;21542:3;;;;:::i;:::-;;;;21508:66;;;;21610:8;21597:10;;:21;;;;:::i;:::-;21584:10;:34;-1:-1:-1;;21235:388:0:o;20867:24::-;;;;:::o;12493:168::-;-1:-1:-1;;;;;12616:27:0;;;12592:4;12616:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;12493:168::o;12672:976::-;-1:-1:-1;;;;;12898:16:0;;12890:66;;;;-1:-1:-1;;;12890:66:0;;;;;;;:::i;:::-;12997:12;:10;:12::i;:::-;-1:-1:-1;;;;;12989:20:0;:4;-1:-1:-1;;;;;12989:20:0;;:60;;;;13013:36;13030:4;13036:12;:10;:12::i;13013:36::-;12967:151;;;;-1:-1:-1;;;12967:151:0;;;;;;;:::i;:::-;13131:16;13150:12;:10;:12::i;:::-;13131:31;;13173:96;13194:8;13204:4;13210:2;13214:21;13232:2;13214:17;:21::i;:::-;13237:25;13255:6;13237:17;:25::i;:::-;13264:4;13173:20;:96::i;:::-;13280:19;13302:13;;;;;;;;;;;-1:-1:-1;;;;;13302:19:0;;;;;;;;;;13340:21;;;;13332:76;;;;-1:-1:-1;;;13332:76:0;;;;;;;:::i;:::-;13441:20;13455:6;13441:11;:20;:::i;:::-;13419:9;:13;;;;;;;;;;;-1:-1:-1;;;;;13419:19:0;;;;;;;;;;:42;;;;13472:17;;;;;;;:27;;13493:6;;13419:9;13472:27;;13493:6;;13472:27;:::i;:::-;;;;;;;;13546:2;-1:-1:-1;;;;;13515:46:0;13540:4;-1:-1:-1;;;;;13515:46:0;13530:8;-1:-1:-1;;;;;13515:46:0;;13550:2;13554:6;13515:46;;;;;;;:::i;:::-;;;;;;;;13572:68;13603:8;13613:4;13619:2;13623;13627:6;13635:4;13572:30;:68::i;:::-;12672:976;;;;;;;:::o;10175:244::-;9942:12;:10;:12::i;:::-;-1:-1:-1;;;;;9931:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;9931:23:0;;9923:68;;;;-1:-1:-1;;;9923:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10264:22:0;::::1;10256:73;;;;-1:-1:-1::0;;;10256:73:0::1;;;;;;;:::i;:::-;10366:6;::::0;10345:38:::1;::::0;-1:-1:-1;;;;;10345:38:0;;::::1;::::0;10366:6:::1;::::0;10345:38:::1;::::0;10366:6:::1;::::0;10345:38:::1;10394:6;:17:::0;;-1:-1:-1;;;;;;10394:17:0::1;-1:-1:-1::0;;;;;10394:17:0;;;::::1;::::0;;;::::1;::::0;;10175:244::o;207:157::-;-1:-1:-1;;;;;;316:40:0;;-1:-1:-1;;;316:40:0;207:157;;;:::o;433:98::-;513:10;433:98;:::o;22475:448::-;22528:27;22566:7;22562:35;;-1:-1:-1;22581:10:0;;;;;;;;;;;;-1:-1:-1;;;22581:10:0;;;;;;22562:35;22613:2;22601:9;22636:45;22643:6;;22636:45;;22657:5;;;;:::i;:::-;;-1:-1:-1;22668:7:0;;-1:-1:-1;22673:2:0;22668:7;;:::i;:::-;;;22636:45;;;22685:17;22715:3;22705:14;;;;;;-1:-1:-1;;;22705:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22705:14:0;-1:-1:-1;22685:34:0;-1:-1:-1;22736:3:0;22744:151;22751:7;;22744:151;;22770:5;22774:1;22770;:5;:::i;:::-;22766:9;-1:-1:-1;22781:10:0;22812:7;22817:2;22812;:7;:::i;:::-;22811:14;;22823:2;22811:14;:::i;:::-;22806:19;;:2;:19;:::i;:::-;22795:31;;:2;:31;:::i;:::-;22781:46;;22833:9;22852:4;22845:12;;22833:24;;22873:2;22863:4;22868:1;22863:7;;;;;;-1:-1:-1;;;22863:7:0;;;;;;;;;;;;:12;-1:-1:-1;;;;;22863:12:0;;;;;;;;-1:-1:-1;22881:8:0;22887:2;22881:8;;:::i;:::-;;;22744:151;;;;;-1:-1:-1;22913:4:0;22475:448;-1:-1:-1;;;;22475:448:0:o;18726:799::-;18980:15;:2;-1:-1:-1;;;;;18980:13:0;;:15::i;:::-;18976:542;;;19016:79;;-1:-1:-1;;;19016:79:0;;-1:-1:-1;;;;;19016:43:0;;;;;:79;;19060:8;;19070:4;;19076:3;;19081:7;;19090:4;;19016:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19016:79:0;;;;;;;;-1:-1:-1;;19016:79:0;;;;;;;;;;;;:::i;:::-;;;19012:495;;;;:::i;:::-;;;;;;;;19380:6;19373:14;;-1:-1:-1;;;19373:14:0;;;;;;;;:::i;19012:495::-;19429:62;;-1:-1:-1;;;19429:62:0;;;;;;;:::i;19012:495::-;-1:-1:-1;;;;;;19145:64:0;;-1:-1:-1;;;19145:64:0;19141:163;;19234:50;;-1:-1:-1;;;19234:50:0;;;;;;;:::i;15003:548::-;-1:-1:-1;;;;;15118:21:0;;15110:67;;;;-1:-1:-1;;;15110:67:0;;;;;;;:::i;:::-;15188:16;15207:12;:10;:12::i;:::-;15188:31;;15230:107;15251:8;15269:1;15273:7;15282:21;15300:2;15282:17;:21::i;15230:107::-;15348:9;:13;;;;;;;;;;;-1:-1:-1;;;;;15348:22:0;;;;;;;;;:32;;15374:6;;15348:9;:32;;15374:6;;15348:32;:::i;:::-;;;;;;;;15433:7;-1:-1:-1;;;;;15396:57:0;15429:1;-1:-1:-1;;;;;15396:57:0;15411:8;-1:-1:-1;;;;;15396:57:0;;15442:2;15446:6;15396:57;;;;;;;:::i;:::-;;;;;;;;15464:79;15495:8;15513:1;15517:7;15526:2;15530:6;15538:4;15464:30;:79::i;:::-;15003:548;;;;;:::o;8479:98::-;8537:7;8564:5;8568:1;8564;:5;:::i;:::-;8557:12;8479:98;-1:-1:-1;;;8479:98:0:o;21628:162::-;21679:16;;;;:12;:16;;;;;;21675:111;;21727:1;21708:12;:16;21721:2;21708:16;;;;;;;;;;;:20;;;;21734:34;21740:10;21752:2;21756:1;21734:34;;;;;;;;;;;;;-1:-1:-1;;;21734:34:0;;;:5;:34::i;:::-;21628:162;:::o;19533:198::-;19653:16;;;19667:1;19653:16;;;;;;;;;19599;;19628:22;;19653:16;;;;;;;;;;;;-1:-1:-1;19653:16:0;19628:41;;19691:7;19680:5;19686:1;19680:8;;;;;;-1:-1:-1;;;19680:8:0;;;;;;;;;;;;;;;;;;:18;19718:5;19533:198;-1:-1:-1;;19533:198:0:o;17956:762::-;18185:15;:2;-1:-1:-1;;;;;18185:13:0;;:15::i;:::-;18181:530;;;18221:72;;-1:-1:-1;;;18221:72:0;;-1:-1:-1;;;;;18221:38:0;;;;;:72;;18260:8;;18270:4;;18276:2;;18280:6;;18288:4;;18221:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18221:72:0;;;;;;;;-1:-1:-1;;18221:72:0;;;;;;;;;;;;:::i;:::-;;;18217:483;;;;:::i;:::-;-1:-1:-1;;;;;;18343:59:0;;-1:-1:-1;;;18343:59:0;18339:158;;18427:50;;-1:-1:-1;;;18427:50:0;;;;;;;:::i;717:174::-;836:20;875:8;;;717:174::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:409:1;;114:18;106:6;103:30;100:2;;;136:18;;:::i;:::-;174:58;220:2;197:17;;-1:-1:-1;;193:31:1;226:4;189:42;174:58;:::i;:::-;165:67;;255:6;248:5;241:21;295:3;286:6;281:3;277:16;274:25;271:2;;;312:1;309;302:12;271:2;361:6;356:3;349:4;342:5;338:16;325:43;415:1;408:4;399:6;392:5;388:18;384:29;377:40;90:333;;;;;:::o;428:705::-;;541:3;534:4;526:6;522:17;518:27;508:2;;563:5;556;549:20;508:2;603:6;590:20;629:4;653:65;668:49;714:2;668:49;:::i;:::-;653:65;:::i;:::-;752:15;;;783:12;;;;815:15;;;861:11;;;849:24;;845:33;;842:42;-1:-1:-1;839:2:1;;;901:5;894;887:20;839:2;927:5;941:163;955:2;952:1;949:9;941:163;;;1012:17;;1000:30;;1050:12;;;;1082;;;;973:1;966:9;941:163;;;-1:-1:-1;1122:5:1;;498:635;-1:-1:-1;;;;;;;498:635:1:o;1138:232::-;;1235:3;1228:4;1220:6;1216:17;1212:27;1202:2;;1257:5;1250;1243:20;1202:2;1283:81;1360:3;1351:6;1338:20;1331:4;1323:6;1319:17;1283:81;:::i;1375:259::-;;1487:2;1475:9;1466:7;1462:23;1458:32;1455:2;;;1508:6;1500;1493:22;1455:2;1552:9;1539:23;1571:33;1598:5;1571:33;:::i;1639:402::-;;;1768:2;1756:9;1747:7;1743:23;1739:32;1736:2;;;1789:6;1781;1774:22;1736:2;1833:9;1820:23;1852:33;1879:5;1852:33;:::i;:::-;1904:5;-1:-1:-1;1961:2:1;1946:18;;1933:32;1974:35;1933:32;1974:35;:::i;:::-;2028:7;2018:17;;;1726:315;;;;;:::o;2046:1129::-;;;;;;2285:3;2273:9;2264:7;2260:23;2256:33;2253:2;;;2307:6;2299;2292:22;2253:2;2351:9;2338:23;2370:33;2397:5;2370:33;:::i;:::-;2422:5;-1:-1:-1;2479:2:1;2464:18;;2451:32;2492:35;2451:32;2492:35;:::i;:::-;2546:7;-1:-1:-1;2604:2:1;2589:18;;2576:32;2627:18;2657:14;;;2654:2;;;2689:6;2681;2674:22;2654:2;2717:67;2776:7;2767:6;2756:9;2752:22;2717:67;:::i;:::-;2707:77;;2837:2;2826:9;2822:18;2809:32;2793:48;;2866:2;2856:8;2853:16;2850:2;;;2887:6;2879;2872:22;2850:2;2915:69;2976:7;2965:8;2954:9;2950:24;2915:69;:::i;:::-;2905:79;;3037:3;3026:9;3022:19;3009:33;2993:49;;3067:2;3057:8;3054:16;3051:2;;;3088:6;3080;3073:22;3051:2;;3116:53;3161:7;3150:8;3139:9;3135:24;3116:53;:::i;:::-;3106:63;;;2243:932;;;;;;;;:::o;3180:760::-;;;;;;3369:3;3357:9;3348:7;3344:23;3340:33;3337:2;;;3391:6;3383;3376:22;3337:2;3435:9;3422:23;3454:33;3481:5;3454:33;:::i;:::-;3506:5;-1:-1:-1;3563:2:1;3548:18;;3535:32;3576:35;3535:32;3576:35;:::i;:::-;3630:7;-1:-1:-1;3684:2:1;3669:18;;3656:32;;-1:-1:-1;3735:2:1;3720:18;;3707:32;;-1:-1:-1;3790:3:1;3775:19;;3762:33;3818:18;3807:30;;3804:2;;;3855:6;3847;3840:22;3804:2;3883:51;3926:7;3917:6;3906:9;3902:22;3883:51;:::i;3945:396::-;;;4071:2;4059:9;4050:7;4046:23;4042:32;4039:2;;;4092:6;4084;4077:22;4039:2;4136:9;4123:23;4155:33;4182:5;4155:33;:::i;:::-;4207:5;-1:-1:-1;4264:2:1;4249:18;;4236:32;4277;4236;4277;:::i;4346:327::-;;;4475:2;4463:9;4454:7;4450:23;4446:32;4443:2;;;4496:6;4488;4481:22;4443:2;4540:9;4527:23;4559:33;4586:5;4559:33;:::i;:::-;4611:5;4663:2;4648:18;;;;4635:32;;-1:-1:-1;;;4433:240:1:o;4678:1295::-;;;4857:2;4845:9;4836:7;4832:23;4828:32;4825:2;;;4878:6;4870;4863:22;4825:2;4923:9;4910:23;4952:18;4993:2;4985:6;4982:14;4979:2;;;5014:6;5006;4999:22;4979:2;5057:6;5046:9;5042:22;5032:32;;5102:7;5095:4;5091:2;5087:13;5083:27;5073:2;;5129:6;5121;5114:22;5073:2;5170;5157:16;5192:4;5216:65;5231:49;5277:2;5231:49;:::i;5216:65::-;5315:15;;;5346:12;;;;5378:11;;;5416;;;5408:20;;5404:29;;5401:42;-1:-1:-1;5398:2:1;;;5461:6;5453;5446:22;5398:2;5488:6;5479:15;;5503:240;5517:2;5514:1;5511:9;5503:240;;;5588:3;5575:17;5605:33;5632:5;5605:33;:::i;:::-;5651:18;;5535:1;5528:9;;;;;5689:12;;;;5721;;5503:240;;;-1:-1:-1;5762:5:1;-1:-1:-1;;5805:18:1;;5792:32;;-1:-1:-1;;5836:16:1;;;5833:2;;;5870:6;5862;5855:22;5833:2;;5898:69;5959:7;5948:8;5937:9;5933:24;5898:69;:::i;:::-;5888:79;;;4815:1158;;;;;:::o;5978:257::-;;6098:2;6086:9;6077:7;6073:23;6069:32;6066:2;;;6119:6;6111;6104:22;6066:2;6156:9;6150:16;6175:30;6199:5;6175:30;:::i;6240:257::-;;6351:2;6339:9;6330:7;6326:23;6322:32;6319:2;;;6372:6;6364;6357:22;6319:2;6416:9;6403:23;6435:32;6461:5;6435:32;:::i;6502:261::-;;6624:2;6612:9;6603:7;6599:23;6595:32;6592:2;;;6645:6;6637;6630:22;6592:2;6682:9;6676:16;6701:32;6727:5;6701:32;:::i;7047:482::-;;7169:2;7157:9;7148:7;7144:23;7140:32;7137:2;;;7190:6;7182;7175:22;7137:2;7235:9;7222:23;7268:18;7260:6;7257:30;7254:2;;;7305:6;7297;7290:22;7254:2;7333:22;;7386:4;7378:13;;7374:27;-1:-1:-1;7364:2:1;;7420:6;7412;7405:22;7364:2;7448:75;7515:7;7510:2;7497:16;7492:2;7488;7484:11;7448:75;:::i;:::-;7438:85;7127:402;-1:-1:-1;;;;7127:402:1:o;7534:190::-;;7646:2;7634:9;7625:7;7621:23;7617:32;7614:2;;;7667:6;7659;7652:22;7614:2;-1:-1:-1;7695:23:1;;7604:120;-1:-1:-1;7604:120:1:o;7729:194::-;;7852:2;7840:9;7831:7;7827:23;7823:32;7820:2;;;7873:6;7865;7858:22;7820:2;-1:-1:-1;7901:16:1;;7810:113;-1:-1:-1;7810:113:1:o;7928:443::-;;8025:5;8019:12;8052:6;8047:3;8040:19;8078:4;8107:2;8102:3;8098:12;8091:19;;8144:2;8137:5;8133:14;8165:3;8177:169;8191:6;8188:1;8185:13;8177:169;;;8252:13;;8240:26;;8286:12;;;;8321:15;;;;8213:1;8206:9;8177:169;;;-1:-1:-1;8362:3:1;;7995:376;-1:-1:-1;;;;;7995:376:1:o;8376:259::-;;8457:5;8451:12;8484:6;8479:3;8472:19;8500:63;8556:6;8549:4;8544:3;8540:14;8533:4;8526:5;8522:16;8500:63;:::i;:::-;8617:2;8596:15;-1:-1:-1;;8592:29:1;8583:39;;;;8624:4;8579:50;;8427:208;-1:-1:-1;;8427:208:1:o;8640:187::-;;8722:5;8716:12;8737:52;8782:6;8777:3;8770:4;8763:5;8759:16;8737:52;:::i;:::-;8805:16;;;;;8692:135;-1:-1:-1;;8692:135:1:o;8832:1181::-;9066:13;;8832:1181;;;;9139:1;9124:17;;9160:1;9196:18;;;;9223:2;;9277:4;9269:6;9265:17;9255:27;;9223:2;9303;9351;9343:6;9340:14;9320:18;9317:38;9314:2;;;-1:-1:-1;;;9378:33:1;;9434:4;9431:1;9424:15;9464:4;9385:3;9452:17;9314:2;9495:18;9522:104;;;;9640:1;9635:324;;;;9488:471;;9522:104;-1:-1:-1;;9555:24:1;;9543:37;;9600:16;;;;-1:-1:-1;9522:104:1;;9635:324;9671:39;9703:6;9671:39;:::i;:::-;9732:3;9748:165;9762:6;9759:1;9756:13;9748:165;;;9840:14;;9827:11;;;9820:35;9883:16;;;;9777:10;;9748:165;;;9752:3;;9942:6;9937:3;9933:16;9926:23;;9488:471;;;;;;;9975:32;10003:3;9995:6;9975:32;:::i;:::-;9968:39;9016:997;-1:-1:-1;;;;;9016:997:1:o;10018:203::-;-1:-1:-1;;;;;10182:32:1;;;;10164:51;;10152:2;10137:18;;10119:102::o;10226:840::-;-1:-1:-1;;;;;10623:15:1;;;10605:34;;10675:15;;10670:2;10655:18;;10648:43;10585:3;10722:2;10707:18;;10700:31;;;10226:840;;10754:63;;10797:19;;10789:6;10754:63;:::i;:::-;10865:9;10857:6;10853:22;10848:2;10837:9;10833:18;10826:50;10899;10942:6;10934;10899:50;:::i;:::-;10885:64;;10998:9;10990:6;10986:22;10980:3;10969:9;10965:19;10958:51;11026:34;11053:6;11045;11026:34;:::i;:::-;11018:42;10557:509;-1:-1:-1;;;;;;;;10557:509:1:o;11071:562::-;-1:-1:-1;;;;;11368:15:1;;;11350:34;;11420:15;;11415:2;11400:18;;11393:43;11467:2;11452:18;;11445:34;;;11510:2;11495:18;;11488:34;;;11330:3;11553;11538:19;;11531:32;;;11071:562;;11580:47;;11607:19;;11599:6;11580:47;:::i;:::-;11572:55;11302:331;-1:-1:-1;;;;;;;11302:331:1:o;11638:274::-;-1:-1:-1;;;;;11830:32:1;;;;11812:51;;11894:2;11879:18;;11872:34;11800:2;11785:18;;11767:145::o;11917:267::-;;12096:2;12085:9;12078:21;12116:62;12174:2;12163:9;12159:18;12151:6;12116:62;:::i;12189:477::-;;12446:2;12435:9;12428:21;12472:62;12530:2;12519:9;12515:18;12507:6;12472:62;:::i;:::-;12582:9;12574:6;12570:22;12565:2;12554:9;12550:18;12543:50;12610;12653:6;12645;12610:50;:::i;12671:187::-;12836:14;;12829:22;12811:41;;12799:2;12784:18;;12766:92::o;12863:221::-;;13012:2;13001:9;12994:21;13032:46;13074:2;13063:9;13059:18;13051:6;13032:46;:::i;13089:416::-;13291:2;13273:21;;;13330:2;13310:18;;;13303:30;13369:34;13364:2;13349:18;;13342:62;-1:-1:-1;;;13435:2:1;13420:18;;13413:50;13495:3;13480:19;;13263:242::o;13510:404::-;13712:2;13694:21;;;13751:2;13731:18;;;13724:30;13790:34;13785:2;13770:18;;13763:62;-1:-1:-1;;;13856:2:1;13841:18;;13834:38;13904:3;13889:19;;13684:230::o;13919:407::-;14121:2;14103:21;;;14160:2;14140:18;;;14133:30;14199:34;14194:2;14179:18;;14172:62;-1:-1:-1;;;14265:2:1;14250:18;;14243:41;14316:3;14301:19;;14093:233::o;14331:348::-;14533:2;14515:21;;;14572:2;14552:18;;;14545:30;14611:26;14606:2;14591:18;;14584:54;14670:2;14655:18;;14505:174::o;14684:402::-;14886:2;14868:21;;;14925:2;14905:18;;;14898:30;14964:34;14959:2;14944:18;;14937:62;-1:-1:-1;;;15030:2:1;15015:18;;15008:36;15076:3;15061:19;;14858:228::o;15091:405::-;15293:2;15275:21;;;15332:2;15312:18;;;15305:30;15371:34;15366:2;15351:18;;15344:62;-1:-1:-1;;;15437:2:1;15422:18;;15415:39;15486:3;15471:19;;15265:231::o;15501:403::-;15703:2;15685:21;;;15742:2;15722:18;;;15715:30;15781:34;15776:2;15761:18;;15754:62;-1:-1:-1;;;15847:2:1;15832:18;;15825:37;15894:3;15879:19;;15675:229::o;15909:401::-;16111:2;16093:21;;;16150:2;16130:18;;;16123:30;16189:34;16184:2;16169:18;;16162:62;-1:-1:-1;;;16255:2:1;16240:18;;16233:35;16300:3;16285:19;;16083:227::o;16315:414::-;16517:2;16499:21;;;16556:2;16536:18;;;16529:30;16595:34;16590:2;16575:18;;16568:62;-1:-1:-1;;;16661:2:1;16646:18;;16639:48;16719:3;16704:19;;16489:240::o;16734:406::-;16936:2;16918:21;;;16975:2;16955:18;;;16948:30;17014:34;17009:2;16994:18;;16987:62;-1:-1:-1;;;17080:2:1;17065:18;;17058:40;17130:3;17115:19;;16908:232::o;17145:356::-;17347:2;17329:21;;;17366:18;;;17359:30;17425:34;17420:2;17405:18;;17398:62;17492:2;17477:18;;17319:182::o;17506:340::-;17708:2;17690:21;;;17747:2;17727:18;;;17720:30;-1:-1:-1;;;17781:2:1;17766:18;;17759:46;17837:2;17822:18;;17680:166::o;17851:336::-;18053:2;18035:21;;;18092:2;18072:18;;;18065:30;-1:-1:-1;;;18126:2:1;18111:18;;18104:42;18178:2;18163:18;;18025:162::o;18192:405::-;18394:2;18376:21;;;18433:2;18413:18;;;18406:30;18472:34;18467:2;18452:18;;18445:62;-1:-1:-1;;;18538:2:1;18523:18;;18516:39;18587:3;18572:19;;18366:231::o;18602:405::-;18804:2;18786:21;;;18843:2;18823:18;;;18816:30;18882:34;18877:2;18862:18;;18855:62;-1:-1:-1;;;18948:2:1;18933:18;;18926:39;18997:3;18982:19;;18776:231::o;19012:404::-;19214:2;19196:21;;;19253:2;19233:18;;;19226:30;19292:34;19287:2;19272:18;;19265:62;-1:-1:-1;;;19358:2:1;19343:18;;19336:38;19406:3;19391:19;;19186:230::o;19421:397::-;19623:2;19605:21;;;19662:2;19642:18;;;19635:30;19701:34;19696:2;19681:18;;19674:62;-1:-1:-1;;;19767:2:1;19752:18;;19745:31;19808:3;19793:19;;19595:223::o;19823:346::-;20025:2;20007:21;;;20064:2;20044:18;;;20037:30;-1:-1:-1;;;20098:2:1;20083:18;;20076:52;20160:2;20145:18;;19997:172::o;20174:177::-;20320:25;;;20308:2;20293:18;;20275:76::o;20356:248::-;20530:25;;;20586:2;20571:18;;20564:34;20518:2;20503:18;;20485:119::o;20609:251::-;20679:2;20673:9;20709:17;;;20756:18;20741:34;;20777:22;;;20738:62;20735:2;;;20803:18;;:::i;:::-;20839:2;20832:22;20653:207;;-1:-1:-1;20653:207:1:o;20865:192::-;;20964:18;20956:6;20953:30;20950:2;;;20986:18;;:::i;:::-;-1:-1:-1;21046:4:1;21027:17;;;21023:28;;20940:117::o;21062:129::-;;21130:17;;;21180:4;21164:21;;;21120:71::o;21196:128::-;;21267:1;21263:6;21260:1;21257:13;21254:2;;;21273:18;;:::i;:::-;-1:-1:-1;21309:9:1;;21244:80::o;21329:204::-;;21403:4;21400:1;21396:12;21435:4;21432:1;21428:12;21470:3;21464:4;21460:14;21455:3;21452:23;21449:2;;;21478:18;;:::i;:::-;21514:13;;21375:158;-1:-1:-1;;;21375:158:1:o;21538:217::-;;21604:1;21594:2;;-1:-1:-1;;;21629:31:1;;21683:4;21680:1;21673:15;21711:4;21636:1;21701:15;21594:2;-1:-1:-1;21740:9:1;;21584:171::o;21760:168::-;;21866:1;21862;21858:6;21854:14;21851:1;21848:21;21843:1;21836:9;21829:17;21825:45;21822:2;;;21873:18;;:::i;:::-;-1:-1:-1;21913:9:1;;21812:116::o;21933:125::-;;22001:1;21998;21995:8;21992:2;;;22006:18;;:::i;:::-;-1:-1:-1;22043:9:1;;21982:76::o;22063:258::-;22135:1;22145:113;22159:6;22156:1;22153:13;22145:113;;;22235:11;;;22229:18;22216:11;;;22209:39;22181:2;22174:10;22145:113;;;22276:6;22273:1;22270:13;22267:2;;;22311:1;22302:6;22297:3;22293:16;22286:27;22267:2;;22116:205;;;:::o;22326:380::-;22411:1;22401:12;;22458:1;22448:12;;;22469:2;;22523:4;22515:6;22511:17;22501:27;;22469:2;22576;22568:6;22565:14;22545:18;22542:38;22539:2;;;22622:10;22617:3;22613:20;22610:1;22603:31;22657:4;22654:1;22647:15;22685:4;22682:1;22675:15;22539:2;;22381:325;;;:::o;22711:135::-;;-1:-1:-1;;22771:17:1;;22768:2;;;22791:18;;:::i;:::-;-1:-1:-1;22838:1:1;22827:13;;22758:88::o;22851:127::-;22912:10;22907:3;22903:20;22900:1;22893:31;22943:4;22940:1;22933:15;22967:4;22964:1;22957:15;22983:127;23044:10;23039:3;23035:20;23032:1;23025:31;23075:4;23072:1;23065:15;23099:4;23096:1;23089:15;23115:88;23190:3;23186:15;;23172:31::o;23208:764::-;;23289:4;23271:16;23268:26;23265:2;;;23297:5;;23265:2;23338:1;23333:3;23328;23313:27;23400:10;23362:36;23393:3;23387:10;23362:36;:::i;:::-;23359:52;23349:2;;23415:5;;23349:2;23449;23443:9;23489:16;-1:-1:-1;;23485:29:1;23482:1;23443:9;23461:54;23544:4;23538:11;23568:16;23603:18;23674:2;23667:4;23659:6;23655:17;23652:25;23647:2;23639:6;23636:14;23633:45;23630:2;;;23681:5;;;;;;23630:2;23718:6;23712:4;23708:17;23697:28;;23754:3;23748:10;23734:24;;23781:2;23773:6;23770:14;23767:2;;;23787:5;;;;;;23767:2;;23848:16;23842:4;23838:27;23831:4;23822:6;23817:3;23813:16;23809:27;23806:60;23803:2;;;23869:5;;;;;23803:2;23934;23913:15;-1:-1:-1;;23909:29:1;23900:39;;23941:4;23896:50;23892:2;23885:62;23904:3;-1:-1:-1;;23255:717:1;:::o;23977:133::-;-1:-1:-1;;;;;24054:31:1;;24044:42;;24034:2;;24100:1;24097;24090:12;24115:120;24203:5;24196:13;24189:21;24182:5;24179:32;24169:2;;24225:1;24222;24215:12;24240:133;-1:-1:-1;;;;;;24316:32:1;;24306:43;;24296:2;;24363:1;24360;24353:12

Swarm Source

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

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