ETH Price: $2,318.56 (-4.13%)

CryptoVitalDicks (DICK)
 

Overview

TokenID

377

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
CryptoVitalDicks

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

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

pragma solidity ^0.8;

import "./Ownable.sol";

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

contract CryptoVitalDicks is Ownable {
    bool unleashed;

    uint256 supply;
    mapping (uint256 => address) owners;
    mapping (address => uint256) balances;
    
    mapping (uint256 => address) approvals;
    mapping (address => mapping(address => bool)) operatorApprovals;

    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    constructor() {
        _mint(msg.sender, 250);
    }

    function name()
    public pure returns (string memory) {
        return "CryptoVitalDicks";
    }

    function symbol()
    public pure returns (string memory) {
        return "DICK";
    }

    function maxSupply()
    public pure returns (uint256) {
        return 10000;
    }

    function unleashMint()
    public onlyOwner {
        unleashed = !unleashed;
    }

    function mintDICK(uint256 quantity)
    public {
        require(
            supply < maxSupply(),
            "CryptoVitalDicks::mintDICK() - supply exceeds maxSupply"
        );

        require(
            quantity > 0 && quantity <= 10,
            "CryptoVitalDicks::mintDICK() - quantity is out of bounds"
        );

        if (!unleashed) require(
            balanceOf(msg.sender) == 0,
            "CryptoVitalDicks::mintDICK() - msg.sender are already minted DICK"
        );

        _mint(msg.sender, quantity);
    }

    function supportsInterface(bytes4 interfaceId)
    public pure returns (bool) {
        return interfaceId == 0x80ac58cd || interfaceId == 0x5b5e139f;
    }

    function tokenURI(uint256 id)
    public view returns (string memory) {
        require(
            exist(id),
            "CryptoVitalDicks::tokenURI() - id do not exist"
        );

        string memory strId = (
            id < 10 ? string(abi.encodePacked("000", _toString(id))) :
            id < 100 ? string(abi.encodePacked("00", _toString(id))) :
            id < 1000 ? string(abi.encodePacked("0", _toString(id))) :
            _toString(id)
        );

        return string(abi.encodePacked(
            'data:application/json;base64,',
            encode(bytes(string(abi.encodePacked(
                "{",
                    '"name":"CryptoVitalDicks #',strId,'",',
                    '"description":"ARE YOU LONG ETH LIKE VITALIK ANON?",',
                    '"image":"ipfs://Qmb59HoVrTXGesRpcpynso82ujttu6TXs9dYm5C4XYLxjV/',strId,'.png"',
                "}"
            ))))
        ));
    }

    function exist(uint256 id)
    public view returns (bool) {
        return owners[id] != address(0);
    }

    function totalSupply()
    public view returns (uint256) {
        return supply == 0 ? 0 : supply;
    }

    function balanceOf(address _owner)
    public view returns (uint256) {
        require(
            _owner != address(0),
            "CryptoVitalDicks::balanceOf() - _owner is address(0)"
        );

        return balances[_owner];
    }

    function ownerOf(uint256 id)
    public view returns (address) {
        require(
            exist(id),
            "CryptoVitalDicks::ownerOf() - id do not exist"
        );

        return owners[id];
    }

    function isApprovedForAll(address _owner, address operator)
    public view returns (bool) {
        return operatorApprovals[_owner][operator];
    }

    function getApproved(uint256 id)
    public view returns (address) {
        require(
            exist(id),
            "CryptoVitalDicks::getApproved() - id do not exist"
        );

        return approvals[id];
    }

    function approve(address to, uint256 id)
    public {
        address _owner = owners[id];
        require(
            to != _owner,
            "CryptoVitalDicks::approve() - to is _owner"
        );
        require(
            _owner == msg.sender ||
            operatorApprovals[_owner][msg.sender],
            "CryptoVitalDicks::approve() - msg.sender is not _owner or approved"
        );

        approvals[id] = to;
        emit Approval(_owner, to, id);
    }

    function setApprovalForAll(address operator, bool approved)
    public {
        require(
            operator != msg.sender,
            "CryptoVitalDicks::setApprovalForAll() - msg.sender is operator"
        );

        operatorApprovals[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function transferFrom(address from, address to, uint256 id)
    public {
        address _owner = owners[id];
        
        require(
            exist(id),
            "CryptoVitalDicks::transferFrom() - id do not exist"
        );

        require(
            msg.sender == _owner ||
            msg.sender == approvals[id] ||
            operatorApprovals[_owner][msg.sender],
            "CryptoVitalDicks::transferFrom() - msg.sender is not _owner or approved"
        );

        _transfer(from, to, id);
    }

    function safeTransferFrom(address from, address to, uint256 id)
    public {
        address _owner = owners[id];
        
        require(
            exist(id),
            "CryptoVitalDicks::safeTransferFrom() - id do not exist"
        );

        require(
            msg.sender == _owner ||
            msg.sender == approvals[id] ||
            operatorApprovals[_owner][msg.sender],
            "CryptoVitalDicks::safeTransferFrom() - msg.sender is not _owner or approved"
        );

        _safeTransfer(from, to, id, '');
    }

    function safeTransferFrom(address from, address to, uint256 id, bytes memory data)
    public {
        address _owner = owners[id];

        require(
            exist(id),
            "CryptoVitalDicks::safeTransferFrom() - id do not exist"
        );
        
        require(
            msg.sender == _owner ||
            msg.sender == approvals[id] ||
            operatorApprovals[_owner][msg.sender],
            "CryptoVitalDicks::safeTransferFrom() - msg.sender is not _owner or approved"
        );

        _safeTransfer(from, to, id, data);
    }

    function _mint(address to, uint256 quantity)
    private {
        uint256 i = 0;
        unchecked {
            while (i < quantity) {
                balances[to]++;
                owners[supply] = to;
                emit Transfer(address(0), to, supply++);
                i++;
            }
        }
    }

    function _transfer(address from, address to, uint256 id)
    private {
        require(
            address(0) != to,
            "CryptoVitalDicks::_transferFrom() - to is address(0)"
        );

        approve(address(0), id);
        balances[from]--;
        balances[to]++;
        owners[id] = to;
        
        emit Transfer(from, to, id);
    }

    function _safeTransfer(address from, address to, uint256 id, bytes memory data)
    private {
        _transfer(from, to, id);
        
        require(
            _checkOnERC721Received(from, to, id, data),
            "CryptoVitalDicks::_safeTransfer() - to is not ERC721 receiver"
        );
    }

    function _checkOnERC721Received(address from, address to, uint256 id, bytes memory _data)
    internal returns (bool) {
        uint256 size;

        assembly {
            size := extcodesize(to)
        }

        if (size > 0)
            try ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, _data) returns (bytes4 retval) {
                return retval == ERC721TokenReceiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) revert("error ERC721Receiver");
                else assembly {
                        revert(add(32, reason), mload(reason))
                    }
            }
        else return true;
    }
    
    function _toString(uint256 value) private pure returns (string memory) {
        if (value == 0) return "0";

        uint256 digits;
        uint256 tmp = value;

        while (tmp != 0) {
            digits++;
            tmp /= 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 encode(bytes memory data) internal pure returns (string memory) {
        uint256 len = data.length;
        if (len == 0) return "";

        uint256 encodedLen = 4 * ((len + 2) / 3);

        bytes memory result = new bytes(encodedLen + 32);

        bytes memory table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

        assembly {
            let tablePtr := add(table, 1)
            let resultPtr := add(result, 32)

            for {
                let i := 0
            } lt(i, len) {

            } {
                i := add(i, 3)
                let input := and(mload(add(data, i)), 0xffffff)

                let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF))
                out := shl(224, out)

                mstore(resultPtr, out)

                resultPtr := add(resultPtr, 4)
            }

            switch mod(len, 3)
            case 1 {
                mstore(sub(resultPtr, 2), shl(240, 0x3d3d))
            }
            case 2 {
                mstore(sub(resultPtr, 1), shl(248, 0x3d))
            }

            mstore(result, encodedLen)
        }

        return string(result);
    }
}

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

pragma solidity ^0.8.0;

