ETH Price: $3,267.87 (+4.63%)
Gas: 3 Gwei

TheRichies ()
 

Overview

TokenID

947

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
TheRichies

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-09-25
*/

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 TheRichies is ERC1155, Ownable {
	using SafeMath for uint256;
	using Strings for string;
	uint256 public richiesSold;
	uint256 public totalRichies = 4444;
	uint256 public presaleSupply;
	bool public sale = false;
	bool public preSale = false;
	mapping(uint256 => uint256) private _totalSupply;

	string public _baseURI = "https://mint.richiesnft.com/api/richie/";
	mapping(uint256 => string) public _tokenURIs;
	uint256 public itemPrice;
	address public companyWallet = 0xbC4eb5e97C12542EA4951eb8A01A36F7f0957319;

	constructor() ERC1155(_baseURI) {
		itemPrice = 100000000000000000; // 0.1 ETH
	}

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

	function getItemPrice() public view returns (uint256) {
		return itemPrice;
	}
	
	function buyPresale(uint256 _howMany) public payable {
	    require(presaleSupply < 445 && preSale, "Presale inactive");
		require(_howMany <= 10, "max 10 richies at once");
		require(itemPrice.mul(_howMany) == msg.value, "insufficient ETH");
		for (uint256 i = 0; i < _howMany; i++) {
			getRichie();
		}
		presaleSupply = presaleSupply + _howMany;
	}

	function buyRichie(uint256 _howMany) public payable {
	    require(sale, "Minting has not started yet");
	    require(richiesSold < 4439, "All sold out");
		require(_howMany <= 10, "max 10 richies at once");
		require(itemPrice.mul(_howMany) == msg.value, "insufficient ETH");
		for (uint256 i = 0; i < _howMany; i++) {
			getRichie();
		}
	}

	function getRichie() private {
		for (uint256 i = 0; i < 9999; i++) {
			uint256 randID = random(1, totalRichies, uint256(uint160(address(msg.sender))) + i);
			if (_totalSupply[randID] == 0) {
				_totalSupply[randID] = 1;
				_mint(msg.sender, randID, 1, "0x0000");
				richiesSold = richiesSold + 1;
				return;
			}
		}
		revert("you're very unlucky");
	}

	function mint(address to, uint256 id, bytes memory data) public onlyOwner {
		require(_totalSupply[id] == 0, "this richie is already owned by someone");
		_totalSupply[id] = 1;
		richiesSold = richiesSold + 1;
		_mint(to, id, 1, data);
	}

	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 random(
		uint256 from,
		uint256 to,
		uint256 salty
	) private view returns (uint256) {
		uint256 seed =
			uint256(
				keccak256(
					abi.encodePacked(
						block.timestamp +
							block.difficulty +
							((uint256(keccak256(abi.encodePacked(block.coinbase)))) / (block.timestamp)) +
							block.gaslimit +
							((uint256(keccak256(abi.encodePacked(msg.sender)))) / (block.timestamp)) +
							block.number +
							salty
					)
				)
			);
		return seed.mod(to - from) + from;
	}

	function withdraw() public onlyOwner {
		uint256 balance = address(this).balance;
		payable(companyWallet).transfer(balance);
	}

	function activateSale(bool status) public onlyOwner {
		sale = status;
	}
	
	function activatePreSale(bool status) public onlyOwner {
		preSale = status;
	}

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

}

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":"bool","name":"status","type":"bool"}],"name":"activatePreSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"activateSale","outputs":[],"stateMutability":"nonpayable","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":"buyPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_howMany","type":"uint256"}],"name":"buyRichie","outputs":[],"stateMutability":"payable","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":[{"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"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"richiesSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"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":[],"name":"sale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRichies","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"}]

61115c6005556007805461ffff1916905560e0604052602760808181529062002ca760a03980516200003a916009916020909101906200019d565b50600c80546001600160a01b03191673bc4eb5e97c12542ea4951eb8a01a36f7f09573191790553480156200006e57600080fd5b50600980546200007e9062000243565b80601f0160208091040260200160405190810160405280929190818152602001828054620000ac9062000243565b8015620000fd5780601f10620000d157610100808354040283529160200191620000fd565b820191906000526020600020905b815481529060010190602001808311620000df57829003601f168201915b505050505062000113816200018060201b60201c565b5060006200012062000199565b600380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35067016345785d8a0000600b5562000280565b8051620001959060029060208401906200019d565b5050565b3390565b828054620001ab9062000243565b90600052602060002090601f016020900481019282620001cf57600085556200021a565b82601f10620001ea57805160ff19168380011785556200021a565b828001600101855582156200021a579182015b828111156200021a578251825591602001919060010190620001fd565b50620002289291506200022c565b5090565b5b808211156200022857600081556001016200022d565b6002810460018216806200025857607f821691505b602082108114156200027a57634e487b7160e01b600052602260045260246000fd5b50919050565b612a1780620002906000396000f3fe6080604052600436106101ed5760003560e01c8063715018a61161010d578063c87b56dd116100a0578063d8ccad3c1161006f578063d8ccad3c14610518578063dac6db1c1461052b578063e985e9c514610540578063f242432a14610560578063f2fde38b14610580576101ed565b8063c87b56dd14610282578063cf3348bd146104c3578063cf4f31c7146104d8578063d4862a41146104f8576101ed565b806398ca7795116100dc57806398ca77951461044e578063a22cb4651461046e578063b3a196e91461048e578063bd85b039146104a3576101ed565b8063715018a6146103ef578063743976a0146104045780638da5cb5b1461041957806394d008ef1461042e576101ed565b80632eb2c2d6116101855780634f558e79116101545780634f558e791461038557806355f804b3146103a55780635a7adf7f146103c55780636ad1fe02146103da576101ed565b80632eb2c2d6146103105780633ccfd60b1461033057806349c32217146103455780634e1273f414610358576101ed565b806315d8b47b116101c157806315d8b47b146102a257806317ffc320146102b75780631ec32d15146102d95780632083ad82146102fb576101ed565b8062fdd58e146101f257806301ffc9a7146102285780630bb78ec1146102555780630e89341c14610282575b600080fd5b3480156101fe57600080fd5b5061021261020d366004611d98565b6105a0565b60405161021f9190612104565b60405180910390f35b34801561023457600080fd5b50610248610243366004611f12565b6105f7565b60405161021f9190612215565b34801561026157600080fd5b50610275610270366004611f98565b61063f565b60405161021f9190612220565b34801561028e57600080fd5b5061027561029d366004611f98565b6106d9565b3480156102ae57600080fd5b5061021261070d565b3480156102c357600080fd5b506102d76102d2366004611c06565b610713565b005b3480156102e557600080fd5b506102ee61086c565b60405161021f919061210d565b34801561030757600080fd5b5061021261087b565b34801561031c57600080fd5b506102d761032b366004611c5a565b610882565b34801561033c57600080fd5b506102d7610ae8565b6102d7610353366004611f98565b610b65565b34801561036457600080fd5b50610378610373366004611e1a565b610c22565b60405161021f91906121dd565b34801561039157600080fd5b506102486103a0366004611f98565b610d42565b3480156103b157600080fd5b506102d76103c0366004611f4a565b610d55565b3480156103d157600080fd5b50610248610da7565b3480156103e657600080fd5b50610248610db5565b3480156103fb57600080fd5b506102d7610dbe565b34801561041057600080fd5b50610275610e47565b34801561042557600080fd5b506102ee610e54565b34801561043a57600080fd5b506102d7610449366004611dc3565b610e63565b34801561045a57600080fd5b506102d7610469366004611f98565b610efe565b34801561047a57600080fd5b506102d7610489366004611d6b565b610f42565b34801561049a57600080fd5b50610212611010565b3480156104af57600080fd5b506102126104be366004611f98565b611016565b3480156104cf57600080fd5b50610212611028565b3480156104e457600080fd5b506102d76104f3366004611eda565b61102e565b34801561050457600080fd5b506102d7610513366004611eda565b611080565b6102d7610526366004611f98565b6110d9565b34801561053757600080fd5b50610212611190565b34801561054c57600080fd5b5061024861055b366004611c22565b611196565b34801561056c57600080fd5b506102d761057b366004611d04565b6111c4565b34801561058c57600080fd5b506102d761059b366004611c06565b61135a565b60006001600160a01b0383166105d15760405162461bcd60e51b81526004016105c890612306565b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061062857506001600160e01b031982166303a24d0760e21b145b8061063757506106378261141b565b90505b919050565b600a60205260009081526040902080546106589061284e565b80601f01602080910402602001604051908101604052809291908181526020018280546106849061284e565b80156106d15780601f106106a6576101008083540402835291602001916106d1565b820191906000526020600020905b8154815290600101906020018083116106b457829003601f168201915b505050505081565b606060096106e683611434565b6040516020016106f7929190612067565b6040516020818303038152906040529050919050565b60055481565b61071b61157a565b6001600160a01b031661072c610e54565b6001600160a01b0316146107525760405162461bcd60e51b81526004016105c890612565565b6001600160a01b03811661076557600080fd5b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061079490309060040161210d565b60206040518083038186803b1580156107ac57600080fd5b505afa1580156107c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e49190611fb0565b60405163a9059cbb60e01b81529091506001600160a01b0383169063a9059cbb9061081590339085906004016121c4565b602060405180830381600087803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108679190611ef6565b505050565b600c546001600160a01b031681565b600b545b90565b81518351146108a35760405162461bcd60e51b81526004016105c8906126a6565b6001600160a01b0384166108c95760405162461bcd60e51b81526004016105c890612457565b6108d161157a565b6001600160a01b0316856001600160a01b031614806108f757506108f78561055b61157a565b6109135760405162461bcd60e51b81526004016105c89061249c565b600061091d61157a565b905061092d818787878787610ae0565b60005b8451811015610a7a57600085828151811061095b57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600085838151811061098757634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156109d75760405162461bcd60e51b81526004016105c89061251b565b6109e18282612807565b60008085815260200190815260200160002060008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055508160008085815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254610a5f9190612797565b9250508190555050505080610a7390612889565b9050610930565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610aca9291906121f0565b60405180910390a4610ae081878787878761157e565b505050505050565b610af061157a565b6001600160a01b0316610b01610e54565b6001600160a01b031614610b275760405162461bcd60e51b81526004016105c890612565565b600c5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610b61573d6000803e3d6000fd5b5050565b6101bd600654108015610b7f5750600754610100900460ff165b610b9b5760405162461bcd60e51b81526004016105c8906125ea565b600a811115610bbc5760405162461bcd60e51b81526004016105c890612427565b600b543490610bcb908361168c565b14610be85760405162461bcd60e51b81526004016105c89061259a565b60005b81811015610c0d57610bfb61169f565b80610c0581612889565b915050610beb565b5080600654610c1c9190612797565b60065550565b60608151835114610c455760405162461bcd60e51b81526004016105c89061265d565b6000835167ffffffffffffffff811115610c6f57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c98578160200160208202803683370190505b50905060005b8451811015610d3a57610cff858281518110610cca57634e487b7160e01b600052603260045260246000fd5b6020026020010151858381518110610cf257634e487b7160e01b600052603260045260246000fd5b60200260200101516105a0565b828281518110610d1f57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610d3381612889565b9050610c9e565b509392505050565b600080610d4e83611016565b1192915050565b610d5d61157a565b6001600160a01b0316610d6e610e54565b6001600160a01b031614610d945760405162461bcd60e51b81526004016105c890612565565b8051610b61906009906020840190611a8a565b600754610100900460ff1681565b60075460ff1681565b610dc661157a565b6001600160a01b0316610dd7610e54565b6001600160a01b031614610dfd5760405162461bcd60e51b81526004016105c890612565565b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600980546106589061284e565b6003546001600160a01b031690565b610e6b61157a565b6001600160a01b0316610e7c610e54565b6001600160a01b031614610ea25760405162461bcd60e51b81526004016105c890612565565b60008281526008602052604090205415610ece5760405162461bcd60e51b81526004016105c890612397565b6000828152600860205260409020600190819055600454610eee91612797565b6004556108678383600184611769565b610f0661157a565b6001600160a01b0316610f17610e54565b6001600160a01b031614610f3d5760405162461bcd60e51b81526004016105c890612565565b600b55565b816001600160a01b0316610f5461157a565b6001600160a01b03161415610f7b5760405162461bcd60e51b81526004016105c890612614565b8060016000610f8861157a565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610fcc61157a565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110049190612215565b60405180910390a35050565b60065481565b60009081526008602052604090205490565b60045481565b61103661157a565b6001600160a01b0316611047610e54565b6001600160a01b03161461106d5760405162461bcd60e51b81526004016105c890612565565b6007805460ff1916911515919091179055565b61108861157a565b6001600160a01b0316611099610e54565b6001600160a01b0316146110bf5760405162461bcd60e51b81526004016105c890612565565b600780549115156101000261ff0019909216919091179055565b60075460ff166110fb5760405162461bcd60e51b81526004016105c8906122cf565b6111576004541061111e5760405162461bcd60e51b81526004016105c8906125c4565b600a81111561113f5760405162461bcd60e51b81526004016105c890612427565b600b54349061114e908361168c565b1461116b5760405162461bcd60e51b81526004016105c89061259a565b60005b81811015610b615761117e61169f565b8061118881612889565b91505061116e565b600b5481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b0384166111ea5760405162461bcd60e51b81526004016105c890612457565b6111f261157a565b6001600160a01b0316856001600160a01b0316148061121857506112188561055b61157a565b6112345760405162461bcd60e51b81526004016105c8906123de565b600061123e61157a565b905061125e81878761124f88611850565b61125888611850565b87610ae0565b6000848152602081815260408083206001600160a01b038a1684529091529020548381101561129f5760405162461bcd60e51b81526004016105c89061251b565b6112a98482612807565b6000868152602081815260408083206001600160a01b038c811685529252808320939093558816815290812080548692906112e5908490612797565b92505081905550856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161133b92919061272f565b60405180910390a46113518288888888886118a9565b50505050505050565b61136261157a565b6001600160a01b0316611373610e54565b6001600160a01b0316146113995760405162461bcd60e51b81526004016105c890612565565b6001600160a01b0381166113bf5760405162461bcd60e51b81526004016105c890612351565b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b031981166301ffc9a760e01b14919050565b60608161145957506040805180820190915260018152600360fc1b602082015261063a565b8160005b8115611483578061146d81612889565b915061147c9050600a836127d4565b915061145d565b60008167ffffffffffffffff8111156114ac57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114d6576020820181803683370190505b509050815b8515611571576114ec600182612807565b905060006114fb600a886127d4565b61150690600a6127e8565b6115109088612807565b61151b9060306127af565b905060008160f81b90508084848151811061154657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611568600a896127d4565b975050506114db565b50949350505050565b3390565b611590846001600160a01b031661197a565b15610ae05760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906115c99089908990889088908890600401612121565b602060405180830381600087803b1580156115e357600080fd5b505af1925050508015611613575060408051601f3d908101601f1916820190925261161091810190611f2e565b60015b61165c5761161f612900565b8061162a5750611644565b8060405162461bcd60e51b81526004016105c89190612220565b60405162461bcd60e51b81526004016105c890612233565b6001600160e01b0319811663bc197c8160e01b146113515760405162461bcd60e51b81526004016105c890612287565b600061169882846127e8565b9392505050565b60005b61270f81101561174e576005546000906116c8906001906116c38533612797565b611980565b60008181526008602052604090205490915061173b5760016008600083815260200190815260200160002081905550611722338260016040518060400160405280600681526020016503078303030360d41b815250611769565b600454611730906001612797565b600455506117679050565b508061174681612889565b9150506116a2565b5060405162461bcd60e51b81526004016105c8906124ee565b565b6001600160a01b03841661178f5760405162461bcd60e51b81526004016105c8906126ee565b600061179961157a565b90506117ab8160008761124f88611850565b6000848152602081815260408083206001600160a01b0389168452909152812080548592906117db908490612797565b92505081905550846001600160a01b031660006001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161183292919061272f565b60405180910390a4611849816000878787876118a9565b5050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061189857634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6118bb846001600160a01b031661197a565b15610ae05760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906118f4908990899088908890889060040161217f565b602060405180830381600087803b15801561190e57600080fd5b505af192505050801561193e575060408051601f3d908101601f1916820190925261193b91810190611f2e565b60015b61194a5761161f612900565b6001600160e01b0319811663f23a6e6160e01b146113515760405162461bcd60e51b81526004016105c890612287565b3b151590565b60008082434233604051602001611997919061204a565b6040516020818303038152906040528051906020012060001c6119ba91906127d4565b4542416040516020016119cd919061204a565b6040516020818303038152906040528051906020012060001c6119f091906127d4565b6119fa4442612797565b611a049190612797565b611a0e9190612797565b611a189190612797565b611a229190612797565b611a2c9190612797565b604051602001611a3c9190612104565b60408051601f198184030181529190528051602090910120905084611a6b611a648287612807565b8390611a7e565b611a759190612797565b95945050505050565b600061169882846128a4565b828054611a969061284e565b90600052602060002090601f016020900481019282611ab85760008555611afe565b82601f10611ad157805160ff1916838001178555611afe565b82800160010185558215611afe579182015b82811115611afe578251825591602001919060010190611ae3565b50611b0a929150611b0e565b5090565b5b80821115611b0a5760008155600101611b0f565b600067ffffffffffffffff831115611b3d57611b3d6128e4565b611b50601f8401601f191660200161273d565b9050828152838383011115611b6457600080fd5b828260208301376000602084830101529392505050565b600082601f830112611b8b578081fd5b81356020611ba0611b9b83612767565b61273d565b8281528181019085830183850287018401881015611bbc578586fd5b855b85811015611bda57813584529284019290840190600101611bbe565b5090979650505050505050565b600082601f830112611bf7578081fd5b61169883833560208501611b23565b600060208284031215611c17578081fd5b8135611698816129a5565b60008060408385031215611c34578081fd5b8235611c3f816129a5565b91506020830135611c4f816129a5565b809150509250929050565b600080600080600060a08688031215611c71578081fd5b8535611c7c816129a5565b94506020860135611c8c816129a5565b9350604086013567ffffffffffffffff80821115611ca8578283fd5b611cb489838a01611b7b565b94506060880135915080821115611cc9578283fd5b611cd589838a01611b7b565b93506080880135915080821115611cea578283fd5b50611cf788828901611be7565b9150509295509295909350565b600080600080600060a08688031215611d1b578081fd5b8535611d26816129a5565b94506020860135611d36816129a5565b93506040860135925060608601359150608086013567ffffffffffffffff811115611d5f578182fd5b611cf788828901611be7565b60008060408385031215611d7d578182fd5b8235611d88816129a5565b91506020830135611c4f816129bd565b60008060408385031215611daa578182fd5b8235611db5816129a5565b946020939093013593505050565b600080600060608486031215611dd7578081fd5b8335611de2816129a5565b925060208401359150604084013567ffffffffffffffff811115611e04578182fd5b611e1086828701611be7565b9150509250925092565b60008060408385031215611e2c578182fd5b823567ffffffffffffffff80821115611e43578384fd5b818501915085601f830112611e56578384fd5b81356020611e66611b9b83612767565b82815281810190858301838502870184018b1015611e82578889fd5b8896505b84871015611ead578035611e99816129a5565b835260019690960195918301918301611e86565b5096505086013592505080821115611ec3578283fd5b50611ed085828601611b7b565b9150509250929050565b600060208284031215611eeb578081fd5b8135611698816129bd565b600060208284031215611f07578081fd5b8151611698816129bd565b600060208284031215611f23578081fd5b8135611698816129cb565b600060208284031215611f3f578081fd5b8151611698816129cb565b600060208284031215611f5b578081fd5b813567ffffffffffffffff811115611f71578182fd5b8201601f81018413611f81578182fd5b611f9084823560208401611b23565b949350505050565b600060208284031215611fa9578081fd5b5035919050565b600060208284031215611fc1578081fd5b5051919050565b6000815180845260208085019450808401835b83811015611ff757815187529582019590820190600101611fdb565b509495945050505050565b6000815180845261201a81602086016020860161281e565b601f01601f19169290920160200192915050565b6000815161204081856020860161281e565b9290920192915050565b60609190911b6bffffffffffffffffffffffff1916815260140190565b825460009081906002810460018083168061208357607f831692505b60208084108214156120a357634e487b7160e01b87526022600452602487fd5b8180156120b757600181146120c8576120f4565b60ff198616895284890196506120f4565b6120d18b61278b565b885b868110156120ec5781548b8201529085019083016120d3565b505084890196505b505050505050611a75818561202e565b90815260200190565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528516602082015260a06040820181905260009061214d90830186611fc8565b828103606084015261215f8186611fc8565b905082810360808401526121738185612002565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906121b990830184612002565b979650505050505050565b6001600160a01b03929092168252602082015260400190565b6000602082526116986020830184611fc8565b6000604082526122036040830185611fc8565b8281036020840152611a758185611fc8565b901515815260200190565b6000602082526116986020830184612002565b60208082526034908201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606082015260800190565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6020808252601b908201527f4d696e74696e6720686173206e6f742073746172746564207965740000000000604082015260600190565b6020808252602b908201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60408201526a65726f206164647265737360a81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526027908201527f746869732072696368696520697320616c7265616479206f776e656420627920604082015266736f6d656f6e6560c81b606082015260800190565b60208082526029908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260408201526808185c1c1c9bdd995960ba1b606082015260800190565b6020808252601690820152756d61782031302072696368696573206174206f6e636560501b604082015260600190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526032908201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b602080825260139082015272796f75277265207665727920756e6c75636b7960681b604082015260600190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f0d2dce6eaccccd2c6d2cadce8408aa8960831b604082015260600190565b6020808252600c908201526b105b1b081cdbdb19081bdd5d60a21b604082015260600190565b60208082526010908201526f50726573616c6520696e61637469766560801b604082015260600190565b60208082526029908201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604082015268103337b91039b2b63360b91b606082015260800190565b60208082526029908201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561275f5761275f6128e4565b604052919050565b600067ffffffffffffffff821115612781576127816128e4565b5060209081020190565b60009081526020902090565b600082198211156127aa576127aa6128b8565b500190565b600060ff821660ff84168060ff038211156127cc576127cc6128b8565b019392505050565b6000826127e3576127e36128ce565b500490565b6000816000190483118215151615612802576128026128b8565b500290565b600082821015612819576128196128b8565b500390565b60005b83811015612839578181015183820152602001612821565b83811115612848576000848401525b50505050565b60028104600182168061286257607f821691505b6020821081141561288357634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561289d5761289d6128b8565b5060010190565b6000826128b3576128b36128ce565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60e01c90565b600060443d10156129105761087f565b600481823e6308c379a061292482516128fa565b1461292e5761087f565b6040513d600319016004823e80513d67ffffffffffffffff816024840111818411171561295e575050505061087f565b82840192508251915080821115612978575050505061087f565b503d830160208284010111156129905750505061087f565b601f01601f1916810160200160405291505090565b6001600160a01b03811681146129ba57600080fd5b50565b80151581146129ba57600080fd5b6001600160e01b0319811681146129ba57600080fdfea26469706673582212205879f93a86955a529d4ff46e59205b5842c2a51cc6bc56186b0c3903cd487dd164736f6c6343000800003368747470733a2f2f6d696e742e726963686965736e66742e636f6d2f6170692f7269636869652f

Deployed Bytecode

0x6080604052600436106101ed5760003560e01c8063715018a61161010d578063c87b56dd116100a0578063d8ccad3c1161006f578063d8ccad3c14610518578063dac6db1c1461052b578063e985e9c514610540578063f242432a14610560578063f2fde38b14610580576101ed565b8063c87b56dd14610282578063cf3348bd146104c3578063cf4f31c7146104d8578063d4862a41146104f8576101ed565b806398ca7795116100dc57806398ca77951461044e578063a22cb4651461046e578063b3a196e91461048e578063bd85b039146104a3576101ed565b8063715018a6146103ef578063743976a0146104045780638da5cb5b1461041957806394d008ef1461042e576101ed565b80632eb2c2d6116101855780634f558e79116101545780634f558e791461038557806355f804b3146103a55780635a7adf7f146103c55780636ad1fe02146103da576101ed565b80632eb2c2d6146103105780633ccfd60b1461033057806349c32217146103455780634e1273f414610358576101ed565b806315d8b47b116101c157806315d8b47b146102a257806317ffc320146102b75780631ec32d15146102d95780632083ad82146102fb576101ed565b8062fdd58e146101f257806301ffc9a7146102285780630bb78ec1146102555780630e89341c14610282575b600080fd5b3480156101fe57600080fd5b5061021261020d366004611d98565b6105a0565b60405161021f9190612104565b60405180910390f35b34801561023457600080fd5b50610248610243366004611f12565b6105f7565b60405161021f9190612215565b34801561026157600080fd5b50610275610270366004611f98565b61063f565b60405161021f9190612220565b34801561028e57600080fd5b5061027561029d366004611f98565b6106d9565b3480156102ae57600080fd5b5061021261070d565b3480156102c357600080fd5b506102d76102d2366004611c06565b610713565b005b3480156102e557600080fd5b506102ee61086c565b60405161021f919061210d565b34801561030757600080fd5b5061021261087b565b34801561031c57600080fd5b506102d761032b366004611c5a565b610882565b34801561033c57600080fd5b506102d7610ae8565b6102d7610353366004611f98565b610b65565b34801561036457600080fd5b50610378610373366004611e1a565b610c22565b60405161021f91906121dd565b34801561039157600080fd5b506102486103a0366004611f98565b610d42565b3480156103b157600080fd5b506102d76103c0366004611f4a565b610d55565b3480156103d157600080fd5b50610248610da7565b3480156103e657600080fd5b50610248610db5565b3480156103fb57600080fd5b506102d7610dbe565b34801561041057600080fd5b50610275610e47565b34801561042557600080fd5b506102ee610e54565b34801561043a57600080fd5b506102d7610449366004611dc3565b610e63565b34801561045a57600080fd5b506102d7610469366004611f98565b610efe565b34801561047a57600080fd5b506102d7610489366004611d6b565b610f42565b34801561049a57600080fd5b50610212611010565b3480156104af57600080fd5b506102126104be366004611f98565b611016565b3480156104cf57600080fd5b50610212611028565b3480156104e457600080fd5b506102d76104f3366004611eda565b61102e565b34801561050457600080fd5b506102d7610513366004611eda565b611080565b6102d7610526366004611f98565b6110d9565b34801561053757600080fd5b50610212611190565b34801561054c57600080fd5b5061024861055b366004611c22565b611196565b34801561056c57600080fd5b506102d761057b366004611d04565b6111c4565b34801561058c57600080fd5b506102d761059b366004611c06565b61135a565b60006001600160a01b0383166105d15760405162461bcd60e51b81526004016105c890612306565b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061062857506001600160e01b031982166303a24d0760e21b145b8061063757506106378261141b565b90505b919050565b600a60205260009081526040902080546106589061284e565b80601f01602080910402602001604051908101604052809291908181526020018280546106849061284e565b80156106d15780601f106106a6576101008083540402835291602001916106d1565b820191906000526020600020905b8154815290600101906020018083116106b457829003601f168201915b505050505081565b606060096106e683611434565b6040516020016106f7929190612067565b6040516020818303038152906040529050919050565b60055481565b61071b61157a565b6001600160a01b031661072c610e54565b6001600160a01b0316146107525760405162461bcd60e51b81526004016105c890612565565b6001600160a01b03811661076557600080fd5b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061079490309060040161210d565b60206040518083038186803b1580156107ac57600080fd5b505afa1580156107c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e49190611fb0565b60405163a9059cbb60e01b81529091506001600160a01b0383169063a9059cbb9061081590339085906004016121c4565b602060405180830381600087803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108679190611ef6565b505050565b600c546001600160a01b031681565b600b545b90565b81518351146108a35760405162461bcd60e51b81526004016105c8906126a6565b6001600160a01b0384166108c95760405162461bcd60e51b81526004016105c890612457565b6108d161157a565b6001600160a01b0316856001600160a01b031614806108f757506108f78561055b61157a565b6109135760405162461bcd60e51b81526004016105c89061249c565b600061091d61157a565b905061092d818787878787610ae0565b60005b8451811015610a7a57600085828151811061095b57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600085838151811061098757634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156109d75760405162461bcd60e51b81526004016105c89061251b565b6109e18282612807565b60008085815260200190815260200160002060008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055508160008085815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254610a5f9190612797565b9250508190555050505080610a7390612889565b9050610930565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610aca9291906121f0565b60405180910390a4610ae081878787878761157e565b505050505050565b610af061157a565b6001600160a01b0316610b01610e54565b6001600160a01b031614610b275760405162461bcd60e51b81526004016105c890612565565b600c5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610b61573d6000803e3d6000fd5b5050565b6101bd600654108015610b7f5750600754610100900460ff165b610b9b5760405162461bcd60e51b81526004016105c8906125ea565b600a811115610bbc5760405162461bcd60e51b81526004016105c890612427565b600b543490610bcb908361168c565b14610be85760405162461bcd60e51b81526004016105c89061259a565b60005b81811015610c0d57610bfb61169f565b80610c0581612889565b915050610beb565b5080600654610c1c9190612797565b60065550565b60608151835114610c455760405162461bcd60e51b81526004016105c89061265d565b6000835167ffffffffffffffff811115610c6f57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c98578160200160208202803683370190505b50905060005b8451811015610d3a57610cff858281518110610cca57634e487b7160e01b600052603260045260246000fd5b6020026020010151858381518110610cf257634e487b7160e01b600052603260045260246000fd5b60200260200101516105a0565b828281518110610d1f57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610d3381612889565b9050610c9e565b509392505050565b600080610d4e83611016565b1192915050565b610d5d61157a565b6001600160a01b0316610d6e610e54565b6001600160a01b031614610d945760405162461bcd60e51b81526004016105c890612565565b8051610b61906009906020840190611a8a565b600754610100900460ff1681565b60075460ff1681565b610dc661157a565b6001600160a01b0316610dd7610e54565b6001600160a01b031614610dfd5760405162461bcd60e51b81526004016105c890612565565b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600980546106589061284e565b6003546001600160a01b031690565b610e6b61157a565b6001600160a01b0316610e7c610e54565b6001600160a01b031614610ea25760405162461bcd60e51b81526004016105c890612565565b60008281526008602052604090205415610ece5760405162461bcd60e51b81526004016105c890612397565b6000828152600860205260409020600190819055600454610eee91612797565b6004556108678383600184611769565b610f0661157a565b6001600160a01b0316610f17610e54565b6001600160a01b031614610f3d5760405162461bcd60e51b81526004016105c890612565565b600b55565b816001600160a01b0316610f5461157a565b6001600160a01b03161415610f7b5760405162461bcd60e51b81526004016105c890612614565b8060016000610f8861157a565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610fcc61157a565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110049190612215565b60405180910390a35050565b60065481565b60009081526008602052604090205490565b60045481565b61103661157a565b6001600160a01b0316611047610e54565b6001600160a01b03161461106d5760405162461bcd60e51b81526004016105c890612565565b6007805460ff1916911515919091179055565b61108861157a565b6001600160a01b0316611099610e54565b6001600160a01b0316146110bf5760405162461bcd60e51b81526004016105c890612565565b600780549115156101000261ff0019909216919091179055565b60075460ff166110fb5760405162461bcd60e51b81526004016105c8906122cf565b6111576004541061111e5760405162461bcd60e51b81526004016105c8906125c4565b600a81111561113f5760405162461bcd60e51b81526004016105c890612427565b600b54349061114e908361168c565b1461116b5760405162461bcd60e51b81526004016105c89061259a565b60005b81811015610b615761117e61169f565b8061118881612889565b91505061116e565b600b5481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b0384166111ea5760405162461bcd60e51b81526004016105c890612457565b6111f261157a565b6001600160a01b0316856001600160a01b0316148061121857506112188561055b61157a565b6112345760405162461bcd60e51b81526004016105c8906123de565b600061123e61157a565b905061125e81878761124f88611850565b61125888611850565b87610ae0565b6000848152602081815260408083206001600160a01b038a1684529091529020548381101561129f5760405162461bcd60e51b81526004016105c89061251b565b6112a98482612807565b6000868152602081815260408083206001600160a01b038c811685529252808320939093558816815290812080548692906112e5908490612797565b92505081905550856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161133b92919061272f565b60405180910390a46113518288888888886118a9565b50505050505050565b61136261157a565b6001600160a01b0316611373610e54565b6001600160a01b0316146113995760405162461bcd60e51b81526004016105c890612565565b6001600160a01b0381166113bf5760405162461bcd60e51b81526004016105c890612351565b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b031981166301ffc9a760e01b14919050565b60608161145957506040805180820190915260018152600360fc1b602082015261063a565b8160005b8115611483578061146d81612889565b915061147c9050600a836127d4565b915061145d565b60008167ffffffffffffffff8111156114ac57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114d6576020820181803683370190505b509050815b8515611571576114ec600182612807565b905060006114fb600a886127d4565b61150690600a6127e8565b6115109088612807565b61151b9060306127af565b905060008160f81b90508084848151811061154657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611568600a896127d4565b975050506114db565b50949350505050565b3390565b611590846001600160a01b031661197a565b15610ae05760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906115c99089908990889088908890600401612121565b602060405180830381600087803b1580156115e357600080fd5b505af1925050508015611613575060408051601f3d908101601f1916820190925261161091810190611f2e565b60015b61165c5761161f612900565b8061162a5750611644565b8060405162461bcd60e51b81526004016105c89190612220565b60405162461bcd60e51b81526004016105c890612233565b6001600160e01b0319811663bc197c8160e01b146113515760405162461bcd60e51b81526004016105c890612287565b600061169882846127e8565b9392505050565b60005b61270f81101561174e576005546000906116c8906001906116c38533612797565b611980565b60008181526008602052604090205490915061173b5760016008600083815260200190815260200160002081905550611722338260016040518060400160405280600681526020016503078303030360d41b815250611769565b600454611730906001612797565b600455506117679050565b508061174681612889565b9150506116a2565b5060405162461bcd60e51b81526004016105c8906124ee565b565b6001600160a01b03841661178f5760405162461bcd60e51b81526004016105c8906126ee565b600061179961157a565b90506117ab8160008761124f88611850565b6000848152602081815260408083206001600160a01b0389168452909152812080548592906117db908490612797565b92505081905550846001600160a01b031660006001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161183292919061272f565b60405180910390a4611849816000878787876118a9565b5050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061189857634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6118bb846001600160a01b031661197a565b15610ae05760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906118f4908990899088908890889060040161217f565b602060405180830381600087803b15801561190e57600080fd5b505af192505050801561193e575060408051601f3d908101601f1916820190925261193b91810190611f2e565b60015b61194a5761161f612900565b6001600160e01b0319811663f23a6e6160e01b146113515760405162461bcd60e51b81526004016105c890612287565b3b151590565b60008082434233604051602001611997919061204a565b6040516020818303038152906040528051906020012060001c6119ba91906127d4565b4542416040516020016119cd919061204a565b6040516020818303038152906040528051906020012060001c6119f091906127d4565b6119fa4442612797565b611a049190612797565b611a0e9190612797565b611a189190612797565b611a229190612797565b611a2c9190612797565b604051602001611a3c9190612104565b60408051601f198184030181529190528051602090910120905084611a6b611a648287612807565b8390611a7e565b611a759190612797565b95945050505050565b600061169882846128a4565b828054611a969061284e565b90600052602060002090601f016020900481019282611ab85760008555611afe565b82601f10611ad157805160ff1916838001178555611afe565b82800160010185558215611afe579182015b82811115611afe578251825591602001919060010190611ae3565b50611b0a929150611b0e565b5090565b5b80821115611b0a5760008155600101611b0f565b600067ffffffffffffffff831115611b3d57611b3d6128e4565b611b50601f8401601f191660200161273d565b9050828152838383011115611b6457600080fd5b828260208301376000602084830101529392505050565b600082601f830112611b8b578081fd5b81356020611ba0611b9b83612767565b61273d565b8281528181019085830183850287018401881015611bbc578586fd5b855b85811015611bda57813584529284019290840190600101611bbe565b5090979650505050505050565b600082601f830112611bf7578081fd5b61169883833560208501611b23565b600060208284031215611c17578081fd5b8135611698816129a5565b60008060408385031215611c34578081fd5b8235611c3f816129a5565b91506020830135611c4f816129a5565b809150509250929050565b600080600080600060a08688031215611c71578081fd5b8535611c7c816129a5565b94506020860135611c8c816129a5565b9350604086013567ffffffffffffffff80821115611ca8578283fd5b611cb489838a01611b7b565b94506060880135915080821115611cc9578283fd5b611cd589838a01611b7b565b93506080880135915080821115611cea578283fd5b50611cf788828901611be7565b9150509295509295909350565b600080600080600060a08688031215611d1b578081fd5b8535611d26816129a5565b94506020860135611d36816129a5565b93506040860135925060608601359150608086013567ffffffffffffffff811115611d5f578182fd5b611cf788828901611be7565b60008060408385031215611d7d578182fd5b8235611d88816129a5565b91506020830135611c4f816129bd565b60008060408385031215611daa578182fd5b8235611db5816129a5565b946020939093013593505050565b600080600060608486031215611dd7578081fd5b8335611de2816129a5565b925060208401359150604084013567ffffffffffffffff811115611e04578182fd5b611e1086828701611be7565b9150509250925092565b60008060408385031215611e2c578182fd5b823567ffffffffffffffff80821115611e43578384fd5b818501915085601f830112611e56578384fd5b81356020611e66611b9b83612767565b82815281810190858301838502870184018b1015611e82578889fd5b8896505b84871015611ead578035611e99816129a5565b835260019690960195918301918301611e86565b5096505086013592505080821115611ec3578283fd5b50611ed085828601611b7b565b9150509250929050565b600060208284031215611eeb578081fd5b8135611698816129bd565b600060208284031215611f07578081fd5b8151611698816129bd565b600060208284031215611f23578081fd5b8135611698816129cb565b600060208284031215611f3f578081fd5b8151611698816129cb565b600060208284031215611f5b578081fd5b813567ffffffffffffffff811115611f71578182fd5b8201601f81018413611f81578182fd5b611f9084823560208401611b23565b949350505050565b600060208284031215611fa9578081fd5b5035919050565b600060208284031215611fc1578081fd5b5051919050565b6000815180845260208085019450808401835b83811015611ff757815187529582019590820190600101611fdb565b509495945050505050565b6000815180845261201a81602086016020860161281e565b601f01601f19169290920160200192915050565b6000815161204081856020860161281e565b9290920192915050565b60609190911b6bffffffffffffffffffffffff1916815260140190565b825460009081906002810460018083168061208357607f831692505b60208084108214156120a357634e487b7160e01b87526022600452602487fd5b8180156120b757600181146120c8576120f4565b60ff198616895284890196506120f4565b6120d18b61278b565b885b868110156120ec5781548b8201529085019083016120d3565b505084890196505b505050505050611a75818561202e565b90815260200190565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528516602082015260a06040820181905260009061214d90830186611fc8565b828103606084015261215f8186611fc8565b905082810360808401526121738185612002565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906121b990830184612002565b979650505050505050565b6001600160a01b03929092168252602082015260400190565b6000602082526116986020830184611fc8565b6000604082526122036040830185611fc8565b8281036020840152611a758185611fc8565b901515815260200190565b6000602082526116986020830184612002565b60208082526034908201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606082015260800190565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6020808252601b908201527f4d696e74696e6720686173206e6f742073746172746564207965740000000000604082015260600190565b6020808252602b908201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60408201526a65726f206164647265737360a81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526027908201527f746869732072696368696520697320616c7265616479206f776e656420627920604082015266736f6d656f6e6560c81b606082015260800190565b60208082526029908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260408201526808185c1c1c9bdd995960ba1b606082015260800190565b6020808252601690820152756d61782031302072696368696573206174206f6e636560501b604082015260600190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526032908201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b602080825260139082015272796f75277265207665727920756e6c75636b7960681b604082015260600190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f0d2dce6eaccccd2c6d2cadce8408aa8960831b604082015260600190565b6020808252600c908201526b105b1b081cdbdb19081bdd5d60a21b604082015260600190565b60208082526010908201526f50726573616c6520696e61637469766560801b604082015260600190565b60208082526029908201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604082015268103337b91039b2b63360b91b606082015260800190565b60208082526029908201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561275f5761275f6128e4565b604052919050565b600067ffffffffffffffff821115612781576127816128e4565b5060209081020190565b60009081526020902090565b600082198211156127aa576127aa6128b8565b500190565b600060ff821660ff84168060ff038211156127cc576127cc6128b8565b019392505050565b6000826127e3576127e36128ce565b500490565b6000816000190483118215151615612802576128026128b8565b500290565b600082821015612819576128196128b8565b500390565b60005b83811015612839578181015183820152602001612821565b83811115612848576000848401525b50505050565b60028104600182168061286257607f821691505b6020821081141561288357634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561289d5761289d6128b8565b5060010190565b6000826128b3576128b36128ce565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60e01c90565b600060443d10156129105761087f565b600481823e6308c379a061292482516128fa565b1461292e5761087f565b6040513d600319016004823e80513d67ffffffffffffffff816024840111818411171561295e575050505061087f565b82840192508251915080821115612978575050505061087f565b503d830160208284010111156129905750505061087f565b601f01601f1916810160200160405291505090565b6001600160a01b03811681146129ba57600080fd5b50565b80151581146129ba57600080fd5b6001600160e01b0319811681146129ba57600080fdfea26469706673582212205879f93a86955a529d4ff46e59205b5842c2a51cc6bc56186b0c3903cd487dd164736f6c63430008000033

Deployed Bytecode Sourcemap

20434:4229:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11382:231;;;;;;;;;;-1:-1:-1;11382:231:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10964:297;;;;;;;;;;-1:-1:-1;10964:297:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;20819:44::-;;;;;;;;;;-1:-1:-1;20819:44:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;22670:145::-;;;;;;;;;;-1:-1:-1;22670:145:0;;;;;:::i;:::-;;:::i;20566:34::-;;;;;;;;;;;;;:::i;24462:193::-;;;;;;;;;;-1:-1:-1;24462:193:0;;;;;:::i;:::-;;:::i;:::-;;20895:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;21150:80::-;;;;;;;;;;;;;:::i;13661:1233::-;;;;;;;;;;-1:-1:-1;13661:1233:0;;;;;:::i;:::-;;:::i;24159:131::-;;;;;;;;;;;;;:::i;21236:360::-;;;;;;:::i;:::-;;:::i;11621:543::-;;;;;;;;;;-1:-1:-1;11621:543:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23529:99::-;;;;;;;;;;-1:-1:-1;23529:99:0;;;;;:::i;:::-;;:::i;22579:86::-;;;;;;;;;;-1:-1:-1;22579:86:0;;;;;:::i;:::-;;:::i;20664:27::-;;;;;;;;;;;;;:::i;20636:24::-;;;;;;;;;;;;;:::i;10019:148::-;;;;;;;;;;;;;:::i;20749:66::-;;;;;;;;;;;;;:::i;9796:87::-;;;;;;;;;;;;;:::i;22331:243::-;;;;;;;;;;-1:-1:-1;22331:243:0;;;;;:::i;:::-;;:::i;21062:83::-;;;;;;;;;;-1:-1:-1;21062:83:0;;;;;:::i;:::-;;:::i;12176:309::-;;;;;;;;;;-1:-1:-1;12176:309:0;;;;;:::i;:::-;;:::i;20604:28::-;;;;;;;;;;;;;:::i;23420:104::-;;;;;;;;;;-1:-1:-1;23420:104:0;;;;;:::i;:::-;;:::i;20536:26::-;;;;;;;;;;;;;:::i;24295:75::-;;;;;;;;;;-1:-1:-1;24295:75:0;;;;;:::i;:::-;;:::i;24376:81::-;;;;;;;;;;-1:-1:-1;24376:81:0;;;;;:::i;:::-;;:::i;21601:350::-;;;;;;:::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;20819:44::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22670:145::-;22730:13;22781:8;22791:17;22800:7;22791:8;:17::i;:::-;22764:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22750:60;;22670:145;;;:::o;20566:34::-;;;;:::o;24462: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;;;;;24528:28:0;::::1;24520:37;;;::::0;::::1;;24580:30;::::0;-1:-1:-1;;;24580:30:0;;24562:15:::1;::::0;-1:-1:-1;;;;;24580:15:0;::::1;::::0;::::1;::::0;:30:::1;::::0;24604:4:::1;::::0;24580:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24615:35;::::0;-1:-1:-1;;;24615:35:0;;24562:48;;-1:-1:-1;;;;;;24615:14:0;::::1;::::0;::::1;::::0;:35:::1;::::0;24630:10:::1;::::0;24562:48;;24615:35:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10002:1;24462: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;24159: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;:::-;24253:13:::1;::::0;24245:40:::1;::::0;24219:21:::1;::::0;-1:-1:-1;;;;;24253:13:0::1;::::0;24245:40;::::1;;;::::0;24219:21;;24201:15:::1;24245:40:::0;24201:15;24245:40;24219:21;24253:13;24245:40;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10002:1;24159:131::o:0;21236:360::-;21321:3;21305:13;;:19;:30;;;;-1:-1:-1;21328:7:0;;;;;;;21305:30;21297:59;;;;-1:-1:-1;;;21297:59:0;;;;;;;:::i;:::-;21381:2;21369:8;:14;;21361:49;;;;-1:-1:-1;;;21361:49:0;;;;;;;:::i;:::-;21423:9;;21450;;21423:23;;21437:8;21423:13;:23::i;:::-;:36;21415:65;;;;-1:-1:-1;;;21415:65:0;;;;;;;:::i;:::-;21490:9;21485:62;21509:8;21505:1;:12;21485:62;;;21530:11;:9;:11::i;:::-;21519:3;;;;:::i;:::-;;;;21485:62;;;;21583:8;21567:13;;:24;;;;:::i;:::-;21551:13;:40;-1:-1:-1;21236:360:0:o;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;23529:99::-;23586:4;23622:1;23604:15;23616:2;23604:11;:15::i;:::-;:19;;23529:99;-1:-1:-1;;23529:99:0:o;22579: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;:::-;22643:17;;::::1;::::0;:8:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;20664:27::-:0;;;;;;;;;:::o;20636:24::-;;;;;;:::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;20749:66::-;;;;;;;:::i;9796:87::-;9869:6;;-1:-1:-1;;;;;9869:6:0;9796:87;:::o;22331:243::-;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;:::-;22418:16:::1;::::0;;;:12:::1;:16;::::0;;;;;:21;22410:73:::1;;;;-1:-1:-1::0;;;22410:73:0::1;;;;;;;:::i;:::-;22488:16;::::0;;;:12:::1;:16;::::0;;;;22507:1:::1;22488:20:::0;;;;22527:11:::1;::::0;:15:::1;::::0;::::1;:::i;:::-;22513:11;:29:::0;22547:22:::1;22553:2:::0;22557;22561:1:::1;22564:4:::0;22547:5:::1;:22::i;21062:83::-: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;:::-;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;20604:28::-;;;;:::o;23420:104::-;23482:7;23503:16;;;:12;:16;;;;;;;23420:104::o;20536:26::-;;;;:::o;24295:75::-;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;:::-;24352:4:::1;:13:::0;;-1:-1:-1;;24352:13:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24295:75::o;24376:81::-;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;:::-;24436:7:::1;:16:::0;;;::::1;;;;-1:-1:-1::0;;24436:16:0;;::::1;::::0;;;::::1;::::0;;24376:81::o;21601:350::-;21669:4;;;;21661:44;;;;-1:-1:-1;;;21661:44:0;;;;;;;:::i;:::-;21735:4;21721:11;;:18;21713:43;;;;-1:-1:-1;;;21713:43:0;;;;;;;:::i;:::-;21781:2;21769:8;:14;;21761:49;;;;-1:-1:-1;;;21761:49:0;;;;;;;:::i;:::-;21823:9;;21850;;21823:23;;21837:8;21823:13;:23::i;:::-;:36;21815:65;;;;-1:-1:-1;;;21815:65:0;;;;;;;:::i;:::-;21890:9;21885:62;21909:8;21905:1;:12;21885:62;;;21930:11;:9;:11::i;:::-;21919:3;;;;:::i;:::-;;;;21885:62;;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;22967:448::-;23020:27;23058:7;23054:35;;-1:-1:-1;23073:10:0;;;;;;;;;;;;-1:-1:-1;;;23073:10:0;;;;;;23054:35;23105:2;23093:9;23128:45;23135:6;;23128:45;;23149:5;;;;:::i;:::-;;-1:-1:-1;23160:7:0;;-1:-1:-1;23165:2:0;23160:7;;:::i;:::-;;;23128:45;;;23177:17;23207:3;23197:14;;;;;;-1:-1:-1;;;23197:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23197:14:0;-1:-1:-1;23177:34:0;-1:-1:-1;23228:3:0;23236:151;23243:7;;23236:151;;23262:5;23266:1;23262;:5;:::i;:::-;23258:9;-1:-1:-1;23273:10:0;23304:7;23309:2;23304;:7;:::i;:::-;23303:14;;23315:2;23303:14;:::i;:::-;23298:19;;:2;:19;:::i;:::-;23287:31;;:2;:31;:::i;:::-;23273:46;;23325:9;23344:4;23337:12;;23325:24;;23365:2;23355:4;23360:1;23355:7;;;;;;-1:-1:-1;;;23355:7:0;;;;;;;;;;;;:12;-1:-1:-1;;;;;23355:12:0;;;;;;;;-1:-1:-1;23373:8:0;23379:2;23373:8;;:::i;:::-;;;23236:151;;;;;-1:-1:-1;23405:4:0;22967:448;-1:-1:-1;;;;22967:448:0:o;433:98::-;513:10;433:98;:::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;8479:98::-;8537:7;8564:5;8568:1;8564;:5;:::i;:::-;8557:12;8479:98;-1:-1:-1;;;8479:98:0:o;21956:370::-;21995:9;21990:298;22014:4;22010:1;:8;21990:298;;;22058:12;;22031:14;;22048:66;;22055:1;;22072:41;22112:1;22096:10;22072:41;:::i;:::-;22048:6;:66::i;:::-;22124:20;;;;:12;:20;;;;;;22031:83;;-1:-1:-1;22120:163:0;;22181:1;22158:12;:20;22171:6;22158:20;;;;;;;;;;;:24;;;;22189:38;22195:10;22207:6;22215:1;22189:38;;;;;;;;;;;;;-1:-1:-1;;;22189:38:0;;;:5;:38::i;:::-;22248:11;;:15;;22262:1;22248:15;:::i;:::-;22234:11;:29;-1:-1:-1;22270:7:0;;-1:-1:-1;22270:7:0;22120:163;-1:-1:-1;22020:3:0;;;;:::i;:::-;;;;21990:298;;;;22292:29;;-1:-1:-1;;;22292:29:0;;;;;;;:::i;21956:370::-;:::o;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;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;23633:521::-;23725:7;23739:12;24085:5;24062:12;24034:15;24016:10;23999:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;23989:39;;;;;;23981:48;;23980:70;;;;:::i;:::-;23954:14;23926:15;23904:14;23887:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;23877:43;;;;;;23869:52;;23868:74;;;;:::i;:::-;23814:42;23840:16;23814:15;:42;:::i;:::-;:129;;;;:::i;:::-;:154;;;;:::i;:::-;:237;;;;:::i;:::-;:260;;;;:::i;:::-;:276;;;;:::i;:::-;23789:309;;;;;;;;:::i;:::-;;;;-1:-1:-1;;23789:309:0;;;;;;;;;23772:333;;23789:309;23772:333;;;;;-1:-1:-1;24145:4:0;24123:19;24132:9;24145:4;24132:2;:9;:::i;:::-;24123:4;;:8;:19::i;:::-;:26;;;;:::i;:::-;24116:33;23633:521;-1:-1:-1;;;;;23633:521:0:o;8691:98::-;8749:7;8776:5;8780:1;8776;:5;:::i;-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:547::-;;;;4833:2;4821:9;4812:7;4808:23;4804:32;4801:2;;;4854:6;4846;4839:22;4801:2;4898:9;4885:23;4917:33;4944:5;4917:33;:::i;:::-;4969:5;-1:-1:-1;5021:2:1;5006:18;;4993:32;;-1:-1:-1;5076:2:1;5061:18;;5048:32;5103:18;5092:30;;5089:2;;;5140:6;5132;5125:22;5089:2;5168:51;5211:7;5202:6;5191:9;5187:22;5168:51;:::i;:::-;5158:61;;;4791:434;;;;;:::o;5230:1295::-;;;5409:2;5397:9;5388:7;5384:23;5380:32;5377:2;;;5430:6;5422;5415:22;5377:2;5475:9;5462:23;5504:18;5545:2;5537:6;5534:14;5531:2;;;5566:6;5558;5551:22;5531:2;5609:6;5598:9;5594:22;5584:32;;5654:7;5647:4;5643:2;5639:13;5635:27;5625:2;;5681:6;5673;5666:22;5625:2;5722;5709:16;5744:4;5768:65;5783:49;5829:2;5783:49;:::i;5768:65::-;5867:15;;;5898:12;;;;5930:11;;;5968;;;5960:20;;5956:29;;5953:42;-1:-1:-1;5950:2:1;;;6013:6;6005;5998:22;5950:2;6040:6;6031:15;;6055:240;6069:2;6066:1;6063:9;6055:240;;;6140:3;6127:17;6157:33;6184:5;6157:33;:::i;:::-;6203:18;;6087:1;6080:9;;;;;6241:12;;;;6273;;6055:240;;;-1:-1:-1;6314:5:1;-1:-1:-1;;6357:18:1;;6344:32;;-1:-1:-1;;6388:16:1;;;6385:2;;;6422:6;6414;6407:22;6385:2;;6450:69;6511:7;6500:8;6489:9;6485:24;6450:69;:::i;:::-;6440:79;;;5367:1158;;;;;:::o;6530:253::-;;6639:2;6627:9;6618:7;6614:23;6610:32;6607:2;;;6660:6;6652;6645:22;6607:2;6704:9;6691:23;6723:30;6747:5;6723:30;:::i;6788:257::-;;6908:2;6896:9;6887:7;6883:23;6879:32;6876:2;;;6929:6;6921;6914:22;6876:2;6966:9;6960:16;6985:30;7009:5;6985:30;:::i;7050:257::-;;7161:2;7149:9;7140:7;7136:23;7132:32;7129:2;;;7182:6;7174;7167:22;7129:2;7226:9;7213:23;7245:32;7271:5;7245:32;:::i;7312:261::-;;7434:2;7422:9;7413:7;7409:23;7405:32;7402:2;;;7455:6;7447;7440:22;7402:2;7492:9;7486:16;7511:32;7537:5;7511:32;:::i;7857:482::-;;7979:2;7967:9;7958:7;7954:23;7950:32;7947:2;;;8000:6;7992;7985:22;7947:2;8045:9;8032:23;8078:18;8070:6;8067:30;8064:2;;;8115:6;8107;8100:22;8064:2;8143:22;;8196:4;8188:13;;8184:27;-1:-1:-1;8174:2:1;;8230:6;8222;8215:22;8174:2;8258:75;8325:7;8320:2;8307:16;8302:2;8298;8294:11;8258:75;:::i;:::-;8248:85;7937:402;-1:-1:-1;;;;7937:402:1:o;8344:190::-;;8456:2;8444:9;8435:7;8431:23;8427:32;8424:2;;;8477:6;8469;8462:22;8424:2;-1:-1:-1;8505:23:1;;8414:120;-1:-1:-1;8414:120:1:o;8539:194::-;;8662:2;8650:9;8641:7;8637:23;8633:32;8630:2;;;8683:6;8675;8668:22;8630:2;-1:-1:-1;8711:16:1;;8620:113;-1:-1:-1;8620:113:1:o;8738:443::-;;8835:5;8829:12;8862:6;8857:3;8850:19;8888:4;8917:2;8912:3;8908:12;8901:19;;8954:2;8947:5;8943:14;8975:3;8987:169;9001:6;8998:1;8995:13;8987:169;;;9062:13;;9050:26;;9096:12;;;;9131:15;;;;9023:1;9016:9;8987:169;;;-1:-1:-1;9172:3:1;;8805:376;-1:-1:-1;;;;;8805:376:1:o;9186:259::-;;9267:5;9261:12;9294:6;9289:3;9282:19;9310:63;9366:6;9359:4;9354:3;9350:14;9343:4;9336:5;9332:16;9310:63;:::i;:::-;9427:2;9406:15;-1:-1:-1;;9402:29:1;9393:39;;;;9434:4;9389:50;;9237:208;-1:-1:-1;;9237:208:1:o;9450:187::-;;9532:5;9526:12;9547:52;9592:6;9587:3;9580:4;9573:5;9569:16;9547:52;:::i;:::-;9615:16;;;;;9502:135;-1:-1:-1;;9502:135:1:o;9642:229::-;9791:2;9787:15;;;;-1:-1:-1;;9783:53:1;9771:66;;9862:2;9853:12;;9761:110::o;10126:1181::-;10360:13;;10126:1181;;;;10433:1;10418:17;;10454:1;10490:18;;;;10517:2;;10571:4;10563:6;10559:17;10549:27;;10517:2;10597;10645;10637:6;10634:14;10614:18;10611:38;10608:2;;;-1:-1:-1;;;10672:33:1;;10728:4;10725:1;10718:15;10758:4;10679:3;10746:17;10608:2;10789:18;10816:104;;;;10934:1;10929:324;;;;10782:471;;10816:104;-1:-1:-1;;10849:24:1;;10837:37;;10894:16;;;;-1:-1:-1;10816:104:1;;10929:324;10965:39;10997:6;10965:39;:::i;:::-;11026:3;11042:165;11056:6;11053:1;11050:13;11042:165;;;11134:14;;11121:11;;;11114:35;11177:16;;;;11071:10;;11042:165;;;11046:3;;11236:6;11231:3;11227:16;11220:23;;10782:471;;;;;;;11269:32;11297:3;11289:6;11269:32;:::i;11312:182::-;11441:19;;;11485:2;11476:12;;11431:63::o;11499:203::-;-1:-1:-1;;;;;11663:32:1;;;;11645:51;;11633:2;11618:18;;11600:102::o;11707:840::-;-1:-1:-1;;;;;12104:15:1;;;12086:34;;12156:15;;12151:2;12136:18;;12129:43;12066:3;12203:2;12188:18;;12181:31;;;11707:840;;12235:63;;12278:19;;12270:6;12235:63;:::i;:::-;12346:9;12338:6;12334:22;12329:2;12318:9;12314:18;12307:50;12380;12423:6;12415;12380:50;:::i;:::-;12366:64;;12479:9;12471:6;12467:22;12461:3;12450:9;12446:19;12439:51;12507:34;12534:6;12526;12507:34;:::i;:::-;12499:42;12038:509;-1:-1:-1;;;;;;;;12038:509:1:o;12552:562::-;-1:-1:-1;;;;;12849:15:1;;;12831:34;;12901:15;;12896:2;12881:18;;12874:43;12948:2;12933:18;;12926:34;;;12991:2;12976:18;;12969:34;;;12811:3;13034;13019:19;;13012:32;;;12552:562;;13061:47;;13088:19;;13080:6;13061:47;:::i;:::-;13053:55;12783:331;-1:-1:-1;;;;;;;12783:331:1:o;13119:274::-;-1:-1:-1;;;;;13311:32:1;;;;13293:51;;13375:2;13360:18;;13353:34;13281:2;13266:18;;13248:145::o;13398:267::-;;13577:2;13566:9;13559:21;13597:62;13655:2;13644:9;13640:18;13632:6;13597:62;:::i;13670:477::-;;13927:2;13916:9;13909:21;13953:62;14011:2;14000:9;13996:18;13988:6;13953:62;:::i;:::-;14063:9;14055:6;14051:22;14046:2;14035:9;14031:18;14024:50;14091;14134:6;14126;14091:50;:::i;14152:187::-;14317:14;;14310:22;14292:41;;14280:2;14265:18;;14247:92::o;14344:221::-;;14493:2;14482:9;14475:21;14513:46;14555:2;14544:9;14540:18;14532:6;14513:46;:::i;14570:416::-;14772:2;14754:21;;;14811:2;14791:18;;;14784:30;14850:34;14845:2;14830:18;;14823:62;-1:-1:-1;;;14916:2:1;14901:18;;14894:50;14976:3;14961:19;;14744:242::o;14991:404::-;15193:2;15175:21;;;15232:2;15212:18;;;15205:30;15271:34;15266:2;15251:18;;15244:62;-1:-1:-1;;;15337:2:1;15322:18;;15315:38;15385:3;15370:19;;15165:230::o;15400:351::-;15602:2;15584:21;;;15641:2;15621:18;;;15614:30;15680:29;15675:2;15660:18;;15653:57;15742:2;15727:18;;15574:177::o;15756:407::-;15958:2;15940:21;;;15997:2;15977:18;;;15970:30;16036:34;16031:2;16016:18;;16009:62;-1:-1:-1;;;16102:2:1;16087:18;;16080:41;16153:3;16138:19;;15930:233::o;16168:402::-;16370:2;16352:21;;;16409:2;16389:18;;;16382:30;16448:34;16443:2;16428:18;;16421:62;-1:-1:-1;;;16514:2:1;16499:18;;16492:36;16560:3;16545:19;;16342:228::o;16575:403::-;16777:2;16759:21;;;16816:2;16796:18;;;16789:30;16855:34;16850:2;16835:18;;16828:62;-1:-1:-1;;;16921:2:1;16906:18;;16899:37;16968:3;16953:19;;16749:229::o;16983:405::-;17185:2;17167:21;;;17224:2;17204:18;;;17197:30;17263:34;17258:2;17243:18;;17236:62;-1:-1:-1;;;17329:2:1;17314:18;;17307:39;17378:3;17363:19;;17157:231::o;17393:346::-;17595:2;17577:21;;;17634:2;17614:18;;;17607:30;-1:-1:-1;;;17668:2:1;17653:18;;17646:52;17730:2;17715:18;;17567:172::o;17744:401::-;17946:2;17928:21;;;17985:2;17965:18;;;17958:30;18024:34;18019:2;18004:18;;17997:62;-1:-1:-1;;;18090:2:1;18075:18;;18068:35;18135:3;18120:19;;17918:227::o;18150:414::-;18352:2;18334:21;;;18391:2;18371:18;;;18364:30;18430:34;18425:2;18410:18;;18403:62;-1:-1:-1;;;18496:2:1;18481:18;;18474:48;18554:3;18539:19;;18324:240::o;18569:343::-;18771:2;18753:21;;;18810:2;18790:18;;;18783:30;-1:-1:-1;;;18844:2:1;18829:18;;18822:49;18903:2;18888:18;;18743:169::o;18917:406::-;19119:2;19101:21;;;19158:2;19138:18;;;19131:30;19197:34;19192:2;19177:18;;19170:62;-1:-1:-1;;;19263:2:1;19248:18;;19241:40;19313:3;19298:19;;19091:232::o;19328:356::-;19530:2;19512:21;;;19549:18;;;19542:30;19608:34;19603:2;19588:18;;19581:62;19675:2;19660:18;;19502:182::o;19689:340::-;19891:2;19873:21;;;19930:2;19910:18;;;19903:30;-1:-1:-1;;;19964:2:1;19949:18;;19942:46;20020:2;20005:18;;19863:166::o;20034:336::-;20236:2;20218:21;;;20275:2;20255:18;;;20248:30;-1:-1:-1;;;20309:2:1;20294:18;;20287:42;20361:2;20346:18;;20208:162::o;20375:340::-;20577:2;20559:21;;;20616:2;20596:18;;;20589:30;-1:-1:-1;;;20650:2:1;20635:18;;20628:46;20706:2;20691:18;;20549:166::o;20720:405::-;20922:2;20904:21;;;20961:2;20941:18;;;20934:30;21000:34;20995:2;20980:18;;20973:62;-1:-1:-1;;;21066:2:1;21051:18;;21044:39;21115:3;21100:19;;20894:231::o;21130:405::-;21332:2;21314:21;;;21371:2;21351:18;;;21344:30;21410:34;21405:2;21390:18;;21383:62;-1:-1:-1;;;21476:2:1;21461:18;;21454:39;21525:3;21510:19;;21304:231::o;21540:404::-;21742:2;21724:21;;;21781:2;21761:18;;;21754:30;21820:34;21815:2;21800:18;;21793:62;-1:-1:-1;;;21886:2:1;21871:18;;21864:38;21934:3;21919:19;;21714:230::o;21949:397::-;22151:2;22133:21;;;22190:2;22170:18;;;22163:30;22229:34;22224:2;22209:18;;22202:62;-1:-1:-1;;;22295:2:1;22280:18;;22273:31;22336:3;22321:19;;22123:223::o;22533:248::-;22707:25;;;22763:2;22748:18;;22741:34;22695:2;22680:18;;22662:119::o;22786:251::-;22856:2;22850:9;22886:17;;;22933:18;22918:34;;22954:22;;;22915:62;22912:2;;;22980:18;;:::i;:::-;23016:2;23009:22;22830:207;;-1:-1:-1;22830:207:1:o;23042:192::-;;23141:18;23133:6;23130:30;23127:2;;;23163:18;;:::i;:::-;-1:-1:-1;23223:4:1;23204:17;;;23200:28;;23117:117::o;23239:129::-;;23307:17;;;23357:4;23341:21;;;23297:71::o;23373:128::-;;23444:1;23440:6;23437:1;23434:13;23431:2;;;23450:18;;:::i;:::-;-1:-1:-1;23486:9:1;;23421:80::o;23506:204::-;;23580:4;23577:1;23573:12;23612:4;23609:1;23605:12;23647:3;23641:4;23637:14;23632:3;23629:23;23626:2;;;23655:18;;:::i;:::-;23691:13;;23552:158;-1:-1:-1;;;23552:158:1:o;23715:120::-;;23781:1;23771:2;;23786:18;;:::i;:::-;-1:-1:-1;23820:9:1;;23761:74::o;23840:168::-;;23946:1;23942;23938:6;23934:14;23931:1;23928:21;23923:1;23916:9;23909:17;23905:45;23902:2;;;23953:18;;:::i;:::-;-1:-1:-1;23993:9:1;;23892:116::o;24013:125::-;;24081:1;24078;24075:8;24072:2;;;24086:18;;:::i;:::-;-1:-1:-1;24123:9:1;;24062:76::o;24143:258::-;24215:1;24225:113;24239:6;24236:1;24233:13;24225:113;;;24315:11;;;24309:18;24296:11;;;24289:39;24261:2;24254:10;24225:113;;;24356:6;24353:1;24350:13;24347:2;;;24391:1;24382:6;24377:3;24373:16;24366:27;24347:2;;24196:205;;;:::o;24406:380::-;24491:1;24481:12;;24538:1;24528:12;;;24549:2;;24603:4;24595:6;24591:17;24581:27;;24549:2;24656;24648:6;24645:14;24625:18;24622:38;24619:2;;;24702:10;24697:3;24693:20;24690:1;24683:31;24737:4;24734:1;24727:15;24765:4;24762:1;24755:15;24619:2;;24461:325;;;:::o;24791:135::-;;-1:-1:-1;;24851:17:1;;24848:2;;;24871:18;;:::i;:::-;-1:-1:-1;24918:1:1;24907:13;;24838:88::o;24931:112::-;;24989:1;24979:2;;24994:18;;:::i;:::-;-1:-1:-1;25028:9:1;;24969:74::o;25048:127::-;25109:10;25104:3;25100:20;25097:1;25090:31;25140:4;25137:1;25130:15;25164:4;25161:1;25154:15;25180:127;25241:10;25236:3;25232:20;25229:1;25222:31;25272:4;25269:1;25262:15;25296:4;25293:1;25286:15;25312:127;25373:10;25368:3;25364:20;25361:1;25354:31;25404:4;25401:1;25394:15;25428:4;25425:1;25418:15;25444:88;25519:3;25515:15;;25501:31::o;25537:764::-;;25618:4;25600:16;25597:26;25594:2;;;25626:5;;25594:2;25667:1;25662:3;25657;25642:27;25729:10;25691:36;25722:3;25716:10;25691:36;:::i;:::-;25688:52;25678:2;;25744:5;;25678:2;25778;25772:9;25818:16;-1:-1:-1;;25814:29:1;25811:1;25772:9;25790:54;25873:4;25867:11;25897:16;25932:18;26003:2;25996:4;25988:6;25984:17;25981:25;25976:2;25968:6;25965:14;25962:45;25959:2;;;26010:5;;;;;;25959:2;26047:6;26041:4;26037:17;26026:28;;26083:3;26077:10;26063:24;;26110:2;26102:6;26099:14;26096:2;;;26116:5;;;;;;26096:2;;26177:16;26171:4;26167:27;26160:4;26151:6;26146:3;26142:16;26138:27;26135:60;26132:2;;;26198:5;;;;;26132:2;26263;26242:15;-1:-1:-1;;26238:29:1;26229:39;;26270:4;26225:50;26221:2;26214:62;26233:3;-1:-1:-1;;25584:717:1;:::o;26306:133::-;-1:-1:-1;;;;;26383:31:1;;26373:42;;26363:2;;26429:1;26426;26419:12;26363:2;26353:86;:::o;26444:120::-;26532:5;26525:13;26518:21;26511:5;26508:32;26498:2;;26554:1;26551;26544:12;26569:133;-1:-1:-1;;;;;;26645:32:1;;26635:43;;26625:2;;26692:1;26689;26682:12

Swarm Source

ipfs://5879f93a86955a529d4ff46e59205b5842c2a51cc6bc56186b0c3903cd487dd1
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

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