ETH Price: $3,763.40 (+5.91%)

Token

ERC-20: Spherical Harmonics V2 (SPHII)
 

Overview

Max Total Supply

927 SPHII

Holders

634

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
gaoyu.eth
Balance
1 SPHII
0x9ac3514932bb0631be9ce53a60081f9f6625294d
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:
SphericalHarmonicsVII

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-30
*/

// File: @openzeppelin/contracts/utils/Context.sol

pragma solidity ^0.8.0;


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

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

// File: @openzeppelin/contracts/utils/Address.sol



pragma solidity ^0.8.0;


library Address {
    
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

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

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

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

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

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

    
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

    
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol



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

// File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)

pragma solidity ^0.8.0;




library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    
    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
        }
    }

    
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            // Return data is optional
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

// File: @openzeppelin/contracts/finance/PaymentSplitter.sol


// OpenZeppelin Contracts v4.4.1 (finance/PaymentSplitter.sol)

pragma solidity ^0.8.0;





contract PaymentSplitter is Context {
    event PayeeAdded(address account, uint256 shares);
    event PaymentReleased(address to, uint256 amount);
    event ERC20PaymentReleased(IERC20 indexed token, address to, uint256 amount);
    event PaymentReceived(address from, uint256 amount);

    uint256 private _totalShares;
    uint256 private _totalReleased;

    mapping(address => uint256) private _shares;
    mapping(address => uint256) private _released;
    address[] private _payees;

    mapping(IERC20 => uint256) private _erc20TotalReleased;
    mapping(IERC20 => mapping(address => uint256)) private _erc20Released;

    
    constructor(address[] memory payees, uint256[] memory shares_) payable {
        require(payees.length == shares_.length, "PaymentSplitter: payees and shares length mismatch");
        require(payees.length > 0, "PaymentSplitter: no payees");

        for (uint256 i = 0; i < payees.length; i++) {
            _addPayee(payees[i], shares_[i]);
        }
    }

    
    receive() external payable virtual {
        emit PaymentReceived(_msgSender(), msg.value);
    }

    
    function totalShares() public view returns (uint256) {
        return _totalShares;
    }

    
    function totalReleased() public view returns (uint256) {
        return _totalReleased;
    }

    
    function totalReleased(IERC20 token) public view returns (uint256) {
        return _erc20TotalReleased[token];
    }

    
    function shares(address account) public view returns (uint256) {
        return _shares[account];
    }

    
    function released(address account) public view returns (uint256) {
        return _released[account];
    }

    
    function released(IERC20 token, address account) public view returns (uint256) {
        return _erc20Released[token][account];
    }

    
    function payee(uint256 index) public view returns (address) {
        return _payees[index];
    }

    
    function release(address payable account) public virtual {
        require(_shares[account] > 0, "PaymentSplitter: account has no shares");

        uint256 totalReceived = address(this).balance + totalReleased();
        uint256 payment = _pendingPayment(account, totalReceived, released(account));

        require(payment != 0, "PaymentSplitter: account is not due payment");

        _released[account] += payment;
        _totalReleased += payment;

        Address.sendValue(account, payment);
        emit PaymentReleased(account, payment);
    }

    
    function release(IERC20 token, address account) public virtual {
        require(_shares[account] > 0, "PaymentSplitter: account has no shares");

        uint256 totalReceived = token.balanceOf(address(this)) + totalReleased(token);
        uint256 payment = _pendingPayment(account, totalReceived, released(token, account));

        require(payment != 0, "PaymentSplitter: account is not due payment");

        _erc20Released[token][account] += payment;
        _erc20TotalReleased[token] += payment;

        SafeERC20.safeTransfer(token, account, payment);
        emit ERC20PaymentReleased(token, account, payment);
    }

    
    function _pendingPayment(
        address account,
        uint256 totalReceived,
        uint256 alreadyReleased
    ) private view returns (uint256) {
        return (totalReceived * _shares[account]) / _totalShares - alreadyReleased;
    }

    
    function _addPayee(address account, uint256 shares_) private {
        require(account != address(0), "PaymentSplitter: account is the zero address");
        require(shares_ > 0, "PaymentSplitter: shares are 0");
        require(_shares[account] == 0, "PaymentSplitter: account already has shares");

        _payees.push(account);
        _shares[account] = shares_;
        _totalShares = _totalShares + shares_;
        emit PayeeAdded(account, shares_);
    }
}

// File: @openzeppelin/contracts/utils/cryptography/MerkleProof.sol


// OpenZeppelin Contracts v4.4.1 (utils/cryptography/MerkleProof.sol)

pragma solidity ^0.8.0;


library MerkleProof {
    
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));
            }
        }
        return computedHash;
    }
}

// File: @openzeppelin/contracts/utils/Strings.sol



pragma solidity ^0.8.0;


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

    
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

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

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

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

// File: contracts/ERC721.sol


pragma solidity >=0.8.0;

abstract contract ERC721 {
    

    event Transfer(address indexed from, address indexed to, uint256 indexed id);

    event Approval(address indexed owner, address indexed spender, uint256 indexed id);

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

    

    string public name;

    string public symbol;

    function tokenURI(uint256 id) public view virtual returns (string memory);

    

    mapping(address => uint256) public balanceOf;

    mapping(uint256 => address) public ownerOf;

    mapping(uint256 => address) public getApproved;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    

    constructor(string memory _name, string memory _symbol) {
        name = _name;
        symbol = _symbol;
    }

    

    function approve(address spender, uint256 id) public virtual {
        address owner = ownerOf[id];

        require(msg.sender == owner || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED");

        getApproved[id] = spender;

        emit Approval(owner, spender, id);
    }

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function transferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        require(from == ownerOf[id], "WRONG_FROM");

        require(to != address(0), "INVALID_RECIPIENT");

        require(
            msg.sender == from || msg.sender == getApproved[id] || isApprovedForAll[from][msg.sender],
            "NOT_AUTHORIZED"
        );

        // Underflow of the sender's balance is impossible because we check for
        // ownership above and the recipient's balance can't realistically overflow.
        unchecked {
            balanceOf[from]--;

            balanceOf[to]++;
        }

        ownerOf[id] = to;

        delete getApproved[id];

        emit Transfer(from, to, id);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes memory data
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    

    function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }

    

    function _mint(address to, uint256 id) internal virtual {
        require(to != address(0), "INVALID_RECIPIENT");

        require(ownerOf[id] == address(0), "ALREADY_MINTED");

        // Counter overflow is incredibly unrealistic.
        unchecked {
            balanceOf[to]++;
        }

        ownerOf[id] = to;

        emit Transfer(address(0), to, id);
    }

    function _burn(uint256 id) internal virtual {
        address owner = ownerOf[id];

        require(ownerOf[id] != address(0), "NOT_MINTED");

        // Ownership check above ensures no underflow.
        unchecked {
            balanceOf[owner]--;
        }

        delete ownerOf[id];

        delete getApproved[id];

        emit Transfer(owner, address(0), id);
    }

    

    function _safeMint(address to, uint256 id) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _safeMint(
        address to,
        uint256 id,
        bytes memory data
    ) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }
}

/// @notice A generic interface for a contract which properly accepts ERC721 tokens.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
	interface ERC721TokenReceiver {
		function onERC721Received(
			address operator,
			address from,
			uint256 id,
			bytes calldata data
		) external returns (bytes4);
	}
// File: contracts/dsadsaa.sol

pragma solidity >=0.8.4;