abstract contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(msg.sender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mintDICK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":"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":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unleashMint","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5062000023336200003c60201b60201c565b620000363360fa6200010060201b60201c565b6200022e565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60005b818110156200022957600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508260026000600154815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016000815480929190600101919050558373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808060010191505062000103565b505050565b6137ed806200023e6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063b88d4fde1161007c578063b88d4fde14610328578063c87b56dd14610344578063d5abeb0114610374578063e4d10dd914610392578063e985e9c5146103ae578063f2fde38b146103de57610137565b806370a0823114610296578063715018a6146102c65780638da5cb5b146102d057806395d89b41146102ee578063a22cb4651461030c57610137565b806323b872dd116100ff57806323b872dd146101f4578063381dd37a1461021057806342842e0e1461021a5780634ebbc92a146102365780636352211e1461026657610137565b806301ffc9a71461013c57806306fdde031461016c578063081812fc1461018a578063095ea7b3146101ba57806318160ddd146101d6575b600080fd5b61015660048036038101906101519190612140565b6103fa565b6040516101639190612811565b60405180910390f35b61017461045c565b604051610181919061282c565b60405180910390f35b6101a4600480360381019061019f919061219a565b610499565b6040516101b191906127aa565b60405180910390f35b6101d460048036038101906101cf9190612100565b61051e565b005b6101de610776565b6040516101eb9190612aae565b60405180910390f35b61020e60048036038101906102099190611fea565b610791565b005b61021861098a565b005b610234600480360381019061022f9190611fea565b610a2b565b005b610250600480360381019061024b919061219a565b610c34565b60405161025d9190612811565b60405180910390f35b610280600480360381019061027b919061219a565b610ca0565b60405161028d91906127aa565b60405180910390f35b6102b060048036038101906102ab9190611f7d565b610d25565b6040516102bd9190612aae565b60405180910390f35b6102ce610ddd565b005b6102d8610e5e565b6040516102e591906127aa565b60405180910390f35b6102f6610e87565b604051610303919061282c565b60405180910390f35b610326600480360381019061032191906120c0565b610ec4565b005b610342600480360381019061033d919061203d565b611030565b005b61035e6004803603810190610359919061219a565b61122b565b60405161036b919061282c565b60405180910390f35b61037c611376565b6040516103899190612aae565b60405180910390f35b6103ac60048036038101906103a7919061219a565b611380565b005b6103c860048036038101906103c39190611faa565b611488565b6040516103d59190612811565b60405180910390f35b6103f860048036038101906103f39190611f7d565b61151c565b005b60006380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104555750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606040518060400160405280601081526020017f43727970746f566974616c4469636b7300000000000000000000000000000000815250905090565b60006104a482610c34565b6104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da9061292e565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bc9061288e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806106855750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6106c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bb906129ae565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600080600154146107895760015461078c565b60005b905090565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506107d282610c34565b610811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610808906128ce565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108a957506004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061093a5750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610979576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109709061298e565b60405180910390fd5b61098484848461160d565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166109a9610e5e565b73ffffffffffffffffffffffffffffffffffffffff16146109ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f6906129ce565b60405180910390fd5b600060149054906101000a900460ff1615600060146101000a81548160ff021916908315150217905550565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610a6c82610c34565b610aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa290612a6e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610b4357506004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610bd45750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0a90612a4e565b60405180910390fd5b610c2e848484604051806020016040528060008152506117e4565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000610cab82610c34565b610cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce19061290e565b60405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8d90612a2e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610dfc610e5e565b73ffffffffffffffffffffffffffffffffffffffff1614610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e49906129ce565b60405180910390fd5b610e5c6000611840565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4449434b00000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a906129ee565b60405180910390fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110249190612811565b60405180910390a35050565b60006002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061107183610c34565b6110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a790612a6e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061114857506004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806111d95750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f90612a4e565b60405180910390fd5b611224858585856117e4565b5050505050565b606061123682610c34565b611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c9061296e565b60405180910390fd5b6000600a83106112fa57606483106112cc576103e8831061129e5761129983611904565b6112c7565b6112a783611904565b6040516020016112b791906126b1565b6040516020818303038152906040525b6112f5565b6112d583611904565b6040516020016112e59190612788565b6040516020818303038152906040525b611323565b61130383611904565b60405160200161131391906126d3565b6040516020818303038152906040525b905061134f818260405160200161133b9291906126f5565b604051602081830303815290604052611a64565b60405160200161135f9190612766565b604051602081830303815290604052915050919050565b6000612710905090565b611388611376565b600154106113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c290612a8e565b60405180910390fd5b6000811180156113dc5750600a8111155b61141b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611412906128ee565b60405180910390fd5b600060149054906101000a900460ff1661147b57600061143a33610d25565b1461147a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114719061294e565b60405180910390fd5b5b6114853382611bfc565b50565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661153b610e5e565b73ffffffffffffffffffffffffffffffffffffffff1614611591576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611588906129ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f89061286e565b60405180910390fd5b61160a81611840565b50565b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16141561167d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167490612a0e565b60405180910390fd5b61168860008261051e565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906116d890612d2d565b9190505550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061172d90612d88565b9190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6117ef84848461160d565b6117fb84848484611d28565b61183a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611831906128ae565b60405180910390fd5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6060600082141561194c576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611a5f565b6000808390505b6000811461197d57818061196690612d88565b925050600a816119769190612bb8565b9050611953565b60008267ffffffffffffffff81111561199957611998612e8f565b5b6040519080825280601f01601f1916602001820160405280156119cb5781602001600182028036833780820191505090505b5090505b60008514611a58576001836119e49190612c43565b9250600a856119f39190612dd1565b60306119ff9190612b62565b60f81b818481518110611a1557611a14612e60565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611a519190612bb8565b94506119cf565b8093505050505b919050565b60606000825190506000811415611a8d5760405180602001604052806000815250915050611bf7565b60006003600283611a9e9190612b62565b611aa89190612bb8565b6004611ab49190612be9565b90506000602082611ac59190612b62565b67ffffffffffffffff811115611ade57611add612e8f565b5b6040519080825280601f01601f191660200182016040528015611b105781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001613778604091399050600181016020830160005b86811015611bb45760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050611b3b565b506003860660018114611bce5760028114611bde57611be9565b613d3d60f01b6002830352611be9565b603d60f81b60018303525b508484525050819450505050505b919050565b60005b81811015611d2357600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508260026000600154815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016000815480929190600101919050558373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48080600101915050611bff565b505050565b600080843b90506000811115611e96578473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b8152600401611d7794939291906127c5565b602060405180830381600087803b158015611d9157600080fd5b505af1925050508015611dc257506040513d601f19601f82011682018060405250810190611dbf919061216d565b60015b611e45573d8060008114611df2576040519150601f19603f3d011682016040523d82523d6000602084013e611df7565b606091505b50600081511415611e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e349061284e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161492505050611e9c565b60019150505b949350505050565b6000611eb7611eb284612aee565b612ac9565b905082815260208101848484011115611ed357611ed2612ec3565b5b611ede848285612ceb565b509392505050565b600081359050611ef58161371b565b92915050565b600081359050611f0a81613732565b92915050565b600081359050611f1f81613749565b92915050565b600081519050611f3481613749565b92915050565b600082601f830112611f4f57611f4e612ebe565b5b8135611f5f848260208601611ea4565b91505092915050565b600081359050611f7781613760565b92915050565b600060208284031215611f9357611f92612ecd565b5b6000611fa184828501611ee6565b91505092915050565b60008060408385031215611fc157611fc0612ecd565b5b6000611fcf85828601611ee6565b9250506020611fe085828601611ee6565b9150509250929050565b60008060006060848603121561200357612002612ecd565b5b600061201186828701611ee6565b935050602061202286828701611ee6565b925050604061203386828701611f68565b9150509250925092565b6000806000806080858703121561205757612056612ecd565b5b600061206587828801611ee6565b945050602061207687828801611ee6565b935050604061208787828801611f68565b925050606085013567ffffffffffffffff8111156120a8576120a7612ec8565b5b6120b487828801611f3a565b91505092959194509250565b600080604083850312156120d7576120d6612ecd565b5b60006120e585828601611ee6565b92505060206120f685828601611efb565b9150509250929050565b6000806040838503121561211757612116612ecd565b5b600061212585828601611ee6565b925050602061213685828601611f68565b9150509250929050565b60006020828403121561215657612155612ecd565b5b600061216484828501611f10565b91505092915050565b60006020828403121561218357612182612ecd565b5b600061219184828501611f25565b91505092915050565b6000602082840312156121b0576121af612ecd565b5b60006121be84828501611f68565b91505092915050565b6121d081612c77565b82525050565b6121df81612c89565b82525050565b60006121f082612b1f565b6121fa8185612b35565b935061220a818560208601612cfa565b61221381612ed2565b840191505092915050565b600061222982612b2a565b6122338185612b46565b9350612243818560208601612cfa565b61224c81612ed2565b840191505092915050565b600061226282612b2a565b61226c8185612b57565b935061227c818560208601612cfa565b80840191505092915050565b6000612295601483612b46565b91506122a082612ee3565b602082019050919050565b60006122b8600183612b57565b91506122c382612f0c565b600182019050919050565b60006122db602683612b46565b91506122e682612f35565b604082019050919050565b60006122fe600283612b57565b915061230982612f84565b600282019050919050565b6000612321602a83612b46565b915061232c82612fad565b604082019050919050565b6000612344603d83612b46565b915061234f82612ffc565b604082019050919050565b6000612367603283612b46565b91506123728261304b565b604082019050919050565b600061238a603883612b46565b91506123958261309a565b604082019050919050565b60006123ad600383612b57565b91506123b8826130e9565b600382019050919050565b60006123d0601a83612b57565b91506123db82613112565b601a82019050919050565b60006123f3602d83612b46565b91506123fe8261313b565b604082019050919050565b6000612416603f83612b57565b91506124218261318a565b603f82019050919050565b6000612439603183612b46565b9150612444826131d9565b604082019050919050565b600061245c604183612b46565b915061246782613228565b606082019050919050565b600061247f602e83612b46565b915061248a8261329d565b604082019050919050565b60006124a2600183612b57565b91506124ad826132ec565b600182019050919050565b60006124c5604783612b46565b91506124d082613315565b606082019050919050565b60006124e8604283612b46565b91506124f38261338a565b606082019050919050565b600061250b602083612b46565b9150612516826133ff565b602082019050919050565b600061252e603e83612b46565b915061253982613428565b604082019050919050565b6000612551603483612b46565b915061255c82613477565b604082019050919050565b6000612574600583612b57565b915061257f826134c6565b600582019050919050565b6000612597600183612b57565b91506125a2826134ef565b600182019050919050565b60006125ba603483612b46565b91506125c582613518565b604082019050919050565b60006125dd603483612b57565b91506125e882613567565b603482019050919050565b6000612600601d83612b57565b915061260b826135b6565b601d82019050919050565b6000612623604b83612b46565b915061262e826135df565b606082019050919050565b6000612646603683612b46565b915061265182613654565b604082019050919050565b6000612669603783612b46565b9150612674826136a3565b604082019050919050565b600061268c600283612b57565b9150612697826136f2565b600282019050919050565b6126ab81612ce1565b82525050565b60006126bc826122ab565b91506126c88284612257565b915081905092915050565b60006126de826123a0565b91506126ea8284612257565b915081905092915050565b60006127008261258a565b915061270b826123c3565b91506127178285612257565b9150612722826122f1565b915061272d826125d0565b915061273882612409565b91506127448284612257565b915061274f82612567565b915061275a82612495565b91508190509392505050565b6000612771826125f3565b915061277d8284612257565b915081905092915050565b60006127938261267f565b915061279f8284612257565b915081905092915050565b60006020820190506127bf60008301846121c7565b92915050565b60006080820190506127da60008301876121c7565b6127e760208301866121c7565b6127f460408301856126a2565b818103606083015261280681846121e5565b905095945050505050565b600060208201905061282660008301846121d6565b92915050565b60006020820190508181036000830152612846818461221e565b905092915050565b6000602082019050818103600083015261286781612288565b9050919050565b60006020820190508181036000830152612887816122ce565b9050919050565b600060208201905081810360008301526128a781612314565b9050919050565b600060208201905081810360008301526128c781612337565b9050919050565b600060208201905081810360008301526128e78161235a565b9050919050565b600060208201905081810360008301526129078161237d565b9050919050565b60006020820190508181036000830152612927816123e6565b9050919050565b600060208201905081810360008301526129478161242c565b9050919050565b600060208201905081810360008301526129678161244f565b9050919050565b6000602082019050818103600083015261298781612472565b9050919050565b600060208201905081810360008301526129a7816124b8565b9050919050565b600060208201905081810360008301526129c7816124db565b9050919050565b600060208201905081810360008301526129e7816124fe565b9050919050565b60006020820190508181036000830152612a0781612521565b9050919050565b60006020820190508181036000830152612a2781612544565b9050919050565b60006020820190508181036000830152612a47816125ad565b9050919050565b60006020820190508181036000830152612a6781612616565b9050919050565b60006020820190508181036000830152612a8781612639565b9050919050565b60006020820190508181036000830152612aa78161265c565b9050919050565b6000602082019050612ac360008301846126a2565b92915050565b6000612ad3612ae4565b9050612adf8282612d57565b919050565b6000604051905090565b600067ffffffffffffffff821115612b0957612b08612e8f565b5b612b1282612ed2565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000612b6d82612ce1565b9150612b7883612ce1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612bad57612bac612e02565b5b828201905092915050565b6000612bc382612ce1565b9150612bce83612ce1565b925082612bde57612bdd612e31565b5b828204905092915050565b6000612bf482612ce1565b9150612bff83612ce1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c3857612c37612e02565b5b828202905092915050565b6000612c4e82612ce1565b9150612c5983612ce1565b925082821015612c6c57612c6b612e02565b5b828203905092915050565b6000612c8282612cc1565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612d18578082015181840152602081019050612cfd565b83811115612d27576000848401525b50505050565b6000612d3882612ce1565b91506000821415612d4c57612d4b612e02565b5b600182039050919050565b612d6082612ed2565b810181811067ffffffffffffffff82111715612d7f57612d7e612e8f565b5b80604052505050565b6000612d9382612ce1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612dc657612dc5612e02565b5b600182019050919050565b6000612ddc82612ce1565b9150612de783612ce1565b925082612df757612df6612e31565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f6572726f72204552433732315265636569766572000000000000000000000000600082015250565b7f3000000000000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f222c000000000000000000000000000000000000000000000000000000000000600082015250565b7f43727970746f566974616c4469636b733a3a617070726f76652829202d20746f60008201527f206973205f6f776e657200000000000000000000000000000000000000000000602082015250565b7f43727970746f566974616c4469636b733a3a5f736166655472616e736665722860008201527f29202d20746f206973206e6f7420455243373231207265636569766572000000602082015250565b7f43727970746f566974616c4469636b733a3a7472616e7366657246726f6d282960008201527f202d20696420646f206e6f742065786973740000000000000000000000000000602082015250565b7f43727970746f566974616c4469636b733a3a6d696e744449434b2829202d207160008201527f75616e74697479206973206f7574206f6620626f756e64730000000000000000602082015250565b7f3030300000000000000000000000000000000000000000000000000000000000600082015250565b7f226e616d65223a2243727970746f566974616c4469636b732023000000000000600082015250565b7f43727970746f566974616c4469636b733a3a6f776e65724f662829202d20696460008201527f20646f206e6f7420657869737400000000000000000000000000000000000000602082015250565b7f22696d616765223a22697066733a2f2f516d623539486f56725458476573527060008201527f6370796e736f3832756a747475365458733964596d35433458594c786a562f00602082015250565b7f43727970746f566974616c4469636b733a3a676574417070726f76656428292060008201527f2d20696420646f206e6f74206578697374000000000000000000000000000000602082015250565b7f43727970746f566974616c4469636b733a3a6d696e744449434b2829202d206d60008201527f73672e73656e6465722061726520616c7265616479206d696e7465642044494360208201527f4b00000000000000000000000000000000000000000000000000000000000000604082015250565b7f43727970746f566974616c4469636b733a3a746f6b656e5552492829202d206960008201527f6420646f206e6f74206578697374000000000000000000000000000000000000602082015250565b7f7d00000000000000000000000000000000000000000000000000000000000000600082015250565b7f43727970746f566974616c4469636b733a3a7472616e7366657246726f6d282960008201527f202d206d73672e73656e646572206973206e6f74205f6f776e6572206f72206160208201527f7070726f76656400000000000000000000000000000000000000000000000000604082015250565b7f43727970746f566974616c4469636b733a3a617070726f76652829202d206d7360008201527f672e73656e646572206973206e6f74205f6f776e6572206f7220617070726f7660208201527f6564000000000000000000000000000000000000000000000000000000000000604082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f43727970746f566974616c4469636b733a3a736574417070726f76616c466f7260008201527f416c6c2829202d206d73672e73656e646572206973206f70657261746f720000602082015250565b7f43727970746f566974616c4469636b733a3a5f7472616e7366657246726f6d2860008201527f29202d20746f2069732061646472657373283029000000000000000000000000602082015250565b7f2e706e6722000000000000000000000000000000000000000000000000000000600082015250565b7f7b00000000000000000000000000000000000000000000000000000000000000600082015250565b7f43727970746f566974616c4469636b733a3a62616c616e63654f662829202d2060008201527f5f6f776e65722069732061646472657373283029000000000000000000000000602082015250565b7f226465736372697074696f6e223a2241524520594f55204c4f4e47204554482060008201527f4c494b4520564954414c494b20414e4f4e3f222c000000000000000000000000602082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f43727970746f566974616c4469636b733a3a736166655472616e73666572467260008201527f6f6d2829202d206d73672e73656e646572206973206e6f74205f6f776e65722060208201527f6f7220617070726f766564000000000000000000000000000000000000000000604082015250565b7f43727970746f566974616c4469636b733a3a736166655472616e73666572467260008201527f6f6d2829202d20696420646f206e6f7420657869737400000000000000000000602082015250565b7f43727970746f566974616c4469636b733a3a6d696e744449434b2829202d207360008201527f7570706c792065786365656473206d6178537570706c79000000000000000000602082015250565b7f3030000000000000000000000000000000000000000000000000000000000000600082015250565b61372481612c77565b811461372f57600080fd5b50565b61373b81612c89565b811461374657600080fd5b50565b61375281612c95565b811461375d57600080fd5b50565b61376981612ce1565b811461377457600080fd5b5056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212205d2c1d491bfc9ca07e577be34f67f183428a356dc99c0728e415a2ee7d019b5964736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063b88d4fde1161007c578063b88d4fde14610328578063c87b56dd14610344578063d5abeb0114610374578063e4d10dd914610392578063e985e9c5146103ae578063f2fde38b146103de57610137565b806370a0823114610296578063715018a6146102c65780638da5cb5b146102d057806395d89b41146102ee578063a22cb4651461030c57610137565b806323b872dd116100ff57806323b872dd146101f4578063381dd37a1461021057806342842e0e1461021a5780634ebbc92a146102365780636352211e1461026657610137565b806301ffc9a71461013c57806306fdde031461016c578063081812fc1461018a578063095ea7b3146101ba57806318160ddd146101d6575b600080fd5b61015660048036038101906101519190612140565b6103fa565b6040516101639190612811565b60405180910390f35b61017461045c565b604051610181919061282c565b60405180910390f35b6101a4600480360381019061019f919061219a565b610499565b6040516101b191906127aa565b60405180910390f35b6101d460048036038101906101cf9190612100565b61051e565b005b6101de610776565b6040516101eb9190612aae565b60405180910390f35b61020e60048036038101906102099190611fea565b610791565b005b61021861098a565b005b610234600480360381019061022f9190611fea565b610a2b565b005b610250600480360381019061024b919061219a565b610c34565b60405161025d9190612811565b60405180910390f35b610280600480360381019061027b919061219a565b610ca0565b60405161028d91906127aa565b60405180910390f35b6102b060048036038101906102ab9190611f7d565b610d25565b6040516102bd9190612aae565b60405180910390f35b6102ce610ddd565b005b6102d8610e5e565b6040516102e591906127aa565b60405180910390f35b6102f6610e87565b604051610303919061282c565b60405180910390f35b610326600480360381019061032191906120c0565b610ec4565b005b610342600480360381019061033d919061203d565b611030565b005b61035e6004803603810190610359919061219a565b61122b565b60405161036b919061282c565b60405180910390f35b61037c611376565b6040516103899190612aae565b60405180910390f35b6103ac60048036038101906103a7919061219a565b611380565b005b6103c860048036038101906103c39190611faa565b611488565b6040516103d59190612811565b60405180910390f35b6103f860048036038101906103f39190611f7d565b61151c565b005b60006380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104555750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606040518060400160405280601081526020017f43727970746f566974616c4469636b7300000000000000000000000000000000815250905090565b60006104a482610c34565b6104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da9061292e565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bc9061288e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806106855750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6106c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bb906129ae565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600080600154146107895760015461078c565b60005b905090565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506107d282610c34565b610811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610808906128ce565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108a957506004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061093a5750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610979576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109709061298e565b60405180910390fd5b61098484848461160d565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166109a9610e5e565b73ffffffffffffffffffffffffffffffffffffffff16146109ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f6906129ce565b60405180910390fd5b600060149054906101000a900460ff1615600060146101000a81548160ff021916908315150217905550565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610a6c82610c34565b610aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa290612a6e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610b4357506004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610bd45750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0a90612a4e565b60405180910390fd5b610c2e848484604051806020016040528060008152506117e4565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000610cab82610c34565b610cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce19061290e565b60405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8d90612a2e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610dfc610e5e565b73ffffffffffffffffffffffffffffffffffffffff1614610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e49906129ce565b60405180910390fd5b610e5c6000611840565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4449434b00000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a906129ee565b60405180910390fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110249190612811565b60405180910390a35050565b60006002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061107183610c34565b6110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a790612a6e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061114857506004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806111d95750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f90612a4e565b60405180910390fd5b611224858585856117e4565b5050505050565b606061123682610c34565b611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c9061296e565b60405180910390fd5b6000600a83106112fa57606483106112cc576103e8831061129e5761129983611904565b6112c7565b6112a783611904565b6040516020016112b791906126b1565b6040516020818303038152906040525b6112f5565b6112d583611904565b6040516020016112e59190612788565b6040516020818303038152906040525b611323565b61130383611904565b60405160200161131391906126d3565b6040516020818303038152906040525b905061134f818260405160200161133b9291906126f5565b604051602081830303815290604052611a64565b60405160200161135f9190612766565b604051602081830303815290604052915050919050565b6000612710905090565b611388611376565b600154106113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c290612a8e565b60405180910390fd5b6000811180156113dc5750600a8111155b61141b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611412906128ee565b60405180910390fd5b600060149054906101000a900460ff1661147b57600061143a33610d25565b1461147a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114719061294e565b60405180910390fd5b5b6114853382611bfc565b50565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661153b610e5e565b73ffffffffffffffffffffffffffffffffffffffff1614611591576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611588906129ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f89061286e565b60405180910390fd5b61160a81611840565b50565b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16141561167d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167490612a0e565b60405180910390fd5b61168860008261051e565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906116d890612d2d565b9190505550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061172d90612d88565b9190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6117ef84848461160d565b6117fb84848484611d28565b61183a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611831906128ae565b60405180910390fd5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6060600082141561194c576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611a5f565b6000808390505b6000811461197d57818061196690612d88565b925050600a816119769190612bb8565b9050611953565b60008267ffffffffffffffff81111561199957611998612e8f565b5b6040519080825280601f01601f1916602001820160405280156119cb5781602001600182028036833780820191505090505b5090505b60008514611a58576001836119e49190612c43565b9250600a856119f39190612dd1565b60306119ff9190612b62565b60f81b818481518110611a1557611a14612e60565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611a519190612bb8565b94506119cf565b8093505050505b919050565b60606000825190506000811415611a8d5760405180602001604052806000815250915050611bf7565b60006003600283611a9e9190612b62565b611aa89190612bb8565b6004611ab49190612be9565b90506000602082611ac59190612b62565b67ffffffffffffffff811115611ade57611add612e8f565b5b6040519080825280601f01601f191660200182016040528015611b105781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001613778604091399050600181016020830160005b86811015611bb45760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050611b3b565b506003860660018114611bce5760028114611bde57611be9565b613d3d60f01b6002830352611be9565b603d60f81b60018303525b508484525050819450505050505b919050565b60005b81811015611d2357600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508260026000600154815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016000815480929190600101919050558373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48080600101915050611bff565b505050565b600080843b90506000811115611e96578473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b8152600401611d7794939291906127c5565b602060405180830381600087803b158015611d9157600080fd5b505af1925050508015611dc257506040513d601f19601f82011682018060405250810190611dbf919061216d565b60015b611e45573d8060008114611df2576040519150601f19603f3d011682016040523d82523d6000602084013e611df7565b606091505b50600081511415611e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e349061284e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161492505050611e9c565b60019150505b949350505050565b6000611eb7611eb284612aee565b612ac9565b905082815260208101848484011115611ed357611ed2612ec3565b5b611ede848285612ceb565b509392505050565b600081359050611ef58161371b565b92915050565b600081359050611f0a81613732565b92915050565b600081359050611f1f81613749565b92915050565b600081519050611f3481613749565b92915050565b600082601f830112611f4f57611f4e612ebe565b5b8135611f5f848260208601611ea4565b91505092915050565b600081359050611f7781613760565b92915050565b600060208284031215611f9357611f92612ecd565b5b6000611fa184828501611ee6565b91505092915050565b60008060408385031215611fc157611fc0612ecd565b5b6000611fcf85828601611ee6565b9250506020611fe085828601611ee6565b9150509250929050565b60008060006060848603121561200357612002612ecd565b5b600061201186828701611ee6565b935050602061202286828701611ee6565b925050604061203386828701611f68565b9150509250925092565b6000806000806080858703121561205757612056612ecd565b5b600061206587828801611ee6565b945050602061207687828801611ee6565b935050604061208787828801611f68565b925050606085013567ffffffffffffffff8111156120a8576120a7612ec8565b5b6120b487828801611f3a565b91505092959194509250565b600080604083850312156120d7576120d6612ecd565b5b60006120e585828601611ee6565b92505060206120f685828601611efb565b9150509250929050565b6000806040838503121561211757612116612ecd565b5b600061212585828601611ee6565b925050602061213685828601611f68565b9150509250929050565b60006020828403121561215657612155612ecd565b5b600061216484828501611f10565b91505092915050565b60006020828403121561218357612182612ecd565b5b600061219184828501611f25565b91505092915050565b6000602082840312156121b0576121af612ecd565b5b60006121be84828501611f68565b91505092915050565b6121d081612c77565b82525050565b6121df81612c89565b82525050565b60006121f082612b1f565b6121fa8185612b35565b935061220a818560208601612cfa565b61221381612ed2565b840191505092915050565b600061222982612b2a565b6122338185612b46565b9350612243818560208601612cfa565b61224c81612ed2565b840191505092915050565b600061226282612b2a565b61226c8185612b57565b935061227c818560208601612cfa565b80840191505092915050565b6000612295601483612b46565b91506122a082612ee3565b602082019050919050565b60006122b8600183612b57565b91506122c382612f0c565b600182019050919050565b60006122db602683612b46565b91506122e682612f35565b604082019050919050565b60006122fe600283612b57565b915061230982612f84565b600282019050919050565b6000612321602a83612b46565b915061232c82612fad565b604082019050919050565b6000612344603d83612b46565b915061234f82612ffc565b604082019050919050565b6000612367603283612b46565b91506123728261304b565b604082019050919050565b600061238a603883612b46565b91506123958261309a565b604082019050919050565b60006123ad600383612b57565b91506123b8826130e9565b600382019050919050565b60006123d0601a83612b57565b91506123db82613112565b601a82019050919050565b60006123f3602d83612b46565b91506123fe8261313b565b604082019050919050565b6000612416603f83612b57565b91506124218261318a565b603f82019050919050565b6000612439603183612b46565b9150612444826131d9565b604082019050919050565b600061245c604183612b46565b915061246782613228565b606082019050919050565b600061247f602e83612b46565b915061248a8261329d565b604082019050919050565b60006124a2600183612b57565b91506124ad826132ec565b600182019050919050565b60006124c5604783612b46565b91506124d082613315565b606082019050919050565b60006124e8604283612b46565b91506124f38261338a565b606082019050919050565b600061250b602083612b46565b9150612516826133ff565b602082019050919050565b600061252e603e83612b46565b915061253982613428565b604082019050919050565b6000612551603483612b46565b915061255c82613477565b604082019050919050565b6000612574600583612b57565b915061257f826134c6565b600582019050919050565b6000612597600183612b57565b91506125a2826134ef565b600182019050919050565b60006125ba603483612b46565b91506125c582613518565b604082019050919050565b60006125dd603483612b57565b91506125e882613567565b603482019050919050565b6000612600601d83612b57565b915061260b826135b6565b601d82019050919050565b6000612623604b83612b46565b915061262e826135df565b606082019050919050565b6000612646603683612b46565b915061265182613654565b604082019050919050565b6000612669603783612b46565b9150612674826136a3565b604082019050919050565b600061268c600283612b57565b9150612697826136f2565b600282019050919050565b6126ab81612ce1565b82525050565b60006126bc826122ab565b91506126c88284612257565b915081905092915050565b60006126de826123a0565b91506126ea8284612257565b915081905092915050565b60006127008261258a565b915061270b826123c3565b91506127178285612257565b9150612722826122f1565b915061272d826125d0565b915061273882612409565b91506127448284612257565b915061274f82612567565b915061275a82612495565b91508190509392505050565b6000612771826125f3565b915061277d8284612257565b915081905092915050565b60006127938261267f565b915061279f8284612257565b915081905092915050565b60006020820190506127bf60008301846121c7565b92915050565b60006080820190506127da60008301876121c7565b6127e760208301866121c7565b6127f460408301856126a2565b818103606083015261280681846121e5565b905095945050505050565b600060208201905061282660008301846121d6565b92915050565b60006020820190508181036000830152612846818461221e565b905092915050565b6000602082019050818103600083015261286781612288565b9050919050565b60006020820190508181036000830152612887816122ce565b9050919050565b600060208201905081810360008301526128a781612314565b9050919050565b600060208201905081810360008301526128c781612337565b9050919050565b600060208201905081810360008301526128e78161235a565b9050919050565b600060208201905081810360008301526129078161237d565b9050919050565b60006020820190508181036000830152612927816123e6565b9050919050565b600060208201905081810360008301526129478161242c565b9050919050565b600060208201905081810360008301526129678161244f565b9050919050565b6000602082019050818103600083015261298781612472565b9050919050565b600060208201905081810360008301526129a7816124b8565b9050919050565b600060208201905081810360008301526129c7816124db565b9050919050565b600060208201905081810360008301526129e7816124fe565b9050919050565b60006020820190508181036000830152612a0781612521565b9050919050565b60006020820190508181036000830152612a2781612544565b9050919050565b60006020820190508181036000830152612a47816125ad565b9050919050565b60006020820190508181036000830152612a6781612616565b9050919050565b60006020820190508181036000830152612a8781612639565b9050919050565b60006020820190508181036000830152612aa78161265c565b9050919050565b6000602082019050612ac360008301846126a2565b92915050565b6000612ad3612ae4565b9050612adf8282612d57565b919050565b6000604051905090565b600067ffffffffffffffff821115612b0957612b08612e8f565b5b612b1282612ed2565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000612b6d82612ce1565b9150612b7883612ce1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612bad57612bac612e02565b5b828201905092915050565b6000612bc382612ce1565b9150612bce83612ce1565b925082612bde57612bdd612e31565b5b828204905092915050565b6000612bf482612ce1565b9150612bff83612ce1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c3857612c37612e02565b5b828202905092915050565b6000612c4e82612ce1565b9150612c5983612ce1565b925082821015612c6c57612c6b612e02565b5b828203905092915050565b6000612c8282612cc1565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612d18578082015181840152602081019050612cfd565b83811115612d27576000848401525b50505050565b6000612d3882612ce1565b91506000821415612d4c57612d4b612e02565b5b600182039050919050565b612d6082612ed2565b810181811067ffffffffffffffff82111715612d7f57612d7e612e8f565b5b80604052505050565b6000612d9382612ce1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612dc657612dc5612e02565b5b600182019050919050565b6000612ddc82612ce1565b9150612de783612ce1565b925082612df757612df6612e31565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f6572726f72204552433732315265636569766572000000000000000000000000600082015250565b7f3000000000000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f222c000000000000000000000000000000000000000000000000000000000000600082015250565b7f43727970746f566974616c4469636b733a3a617070726f76652829202d20746f60008201527f206973205f6f776e657200000000000000000000000000000000000000000000602082015250565b7f43727970746f566974616c4469636b733a3a5f736166655472616e736665722860008201527f29202d20746f206973206e6f7420455243373231207265636569766572000000602082015250565b7f43727970746f566974616c4469636b733a3a7472616e7366657246726f6d282960008201527f202d20696420646f206e6f742065786973740000000000000000000000000000602082015250565b7f43727970746f566974616c4469636b733a3a6d696e744449434b2829202d207160008201527f75616e74697479206973206f7574206f6620626f756e64730000000000000000602082015250565b7f3030300000000000000000000000000000000000000000000000000000000000600082015250565b7f226e616d65223a2243727970746f566974616c4469636b732023000000000000600082015250565b7f43727970746f566974616c4469636b733a3a6f776e65724f662829202d20696460008201527f20646f206e6f7420657869737400000000000000000000000000000000000000602082015250565b7f22696d616765223a22697066733a2f2f516d623539486f56725458476573527060008201527f6370796e736f3832756a747475365458733964596d35433458594c786a562f00602082015250565b7f43727970746f566974616c4469636b733a3a676574417070726f76656428292060008201527f2d20696420646f206e6f74206578697374000000000000000000000000000000602082015250565b7f43727970746f566974616c4469636b733a3a6d696e744449434b2829202d206d60008201527f73672e73656e6465722061726520616c7265616479206d696e7465642044494360208201527f4b00000000000000000000000000000000000000000000000000000000000000604082015250565b7f43727970746f566974616c4469636b733a3a746f6b656e5552492829202d206960008201527f6420646f206e6f74206578697374000000000000000000000000000000000000602082015250565b7f7d00000000000000000000000000000000000000000000000000000000000000600082015250565b7f43727970746f566974616c4469636b733a3a7472616e7366657246726f6d282960008201527f202d206d73672e73656e646572206973206e6f74205f6f776e6572206f72206160208201527f7070726f76656400000000000000000000000000000000000000000000000000604082015250565b7f43727970746f566974616c4469636b733a3a617070726f76652829202d206d7360008201527f672e73656e646572206973206e6f74205f6f776e6572206f7220617070726f7660208201527f6564000000000000000000000000000000000000000000000000000000000000604082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f43727970746f566974616c4469636b733a3a736574417070726f76616c466f7260008201527f416c6c2829202d206d73672e73656e646572206973206f70657261746f720000602082015250565b7f43727970746f566974616c4469636b733a3a5f7472616e7366657246726f6d2860008201527f29202d20746f2069732061646472657373283029000000000000000000000000602082015250565b7f2e706e6722000000000000000000000000000000000000000000000000000000600082015250565b7f7b00000000000000000000000000000000000000000000000000000000000000600082015250565b7f43727970746f566974616c4469636b733a3a62616c616e63654f662829202d2060008201527f5f6f776e65722069732061646472657373283029000000000000000000000000602082015250565b7f226465736372697074696f6e223a2241524520594f55204c4f4e47204554482060008201527f4c494b4520564954414c494b20414e4f4e3f222c000000000000000000000000602082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f43727970746f566974616c4469636b733a3a736166655472616e73666572467260008201527f6f6d2829202d206d73672e73656e646572206973206e6f74205f6f776e65722060208201527f6f7220617070726f766564000000000000000000000000000000000000000000604082015250565b7f43727970746f566974616c4469636b733a3a736166655472616e73666572467260008201527f6f6d2829202d20696420646f206e6f7420657869737400000000000000000000602082015250565b7f43727970746f566974616c4469636b733a3a6d696e744449434b2829202d207360008201527f7570706c792065786365656473206d6178537570706c79000000000000000000602082015250565b7f3030000000000000000000000000000000000000000000000000000000000000600082015250565b61372481612c77565b811461372f57600080fd5b50565b61373b81612c89565b811461374657600080fd5b50565b61375281612c95565b811461375d57600080fd5b50565b61376981612ce1565b811461377457600080fd5b5056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212205d2c1d491bfc9ca07e577be34f67f183428a356dc99c0728e415a2ee7d019b5964736f6c63430008070033

Deployed Bytecode Sourcemap

269:10229:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1861:159;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;905:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3850:228;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4086:486;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3093:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4938:536;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1208:86;;;:::i;:::-;;5482:556;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2976:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3464:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3209:247;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;510:103:1;;;:::i;:::-;;289:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1014:91:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4580:350;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6046:577;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2028:940;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1113:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1302:551;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3689:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;621:201:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1861:159:0;1934:4;1973:10;1958:25;;:11;:25;;;;:54;;;;2002:10;1987:25;;:11;:25;;;;1958:54;1951:61;;1861:159;;;:::o;905:101::-;947:13;973:25;;;;;;;;;;;;;;;;;;;905:101;:::o;3850:228::-;3909:7;3951:9;3957:2;3951:5;:9::i;:::-;3929:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;4057:9;:13;4067:2;4057:13;;;;;;;;;;;;;;;;;;;;;4050:20;;3850:228;;;:::o;4086:486::-;4150:14;4167:6;:10;4174:2;4167:10;;;;;;;;;;;;;;;;;;;;;4150:27;;4216:6;4210:12;;:2;:12;;;;4188:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;4335:10;4325:20;;:6;:20;;;:74;;;;4362:17;:25;4380:6;4362:25;;;;;;;;;;;;;;;:37;4388:10;4362:37;;;;;;;;;;;;;;;;;;;;;;;;;4325:74;4303:190;;;;;;;;;;;;:::i;:::-;;;;;;;;;4522:2;4506:9;:13;4516:2;4506:13;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;4561:2;4557;4540:24;;4549:6;4540:24;;;;;;;;;;;;4139:433;4086:486;;:::o;3093:108::-;3142:7;3179:1;3169:6;;:11;:24;;3187:6;;3169:24;;;3183:1;3169:24;3162:31;;3093:108;:::o;4938:536::-;5021:14;5038:6;:10;5045:2;5038:10;;;;;;;;;;;;;;;;;;;;;5021:27;;5091:9;5097:2;5091:5;:9::i;:::-;5069:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;5227:6;5213:20;;:10;:20;;;:64;;;;5264:9;:13;5274:2;5264:13;;;;;;;;;;;;;;;;;;;;;5250:27;;:10;:27;;;5213:64;:118;;;;5294:17;:25;5312:6;5294:25;;;;;;;;;;;;;;;:37;5320:10;5294:37;;;;;;;;;;;;;;;;;;;;;;;;;5213:118;5191:239;;;;;;;;;;;;:::i;:::-;;;;;;;;;5443:23;5453:4;5459:2;5463;5443:9;:23::i;:::-;5010:464;4938:536;;;:::o;1208:86::-;435:10:1;424:21;;:7;:5;:7::i;:::-;:21;;;416:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1277:9:0::1;;;;;;;;;;;1276:10;1264:9;;:22;;;;;;;;;;;;;;;;;;1208:86::o:0;5482:556::-;5569:14;5586:6;:10;5593:2;5586:10;;;;;;;;;;;;;;;;;;;;;5569:27;;5639:9;5645:2;5639:5;:9::i;:::-;5617:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;5779:6;5765:20;;:10;:20;;;:64;;;;5816:9;:13;5826:2;5816:13;;;;;;;;;;;;;;;;;;;;;5802:27;;:10;:27;;;5765:64;:118;;;;5846:17;:25;5864:6;5846:25;;;;;;;;;;;;;;;:37;5872:10;5846:37;;;;;;;;;;;;;;;;;;;;;;;;;5765:118;5743:243;;;;;;;;;;;;:::i;:::-;;;;;;;;;5999:31;6013:4;6019:2;6023;5999:31;;;;;;;;;;;;:13;:31::i;:::-;5558:480;5482:556;;;:::o;2976:109::-;3029:4;3075:1;3053:24;;:6;:10;3060:2;3053:10;;;;;;;;;;;;;;;;;;;;;:24;;;;3046:31;;2976:109;;;:::o;3464:217::-;3519:7;3561:9;3567:2;3561:5;:9::i;:::-;3539:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;3663:6;:10;3670:2;3663:10;;;;;;;;;;;;;;;;;;;;;3656:17;;3464:217;;;:::o;3209:247::-;3270:7;3330:1;3312:20;;:6;:20;;;;3290:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;3432:8;:16;3441:6;3432:16;;;;;;;;;;;;;;;;3425:23;;3209:247;;;:::o;510:103:1:-;435:10;424:21;;:7;:5;:7::i;:::-;:21;;;416:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;575:30:::1;602:1;575:18;:30::i;:::-;510:103::o:0;289:87::-;335:7;362:6;;;;;;;;;;;355:13;;289:87;:::o;1014:91:0:-;1058:13;1084;;;;;;;;;;;;;;;;;;;1014:91;:::o;4580:350::-;4697:10;4685:22;;:8;:22;;;;4663:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;4852:8;4810:17;:29;4828:10;4810:29;;;;;;;;;;;;;;;:39;4840:8;4810:39;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;4903:8;4876:46;;4891:10;4876:46;;;4913:8;4876:46;;;;;;:::i;:::-;;;;;;;;4580:350;;:::o;6046:577::-;6152:14;6169:6;:10;6176:2;6169:10;;;;;;;;;;;;;;;;;;;;;6152:27;;6214:9;6220:2;6214:5;:9::i;:::-;6192:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;6362:6;6348:20;;:10;:20;;;:64;;;;6399:9;:13;6409:2;6399:13;;;;;;;;;;;;;;;;;;;;;6385:27;;:10;:27;;;6348:64;:118;;;;6429:17;:25;6447:6;6429:25;;;;;;;;;;;;;;;:37;6455:10;6429:37;;;;;;;;;;;;;;;;;;;;;;;;;6348:118;6326:243;;;;;;;;;;;;:::i;:::-;;;;;;;;;6582:33;6596:4;6602:2;6606;6610:4;6582:13;:33::i;:::-;6141:482;6046:577;;;;:::o;2028:940::-;2084:13;2132:9;2138:2;2132:5;:9::i;:::-;2110:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;2228:19;2270:2;2265;:7;:229;;2342:3;2337:2;:8;:157;;2414:4;2409:2;:9;:85;;2481:13;2491:2;2481:9;:13::i;:::-;2409:85;;;2450:13;2460:2;2450:9;:13::i;:::-;2428:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;2409:85;2337:157;;;2378:13;2388:2;2378:9;:13::i;:::-;2355:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;2337:157;2265:229;;;2306:13;2316:2;2306:9;:13::i;:::-;2282:38;;;;;;;;:::i;:::-;;;;;;;;;;;;;2265:229;2228:277;;2609:339;2719:5;2895;2629:316;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2609:6;:339::i;:::-;2532:427;;;;;;;;:::i;:::-;;;;;;;;;;;;;2518:442;;;2028:940;;;:::o;1113:87::-;1160:7;1187:5;1180:12;;1113:87;:::o;1302:551::-;1392:11;:9;:11::i;:::-;1383:6;;:20;1361:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;1532:1;1521:8;:12;:30;;;;;1549:2;1537:8;:14;;1521:30;1499:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;1653:9;;;;;;;;;;;1648:157;;1711:1;1686:21;1696:10;1686:9;:21::i;:::-;:26;1664:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;1648:157;1818:27;1824:10;1836:8;1818:5;:27::i;:::-;1302:551;:::o;3689:153::-;3775:4;3799:17;:25;3817:6;3799:25;;;;;;;;;;;;;;;:35;3825:8;3799:35;;;;;;;;;;;;;;;;;;;;;;;;;3792:42;;3689:153;;;;:::o;621:201:1:-;435:10;424:21;;:7;:5;:7::i;:::-;:21;;;416:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;730:1:::1;710:22;;:8;:22;;;;702:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;786:28;805:8;786:18;:28::i;:::-;621:201:::0;:::o;6963:369:0:-;7080:2;7066:16;;7074:1;7066:16;;;;7044:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;7175:23;7191:1;7195:2;7175:7;:23::i;:::-;7209:8;:14;7218:4;7209:14;;;;;;;;;;;;;;;;:16;;;;;;;;;:::i;:::-;;;;;;7236:8;:12;7245:2;7236:12;;;;;;;;;;;;;;;;:14;;;;;;;;;:::i;:::-;;;;;;7274:2;7261:6;:10;7268:2;7261:10;;;;;;;;;;;;:15;;;;;;;;;;;;;;;;;;7321:2;7317;7302:22;;7311:4;7302:22;;;;;;;;;;;;6963:369;;;:::o;7340:309::-;7444:23;7454:4;7460:2;7464;7444:9;:23::i;:::-;7510:42;7533:4;7539:2;7543;7547:4;7510:22;:42::i;:::-;7488:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;7340:309;;;;:::o;830:191:1:-;904:16;923:6;;;;;;;;;;;904:25;;949:8;940:6;;:17;;;;;;;;;;;;;;;;;;1004:8;973:40;;994:8;973:40;;;;;;;;;;;;893:128;830:191;:::o;8392:511:0:-;8448:13;8487:1;8478:5;:10;8474:26;;;8490:10;;;;;;;;;;;;;;;;;;;;;8474:26;8513:14;8538:11;8552:5;8538:19;;8570:76;8584:1;8577:3;:8;8570:76;;8602:8;;;;;:::i;:::-;;;;8632:2;8625:9;;;;;:::i;:::-;;;8570:76;;;8658:19;8690:6;8680:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8658:39;;8708:154;8724:1;8715:5;:10;8708:154;;8752:1;8742:11;;;;;:::i;:::-;;;8819:2;8811:5;:10;;;;:::i;:::-;8798:2;:24;;;;:::i;:::-;8785:39;;8768:6;8775;8768:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;8848:2;8839:11;;;;;:::i;:::-;;;8708:154;;;8888:6;8874:21;;;;;8392:511;;;;:::o;8911:1584::-;8969:13;8995:11;9009:4;:11;8995:25;;9042:1;9035:3;:8;9031:23;;;9045:9;;;;;;;;;;;;;;;;;9031:23;9067:18;9105:1;9100;9094:3;:7;;;;:::i;:::-;9093:13;;;;:::i;:::-;9088:1;:19;;;;:::i;:::-;9067:40;;9120:19;9165:2;9152:10;:15;;;;:::i;:::-;9142:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9120:48;;9181:18;:87;;;;;;;;;;;;;;;;;;;9332:1;9325:5;9321:13;9377:2;9369:6;9365:15;9428:1;9396:777;9451:3;9448:1;9445:10;9396:777;;;9506:1;9503;9499:9;9494:14;;9564:8;9559:1;9553:4;9549:12;9543:19;9539:34;9644:4;9636:5;9632:2;9628:14;9624:25;9614:8;9610:40;9604:47;9683:3;9680:1;9676:11;9669:18;;9774:4;9765;9757:5;9753:2;9749:14;9745:25;9735:8;9731:40;9725:47;9721:58;9716:3;9712:68;9705:75;;9812:3;9809:1;9805:11;9798:18;;9902:4;9893;9885:5;9882:1;9878:13;9874:24;9864:8;9860:39;9854:46;9850:57;9845:3;9841:67;9834:74;;9940:3;9937:1;9933:11;9926:18;;10022:4;10013;10006:5;10002:16;9992:8;9988:31;9982:38;9978:49;9973:3;9969:59;9962:66;;10062:3;10057;10053:13;10046:20;;10104:3;10093:9;10086:22;10156:1;10145:9;10141:17;10128:30;;9475:698;;9396:777;;;9400:44;10205:1;10200:3;10196:11;10226:1;10221:84;;;;10324:1;10319:82;;;;10189:212;;10221:84;10282:6;10277:3;10273:16;10269:1;10258:9;10254:17;10247:43;10221:84;;10319:82;10380:4;10375:3;10371:14;10367:1;10356:9;10352:17;10345:41;10189:212;;10432:10;10424:6;10417:26;9290:1164;;10480:6;10466:21;;;;;;8911:1584;;;;:::o;6631:324::-;6700:9;6749:188;6760:8;6756:1;:12;6749:188;;;6789:8;:12;6798:2;6789:12;;;;;;;;;;;;;;;;:14;;;;;;;;;;;;;6839:2;6822:6;:14;6829:6;;6822:14;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;6890:6;;:8;;;;;;;;;;;;6886:2;6865:34;;6882:1;6865:34;;;;;;;;;;;;6918:3;;;;;;;6749:188;;;6689:266;6631:324;;:::o;7657:723::-;7770:4;7787:12;7856:2;7844:15;7836:23;;7893:1;7886:4;:8;7882:490;;;7933:2;7913:40;;;7954:10;7966:4;7972:2;7976:5;7913:69;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7909:437;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8177:1;8160:6;:13;:18;8156:175;;;8180:30;;;;;;;;;;:::i;:::-;;;;;;;;8156:175;8300:6;8294:13;8285:6;8281:2;8277:15;8270:38;7909:437;8043:49;;;8033:59;;;:6;:59;;;;8026:66;;;;;;7882:490;8368:4;8361:11;;;7657:723;;;;;;;:::o;7:410:2:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:139::-;469:5;507:6;494:20;485:29;;523:33;550:5;523:33;:::i;:::-;423:139;;;;:::o;568:133::-;611:5;649:6;636:20;627:29;;665:30;689:5;665:30;:::i;:::-;568:133;;;;:::o;707:137::-;752:5;790:6;777:20;768:29;;806:32;832:5;806:32;:::i;:::-;707:137;;;;:::o;850:141::-;906:5;937:6;931:13;922:22;;953:32;979:5;953:32;:::i;:::-;850:141;;;;:::o;1010:338::-;1065:5;1114:3;1107:4;1099:6;1095:17;1091:27;1081:122;;1122:79;;:::i;:::-;1081:122;1239:6;1226:20;1264:78;1338:3;1330:6;1323:4;1315:6;1311:17;1264:78;:::i;:::-;1255:87;;1071:277;1010:338;;;;:::o;1354:139::-;1400:5;1438:6;1425:20;1416:29;;1454:33;1481:5;1454:33;:::i;:::-;1354:139;;;;:::o;1499:329::-;1558:6;1607:2;1595:9;1586:7;1582:23;1578:32;1575:119;;;1613:79;;:::i;:::-;1575:119;1733:1;1758:53;1803:7;1794:6;1783:9;1779:22;1758:53;:::i;:::-;1748:63;;1704:117;1499:329;;;;:::o;1834:474::-;1902:6;1910;1959:2;1947:9;1938:7;1934:23;1930:32;1927:119;;;1965:79;;:::i;:::-;1927:119;2085:1;2110:53;2155:7;2146:6;2135:9;2131:22;2110:53;:::i;:::-;2100:63;;2056:117;2212:2;2238:53;2283:7;2274:6;2263:9;2259:22;2238:53;:::i;:::-;2228:63;;2183:118;1834:474;;;;;:::o;2314:619::-;2391:6;2399;2407;2456:2;2444:9;2435:7;2431:23;2427:32;2424:119;;;2462:79;;:::i;:::-;2424:119;2582:1;2607:53;2652:7;2643:6;2632:9;2628:22;2607:53;:::i;:::-;2597:63;;2553:117;2709:2;2735:53;2780:7;2771:6;2760:9;2756:22;2735:53;:::i;:::-;2725:63;;2680:118;2837:2;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2808:118;2314:619;;;;;:::o;2939:943::-;3034:6;3042;3050;3058;3107:3;3095:9;3086:7;3082:23;3078:33;3075:120;;;3114:79;;:::i;:::-;3075:120;3234:1;3259:53;3304:7;3295:6;3284:9;3280:22;3259:53;:::i;:::-;3249:63;;3205:117;3361:2;3387:53;3432:7;3423:6;3412:9;3408:22;3387:53;:::i;:::-;3377:63;;3332:118;3489:2;3515:53;3560:7;3551:6;3540:9;3536:22;3515:53;:::i;:::-;3505:63;;3460:118;3645:2;3634:9;3630:18;3617:32;3676:18;3668:6;3665:30;3662:117;;;3698:79;;:::i;:::-;3662:117;3803:62;3857:7;3848:6;3837:9;3833:22;3803:62;:::i;:::-;3793:72;;3588:287;2939:943;;;;;;;:::o;3888:468::-;3953:6;3961;4010:2;3998:9;3989:7;3985:23;3981:32;3978:119;;;4016:79;;:::i;:::-;3978:119;4136:1;4161:53;4206:7;4197:6;4186:9;4182:22;4161:53;:::i;:::-;4151:63;;4107:117;4263:2;4289:50;4331:7;4322:6;4311:9;4307:22;4289:50;:::i;:::-;4279:60;;4234:115;3888:468;;;;;:::o;4362:474::-;4430:6;4438;4487:2;4475:9;4466:7;4462:23;4458:32;4455:119;;;4493:79;;:::i;:::-;4455:119;4613:1;4638:53;4683:7;4674:6;4663:9;4659:22;4638:53;:::i;:::-;4628:63;;4584:117;4740:2;4766:53;4811:7;4802:6;4791:9;4787:22;4766:53;:::i;:::-;4756:63;;4711:118;4362:474;;;;;:::o;4842:327::-;4900:6;4949:2;4937:9;4928:7;4924:23;4920:32;4917:119;;;4955:79;;:::i;:::-;4917:119;5075:1;5100:52;5144:7;5135:6;5124:9;5120:22;5100:52;:::i;:::-;5090:62;;5046:116;4842:327;;;;:::o;5175:349::-;5244:6;5293:2;5281:9;5272:7;5268:23;5264:32;5261:119;;;5299:79;;:::i;:::-;5261:119;5419:1;5444:63;5499:7;5490:6;5479:9;5475:22;5444:63;:::i;:::-;5434:73;;5390:127;5175:349;;;;:::o;5530:329::-;5589:6;5638:2;5626:9;5617:7;5613:23;5609:32;5606:119;;;5644:79;;:::i;:::-;5606:119;5764:1;5789:53;5834:7;5825:6;5814:9;5810:22;5789:53;:::i;:::-;5779:63;;5735:117;5530:329;;;;:::o;5865:118::-;5952:24;5970:5;5952:24;:::i;:::-;5947:3;5940:37;5865:118;;:::o;5989:109::-;6070:21;6085:5;6070:21;:::i;:::-;6065:3;6058:34;5989:109;;:::o;6104:360::-;6190:3;6218:38;6250:5;6218:38;:::i;:::-;6272:70;6335:6;6330:3;6272:70;:::i;:::-;6265:77;;6351:52;6396:6;6391:3;6384:4;6377:5;6373:16;6351:52;:::i;:::-;6428:29;6450:6;6428:29;:::i;:::-;6423:3;6419:39;6412:46;;6194:270;6104:360;;;;:::o;6470:364::-;6558:3;6586:39;6619:5;6586:39;:::i;:::-;6641:71;6705:6;6700:3;6641:71;:::i;:::-;6634:78;;6721:52;6766:6;6761:3;6754:4;6747:5;6743:16;6721:52;:::i;:::-;6798:29;6820:6;6798:29;:::i;:::-;6793:3;6789:39;6782:46;;6562:272;6470:364;;;;:::o;6840:377::-;6946:3;6974:39;7007:5;6974:39;:::i;:::-;7029:89;7111:6;7106:3;7029:89;:::i;:::-;7022:96;;7127:52;7172:6;7167:3;7160:4;7153:5;7149:16;7127:52;:::i;:::-;7204:6;7199:3;7195:16;7188:23;;6950:267;6840:377;;;;:::o;7223:366::-;7365:3;7386:67;7450:2;7445:3;7386:67;:::i;:::-;7379:74;;7462:93;7551:3;7462:93;:::i;:::-;7580:2;7575:3;7571:12;7564:19;;7223:366;;;:::o;7595:400::-;7755:3;7776:84;7858:1;7853:3;7776:84;:::i;:::-;7769:91;;7869:93;7958:3;7869:93;:::i;:::-;7987:1;7982:3;7978:11;7971:18;;7595:400;;;:::o;8001:366::-;8143:3;8164:67;8228:2;8223:3;8164:67;:::i;:::-;8157:74;;8240:93;8329:3;8240:93;:::i;:::-;8358:2;8353:3;8349:12;8342:19;;8001:366;;;:::o;8373:400::-;8533:3;8554:84;8636:1;8631:3;8554:84;:::i;:::-;8547:91;;8647:93;8736:3;8647:93;:::i;:::-;8765:1;8760:3;8756:11;8749:18;;8373:400;;;:::o;8779:366::-;8921:3;8942:67;9006:2;9001:3;8942:67;:::i;:::-;8935:74;;9018:93;9107:3;9018:93;:::i;:::-;9136:2;9131:3;9127:12;9120:19;;8779:366;;;:::o;9151:::-;9293:3;9314:67;9378:2;9373:3;9314:67;:::i;:::-;9307:74;;9390:93;9479:3;9390:93;:::i;:::-;9508:2;9503:3;9499:12;9492:19;;9151:366;;;:::o;9523:::-;9665:3;9686:67;9750:2;9745:3;9686:67;:::i;:::-;9679:74;;9762:93;9851:3;9762:93;:::i;:::-;9880:2;9875:3;9871:12;9864:19;;9523:366;;;:::o;9895:::-;10037:3;10058:67;10122:2;10117:3;10058:67;:::i;:::-;10051:74;;10134:93;10223:3;10134:93;:::i;:::-;10252:2;10247:3;10243:12;10236:19;;9895:366;;;:::o;10267:400::-;10427:3;10448:84;10530:1;10525:3;10448:84;:::i;:::-;10441:91;;10541:93;10630:3;10541:93;:::i;:::-;10659:1;10654:3;10650:11;10643:18;;10267:400;;;:::o;10673:402::-;10833:3;10854:85;10936:2;10931:3;10854:85;:::i;:::-;10847:92;;10948:93;11037:3;10948:93;:::i;:::-;11066:2;11061:3;11057:12;11050:19;;10673:402;;;:::o;11081:366::-;11223:3;11244:67;11308:2;11303:3;11244:67;:::i;:::-;11237:74;;11320:93;11409:3;11320:93;:::i;:::-;11438:2;11433:3;11429:12;11422:19;;11081:366;;;:::o;11453:402::-;11613:3;11634:85;11716:2;11711:3;11634:85;:::i;:::-;11627:92;;11728:93;11817:3;11728:93;:::i;:::-;11846:2;11841:3;11837:12;11830:19;;11453:402;;;:::o;11861:366::-;12003:3;12024:67;12088:2;12083:3;12024:67;:::i;:::-;12017:74;;12100:93;12189:3;12100:93;:::i;:::-;12218:2;12213:3;12209:12;12202:19;;11861:366;;;:::o;12233:::-;12375:3;12396:67;12460:2;12455:3;12396:67;:::i;:::-;12389:74;;12472:93;12561:3;12472:93;:::i;:::-;12590:2;12585:3;12581:12;12574:19;;12233:366;;;:::o;12605:::-;12747:3;12768:67;12832:2;12827:3;12768:67;:::i;:::-;12761:74;;12844:93;12933:3;12844:93;:::i;:::-;12962:2;12957:3;12953:12;12946:19;;12605:366;;;:::o;12977:400::-;13137:3;13158:84;13240:1;13235:3;13158:84;:::i;:::-;13151:91;;13251:93;13340:3;13251:93;:::i;:::-;13369:1;13364:3;13360:11;13353:18;;12977:400;;;:::o;13383:366::-;13525:3;13546:67;13610:2;13605:3;13546:67;:::i;:::-;13539:74;;13622:93;13711:3;13622:93;:::i;:::-;13740:2;13735:3;13731:12;13724:19;;13383:366;;;:::o;13755:::-;13897:3;13918:67;13982:2;13977:3;13918:67;:::i;:::-;13911:74;;13994:93;14083:3;13994:93;:::i;:::-;14112:2;14107:3;14103:12;14096:19;;13755:366;;;:::o;14127:::-;14269:3;14290:67;14354:2;14349:3;14290:67;:::i;:::-;14283:74;;14366:93;14455:3;14366:93;:::i;:::-;14484:2;14479:3;14475:12;14468:19;;14127:366;;;:::o;14499:::-;14641:3;14662:67;14726:2;14721:3;14662:67;:::i;:::-;14655:74;;14738:93;14827:3;14738:93;:::i;:::-;14856:2;14851:3;14847:12;14840:19;;14499:366;;;:::o;14871:::-;15013:3;15034:67;15098:2;15093:3;15034:67;:::i;:::-;15027:74;;15110:93;15199:3;15110:93;:::i;:::-;15228:2;15223:3;15219:12;15212:19;;14871:366;;;:::o;15243:400::-;15403:3;15424:84;15506:1;15501:3;15424:84;:::i;:::-;15417:91;;15517:93;15606:3;15517:93;:::i;:::-;15635:1;15630:3;15626:11;15619:18;;15243:400;;;:::o;15649:::-;15809:3;15830:84;15912:1;15907:3;15830:84;:::i;:::-;15823:91;;15923:93;16012:3;15923:93;:::i;:::-;16041:1;16036:3;16032:11;16025:18;;15649:400;;;:::o;16055:366::-;16197:3;16218:67;16282:2;16277:3;16218:67;:::i;:::-;16211:74;;16294:93;16383:3;16294:93;:::i;:::-;16412:2;16407:3;16403:12;16396:19;;16055:366;;;:::o;16427:402::-;16587:3;16608:85;16690:2;16685:3;16608:85;:::i;:::-;16601:92;;16702:93;16791:3;16702:93;:::i;:::-;16820:2;16815:3;16811:12;16804:19;;16427:402;;;:::o;16835:::-;16995:3;17016:85;17098:2;17093:3;17016:85;:::i;:::-;17009:92;;17110:93;17199:3;17110:93;:::i;:::-;17228:2;17223:3;17219:12;17212:19;;16835:402;;;:::o;17243:366::-;17385:3;17406:67;17470:2;17465:3;17406:67;:::i;:::-;17399:74;;17482:93;17571:3;17482:93;:::i;:::-;17600:2;17595:3;17591:12;17584:19;;17243:366;;;:::o;17615:::-;17757:3;17778:67;17842:2;17837:3;17778:67;:::i;:::-;17771:74;;17854:93;17943:3;17854:93;:::i;:::-;17972:2;17967:3;17963:12;17956:19;;17615:366;;;:::o;17987:::-;18129:3;18150:67;18214:2;18209:3;18150:67;:::i;:::-;18143:74;;18226:93;18315:3;18226:93;:::i;:::-;18344:2;18339:3;18335:12;18328:19;;17987:366;;;:::o;18359:400::-;18519:3;18540:84;18622:1;18617:3;18540:84;:::i;:::-;18533:91;;18633:93;18722:3;18633:93;:::i;:::-;18751:1;18746:3;18742:11;18735:18;;18359:400;;;:::o;18765:118::-;18852:24;18870:5;18852:24;:::i;:::-;18847:3;18840:37;18765:118;;:::o;18889:541::-;19122:3;19144:148;19288:3;19144:148;:::i;:::-;19137:155;;19309:95;19400:3;19391:6;19309:95;:::i;:::-;19302:102;;19421:3;19414:10;;18889:541;;;;:::o;19436:::-;19669:3;19691:148;19835:3;19691:148;:::i;:::-;19684:155;;19856:95;19947:3;19938:6;19856:95;:::i;:::-;19849:102;;19968:3;19961:10;;19436:541;;;;:::o;19983:2297::-;20870:3;20892:148;21036:3;20892:148;:::i;:::-;20885:155;;21057:148;21201:3;21057:148;:::i;:::-;21050:155;;21222:95;21313:3;21304:6;21222:95;:::i;:::-;21215:102;;21334:148;21478:3;21334:148;:::i;:::-;21327:155;;21499:148;21643:3;21499:148;:::i;:::-;21492:155;;21664:148;21808:3;21664:148;:::i;:::-;21657:155;;21829:95;21920:3;21911:6;21829:95;:::i;:::-;21822:102;;21941:148;22085:3;21941:148;:::i;:::-;21934:155;;22106:148;22250:3;22106:148;:::i;:::-;22099:155;;22271:3;22264:10;;19983:2297;;;;;:::o;22286:541::-;22519:3;22541:148;22685:3;22541:148;:::i;:::-;22534:155;;22706:95;22797:3;22788:6;22706:95;:::i;:::-;22699:102;;22818:3;22811:10;;22286:541;;;;:::o;22833:::-;23066:3;23088:148;23232:3;23088:148;:::i;:::-;23081:155;;23253:95;23344:3;23335:6;23253:95;:::i;:::-;23246:102;;23365:3;23358:10;;22833:541;;;;:::o;23380:222::-;23473:4;23511:2;23500:9;23496:18;23488:26;;23524:71;23592:1;23581:9;23577:17;23568:6;23524:71;:::i;:::-;23380:222;;;;:::o;23608:640::-;23803:4;23841:3;23830:9;23826:19;23818:27;;23855:71;23923:1;23912:9;23908:17;23899:6;23855:71;:::i;:::-;23936:72;24004:2;23993:9;23989:18;23980:6;23936:72;:::i;:::-;24018;24086:2;24075:9;24071:18;24062:6;24018:72;:::i;:::-;24137:9;24131:4;24127:20;24122:2;24111:9;24107:18;24100:48;24165:76;24236:4;24227:6;24165:76;:::i;:::-;24157:84;;23608:640;;;;;;;:::o;24254:210::-;24341:4;24379:2;24368:9;24364:18;24356:26;;24392:65;24454:1;24443:9;24439:17;24430:6;24392:65;:::i;:::-;24254:210;;;;:::o;24470:313::-;24583:4;24621:2;24610:9;24606:18;24598:26;;24670:9;24664:4;24660:20;24656:1;24645:9;24641:17;24634:47;24698:78;24771:4;24762:6;24698:78;:::i;:::-;24690:86;;24470:313;;;;:::o;24789:419::-;24955:4;24993:2;24982:9;24978:18;24970:26;;25042:9;25036:4;25032:20;25028:1;25017:9;25013:17;25006:47;25070:131;25196:4;25070:131;:::i;:::-;25062:139;;24789:419;;;:::o;25214:::-;25380:4;25418:2;25407:9;25403:18;25395:26;;25467:9;25461:4;25457:20;25453:1;25442:9;25438:17;25431:47;25495:131;25621:4;25495:131;:::i;:::-;25487:139;;25214:419;;;:::o;25639:::-;25805:4;25843:2;25832:9;25828:18;25820:26;;25892:9;25886:4;25882:20;25878:1;25867:9;25863:17;25856:47;25920:131;26046:4;25920:131;:::i;:::-;25912:139;;25639:419;;;:::o;26064:::-;26230:4;26268:2;26257:9;26253:18;26245:26;;26317:9;26311:4;26307:20;26303:1;26292:9;26288:17;26281:47;26345:131;26471:4;26345:131;:::i;:::-;26337:139;;26064:419;;;:::o;26489:::-;26655:4;26693:2;26682:9;26678:18;26670:26;;26742:9;26736:4;26732:20;26728:1;26717:9;26713:17;26706:47;26770:131;26896:4;26770:131;:::i;:::-;26762:139;;26489:419;;;:::o;26914:::-;27080:4;27118:2;27107:9;27103:18;27095:26;;27167:9;27161:4;27157:20;27153:1;27142:9;27138:17;27131:47;27195:131;27321:4;27195:131;:::i;:::-;27187:139;;26914:419;;;:::o;27339:::-;27505:4;27543:2;27532:9;27528:18;27520:26;;27592:9;27586:4;27582:20;27578:1;27567:9;27563:17;27556:47;27620:131;27746:4;27620:131;:::i;:::-;27612:139;;27339:419;;;:::o;27764:::-;27930:4;27968:2;27957:9;27953:18;27945:26;;28017:9;28011:4;28007:20;28003:1;27992:9;27988:17;27981:47;28045:131;28171:4;28045:131;:::i;:::-;28037:139;;27764:419;;;:::o;28189:::-;28355:4;28393:2;28382:9;28378:18;28370:26;;28442:9;28436:4;28432:20;28428:1;28417:9;28413:17;28406:47;28470:131;28596:4;28470:131;:::i;:::-;28462:139;;28189:419;;;:::o;28614:::-;28780:4;28818:2;28807:9;28803:18;28795:26;;28867:9;28861:4;28857:20;28853:1;28842:9;28838:17;28831:47;28895:131;29021:4;28895:131;:::i;:::-;28887:139;;28614:419;;;:::o;29039:::-;29205:4;29243:2;29232:9;29228:18;29220:26;;29292:9;29286:4;29282:20;29278:1;29267:9;29263:17;29256:47;29320:131;29446:4;29320:131;:::i;:::-;29312:139;;29039:419;;;:::o;29464:::-;29630:4;29668:2;29657:9;29653:18;29645:26;;29717:9;29711:4;29707:20;29703:1;29692:9;29688:17;29681:47;29745:131;29871:4;29745:131;:::i;:::-;29737:139;;29464:419;;;:::o;29889:::-;30055:4;30093:2;30082:9;30078:18;30070:26;;30142:9;30136:4;30132:20;30128:1;30117:9;30113:17;30106:47;30170:131;30296:4;30170:131;:::i;:::-;30162:139;;29889:419;;;:::o;30314:::-;30480:4;30518:2;30507:9;30503:18;30495:26;;30567:9;30561:4;30557:20;30553:1;30542:9;30538:17;30531:47;30595:131;30721:4;30595:131;:::i;:::-;30587:139;;30314:419;;;:::o;30739:::-;30905:4;30943:2;30932:9;30928:18;30920:26;;30992:9;30986:4;30982:20;30978:1;30967:9;30963:17;30956:47;31020:131;31146:4;31020:131;:::i;:::-;31012:139;;30739:419;;;:::o;31164:::-;31330:4;31368:2;31357:9;31353:18;31345:26;;31417:9;31411:4;31407:20;31403:1;31392:9;31388:17;31381:47;31445:131;31571:4;31445:131;:::i;:::-;31437:139;;31164:419;;;:::o;31589:::-;31755:4;31793:2;31782:9;31778:18;31770:26;;31842:9;31836:4;31832:20;31828:1;31817:9;31813:17;31806:47;31870:131;31996:4;31870:131;:::i;:::-;31862:139;;31589:419;;;:::o;32014:::-;32180:4;32218:2;32207:9;32203:18;32195:26;;32267:9;32261:4;32257:20;32253:1;32242:9;32238:17;32231:47;32295:131;32421:4;32295:131;:::i;:::-;32287:139;;32014:419;;;:::o;32439:::-;32605:4;32643:2;32632:9;32628:18;32620:26;;32692:9;32686:4;32682:20;32678:1;32667:9;32663:17;32656:47;32720:131;32846:4;32720:131;:::i;:::-;32712:139;;32439:419;;;:::o;32864:222::-;32957:4;32995:2;32984:9;32980:18;32972:26;;33008:71;33076:1;33065:9;33061:17;33052:6;33008:71;:::i;:::-;32864:222;;;;:::o;33092:129::-;33126:6;33153:20;;:::i;:::-;33143:30;;33182:33;33210:4;33202:6;33182:33;:::i;:::-;33092:129;;;:::o;33227:75::-;33260:6;33293:2;33287:9;33277:19;;33227:75;:::o;33308:307::-;33369:4;33459:18;33451:6;33448:30;33445:56;;;33481:18;;:::i;:::-;33445:56;33519:29;33541:6;33519:29;:::i;:::-;33511:37;;33603:4;33597;33593:15;33585:23;;33308:307;;;:::o;33621:98::-;33672:6;33706:5;33700:12;33690:22;;33621:98;;;:::o;33725:99::-;33777:6;33811:5;33805:12;33795:22;;33725:99;;;:::o;33830:168::-;33913:11;33947:6;33942:3;33935:19;33987:4;33982:3;33978:14;33963:29;;33830:168;;;;:::o;34004:169::-;34088:11;34122:6;34117:3;34110:19;34162:4;34157:3;34153:14;34138:29;;34004:169;;;;:::o;34179:148::-;34281:11;34318:3;34303:18;;34179:148;;;;:::o;34333:305::-;34373:3;34392:20;34410:1;34392:20;:::i;:::-;34387:25;;34426:20;34444:1;34426:20;:::i;:::-;34421:25;;34580:1;34512:66;34508:74;34505:1;34502:81;34499:107;;;34586:18;;:::i;:::-;34499:107;34630:1;34627;34623:9;34616:16;;34333:305;;;;:::o;34644:185::-;34684:1;34701:20;34719:1;34701:20;:::i;:::-;34696:25;;34735:20;34753:1;34735:20;:::i;:::-;34730:25;;34774:1;34764:35;;34779:18;;:::i;:::-;34764:35;34821:1;34818;34814:9;34809:14;;34644:185;;;;:::o;34835:348::-;34875:7;34898:20;34916:1;34898:20;:::i;:::-;34893:25;;34932:20;34950:1;34932:20;:::i;:::-;34927:25;;35120:1;35052:66;35048:74;35045:1;35042:81;35037:1;35030:9;35023:17;35019:105;35016:131;;;35127:18;;:::i;:::-;35016:131;35175:1;35172;35168:9;35157:20;;34835:348;;;;:::o;35189:191::-;35229:4;35249:20;35267:1;35249:20;:::i;:::-;35244:25;;35283:20;35301:1;35283:20;:::i;:::-;35278:25;;35322:1;35319;35316:8;35313:34;;;35327:18;;:::i;:::-;35313:34;35372:1;35369;35365:9;35357:17;;35189:191;;;;:::o;35386:96::-;35423:7;35452:24;35470:5;35452:24;:::i;:::-;35441:35;;35386:96;;;:::o;35488:90::-;35522:7;35565:5;35558:13;35551:21;35540:32;;35488:90;;;:::o;35584:149::-;35620:7;35660:66;35653:5;35649:78;35638:89;;35584:149;;;:::o;35739:126::-;35776:7;35816:42;35809:5;35805:54;35794:65;;35739:126;;;:::o;35871:77::-;35908:7;35937:5;35926:16;;35871:77;;;:::o;35954:154::-;36038:6;36033:3;36028;36015:30;36100:1;36091:6;36086:3;36082:16;36075:27;35954:154;;;:::o;36114:307::-;36182:1;36192:113;36206:6;36203:1;36200:13;36192:113;;;36291:1;36286:3;36282:11;36276:18;36272:1;36267:3;36263:11;36256:39;36228:2;36225:1;36221:10;36216:15;;36192:113;;;36323:6;36320:1;36317:13;36314:101;;;36403:1;36394:6;36389:3;36385:16;36378:27;36314:101;36163:258;36114:307;;;:::o;36427:171::-;36466:3;36489:24;36507:5;36489:24;:::i;:::-;36480:33;;36535:4;36528:5;36525:15;36522:41;;;36543:18;;:::i;:::-;36522:41;36590:1;36583:5;36579:13;36572:20;;36427:171;;;:::o;36604:281::-;36687:27;36709:4;36687:27;:::i;:::-;36679:6;36675:40;36817:6;36805:10;36802:22;36781:18;36769:10;36766:34;36763:62;36760:88;;;36828:18;;:::i;:::-;36760:88;36868:10;36864:2;36857:22;36647:238;36604:281;;:::o;36891:233::-;36930:3;36953:24;36971:5;36953:24;:::i;:::-;36944:33;;36999:66;36992:5;36989:77;36986:103;;;37069:18;;:::i;:::-;36986:103;37116:1;37109:5;37105:13;37098:20;;36891:233;;;:::o;37130:176::-;37162:1;37179:20;37197:1;37179:20;:::i;:::-;37174:25;;37213:20;37231:1;37213:20;:::i;:::-;37208:25;;37252:1;37242:35;;37257:18;;:::i;:::-;37242:35;37298:1;37295;37291:9;37286:14;;37130:176;;;;:::o;37312:180::-;37360:77;37357:1;37350:88;37457:4;37454:1;37447:15;37481:4;37478:1;37471:15;37498:180;37546:77;37543:1;37536:88;37643:4;37640:1;37633:15;37667:4;37664:1;37657:15;37684:180;37732:77;37729:1;37722:88;37829:4;37826:1;37819:15;37853:4;37850:1;37843:15;37870:180;37918:77;37915:1;37908:88;38015:4;38012:1;38005:15;38039:4;38036:1;38029:15;38056:117;38165:1;38162;38155:12;38179:117;38288:1;38285;38278:12;38302:117;38411:1;38408;38401:12;38425:117;38534:1;38531;38524:12;38548:102;38589:6;38640:2;38636:7;38631:2;38624:5;38620:14;38616:28;38606:38;;38548:102;;;:::o;38656:170::-;38796:22;38792:1;38784:6;38780:14;38773:46;38656:170;:::o;38832:151::-;38972:3;38968:1;38960:6;38956:14;38949:27;38832:151;:::o;38989:225::-;39129:34;39125:1;39117:6;39113:14;39106:58;39198:8;39193:2;39185:6;39181:15;39174:33;38989:225;:::o;39220:214::-;39360:66;39356:1;39348:6;39344:14;39337:90;39220:214;:::o;39440:229::-;39580:34;39576:1;39568:6;39564:14;39557:58;39649:12;39644:2;39636:6;39632:15;39625:37;39440:229;:::o;39675:248::-;39815:34;39811:1;39803:6;39799:14;39792:58;39884:31;39879:2;39871:6;39867:15;39860:56;39675:248;:::o;39929:237::-;40069:34;40065:1;40057:6;40053:14;40046:58;40138:20;40133:2;40125:6;40121:15;40114:45;39929:237;:::o;40172:243::-;40312:34;40308:1;40300:6;40296:14;40289:58;40381:26;40376:2;40368:6;40364:15;40357:51;40172:243;:::o;40421:153::-;40561:5;40557:1;40549:6;40545:14;40538:29;40421:153;:::o;40580:214::-;40720:66;40716:1;40708:6;40704:14;40697:90;40580:214;:::o;40800:232::-;40940:34;40936:1;40928:6;40924:14;40917:58;41009:15;41004:2;40996:6;40992:15;40985:40;40800:232;:::o;41038:282::-;41178:66;41174:1;41166:6;41162:14;41155:90;41279:33;41274:2;41266:6;41262:15;41255:58;41038:282;:::o;41326:236::-;41466:34;41462:1;41454:6;41450:14;41443:58;41535:19;41530:2;41522:6;41518:15;41511:44;41326:236;:::o;41568:289::-;41708:34;41704:1;41696:6;41692:14;41685:58;41777:34;41772:2;41764:6;41760:15;41753:59;41846:3;41841:2;41833:6;41829:15;41822:28;41568:289;:::o;41863:233::-;42003:34;41999:1;41991:6;41987:14;41980:58;42072:16;42067:2;42059:6;42055:15;42048:41;41863:233;:::o;42102:143::-;42238:3;42234:1;42226:6;42222:14;42215:27;42102:143;:::o;42247:279::-;42383:34;42379:1;42371:6;42367:14;42360:58;42448:34;42443:2;42435:6;42431:15;42424:59;42513:9;42508:2;42500:6;42496:15;42489:34;42247:279;:::o;42528:274::-;42664:34;42660:1;42652:6;42648:14;42641:58;42729:34;42724:2;42716:6;42712:15;42705:59;42794:4;42789:2;42781:6;42777:15;42770:29;42528:274;:::o;42804:174::-;42940:34;42936:1;42928:6;42924:14;42917:58;42804:174;:::o;42980:237::-;43116:34;43112:1;43104:6;43100:14;43093:58;43181:32;43176:2;43168:6;43164:15;43157:57;42980:237;:::o;43219:227::-;43355:34;43351:1;43343:6;43339:14;43332:58;43420:22;43415:2;43407:6;43403:15;43396:47;43219:227;:::o;43448:206::-;43584:66;43580:1;43572:6;43568:14;43561:90;43448:206;:::o;43656:147::-;43792:3;43788:1;43780:6;43776:14;43769:27;43656:147;:::o;43809:239::-;43949:34;43945:1;43937:6;43933:14;43926:58;44018:22;44013:2;44005:6;44001:15;43994:47;43809:239;:::o;44054:315::-;44194:66;44190:1;44182:6;44178:14;44171:90;44295:66;44290:2;44282:6;44278:15;44271:91;44054:315;:::o;44375:179::-;44515:31;44511:1;44503:6;44499:14;44492:55;44375:179;:::o;44560:299::-;44700:34;44696:1;44688:6;44684:14;44677:58;44769:34;44764:2;44756:6;44752:15;44745:59;44838:13;44833:2;44825:6;44821:15;44814:38;44560:299;:::o;44865:241::-;45005:34;45001:1;44993:6;44989:14;44982:58;45074:24;45069:2;45061:6;45057:15;45050:49;44865:241;:::o;45112:242::-;45252:34;45248:1;45240:6;45236:14;45229:58;45321:25;45316:2;45308:6;45304:15;45297:50;45112:242;:::o;45360:152::-;45500:4;45496:1;45488:6;45484:14;45477:28;45360:152;:::o;45518:122::-;45591:24;45609:5;45591:24;:::i;:::-;45584:5;45581:35;45571:63;;45630:1;45627;45620:12;45571:63;45518:122;:::o;45646:116::-;45716:21;45731:5;45716:21;:::i;:::-;45709:5;45706:32;45696:60;;45752:1;45749;45742:12;45696:60;45646:116;:::o;45768:120::-;45840:23;45857:5;45840:23;:::i;:::-;45833:5;45830:34;45820:62;;45878:1;45875;45868:12;45820:62;45768:120;:::o;45894:122::-;45967:24;45985:5;45967:24;:::i;:::-;45960:5;45957:35;45947:63;;46006:1;46003;45996:12;45947:63;45894:122;:::o

Swarm Source

ipfs://5d2c1d491bfc9ca07e577be34f67f183428a356dc99c0728e415a2ee7d019b59
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

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