contract SphericalHarmonicsVII is ERC721, PaymentSplitter {
    uint256 public totalSupply;
    uint256 private cost = 0 ether;
    uint256 private whitelistCost = 0 ether;
    address public owner = msg.sender;
    bytes32 private merkleRoot;
    bool public whitelistActive = true;
    string baseURI;

    mapping(address => bool) internal whitelistClaimed;

    error WhitelistActive();
    error SoldOut();
    error InsufficientFunds();
    error AlreadyClaimed();
    error InvalidProof();
    error NotOwner();
    error MintNotEnabled();
    error URIAlreadySet();
    error WhitelistDisabled();

    event Minted(
        address indexed owner,
        string tokenURI,
        uint256 indexed mintTime
    );

    constructor(address[] memory _payees, uint256[] memory _shares)
        ERC721("Spherical Harmonics V2", "SPHII")
        PaymentSplitter(_payees, _shares)
    {}

    function setWhitelist(bytes32 _merkleRoot) external {
		if (msg.sender != owner) revert NotOwner();
        merkleRoot = _merkleRoot;
    }

    function removeWhitelist() external {
        if (msg.sender != owner) revert NotOwner();
        if (!whitelistActive) revert WhitelistDisabled();
        whitelistActive = false;
    }

    function mint() external payable {
        if (bytes(baseURI).length == 0) revert MintNotEnabled();
        if (whitelistActive) revert WhitelistActive();
        if (totalSupply + 1 > 10000) revert SoldOut();
        if (msg.value < cost) revert InsufficientFunds();
        totalSupply++;
        _safeMint(msg.sender, totalSupply);
        emit Minted(msg.sender, tokenURI(totalSupply), block.timestamp);
    }

    function whitelistedMint(bytes32[] calldata _merkleProof) external payable {
        if (bytes(baseURI).length == 0) revert MintNotEnabled();
        if (whitelistClaimed[msg.sender]) revert AlreadyClaimed();
        if (totalSupply + 1 > 10000) revert SoldOut();
        if (msg.value < whitelistCost) revert InsufficientFunds();

        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));

        if (!MerkleProof.verify(_merkleProof, merkleRoot, leaf))
            revert InvalidProof();

        whitelistClaimed[msg.sender] = true;
        totalSupply++;
        _safeMint(msg.sender, totalSupply);
        emit Minted(msg.sender, tokenURI(totalSupply), block.timestamp);
    }

    function setBaseURI(string memory _uri) external {
        if (bytes(baseURI).length > 0) revert URIAlreadySet();
        if (msg.sender != owner) revert NotOwner();
        baseURI = _uri;
    }

    function tokenURI(uint256 tokenId)
        public
        view
        override(ERC721)
        returns (string memory)
    {
        return
            string(
                abi.encodePacked(baseURI, Strings.toString(tokenId), ".json")
            );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"_payees","type":"address[]"},{"internalType":"uint256[]","name":"_shares","type":"uint256[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyClaimed","type":"error"},{"inputs":[],"name":"InsufficientFunds","type":"error"},{"inputs":[],"name":"InvalidProof","type":"error"},{"inputs":[],"name":"MintNotEnabled","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"SoldOut","type":"error"},{"inputs":[],"name":"URIAlreadySet","type":"error"},{"inputs":[],"name":"WhitelistActive","type":"error"},{"inputs":[],"name":"WhitelistDisabled","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20PaymentReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"string","name":"tokenURI","type":"string"},{"indexed":true,"internalType":"uint256","name":"mintTime","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"PayeeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"payee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"whitelistedMint","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600e819055600f55601080546001600160a01b031916331790556012805460ff191660011790553480156200003a57600080fd5b5060405162002895380380620028958339810160408190526200005d916200058e565b604080518082018252601681527f53706865726963616c204861726d6f6e69637320563200000000000000000000602080830191825283518085019094526005845264535048494960d81b90840152815185938593929091620000c39160009162000406565b508051620000d990600190602084019062000406565b50505080518251146200014e5760405162461bcd60e51b815260206004820152603260248201527f5061796d656e7453706c69747465723a2070617965657320616e6420736861726044820152710cae640d8cadccee8d040dad2e6dac2e8c6d60731b60648201526084015b60405180910390fd5b6000825111620001a15760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f20706179656573000000000000604482015260640162000145565b60005b82518110156200020d57620001f8838281518110620001c757620001c76200066c565b6020026020010151838381518110620001e457620001e46200066c565b60200260200101516200021860201b60201c565b80620002048162000698565b915050620001a4565b50505050506200070e565b6001600160a01b038216620002855760405162461bcd60e51b815260206004820152602c60248201527f5061796d656e7453706c69747465723a206163636f756e74206973207468652060448201526b7a65726f206164647265737360a01b606482015260840162000145565b60008111620002d75760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7453706c69747465723a20736861726573206172652030000000604482015260640162000145565b6001600160a01b03821660009081526008602052604090205415620003535760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e7420616c726561647960448201526a206861732073686172657360a81b606482015260840162000145565b600a8054600181019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b0384169081179091556000908152600860205260409020819055600654620003bd908290620006b6565b600655604080516001600160a01b0384168152602081018390527f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac910160405180910390a15050565b8280546200041490620006d1565b90600052602060002090601f01602090048101928262000438576000855562000483565b82601f106200045357805160ff191683800117855562000483565b8280016001018555821562000483579182015b828111156200048357825182559160200191906001019062000466565b506200049192915062000495565b5090565b5b8082111562000491576000815560010162000496565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620004ed57620004ed620004ac565b604052919050565b60006001600160401b03821115620005115762000511620004ac565b5060051b60200190565b600082601f8301126200052d57600080fd5b81516020620005466200054083620004f5565b620004c2565b82815260059290921b840181019181810190868411156200056657600080fd5b8286015b848110156200058357805183529183019183016200056a565b509695505050505050565b60008060408385031215620005a257600080fd5b82516001600160401b0380821115620005ba57600080fd5b818501915085601f830112620005cf57600080fd5b81516020620005e26200054083620004f5565b82815260059290921b840181019181810190898411156200060257600080fd5b948201945b83861015620006395785516001600160a01b0381168114620006295760008081fd5b8252948201949082019062000607565b918801519196509093505050808211156200065357600080fd5b5062000662858286016200051b565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415620006af57620006af62000682565b5060010190565b60008219821115620006cc57620006cc62000682565b500190565b600181811c90821680620006e657607f821691505b602082108114156200070857634e487b7160e01b600052602260045260246000fd5b50919050565b612177806200071e6000396000f3fe6080604052600436106101615760003560e01c806301ffc9a7146101a657806302ce5813146101db57806306fdde03146101f5578063081812fc14610217578063095ea7b31461025a5780631249c58b1461027c57806317f708fb1461028457806318160ddd1461029957806319165587146102bd57806323b872dd146102dd5780633a98ef39146102fd578063406072a91461031257806342842e0e14610332578063440bc7f31461035257806348b750441461037257806355f804b3146103925780636352211e146103b257806370a08231146103e857806375a6f85a146104155780638b83209b146104285780638da5cb5b1461044857806395d89b41146104685780639852595c1461047d578063a22cb4651461049d578063b88d4fde146104bd578063c87b56dd146104dd578063ce7c2ac2146104fd578063d79779b214610533578063e33b7de314610553578063e985e9c51461056857600080fd5b366101a1577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be770333460405161019792919061196e565b60405180910390a1005b600080fd5b3480156101b257600080fd5b506101c66101c13660046119a0565b6105a3565b60405190151581526020015b60405180910390f35b3480156101e757600080fd5b506012546101c69060ff1681565b34801561020157600080fd5b5061020a6105f5565b6040516101d29190611a15565b34801561022357600080fd5b5061024d610232366004611a28565b6004602052600090815260409020546001600160a01b031681565b6040516101d29190611a41565b34801561026657600080fd5b5061027a610275366004611a6a565b610683565b005b61027a61074d565b34801561029057600080fd5b5061027a610850565b3480156102a557600080fd5b506102af600d5481565b6040519081526020016101d2565b3480156102c957600080fd5b5061027a6102d8366004611a96565b6108aa565b3480156102e957600080fd5b5061027a6102f8366004611ab3565b6109b9565b34801561030957600080fd5b506006546102af565b34801561031e57600080fd5b506102af61032d366004611af4565b610b29565b34801561033e57600080fd5b5061027a61034d366004611ab3565b610b54565b34801561035e57600080fd5b5061027a61036d366004611a28565b610c13565b34801561037e57600080fd5b5061027a61038d366004611af4565b610c43565b34801561039e57600080fd5b5061027a6103ad366004611bb8565b610dea565b3480156103be57600080fd5b5061024d6103cd366004611a28565b6003602052600090815260409020546001600160a01b031681565b3480156103f457600080fd5b506102af610403366004611a96565b60026020526000908152604090205481565b61027a610423366004611c00565b610e5c565b34801561043457600080fd5b5061024d610443366004611a28565b611019565b34801561045457600080fd5b5060105461024d906001600160a01b031681565b34801561047457600080fd5b5061020a611049565b34801561048957600080fd5b506102af610498366004611a96565b611056565b3480156104a957600080fd5b5061027a6104b8366004611c82565b611071565b3480156104c957600080fd5b5061027a6104d8366004611cb0565b6110dd565b3480156104e957600080fd5b5061020a6104f8366004611a28565b61119f565b34801561050957600080fd5b506102af610518366004611a96565b6001600160a01b031660009081526008602052604090205490565b34801561053f57600080fd5b506102af61054e366004611a96565b6111d3565b34801561055f57600080fd5b506007546102af565b34801561057457600080fd5b506101c6610583366004611af4565b600560209081526000928352604080842090915290825290205460ff1681565b60006301ffc9a760e01b6001600160e01b0319831614806105d457506380ac58cd60e01b6001600160e01b03198316145b806105ef5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000805461060290611d2f565b80601f016020809104026020016040519081016040528092919081815260200182805461062e90611d2f565b801561067b5780601f106106505761010080835404028352916020019161067b565b820191906000526020600020905b81548152906001019060200180831161065e57829003601f168201915b505050505081565b6000818152600360205260409020546001600160a01b0316338114806106cc57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6106f15760405162461bcd60e51b81526004016106e890611d6a565b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6013805461075a90611d2f565b1515905061077b5760405163447691f760e01b815260040160405180910390fd5b60125460ff161561079f576040516316e5d37d60e11b815260040160405180910390fd5b612710600d5460016107b19190611da8565b11156107d0576040516352df9fe560e01b815260040160405180910390fd5b600e543410156107f35760405163356680b760e01b815260040160405180910390fd5b600d805490600061080383611dc0565b919050555061081433600d546111ee565b42336001600160a01b0316600080516020612122833981519152610839600d5461119f565b6040516108469190611a15565b60405180910390a3565b6010546001600160a01b0316331461087b576040516330cd747160e01b815260040160405180910390fd5b60125460ff1661089e5760405163212c6e1d60e01b815260040160405180910390fd5b6012805460ff19169055565b6001600160a01b0381166000908152600860205260409020546108df5760405162461bcd60e51b81526004016106e890611ddb565b60006108ea60075490565b6108f49047611da8565b9050600061090b838361090686611056565b6112a8565b90508061092a5760405162461bcd60e51b81526004016106e890611e21565b6001600160a01b03831660009081526009602052604081208054839290610952908490611da8565b92505081905550806007600082825461096b9190611da8565b9091555061097b905083826112f0565b7fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b05683826040516109ac92919061196e565b60405180910390a1505050565b6000818152600360205260409020546001600160a01b03848116911614610a0f5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b60448201526064016106e8565b6001600160a01b038216610a355760405162461bcd60e51b81526004016106e890611e6c565b336001600160a01b0384161480610a6257506000818152600460205260409020546001600160a01b031633145b80610a9057506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b610aac5760405162461bcd60e51b81526004016106e890611d6a565b6001600160a01b0380841660008181526002602090815260408083208054600019019055938616808352848320805460010190558583526003825284832080546001600160a01b031990811683179091556004909252848320805490921690915592518493929160008051602061210283398151915291a4505050565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205490565b610b5f8383836109b9565b6001600160a01b0382163b1580610bf25750604051630a85bd0160e11b808252906001600160a01b0384169063150b7a0290610ba390339088908790600401611e97565b6020604051808303816000875af1158015610bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be69190611eca565b6001600160e01b031916145b610c0e5760405162461bcd60e51b81526004016106e890611ee7565b505050565b6010546001600160a01b03163314610c3e576040516330cd747160e01b815260040160405180910390fd5b601155565b6001600160a01b038116600090815260086020526040902054610c785760405162461bcd60e51b81526004016106e890611ddb565b6000610c83836111d3565b6040516370a0823160e01b81526001600160a01b038516906370a0823190610caf903090600401611a41565b602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf09190611f11565b610cfa9190611da8565b90506000610d0d83836109068787610b29565b905080610d2c5760405162461bcd60e51b81526004016106e890611e21565b6001600160a01b038085166000908152600c6020908152604080832093871683529290529081208054839290610d63908490611da8565b90915550506001600160a01b0384166000908152600b602052604081208054839290610d90908490611da8565b90915550610da19050848483611406565b836001600160a01b03167f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a8483604051610ddc92919061196e565b60405180910390a250505050565b600060138054610df990611d2f565b90501115610e1a576040516341666d6560e11b815260040160405180910390fd5b6010546001600160a01b03163314610e45576040516330cd747160e01b815260040160405180910390fd5b8051610e589060139060208401906118d5565b5050565b60138054610e6990611d2f565b15159050610e8a5760405163447691f760e01b815260040160405180910390fd5b3360009081526014602052604090205460ff1615610ebb57604051630c8d9eab60e31b815260040160405180910390fd5b612710600d546001610ecd9190611da8565b1115610eec576040516352df9fe560e01b815260040160405180910390fd5b600f54341015610f0f5760405163356680b760e01b815260040160405180910390fd5b6040516001600160601b03193360601b166020820152600090603401604051602081830303815290604052805190602001209050610f8483838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050601154915084905061145c565b610fa1576040516309bde33960e01b815260040160405180910390fd5b336000908152601460205260408120805460ff19166001179055600d805491610fc983611dc0565b9190505550610fda33600d546111ee565b42336001600160a01b0316600080516020612122833981519152610fff600d5461119f565b60405161100c9190611a15565b60405180910390a3505050565b6000600a828154811061102e5761102e611f2a565b6000918252602090912001546001600160a01b031692915050565b6001805461060290611d2f565b6001600160a01b031660009081526009602052604090205490565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6110e88484846109b9565b6001600160a01b0383163b158061117d5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a029061112e903390899088908890600401611f40565b6020604051808303816000875af115801561114d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111719190611eca565b6001600160e01b031916145b6111995760405162461bcd60e51b81526004016106e890611ee7565b50505050565b606060136111ac83611472565b6040516020016111bd929190611f99565b6040516020818303038152906040529050919050565b6001600160a01b03166000908152600b602052604090205490565b6111f88282611577565b6001600160a01b0382163b158061128c5750604051630a85bd0160e11b808252906001600160a01b0384169063150b7a029061123d9033906000908790600401611e97565b6020604051808303816000875af115801561125c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112809190611eca565b6001600160e01b031916145b610e585760405162461bcd60e51b81526004016106e890611ee7565b6006546001600160a01b038416600090815260086020526040812054909183916112d29086612054565b6112dc9190612089565b6112e6919061209d565b90505b9392505050565b804710156113405760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106e8565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461138d576040519150601f19603f3d011682016040523d82523d6000602084013e611392565b606091505b5050905080610c0e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016106e8565b610c0e8363a9059cbb60e01b848460405160240161142592919061196e565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261164c565b600082611469858461171e565b14949350505050565b6060816114965750506040805180820190915260018152600360fc1b602082015290565b8160005b81156114c057806114aa81611dc0565b91506114b99050600a83612089565b915061149a565b6000816001600160401b038111156114da576114da611b2d565b6040519080825280601f01601f191660200182016040528015611504576020820181803683370190505b5090505b841561156f5761151960018361209d565b9150611526600a866120b4565b611531906030611da8565b60f81b81838151811061154657611546611f2a565b60200101906001600160f81b031916908160001a905350611568600a86612089565b9450611508565b949350505050565b6001600160a01b03821661159d5760405162461bcd60e51b81526004016106e890611e6c565b6000818152600360205260409020546001600160a01b0316156115f35760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b60448201526064016106e8565b6001600160a01b038216600081815260026020908152604080832080546001019055848352600390915280822080546001600160a01b031916841790555183929190600080516020612102833981519152908290a45050565b60006116a1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117ca9092919063ffffffff16565b805190915015610c0e57808060200190518101906116bf91906120c8565b610c0e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106e8565b600081815b84518110156117c257600085828151811061174057611740611f2a565b602002602001015190508083116117825760408051602081018590529081018290526060016040516020818303038152906040528051906020012092506117af565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50806117ba81611dc0565b915050611723565b509392505050565b60606112e6848460008585843b6118235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106e8565b600080866001600160a01b0316858760405161183f91906120e5565b60006040518083038185875af1925050503d806000811461187c576040519150601f19603f3d011682016040523d82523d6000602084013e611881565b606091505b509150915061189182828661189c565b979650505050505050565b606083156118ab5750816112e9565b8251156118bb5782518084602001fd5b8160405162461bcd60e51b81526004016106e89190611a15565b8280546118e190611d2f565b90600052602060002090601f0160209004810192826119035760008555611949565b82601f1061191c57805160ff1916838001178555611949565b82800160010185558215611949579182015b8281111561194957825182559160200191906001019061192e565b50611955929150611959565b5090565b5b80821115611955576000815560010161195a565b6001600160a01b03929092168252602082015260400190565b6001600160e01b03198116811461199d57600080fd5b50565b6000602082840312156119b257600080fd5b81356112e981611987565b60005b838110156119d85781810151838201526020016119c0565b838111156111995750506000910152565b60008151808452611a018160208601602086016119bd565b601f01601f19169290920160200192915050565b6020815260006112e960208301846119e9565b600060208284031215611a3a57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461199d57600080fd5b60008060408385031215611a7d57600080fd5b8235611a8881611a55565b946020939093013593505050565b600060208284031215611aa857600080fd5b81356112e981611a55565b600080600060608486031215611ac857600080fd5b8335611ad381611a55565b92506020840135611ae381611a55565b929592945050506040919091013590565b60008060408385031215611b0757600080fd5b8235611b1281611a55565b91506020830135611b2281611a55565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115611b5d57611b5d611b2d565b604051601f8501601f19908116603f01168101908282118183101715611b8557611b85611b2d565b81604052809350858152868686011115611b9e57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611bca57600080fd5b81356001600160401b03811115611be057600080fd5b8201601f81018413611bf157600080fd5b61156f84823560208401611b43565b60008060208385031215611c1357600080fd5b82356001600160401b0380821115611c2a57600080fd5b818501915085601f830112611c3e57600080fd5b813581811115611c4d57600080fd5b8660208260051b8501011115611c6257600080fd5b60209290920196919550909350505050565b801515811461199d57600080fd5b60008060408385031215611c9557600080fd5b8235611ca081611a55565b91506020830135611b2281611c74565b60008060008060808587031215611cc657600080fd5b8435611cd181611a55565b93506020850135611ce181611a55565b92506040850135915060608501356001600160401b03811115611d0357600080fd5b8501601f81018713611d1457600080fd5b611d2387823560208401611b43565b91505092959194509250565b600181811c90821680611d4357607f821691505b60208210811415611d6457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600e908201526d1393d517d055551213d49256915160921b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611dbb57611dbb611d92565b500190565b6000600019821415611dd457611dd4611d92565b5060010190565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b6020808252601190820152701253959053125117d49150d25412515395607a1b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260806060820181905260009082015260a00190565b600060208284031215611edc57600080fd5b81516112e981611987565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b600060208284031215611f2357600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611f73908301846119e9565b9695505050505050565b60008151611f8f8185602086016119bd565b9290920192915050565b600080845481600182811c915080831680611fb557607f831692505b6020808410821415611fd557634e487b7160e01b86526022600452602486fd5b818015611fe95760018114611ffa57612027565b60ff19861689528489019650612027565b60008b81526020902060005b8681101561201f5781548b820152908501908301612006565b505084890196505b50505050505061204b61203a8286611f7d565b64173539b7b760d91b815260050190565b95945050505050565b600081600019048311821515161561206e5761206e611d92565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261209857612098612073565b500490565b6000828210156120af576120af611d92565b500390565b6000826120c3576120c3612073565b500690565b6000602082840312156120da57600080fd5b81516112e981611c74565b600082516120f78184602087016119bd565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efe678c8da3d2d6082f140bbbaa1ee822f0c7072ab604536db4a3e0315f8a92776a2646970667358221220ba3ea9ad1343765c4d2cb4ae7f34934ddd751bceaacfb6f81d4c7a362ad73f9a64736f6c634300080b0033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000004034add1a1a750aa19142218a177d509b7a5448f00000000000000000000000059750ac0631f63bfdce0f0867618e468e11ee3470000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000261600000000000000000000000000000000000000000000000000000000000000fa

Deployed Bytecode

0x6080604052600436106101615760003560e01c806301ffc9a7146101a657806302ce5813146101db57806306fdde03146101f5578063081812fc14610217578063095ea7b31461025a5780631249c58b1461027c57806317f708fb1461028457806318160ddd1461029957806319165587146102bd57806323b872dd146102dd5780633a98ef39146102fd578063406072a91461031257806342842e0e14610332578063440bc7f31461035257806348b750441461037257806355f804b3146103925780636352211e146103b257806370a08231146103e857806375a6f85a146104155780638b83209b146104285780638da5cb5b1461044857806395d89b41146104685780639852595c1461047d578063a22cb4651461049d578063b88d4fde146104bd578063c87b56dd146104dd578063ce7c2ac2146104fd578063d79779b214610533578063e33b7de314610553578063e985e9c51461056857600080fd5b366101a1577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be770333460405161019792919061196e565b60405180910390a1005b600080fd5b3480156101b257600080fd5b506101c66101c13660046119a0565b6105a3565b60405190151581526020015b60405180910390f35b3480156101e757600080fd5b506012546101c69060ff1681565b34801561020157600080fd5b5061020a6105f5565b6040516101d29190611a15565b34801561022357600080fd5b5061024d610232366004611a28565b6004602052600090815260409020546001600160a01b031681565b6040516101d29190611a41565b34801561026657600080fd5b5061027a610275366004611a6a565b610683565b005b61027a61074d565b34801561029057600080fd5b5061027a610850565b3480156102a557600080fd5b506102af600d5481565b6040519081526020016101d2565b3480156102c957600080fd5b5061027a6102d8366004611a96565b6108aa565b3480156102e957600080fd5b5061027a6102f8366004611ab3565b6109b9565b34801561030957600080fd5b506006546102af565b34801561031e57600080fd5b506102af61032d366004611af4565b610b29565b34801561033e57600080fd5b5061027a61034d366004611ab3565b610b54565b34801561035e57600080fd5b5061027a61036d366004611a28565b610c13565b34801561037e57600080fd5b5061027a61038d366004611af4565b610c43565b34801561039e57600080fd5b5061027a6103ad366004611bb8565b610dea565b3480156103be57600080fd5b5061024d6103cd366004611a28565b6003602052600090815260409020546001600160a01b031681565b3480156103f457600080fd5b506102af610403366004611a96565b60026020526000908152604090205481565b61027a610423366004611c00565b610e5c565b34801561043457600080fd5b5061024d610443366004611a28565b611019565b34801561045457600080fd5b5060105461024d906001600160a01b031681565b34801561047457600080fd5b5061020a611049565b34801561048957600080fd5b506102af610498366004611a96565b611056565b3480156104a957600080fd5b5061027a6104b8366004611c82565b611071565b3480156104c957600080fd5b5061027a6104d8366004611cb0565b6110dd565b3480156104e957600080fd5b5061020a6104f8366004611a28565b61119f565b34801561050957600080fd5b506102af610518366004611a96565b6001600160a01b031660009081526008602052604090205490565b34801561053f57600080fd5b506102af61054e366004611a96565b6111d3565b34801561055f57600080fd5b506007546102af565b34801561057457600080fd5b506101c6610583366004611af4565b600560209081526000928352604080842090915290825290205460ff1681565b60006301ffc9a760e01b6001600160e01b0319831614806105d457506380ac58cd60e01b6001600160e01b03198316145b806105ef5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000805461060290611d2f565b80601f016020809104026020016040519081016040528092919081815260200182805461062e90611d2f565b801561067b5780601f106106505761010080835404028352916020019161067b565b820191906000526020600020905b81548152906001019060200180831161065e57829003601f168201915b505050505081565b6000818152600360205260409020546001600160a01b0316338114806106cc57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6106f15760405162461bcd60e51b81526004016106e890611d6a565b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6013805461075a90611d2f565b1515905061077b5760405163447691f760e01b815260040160405180910390fd5b60125460ff161561079f576040516316e5d37d60e11b815260040160405180910390fd5b612710600d5460016107b19190611da8565b11156107d0576040516352df9fe560e01b815260040160405180910390fd5b600e543410156107f35760405163356680b760e01b815260040160405180910390fd5b600d805490600061080383611dc0565b919050555061081433600d546111ee565b42336001600160a01b0316600080516020612122833981519152610839600d5461119f565b6040516108469190611a15565b60405180910390a3565b6010546001600160a01b0316331461087b576040516330cd747160e01b815260040160405180910390fd5b60125460ff1661089e5760405163212c6e1d60e01b815260040160405180910390fd5b6012805460ff19169055565b6001600160a01b0381166000908152600860205260409020546108df5760405162461bcd60e51b81526004016106e890611ddb565b60006108ea60075490565b6108f49047611da8565b9050600061090b838361090686611056565b6112a8565b90508061092a5760405162461bcd60e51b81526004016106e890611e21565b6001600160a01b03831660009081526009602052604081208054839290610952908490611da8565b92505081905550806007600082825461096b9190611da8565b9091555061097b905083826112f0565b7fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b05683826040516109ac92919061196e565b60405180910390a1505050565b6000818152600360205260409020546001600160a01b03848116911614610a0f5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b60448201526064016106e8565b6001600160a01b038216610a355760405162461bcd60e51b81526004016106e890611e6c565b336001600160a01b0384161480610a6257506000818152600460205260409020546001600160a01b031633145b80610a9057506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b610aac5760405162461bcd60e51b81526004016106e890611d6a565b6001600160a01b0380841660008181526002602090815260408083208054600019019055938616808352848320805460010190558583526003825284832080546001600160a01b031990811683179091556004909252848320805490921690915592518493929160008051602061210283398151915291a4505050565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205490565b610b5f8383836109b9565b6001600160a01b0382163b1580610bf25750604051630a85bd0160e11b808252906001600160a01b0384169063150b7a0290610ba390339088908790600401611e97565b6020604051808303816000875af1158015610bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be69190611eca565b6001600160e01b031916145b610c0e5760405162461bcd60e51b81526004016106e890611ee7565b505050565b6010546001600160a01b03163314610c3e576040516330cd747160e01b815260040160405180910390fd5b601155565b6001600160a01b038116600090815260086020526040902054610c785760405162461bcd60e51b81526004016106e890611ddb565b6000610c83836111d3565b6040516370a0823160e01b81526001600160a01b038516906370a0823190610caf903090600401611a41565b602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf09190611f11565b610cfa9190611da8565b90506000610d0d83836109068787610b29565b905080610d2c5760405162461bcd60e51b81526004016106e890611e21565b6001600160a01b038085166000908152600c6020908152604080832093871683529290529081208054839290610d63908490611da8565b90915550506001600160a01b0384166000908152600b602052604081208054839290610d90908490611da8565b90915550610da19050848483611406565b836001600160a01b03167f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a8483604051610ddc92919061196e565b60405180910390a250505050565b600060138054610df990611d2f565b90501115610e1a576040516341666d6560e11b815260040160405180910390fd5b6010546001600160a01b03163314610e45576040516330cd747160e01b815260040160405180910390fd5b8051610e589060139060208401906118d5565b5050565b60138054610e6990611d2f565b15159050610e8a5760405163447691f760e01b815260040160405180910390fd5b3360009081526014602052604090205460ff1615610ebb57604051630c8d9eab60e31b815260040160405180910390fd5b612710600d546001610ecd9190611da8565b1115610eec576040516352df9fe560e01b815260040160405180910390fd5b600f54341015610f0f5760405163356680b760e01b815260040160405180910390fd5b6040516001600160601b03193360601b166020820152600090603401604051602081830303815290604052805190602001209050610f8483838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050601154915084905061145c565b610fa1576040516309bde33960e01b815260040160405180910390fd5b336000908152601460205260408120805460ff19166001179055600d805491610fc983611dc0565b9190505550610fda33600d546111ee565b42336001600160a01b0316600080516020612122833981519152610fff600d5461119f565b60405161100c9190611a15565b60405180910390a3505050565b6000600a828154811061102e5761102e611f2a565b6000918252602090912001546001600160a01b031692915050565b6001805461060290611d2f565b6001600160a01b031660009081526009602052604090205490565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6110e88484846109b9565b6001600160a01b0383163b158061117d5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a029061112e903390899088908890600401611f40565b6020604051808303816000875af115801561114d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111719190611eca565b6001600160e01b031916145b6111995760405162461bcd60e51b81526004016106e890611ee7565b50505050565b606060136111ac83611472565b6040516020016111bd929190611f99565b6040516020818303038152906040529050919050565b6001600160a01b03166000908152600b602052604090205490565b6111f88282611577565b6001600160a01b0382163b158061128c5750604051630a85bd0160e11b808252906001600160a01b0384169063150b7a029061123d9033906000908790600401611e97565b6020604051808303816000875af115801561125c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112809190611eca565b6001600160e01b031916145b610e585760405162461bcd60e51b81526004016106e890611ee7565b6006546001600160a01b038416600090815260086020526040812054909183916112d29086612054565b6112dc9190612089565b6112e6919061209d565b90505b9392505050565b804710156113405760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106e8565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461138d576040519150601f19603f3d011682016040523d82523d6000602084013e611392565b606091505b5050905080610c0e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016106e8565b610c0e8363a9059cbb60e01b848460405160240161142592919061196e565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261164c565b600082611469858461171e565b14949350505050565b6060816114965750506040805180820190915260018152600360fc1b602082015290565b8160005b81156114c057806114aa81611dc0565b91506114b99050600a83612089565b915061149a565b6000816001600160401b038111156114da576114da611b2d565b6040519080825280601f01601f191660200182016040528015611504576020820181803683370190505b5090505b841561156f5761151960018361209d565b9150611526600a866120b4565b611531906030611da8565b60f81b81838151811061154657611546611f2a565b60200101906001600160f81b031916908160001a905350611568600a86612089565b9450611508565b949350505050565b6001600160a01b03821661159d5760405162461bcd60e51b81526004016106e890611e6c565b6000818152600360205260409020546001600160a01b0316156115f35760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b60448201526064016106e8565b6001600160a01b038216600081815260026020908152604080832080546001019055848352600390915280822080546001600160a01b031916841790555183929190600080516020612102833981519152908290a45050565b60006116a1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117ca9092919063ffffffff16565b805190915015610c0e57808060200190518101906116bf91906120c8565b610c0e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106e8565b600081815b84518110156117c257600085828151811061174057611740611f2a565b602002602001015190508083116117825760408051602081018590529081018290526060016040516020818303038152906040528051906020012092506117af565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50806117ba81611dc0565b915050611723565b509392505050565b60606112e6848460008585843b6118235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106e8565b600080866001600160a01b0316858760405161183f91906120e5565b60006040518083038185875af1925050503d806000811461187c576040519150601f19603f3d011682016040523d82523d6000602084013e611881565b606091505b509150915061189182828661189c565b979650505050505050565b606083156118ab5750816112e9565b8251156118bb5782518084602001fd5b8160405162461bcd60e51b81526004016106e89190611a15565b8280546118e190611d2f565b90600052602060002090601f0160209004810192826119035760008555611949565b82601f1061191c57805160ff1916838001178555611949565b82800160010185558215611949579182015b8281111561194957825182559160200191906001019061192e565b50611955929150611959565b5090565b5b80821115611955576000815560010161195a565b6001600160a01b03929092168252602082015260400190565b6001600160e01b03198116811461199d57600080fd5b50565b6000602082840312156119b257600080fd5b81356112e981611987565b60005b838110156119d85781810151838201526020016119c0565b838111156111995750506000910152565b60008151808452611a018160208601602086016119bd565b601f01601f19169290920160200192915050565b6020815260006112e960208301846119e9565b600060208284031215611a3a57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461199d57600080fd5b60008060408385031215611a7d57600080fd5b8235611a8881611a55565b946020939093013593505050565b600060208284031215611aa857600080fd5b81356112e981611a55565b600080600060608486031215611ac857600080fd5b8335611ad381611a55565b92506020840135611ae381611a55565b929592945050506040919091013590565b60008060408385031215611b0757600080fd5b8235611b1281611a55565b91506020830135611b2281611a55565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115611b5d57611b5d611b2d565b604051601f8501601f19908116603f01168101908282118183101715611b8557611b85611b2d565b81604052809350858152868686011115611b9e57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611bca57600080fd5b81356001600160401b03811115611be057600080fd5b8201601f81018413611bf157600080fd5b61156f84823560208401611b43565b60008060208385031215611c1357600080fd5b82356001600160401b0380821115611c2a57600080fd5b818501915085601f830112611c3e57600080fd5b813581811115611c4d57600080fd5b8660208260051b8501011115611c6257600080fd5b60209290920196919550909350505050565b801515811461199d57600080fd5b60008060408385031215611c9557600080fd5b8235611ca081611a55565b91506020830135611b2281611c74565b60008060008060808587031215611cc657600080fd5b8435611cd181611a55565b93506020850135611ce181611a55565b92506040850135915060608501356001600160401b03811115611d0357600080fd5b8501601f81018713611d1457600080fd5b611d2387823560208401611b43565b91505092959194509250565b600181811c90821680611d4357607f821691505b60208210811415611d6457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600e908201526d1393d517d055551213d49256915160921b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611dbb57611dbb611d92565b500190565b6000600019821415611dd457611dd4611d92565b5060010190565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b6020808252601190820152701253959053125117d49150d25412515395607a1b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260806060820181905260009082015260a00190565b600060208284031215611edc57600080fd5b81516112e981611987565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b600060208284031215611f2357600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611f73908301846119e9565b9695505050505050565b60008151611f8f8185602086016119bd565b9290920192915050565b600080845481600182811c915080831680611fb557607f831692505b6020808410821415611fd557634e487b7160e01b86526022600452602486fd5b818015611fe95760018114611ffa57612027565b60ff19861689528489019650612027565b60008b81526020902060005b8681101561201f5781548b820152908501908301612006565b505084890196505b50505050505061204b61203a8286611f7d565b64173539b7b760d91b815260050190565b95945050505050565b600081600019048311821515161561206e5761206e611d92565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261209857612098612073565b500490565b6000828210156120af576120af611d92565b500390565b6000826120c3576120c3612073565b500690565b6000602082840312156120da57600080fd5b81516112e981611c74565b600082516120f78184602087016119bd565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efe678c8da3d2d6082f140bbbaa1ee822f0c7072ab604536db4a3e0315f8a92776a2646970667358221220ba3ea9ad1343765c4d2cb4ae7f34934ddd751bceaacfb6f81d4c7a362ad73f9a64736f6c634300080b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000004034add1a1a750aa19142218a177d509b7a5448f00000000000000000000000059750ac0631f63bfdce0f0867618e468e11ee3470000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000261600000000000000000000000000000000000000000000000000000000000000fa

-----Decoded View---------------
Arg [0] : _payees (address[]): 0x4034adD1a1A750AA19142218A177D509b7A5448F,0x59750Ac0631f63BFDCe0f0867618e468E11EE347
Arg [1] : _shares (uint256[]): 9750,250

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [3] : 0000000000000000000000004034add1a1a750aa19142218a177d509b7a5448f
Arg [4] : 00000000000000000000000059750ac0631f63bfdce0f0867618e468e11ee347
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [6] : 0000000000000000000000000000000000000000000000000000000000002616
Arg [7] : 00000000000000000000000000000000000000000000000000000000000000fa


Deployed Bytecode Sourcemap

20533:2892:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9385:40;196:10;9415:9;9385:40;;;;;;;:::i;:::-;;;;;;;;20533:2892;;;;;18184:340;;;;;;;;;;-1:-1:-1;18184:340:0;;;;;:::i;:::-;;:::i;:::-;;;844:14:1;;837:22;819:41;;807:2;792:18;18184:340:0;;;;;;;;20787:34;;;;;;;;;;-1:-1:-1;20787:34:0;;;;;;;;15508:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15758:46::-;;;;;;;;;;-1:-1:-1;15758:46:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;15758:46:0;;;;;;;;;;:::i;16028:289::-;;;;;;;;;;-1:-1:-1;16028:289:0;;;;;:::i;:::-;;:::i;:::-;;21806:421;;;:::i;21608:190::-;;;;;;;;;;;;;:::i;20598:26::-;;;;;;;;;;;;;;;;;;;2639:25:1;;;2627:2;2612:18;20598:26:0;2493:177:1;10299:566:0;;;;;;;;;;-1:-1:-1;10299:566:0;;;;;:::i;:::-;;:::i;16540:764::-;;;;;;;;;;-1:-1:-1;16540:764:0;;;;;:::i;:::-;;:::i;9447:91::-;;;;;;;;;;-1:-1:-1;9518:12:0;;9447:91;;10036:135;;;;;;;;;;-1:-1:-1;10036:135:0;;;;;:::i;:::-;;:::i;17312:409::-;;;;;;;;;;-1:-1:-1;17312:409:0;;;;;:::i;:::-;;:::i;21458:142::-;;;;;;;;;;-1:-1:-1;21458:142:0;;;;;:::i;:::-;;:::i;10879:641::-;;;;;;;;;;-1:-1:-1;10879:641:0;;;;;:::i;:::-;;:::i;22946:199::-;;;;;;;;;;-1:-1:-1;22946:199:0;;;;;:::i;:::-;;:::i;15707:42::-;;;;;;;;;;-1:-1:-1;15707:42:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;15707:42:0;;;15654:44;;;;;;;;;;-1:-1:-1;15654:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;22235:703;;;;;;:::i;:::-;;:::i;10185:100::-;;;;;;;;;;-1:-1:-1;10185:100:0;;;;;:::i;:::-;;:::i;20714:33::-;;;;;;;;;;-1:-1:-1;20714:33:0;;;;-1:-1:-1;;;;;20714:33:0;;;15535:20;;;;;;;;;;;;;:::i;9913:109::-;;;;;;;;;;-1:-1:-1;9913:109:0;;;;;:::i;:::-;;:::i;16325:207::-;;;;;;;;;;-1:-1:-1;16325:207:0;;;;;:::i;:::-;;:::i;17729:439::-;;;;;;;;;;-1:-1:-1;17729:439:0;;;;;:::i;:::-;;:::i;23153:269::-;;;;;;;;;;-1:-1:-1;23153:269:0;;;;;:::i;:::-;;:::i;9794:105::-;;;;;;;;;;-1:-1:-1;9794:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;9875:16:0;9848:7;9875:16;;;:7;:16;;;;;;;9794:105;9661:119;;;;;;;;;;-1:-1:-1;9661:119:0;;;;;:::i;:::-;;:::i;9552:95::-;;;;;;;;;;-1:-1:-1;9625:14:0;;9552:95;;15813:68;;;;;;;;;;-1:-1:-1;15813:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;18184:340;18260:4;-1:-1:-1;;;;;;;;;18297:25:0;;;;:101;;-1:-1:-1;;;;;;;;;;18373:25:0;;;18297:101;:177;;;-1:-1:-1;;;;;;;;;;18449:25:0;;;18297:177;18277:197;18184:340;-1:-1:-1;;18184:340:0:o;15508:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16028:289::-;16100:13;16116:11;;;:7;:11;;;;;;-1:-1:-1;;;;;16116:11:0;16148:10;:19;;;:58;;-1:-1:-1;;;;;;16171:23:0;;;;;;:16;:23;;;;;;;;16195:10;16171:35;;;;;;;;;;16148:58;16140:85;;;;-1:-1:-1;;;16140:85:0;;;;;;;:::i;:::-;;;;;;;;;16238:15;;;;:11;:15;;;;;;:25;;-1:-1:-1;;;;;;16238:25:0;-1:-1:-1;;;;;16238:25:0;;;;;;;;;16281:28;;16238:15;;16281:28;;;;;;;16089:228;16028:289;;:::o;21806:421::-;21860:7;21854:21;;;;;:::i;:::-;:26;21850:55;;-1:-1:-1;21850:55:0;;21889:16;;-1:-1:-1;;;21889:16:0;;;;;;;;;;;21850:55;21920:15;;;;21916:45;;;21944:17;;-1:-1:-1;;;21944:17:0;;;;;;;;;;;21916:45;21994:5;21976:11;;21990:1;21976:15;;;;:::i;:::-;:23;21972:45;;;22008:9;;-1:-1:-1;;;22008:9:0;;;;;;;;;;;21972:45;22044:4;;22032:9;:16;22028:48;;;22057:19;;-1:-1:-1;;;22057:19:0;;;;;;;;;;;22028:48;22087:11;:13;;;:11;:13;;;:::i;:::-;;;;;;22111:34;22121:10;22133:11;;22111:9;:34::i;:::-;22203:15;22168:10;-1:-1:-1;;;;;22161:58:0;-1:-1:-1;;;;;;;;;;;22180:21:0;22189:11;;22180:8;:21::i;:::-;22161:58;;;;;;:::i;:::-;;;;;;;;21806:421::o;21608:190::-;21673:5;;-1:-1:-1;;;;;21673:5:0;21659:10;:19;21655:42;;21687:10;;-1:-1:-1;;;21687:10:0;;;;;;;;;;;21655:42;21713:15;;;;21708:48;;21737:19;;-1:-1:-1;;;21737:19:0;;;;;;;;;;;21708:48;21767:15;:23;;-1:-1:-1;;21767:23:0;;;21608:190::o;10299:566::-;-1:-1:-1;;;;;10375:16:0;;10394:1;10375:16;;;:7;:16;;;;;;10367:71;;;;-1:-1:-1;;;10367:71:0;;;;;;;:::i;:::-;10451:21;10499:15;9625:14;;;9552:95;10499:15;10475:39;;:21;:39;:::i;:::-;10451:63;;10525:15;10543:58;10559:7;10568:13;10583:17;10592:7;10583:8;:17::i;:::-;10543:15;:58::i;:::-;10525:76;-1:-1:-1;10622:12:0;10614:68;;;;-1:-1:-1;;;10614:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10695:18:0;;;;;;:9;:18;;;;;:29;;10717:7;;10695:18;:29;;10717:7;;10695:29;:::i;:::-;;;;;;;;10753:7;10735:14;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;10773:35:0;;-1:-1:-1;10791:7:0;10800;10773:17;:35::i;:::-;10824:33;10840:7;10849;10824:33;;;;;;;:::i;:::-;;;;;;;;10356:509;;10299:566;:::o;16540:764::-;16676:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;16668:19:0;;;16676:11;;16668:19;16660:42;;;;-1:-1:-1;;;16660:42:0;;10495:2:1;16660:42:0;;;10477:21:1;10534:2;10514:18;;;10507:30;-1:-1:-1;;;10553:18:1;;;10546:40;10603:18;;16660:42:0;10293:334:1;16660:42:0;-1:-1:-1;;;;;16723:16:0;;16715:46;;;;-1:-1:-1;;;16715:46:0;;;;;;;:::i;:::-;16796:10;-1:-1:-1;;;;;16796:18:0;;;;:51;;-1:-1:-1;16832:15:0;;;;:11;:15;;;;;;-1:-1:-1;;;;;16832:15:0;16818:10;:29;16796:51;:89;;;-1:-1:-1;;;;;;16851:22:0;;;;;;:16;:22;;;;;;;;16874:10;16851:34;;;;;;;;;;16796:89;16774:153;;;;-1:-1:-1;;;16774:153:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17132:15:0;;;;;;;:9;:15;;;;;;;;:17;;-1:-1:-1;;17132:17:0;;;17166:13;;;;;;;;;:15;;17132:17;17166:15;;;17205:11;;;:7;:11;;;;;:16;;-1:-1:-1;;;;;;17205:16:0;;;;;;;;17241:11;:15;;;;;;17234:22;;;;;;;;17274;;17213:2;;17166:13;17132:15;-1:-1:-1;;;;;;;;;;;17274:22:0;;16540:764;;;:::o;10036:135::-;-1:-1:-1;;;;;10133:21:0;;;10106:7;10133:21;;;:14;:21;;;;;;;;:30;;;;;;;;;;;;;10036:135::o;17312:409::-;17436:26;17449:4;17455:2;17459;17436:12;:26::i;:::-;-1:-1:-1;;;;;17497:14:0;;;:19;;:172;;-1:-1:-1;17537:66:0;;-1:-1:-1;;;17537:66:0;;;17624:45;-1:-1:-1;;;;;17537:40:0;;;17624:45;;17537:66;;17578:10;;17590:4;;17596:2;;17537:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;17537:132:0;;17497:172;17475:238;;;;-1:-1:-1;;;17475:238:0;;;;;;;:::i;:::-;17312:409;;;:::o;21458:142::-;21533:5;;-1:-1:-1;;;;;21533:5:0;21519:10;:19;21515:42;;21547:10;;-1:-1:-1;;;21547:10:0;;;;;;;;;;;21515:42;21568:10;:24;21458:142::o;10879:641::-;-1:-1:-1;;;;;10961:16:0;;10980:1;10961:16;;;:7;:16;;;;;;10953:71;;;;-1:-1:-1;;;10953:71:0;;;;;;;:::i;:::-;11037:21;11094:20;11108:5;11094:13;:20::i;:::-;11061:30;;-1:-1:-1;;;11061:30:0;;-1:-1:-1;;;;;11061:15:0;;;;;:30;;11085:4;;11061:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;;;:::i;:::-;11037:77;;11125:15;11143:65;11159:7;11168:13;11183:24;11192:5;11199:7;11183:8;:24::i;11143:65::-;11125:83;-1:-1:-1;11229:12:0;11221:68;;;;-1:-1:-1;;;11221:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11302:21:0;;;;;;;:14;:21;;;;;;;;:30;;;;;;;;;;;:41;;11336:7;;11302:21;:41;;11336:7;;11302:41;:::i;:::-;;;;-1:-1:-1;;;;;;;11354:26:0;;;;;;:19;:26;;;;;:37;;11384:7;;11354:26;:37;;11384:7;;11354:37;:::i;:::-;;;;-1:-1:-1;11404:47:0;;-1:-1:-1;11427:5:0;11434:7;11443;11404:22;:47::i;:::-;11488:5;-1:-1:-1;;;;;11467:45:0;;11495:7;11504;11467:45;;;;;;;:::i;:::-;;;;;;;;10942:578;;10879:641;;:::o;22946:199::-;23034:1;23016:7;23010:21;;;;;:::i;:::-;;;:25;23006:53;;;23044:15;;-1:-1:-1;;;23044:15:0;;;;;;;;;;;23006:53;23088:5;;-1:-1:-1;;;;;23088:5:0;23074:10;:19;23070:42;;23102:10;;-1:-1:-1;;;23102:10:0;;;;;;;;;;;23070:42;23123:14;;;;:7;;:14;;;;;:::i;:::-;;22946:199;:::o;22235:703::-;22331:7;22325:21;;;;;:::i;:::-;:26;22321:55;;-1:-1:-1;22321:55:0;;22360:16;;-1:-1:-1;;;22360:16:0;;;;;;;;;;;22321:55;22408:10;22391:28;;;;:16;:28;;;;;;;;22387:57;;;22428:16;;-1:-1:-1;;;22428:16:0;;;;;;;;;;;22387:57;22477:5;22459:11;;22473:1;22459:15;;;;:::i;:::-;:23;22455:45;;;22491:9;;-1:-1:-1;;;22491:9:0;;;;;;;;;;;22455:45;22527:13;;22515:9;:25;22511:57;;;22549:19;;-1:-1:-1;;;22549:19:0;;;;;;;;;;;22511:57;22606:28;;-1:-1:-1;;;;;;22623:10:0;12500:2:1;12471:15;12467:45;22606:28:0;;;12455:58:1;22581:12:0;;12529::1;;22606:28:0;;;;;;;;;;;;22596:39;;;;;;22581:54;;22653:50;22672:12;;22653:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22686:10:0;;;-1:-1:-1;22698:4:0;;-1:-1:-1;22653:18:0;:50::i;:::-;22648:91;;22725:14;;-1:-1:-1;;;22725:14:0;;;;;;;;;;;22648:91;22769:10;22752:28;;;;:16;:28;;;;;:35;;-1:-1:-1;;22752:35:0;22783:4;22752:35;;;22798:11;:13;;;;;;:::i;:::-;;;;;;22822:34;22832:10;22844:11;;22822:9;:34::i;:::-;22914:15;22879:10;-1:-1:-1;;;;;22872:58:0;-1:-1:-1;;;;;;;;;;;22891:21:0;22900:11;;22891:8;:21::i;:::-;22872:58;;;;;;:::i;:::-;;;;;;;;22310:628;22235:703;;:::o;10185:100::-;10236:7;10263;10271:5;10263:14;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;10263:14:0;;10185:100;-1:-1:-1;;10185:100:0:o;15535:20::-;;;;;;;:::i;9913:109::-;-1:-1:-1;;;;;9996:18:0;9969:7;9996:18;;;:9;:18;;;;;;;9913:109::o;16325:207::-;16428:10;16411:28;;;;:16;:28;;;;;;;;-1:-1:-1;;;;;16411:38:0;;;;;;;;;;;;:49;;-1:-1:-1;;16411:49:0;;;;;;;;;;16478:46;;819:41:1;;;16411:38:0;;16428:10;16478:46;;792:18:1;16478:46:0;;;;;;;16325:207;;:::o;17729:439::-;17881:26;17894:4;17900:2;17904;17881:12;:26::i;:::-;-1:-1:-1;;;;;17942:14:0;;;:19;;:174;;-1:-1:-1;17982:68:0;;-1:-1:-1;;;17982:68:0;;;18071:45;-1:-1:-1;;;;;17982:40:0;;;18071:45;;17982:68;;18023:10;;18035:4;;18041:2;;18045:4;;17982:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;17982:134:0;;17942:174;17920:240;;;;-1:-1:-1;;;17920:240:0;;;;;;;:::i;:::-;17729:439;;;;:::o;23153:269::-;23262:13;23355:7;23364:25;23381:7;23364:16;:25::i;:::-;23338:61;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23293:121;;23153:269;;;:::o;9661:119::-;-1:-1:-1;;;;;9746:26:0;9719:7;9746:26;;;:19;:26;;;;;;;9661:119::o;19334:349::-;19405:13;19411:2;19415;19405:5;:13::i;:::-;-1:-1:-1;;;;;19453:14:0;;;:19;;:178;;-1:-1:-1;19493:72:0;;-1:-1:-1;;;19493:72:0;;;19586:45;-1:-1:-1;;;;;19493:40:0;;;19586:45;;19493:72;;19534:10;;19554:1;;19558:2;;19493:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;19493:138:0;;19453:178;19431:244;;;;-1:-1:-1;;;19431:244:0;;;;;;;:::i;11534:248::-;11744:12;;-1:-1:-1;;;;;11724:16:0;;11680:7;11724:16;;;:7;:16;;;;;;11680:7;;11759:15;;11708:32;;:13;:32;:::i;:::-;11707:49;;;;:::i;:::-;:67;;;;:::i;:::-;11700:74;;11534:248;;;;;;:::o;847:317::-;962:6;937:21;:31;;929:73;;;;-1:-1:-1;;;929:73:0;;15691:2:1;929:73:0;;;15673:21:1;15730:2;15710:18;;;15703:30;15769:31;15749:18;;;15742:59;15818:18;;929:73:0;15489:353:1;929:73:0;1016:12;1034:9;-1:-1:-1;;;;;1034:14:0;1056:6;1034:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1015:52;;;1086:7;1078:78;;;;-1:-1:-1;;;1078:78:0;;16259:2:1;1078:78:0;;;16241:21:1;16298:2;16278:18;;;16271:30;16337:34;16317:18;;;16310:62;-1:-1:-1;;;16388:18:1;;;16381:56;16454:19;;1078:78:0;16057:422:1;5470:211:0;5587:86;5607:5;5637:23;;;5662:2;5666:5;5614:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5614:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;5614:58:0;-1:-1:-1;;;;;;5614:58:0;;;;;;;;;;5587:19;:86::i;12484:190::-;12609:4;12662;12633:25;12646:5;12653:4;12633:12;:25::i;:::-;:33;;12484:190;-1:-1:-1;;;;12484:190:0:o;13579:723::-;13635:13;13856:10;13852:53;;-1:-1:-1;;13883:10:0;;;;;;;;;;;;-1:-1:-1;;;13883:10:0;;;;;13579:723::o;13852:53::-;13930:5;13915:12;13971:78;13978:9;;13971:78;;14004:8;;;;:::i;:::-;;-1:-1:-1;14027:10:0;;-1:-1:-1;14035:2:0;14027:10;;:::i;:::-;;;13971:78;;;14059:19;14091:6;-1:-1:-1;;;;;14081:17:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14081:17:0;;14059:39;;14109:154;14116:10;;14109:154;;14143:11;14153:1;14143:11;;:::i;:::-;;-1:-1:-1;14212:10:0;14220:2;14212:5;:10;:::i;:::-;14199:24;;:2;:24;:::i;:::-;14186:39;;14169:6;14176;14169:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;14169:56:0;;;;;;;;-1:-1:-1;14240:11:0;14249:2;14240:11;;:::i;:::-;;;14109:154;;;14287:6;13579:723;-1:-1:-1;;;;13579:723:0:o;18540:381::-;-1:-1:-1;;;;;18615:16:0;;18607:46;;;;-1:-1:-1;;;18607:46:0;;;;;;;:::i;:::-;18697:1;18674:11;;;:7;:11;;;;;;-1:-1:-1;;;;;18674:11:0;:25;18666:52;;;;-1:-1:-1;;;18666:52:0;;16803:2:1;18666:52:0;;;16785:21:1;16842:2;16822:18;;;16815:30;-1:-1:-1;;;16861:18:1;;;16854:44;16915:18;;18666:52:0;16601:338:1;18666:52:0;-1:-1:-1;;;;;18812:13:0;;;;;;:9;:13;;;;;;;;:15;;;;;;18851:11;;;:7;:11;;;;;;:16;;-1:-1:-1;;;;;;18851:16:0;;;;;18885:28;18859:2;;18812:13;;-1:-1:-1;;;;;;;;;;;18885:28:0;18812:13;;18885:28;18540:381;;:::o;7411:716::-;7835:23;7861:69;7889:4;7861:69;;;;;;;;;;;;;;;;;7869:5;-1:-1:-1;;;;;7861:27:0;;;:69;;;;;:::i;:::-;7945:17;;7835:95;;-1:-1:-1;7945:21:0;7941:179;;8042:10;8031:30;;;;;;;;;;;;:::i;:::-;8023:85;;;;-1:-1:-1;;;8023:85:0;;17396:2:1;8023:85:0;;;17378:21:1;17435:2;17415:18;;;17408:30;17474:34;17454:18;;;17447:62;-1:-1:-1;;;17525:18:1;;;17518:40;17575:19;;8023:85:0;17194:406:1;12688:701:0;12771:7;12814:4;12771:7;12829:523;12853:5;:12;12849:1;:16;12829:523;;;12887:20;12910:5;12916:1;12910:8;;;;;;;;:::i;:::-;;;;;;;12887:31;;12953:12;12937;:28;12933:408;;13090:44;;;;;;17762:19:1;;;17797:12;;;17790:28;;;17834:12;;13090:44:0;;;;;;;;;;;;13080:55;;;;;;13065:70;;12933:408;;;13280:44;;;;;;17762:19:1;;;17797:12;;;17790:28;;;17834:12;;13280:44:0;;;;;;;;;;;;13270:55;;;;;;13255:70;;12933:408;-1:-1:-1;12867:3:0;;;;:::i;:::-;;;;12829:523;;;-1:-1:-1;13369:12:0;12688:701;-1:-1:-1;;;12688:701:0:o;1367:229::-;1504:12;1536:52;1558:6;1566:4;1572:1;1575:12;1504;769:20;;2171:60;;;;-1:-1:-1;;;2171:60:0;;18466:2:1;2171:60:0;;;18448:21:1;18505:2;18485:18;;;18478:30;18544:31;18524:18;;;18517:59;18593:18;;2171:60:0;18264:353:1;2171:60:0;2245:12;2259:23;2286:6;-1:-1:-1;;;;;2286:11:0;2305:5;2312:4;2286:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2244:73;;;;2335:51;2352:7;2361:10;2373:12;2335:16;:51::i;:::-;2328:58;1884:510;-1:-1:-1;;;;;;;1884:510:0:o;3654:712::-;3804:12;3833:7;3829:530;;;-1:-1:-1;3864:10:0;3857:17;;3829:530;3978:17;;:21;3974:374;;4176:10;4170:17;4237:15;4224:10;4220:2;4216:19;4209:44;3974:374;4319:12;4312:20;;-1:-1:-1;;;4312:20:0;;;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:274:1;-1:-1:-1;;;;;206:32:1;;;;188:51;;270:2;255:18;;248:34;176:2;161:18;;14:274::o;293:131::-;-1:-1:-1;;;;;;367:32:1;;357:43;;347:71;;414:1;411;404:12;347:71;293:131;:::o;429:245::-;487:6;540:2;528:9;519:7;515:23;511:32;508:52;;;556:1;553;546:12;508:52;595:9;582:23;614:30;638:5;614:30;:::i;871:258::-;943:1;953:113;967:6;964:1;961:13;953:113;;;1043:11;;;1037:18;1024:11;;;1017:39;989:2;982:10;953:113;;;1084:6;1081:1;1078:13;1075:48;;;-1:-1:-1;;1119:1:1;1101:16;;1094:27;871:258::o;1134:269::-;1187:3;1225:5;1219:12;1252:6;1247:3;1240:19;1268:63;1324:6;1317:4;1312:3;1308:14;1301:4;1294:5;1290:16;1268:63;:::i;:::-;1385:2;1364:15;-1:-1:-1;;1360:29:1;1351:39;;;;1392:4;1347:50;;1134:269;-1:-1:-1;;1134:269:1:o;1408:231::-;1557:2;1546:9;1539:21;1520:4;1577:56;1629:2;1618:9;1614:18;1606:6;1577:56;:::i;1644:180::-;1703:6;1756:2;1744:9;1735:7;1731:23;1727:32;1724:52;;;1772:1;1769;1762:12;1724:52;-1:-1:-1;1795:23:1;;1644:180;-1:-1:-1;1644:180:1:o;1829:203::-;-1:-1:-1;;;;;1993:32:1;;;;1975:51;;1963:2;1948:18;;1829:203::o;2037:131::-;-1:-1:-1;;;;;2112:31:1;;2102:42;;2092:70;;2158:1;2155;2148:12;2173:315;2241:6;2249;2302:2;2290:9;2281:7;2277:23;2273:32;2270:52;;;2318:1;2315;2308:12;2270:52;2357:9;2344:23;2376:31;2401:5;2376:31;:::i;:::-;2426:5;2478:2;2463:18;;;;2450:32;;-1:-1:-1;;;2173:315:1:o;2675:255::-;2742:6;2795:2;2783:9;2774:7;2770:23;2766:32;2763:52;;;2811:1;2808;2801:12;2763:52;2850:9;2837:23;2869:31;2894:5;2869:31;:::i;2935:456::-;3012:6;3020;3028;3081:2;3069:9;3060:7;3056:23;3052:32;3049:52;;;3097:1;3094;3087:12;3049:52;3136:9;3123:23;3155:31;3180:5;3155:31;:::i;:::-;3205:5;-1:-1:-1;3262:2:1;3247:18;;3234:32;3275:33;3234:32;3275:33;:::i;:::-;2935:456;;3327:7;;-1:-1:-1;;;3381:2:1;3366:18;;;;3353:32;;2935:456::o;3396:402::-;3478:6;3486;3539:2;3527:9;3518:7;3514:23;3510:32;3507:52;;;3555:1;3552;3545:12;3507:52;3594:9;3581:23;3613:31;3638:5;3613:31;:::i;:::-;3663:5;-1:-1:-1;3720:2:1;3705:18;;3692:32;3733:33;3692:32;3733:33;:::i;:::-;3785:7;3775:17;;;3396:402;;;;;:::o;3988:127::-;4049:10;4044:3;4040:20;4037:1;4030:31;4080:4;4077:1;4070:15;4104:4;4101:1;4094:15;4120:632;4185:5;-1:-1:-1;;;;;4245:14:1;;;4242:40;;;4262:18;;:::i;:::-;4337:2;4331:9;4305:2;4391:15;;-1:-1:-1;;4387:24:1;;;4413:2;4383:33;4379:42;4367:55;;;4437:18;;;4457:22;;;4434:46;4431:72;;;4483:18;;:::i;:::-;4523:10;4519:2;4512:22;4552:6;4543:15;;4582:6;4574;4567:22;4622:3;4613:6;4608:3;4604:16;4601:25;4598:45;;;4639:1;4636;4629:12;4598:45;4689:6;4684:3;4677:4;4669:6;4665:17;4652:44;4744:1;4737:4;4728:6;4720;4716:19;4712:30;4705:41;;;;4120:632;;;;;:::o;4757:451::-;4826:6;4879:2;4867:9;4858:7;4854:23;4850:32;4847:52;;;4895:1;4892;4885:12;4847:52;4922:23;;-1:-1:-1;;;;;4957:30:1;;4954:50;;;5000:1;4997;4990:12;4954:50;5023:22;;5076:4;5068:13;;5064:27;-1:-1:-1;5054:55:1;;5105:1;5102;5095:12;5054:55;5128:74;5194:7;5189:2;5176:16;5171:2;5167;5163:11;5128:74;:::i;5465:615::-;5551:6;5559;5612:2;5600:9;5591:7;5587:23;5583:32;5580:52;;;5628:1;5625;5618:12;5580:52;5655:23;;-1:-1:-1;;;;;5727:14:1;;;5724:34;;;5754:1;5751;5744:12;5724:34;5792:6;5781:9;5777:22;5767:32;;5837:7;5830:4;5826:2;5822:13;5818:27;5808:55;;5859:1;5856;5849:12;5808:55;5899:2;5886:16;5925:2;5917:6;5914:14;5911:34;;;5941:1;5938;5931:12;5911:34;5994:7;5989:2;5979:6;5976:1;5972:14;5968:2;5964:23;5960:32;5957:45;5954:65;;;6015:1;6012;6005:12;5954:65;6046:2;6038:11;;;;;6068:6;;-1:-1:-1;5465:615:1;;-1:-1:-1;;;;5465:615:1:o;6085:118::-;6171:5;6164:13;6157:21;6150:5;6147:32;6137:60;;6193:1;6190;6183:12;6208:382;6273:6;6281;6334:2;6322:9;6313:7;6309:23;6305:32;6302:52;;;6350:1;6347;6340:12;6302:52;6389:9;6376:23;6408:31;6433:5;6408:31;:::i;:::-;6458:5;-1:-1:-1;6515:2:1;6500:18;;6487:32;6528:30;6487:32;6528:30;:::i;6595:795::-;6690:6;6698;6706;6714;6767:3;6755:9;6746:7;6742:23;6738:33;6735:53;;;6784:1;6781;6774:12;6735:53;6823:9;6810:23;6842:31;6867:5;6842:31;:::i;:::-;6892:5;-1:-1:-1;6949:2:1;6934:18;;6921:32;6962:33;6921:32;6962:33;:::i;:::-;7014:7;-1:-1:-1;7068:2:1;7053:18;;7040:32;;-1:-1:-1;7123:2:1;7108:18;;7095:32;-1:-1:-1;;;;;7139:30:1;;7136:50;;;7182:1;7179;7172:12;7136:50;7205:22;;7258:4;7250:13;;7246:27;-1:-1:-1;7236:55:1;;7287:1;7284;7277:12;7236:55;7310:74;7376:7;7371:2;7358:16;7353:2;7349;7345:11;7310:74;:::i;:::-;7300:84;;;6595:795;;;;;;;:::o;8054:380::-;8133:1;8129:12;;;;8176;;;8197:61;;8251:4;8243:6;8239:17;8229:27;;8197:61;8304:2;8296:6;8293:14;8273:18;8270:38;8267:161;;;8350:10;8345:3;8341:20;8338:1;8331:31;8385:4;8382:1;8375:15;8413:4;8410:1;8403:15;8267:161;;8054:380;;;:::o;8439:338::-;8641:2;8623:21;;;8680:2;8660:18;;;8653:30;-1:-1:-1;;;8714:2:1;8699:18;;8692:44;8768:2;8753:18;;8439:338::o;8782:127::-;8843:10;8838:3;8834:20;8831:1;8824:31;8874:4;8871:1;8864:15;8898:4;8895:1;8888:15;8914:128;8954:3;8985:1;8981:6;8978:1;8975:13;8972:39;;;8991:18;;:::i;:::-;-1:-1:-1;9027:9:1;;8914:128::o;9047:135::-;9086:3;-1:-1:-1;;9107:17:1;;9104:43;;;9127:18;;:::i;:::-;-1:-1:-1;9174:1:1;9163:13;;9047:135::o;9187:402::-;9389:2;9371:21;;;9428:2;9408:18;;;9401:30;9467:34;9462:2;9447:18;;9440:62;-1:-1:-1;;;9533:2:1;9518:18;;9511:36;9579:3;9564:19;;9187:402::o;9594:407::-;9796:2;9778:21;;;9835:2;9815:18;;;9808:30;9874:34;9869:2;9854:18;;9847:62;-1:-1:-1;;;9940:2:1;9925:18;;9918:41;9991:3;9976:19;;9594:407::o;10632:341::-;10834:2;10816:21;;;10873:2;10853:18;;;10846:30;-1:-1:-1;;;10907:2:1;10892:18;;10885:47;10964:2;10949:18;;10632:341::o;10978:555::-;-1:-1:-1;;;;;11301:15:1;;;11283:34;;11353:15;;;;11348:2;11333:18;;11326:43;11400:2;11385:18;;11378:34;;;;11448:3;11443:2;11428:18;;11421:31;;;11226:4;11468:19;;;11461:30;11263:3;11508:19;;10978:555::o;11538:249::-;11607:6;11660:2;11648:9;11639:7;11635:23;11631:32;11628:52;;;11676:1;11673;11666:12;11628:52;11708:9;11702:16;11727:30;11751:5;11727:30;:::i;11792:340::-;11994:2;11976:21;;;12033:2;12013:18;;;12006:30;-1:-1:-1;;;12067:2:1;12052:18;;12045:46;12123:2;12108:18;;11792:340::o;12137:184::-;12207:6;12260:2;12248:9;12239:7;12235:23;12231:32;12228:52;;;12276:1;12273;12266:12;12228:52;-1:-1:-1;12299:16:1;;12137:184;-1:-1:-1;12137:184:1:o;12552:127::-;12613:10;12608:3;12604:20;12601:1;12594:31;12644:4;12641:1;12634:15;12668:4;12665:1;12658:15;12684:500;-1:-1:-1;;;;;12953:15:1;;;12935:34;;13005:15;;13000:2;12985:18;;12978:43;13052:2;13037:18;;13030:34;;;13100:3;13095:2;13080:18;;13073:31;;;12878:4;;13121:57;;13158:19;;13150:6;13121:57;:::i;:::-;13113:65;12684:500;-1:-1:-1;;;;;;12684:500:1:o;13315:185::-;13357:3;13395:5;13389:12;13410:52;13455:6;13450:3;13443:4;13436:5;13432:16;13410:52;:::i;:::-;13478:16;;;;;13315:185;-1:-1:-1;;13315:185:1:o;13623:1301::-;13900:3;13929:1;13962:6;13956:13;13992:3;14014:1;14042:9;14038:2;14034:18;14024:28;;14102:2;14091:9;14087:18;14124;14114:61;;14168:4;14160:6;14156:17;14146:27;;14114:61;14194:2;14242;14234:6;14231:14;14211:18;14208:38;14205:165;;;-1:-1:-1;;;14269:33:1;;14325:4;14322:1;14315:15;14355:4;14276:3;14343:17;14205:165;14386:18;14413:104;;;;14531:1;14526:320;;;;14379:467;;14413:104;-1:-1:-1;;14446:24:1;;14434:37;;14491:16;;;;-1:-1:-1;14413:104:1;;14526:320;13262:1;13255:14;;;13299:4;13286:18;;14621:1;14635:165;14649:6;14646:1;14643:13;14635:165;;;14727:14;;14714:11;;;14707:35;14770:16;;;;14664:10;;14635:165;;;14639:3;;14829:6;14824:3;14820:16;14813:23;;14379:467;;;;;;;14862:56;14887:30;14913:3;14905:6;14887:30;:::i;:::-;-1:-1:-1;;;13565:20:1;;13610:1;13601:11;;13505:113;14862:56;14855:63;13623:1301;-1:-1:-1;;;;;13623:1301:1:o;14929:168::-;14969:7;15035:1;15031;15027:6;15023:14;15020:1;15017:21;15012:1;15005:9;14998:17;14994:45;14991:71;;;15042:18;;:::i;:::-;-1:-1:-1;15082:9:1;;14929:168::o;15102:127::-;15163:10;15158:3;15154:20;15151:1;15144:31;15194:4;15191:1;15184:15;15218:4;15215:1;15208:15;15234:120;15274:1;15300;15290:35;;15305:18;;:::i;:::-;-1:-1:-1;15339:9:1;;15234:120::o;15359:125::-;15399:4;15427:1;15424;15421:8;15418:34;;;15432:18;;:::i;:::-;-1:-1:-1;15469:9:1;;15359:125::o;16484:112::-;16516:1;16542;16532:35;;16547:18;;:::i;:::-;-1:-1:-1;16581:9:1;;16484:112::o;16944:245::-;17011:6;17064:2;17052:9;17043:7;17039:23;17035:32;17032:52;;;17080:1;17077;17070:12;17032:52;17112:9;17106:16;17131:28;17153:5;17131:28;:::i;18622:274::-;18751:3;18789:6;18783:13;18805:53;18851:6;18846:3;18839:4;18831:6;18827:17;18805:53;:::i;:::-;18874:16;;;;;18622:274;-1:-1:-1;;18622:274:1:o

Swarm Source

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

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