ETH Price: $2,280.44 (+1.63%)

Token

The Choice (THECHOICE)
 

Overview

Max Total Supply

78 THECHOICE

Holders

75

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
0x8dD7fb51dA4AE66990ce3C26FD8bB576A41c7b41
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:
TheChoice

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-29
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;

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

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

    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

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

abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _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);
    }
}

abstract contract Pausable is Context {

    event Paused(address account);

    event Unpaused(address account);

    bool private _paused;

    constructor() {
        _paused = false;
    }

    function paused() public view virtual returns (bool) {
        return _paused;
    }
    
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

interface IERC1155Receiver is IERC165 {
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);

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

interface IERC1155 is IERC165 {
   
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

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

    event URI(string value, uint256 indexed id);

    function balanceOf(address account, uint256 id) external view returns (uint256);

    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);

    function setApprovalForAll(address operator, bool approved) external;

    function isApprovedForAll(address account, address operator) external view returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

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

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

    mapping(uint256 => mapping(address => uint256)) private _balances;

    mapping(address => mapping(address => bool)) private _operatorApprovals;

    string private _uri;

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

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

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

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

    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
        public
        view
        virtual
        override
        returns (uint256[] memory)
    {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

        uint256[] memory batchBalances = new uint256[](accounts.length);

        for (uint256 i = 0; i < accounts.length; ++i) {
            batchBalances[i] = balanceOf(accounts[i], ids[i]);
        }

        return batchBalances;
    }

    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

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

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

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: transfer caller is not owner nor approved"
        );
        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }

    function _safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);

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

        emit TransferSingle(operator, from, to, id, amount);

        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
    }

    function _safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; ++i) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

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

        emit TransferBatch(operator, from, to, ids, amounts);

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

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

    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data);

        _balances[id][to] += amount;
        emit TransferSingle(operator, address(0), to, id, amount);

        _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);
    }

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

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);

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

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

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

    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }

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

    function _burnBatch(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, address(0), ids, amounts, "");

        for (uint256 i = 0; i < ids.length; i++) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
        }

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

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

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

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

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

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

        return array;
    }
}

abstract contract ERC1155Pausable is ERC1155, Pausable {
    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual override {
        super._beforeTokenTransfer(operator, from, to, ids, amounts, data);

        require(!paused(), "ERC1155Pausable: token transfer while paused");
    }
}

contract TheChoice is ERC1155Pausable, Ownable, ReentrancyGuard {
    using SafeMath for uint256;

    uint256 public _tokenIds;

    string public constant name = "The Choice";
    string public constant symbol = "THECHOICE";

    bytes32 public mintWhitelistMerkleRoot;
    address payable public platformAddress;

    uint256 public  whiteListStartSaleTime;
    uint256 public  whiteList_mint_price;

    uint256 public  openStartSaleTime;
    uint256 public  open_mint_price;

    uint256 public  mint_counter = 1;
    uint256 public  onceMaxMintTotal;
    uint256 public  onceMintedTotal ;

    uint256 public  constant TOTALSUPPLY = 5000;
    uint256 public  constant WHITELIST_MINT_TIME = 4 hours;//6
    uint256 public  constant OPEN_MINT_TIME = 48 hours;//48

    mapping(address =>mapping(uint256 => uint256)) public _whiteListMinted;
    mapping(address =>mapping(uint256 => uint256)) public _openlistMinted;

    constructor(
        address _platformAddress,
        bytes32 _root,
        uint256 _whiteListStartSaleTime,
        uint256 _openStartSaleTime,
        uint256 _onceMaxMintTotal,
        uint256 _whiteList_mint_price,
        uint256 _open_mint_price,
        string memory _newURI
    ) ERC1155(_newURI) {
        platformAddress = payable(_platformAddress);
        mintWhitelistMerkleRoot = _root;
        whiteListStartSaleTime = _whiteListStartSaleTime;
        openStartSaleTime = _openStartSaleTime;
        onceMaxMintTotal = _onceMaxMintTotal;
        whiteList_mint_price = _whiteList_mint_price;
        open_mint_price = _open_mint_price;
    }

    function setSaleInfo( 
        bytes32 _root,
        uint256 _whiteListStartSaleTime,
        uint256 _openStartSaleTime,
        uint256 _onceMaxMintTotal,
        uint256 _whiteList_mint_price,
        uint256 _open_mint_price
    )
        external
        onlyOwner
        returns (bool)
    {
        mintWhitelistMerkleRoot = _root;
        whiteListStartSaleTime = _whiteListStartSaleTime;
        openStartSaleTime = _openStartSaleTime;
        onceMaxMintTotal = _onceMaxMintTotal;
        whiteList_mint_price = _whiteList_mint_price;
        open_mint_price = _open_mint_price;
        onceMintedTotal = 0;
        mint_counter++;
        return true;
    }

    function updateTokenURI(string memory newuri)
        external
        onlyOwner
        returns (bool)
    {
        _setURI(newuri);
        return true;
    }

    function updateMintWhitelistMerkleRoot(bytes32 hash)
        external
        onlyOwner
        returns (bool)
    {
        mintWhitelistMerkleRoot = hash;
        return true;
    }

    function updatePlatformWalletAddress(address newAddress)
        external
        onlyOwner
        returns (bool)
    {
        platformAddress = payable(newAddress);
        return true;
    }

    function pauseContract() external onlyOwner returns (bool) {
        _pause();
        return true;
    }

    function unpauseContract() external onlyOwner returns (bool) {
        _unpause();
        return true;
    }

    function whiteListMint(bytes32[] calldata _merkleProof)
        external 
        whenNotPaused
        nonReentrant
        payable 
        returns (bool)
    {
        require(block.timestamp > whiteListStartSaleTime ,"L_WST");
        require(block.timestamp <= whiteListStartSaleTime.add(WHITELIST_MINT_TIME),"L_WET");

        _tokenIds++;
        require(_tokenIds <= TOTALSUPPLY,"L_WT");

        onceMintedTotal++;
        require(onceMintedTotal <= onceMaxMintTotal,"L_WM_OA");

        require(_whiteListMinted[msg.sender][mint_counter] == 0,"L_WL");
        require(msg.value >= whiteList_mint_price,"L_WP");

        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
        require(MerkleProof.verify(_merkleProof, mintWhitelistMerkleRoot, leaf), "L_WV");

        _whiteListMinted[msg.sender][mint_counter] ++;
        _mint(msg.sender, _tokenIds, 1, "");
        return true;
    }

    function openMint()
        external 
        whenNotPaused
        nonReentrant
        payable 
        returns (bool)
    {
        require(block.timestamp > openStartSaleTime ,"L_OST");
        require(block.timestamp <= openStartSaleTime.add(OPEN_MINT_TIME),"L_OET");

        _tokenIds++;
        require(_tokenIds <= TOTALSUPPLY,"L_OT");

        onceMintedTotal++;
        require(onceMintedTotal <= onceMaxMintTotal,"L_OM_OA");

        require(_openlistMinted[msg.sender][mint_counter] == 0,"L_OL");
        require(msg.value >= open_mint_price,"L_OP");

        _openlistMinted[msg.sender][mint_counter] ++;
        _mint(msg.sender, _tokenIds, 1, "");
        return true;
    }

    function withdrawPayment() external whenNotPaused nonReentrant returns (bool) {
        require(msg.sender == platformAddress, "L_W_PAYMENT");
        uint256 totalBalance = address(this).balance;
        require(totalBalance != 0, "L_W_T");
        (bool isSuccess, ) = platformAddress.call{value: totalBalance}("");
        require(isSuccess,"L_W_SUCCESS");
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_platformAddress","type":"address"},{"internalType":"bytes32","name":"_root","type":"bytes32"},{"internalType":"uint256","name":"_whiteListStartSaleTime","type":"uint256"},{"internalType":"uint256","name":"_openStartSaleTime","type":"uint256"},{"internalType":"uint256","name":"_onceMaxMintTotal","type":"uint256"},{"internalType":"uint256","name":"_whiteList_mint_price","type":"uint256"},{"internalType":"uint256","name":"_open_mint_price","type":"uint256"},{"internalType":"string","name":"_newURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"OPEN_MINT_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTALSUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WHITELIST_MINT_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"_openlistMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"_whiteListMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintWhitelistMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint_counter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onceMaxMintTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onceMintedTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"openStartSaleTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"open_mint_price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platformAddress","outputs":[{"internalType":"address payable","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":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"},{"internalType":"uint256","name":"_whiteListStartSaleTime","type":"uint256"},{"internalType":"uint256","name":"_openStartSaleTime","type":"uint256"},{"internalType":"uint256","name":"_onceMaxMintTotal","type":"uint256"},{"internalType":"uint256","name":"_whiteList_mint_price","type":"uint256"},{"internalType":"uint256","name":"_open_mint_price","type":"uint256"}],"name":"setSaleInfo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"updateMintWhitelistMerkleRoot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updatePlatformWalletAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newuri","type":"string"}],"name":"updateTokenURI","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"whiteListMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"whiteListStartSaleTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whiteList_mint_price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPayment","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526001600c553480156200001657600080fd5b506040516200575b3803806200575b83398181016040528101906200003c91906200051d565b806200004e816200010b60201b60201c565b506000600360006101000a81548160ff0219169083151502179055506200008a6200007e6200012760201b60201c565b6200012f60201b60201c565b600160048190555087600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550866006819055508560088190555084600a8190555083600d819055508260098190555081600b81905550505050505050505062000669565b806002908051906020019062000123929190620001f5565b5050565b600033905090565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002039062000634565b90600052602060002090601f01602090048101928262000227576000855562000273565b82601f106200024257805160ff191683800117855562000273565b8280016001018555821562000273579182015b828111156200027257825182559160200191906001019062000255565b5b50905062000282919062000286565b5090565b5b80821115620002a157600081600090555060010162000287565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002e682620002b9565b9050919050565b620002f881620002d9565b81146200030457600080fd5b50565b6000815190506200031881620002ed565b92915050565b6000819050919050565b62000333816200031e565b81146200033f57600080fd5b50565b600081519050620003538162000328565b92915050565b6000819050919050565b6200036e8162000359565b81146200037a57600080fd5b50565b6000815190506200038e8162000363565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620003e9826200039e565b810181811067ffffffffffffffff821117156200040b576200040a620003af565b5b80604052505050565b600062000420620002a5565b90506200042e8282620003de565b919050565b600067ffffffffffffffff821115620004515762000450620003af565b5b6200045c826200039e565b9050602081019050919050565b60005b83811015620004895780820151818401526020810190506200046c565b8381111562000499576000848401525b50505050565b6000620004b6620004b08462000433565b62000414565b905082815260208101848484011115620004d557620004d462000399565b5b620004e284828562000469565b509392505050565b600082601f83011262000502576200050162000394565b5b8151620005148482602086016200049f565b91505092915050565b600080600080600080600080610100898b031215620005415762000540620002af565b5b6000620005518b828c0162000307565b9850506020620005648b828c0162000342565b9750506040620005778b828c016200037d565b96505060606200058a8b828c016200037d565b95505060806200059d8b828c016200037d565b94505060a0620005b08b828c016200037d565b93505060c0620005c38b828c016200037d565b92505060e089015167ffffffffffffffff811115620005e757620005e6620002b4565b5b620005f58b828c01620004ea565b9150509295985092959890939650565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200064d57607f821691505b60208210810362000663576200066262000605565b5b50919050565b6150e280620006796000396000f3fe6080604052600436106102245760003560e01c8063a118babd11610123578063bce6d672116100ab578063e8ca65071161006f578063e8ca650714610848578063e985e9c514610873578063ef80a29d146108b0578063f242432a146108db578063f2fde38b1461090457610224565b8063bce6d6721461076c578063c1dfd9a11461078a578063c30373ab146107c7578063d6e2da11146107f2578063dbe55e561461081d57610224565b8063aa46a400116100f2578063aa46a40014610695578063ac3aa463146106c0578063b33712c5146106eb578063b7cf942614610716578063bc8471bc1461074157610224565b8063a118babd146105eb578063a22cb46514610616578063a2d27a0f1461063f578063a38f2fd81461066a57610224565b80635c975abb116101b15780638da5cb5b116101755780638da5cb5b146104fd57806394a08c691461052857806395d89b411461055357806397254e551461057e57806398cd6153146105ae57610224565b80635c975abb14610416578063715018a614610441578063728676df146104585780637df2c163146104955780638c262ecc146104c057610224565b8063158a2389116101f8578063158a23891461030b5780632eb2c2d6146103485780633110f22a14610371578063439766ce146103ae5780634e1273f4146103d957610224565b8062fdd58e1461022957806301ffc9a71461026657806306fdde03146102a35780630e89341c146102ce575b600080fd5b34801561023557600080fd5b50610250600480360381019061024b91906130df565b61092d565b60405161025d919061312e565b60405180910390f35b34801561027257600080fd5b5061028d600480360381019061028891906131a1565b6109f5565b60405161029a91906131e9565b60405180910390f35b3480156102af57600080fd5b506102b8610ad7565b6040516102c5919061329d565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f091906132bf565b610b10565b604051610302919061329d565b60405180910390f35b34801561031757600080fd5b50610332600480360381019061032d91906130df565b610ba4565b60405161033f919061312e565b60405180910390f35b34801561035457600080fd5b5061036f600480360381019061036a91906134e9565b610bc9565b005b34801561037d57600080fd5b50610398600480360381019061039391906130df565b610c6a565b6040516103a5919061312e565b60405180910390f35b3480156103ba57600080fd5b506103c3610c8f565b6040516103d091906131e9565b60405180910390f35b3480156103e557600080fd5b5061040060048036038101906103fb919061367b565b610d1c565b60405161040d91906137b1565b60405180910390f35b34801561042257600080fd5b5061042b610e35565b60405161043891906131e9565b60405180910390f35b34801561044d57600080fd5b50610456610e4c565b005b34801561046457600080fd5b5061047f600480360381019061047a9190613809565b610ed4565b60405161048c91906131e9565b60405180910390f35b3480156104a157600080fd5b506104aa610f62565b6040516104b7919061312e565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e29190613836565b610f68565b6040516104f491906131e9565b60405180910390f35b34801561050957600080fd5b50610512611030565b60405161051f9190613872565b60405180910390f35b34801561053457600080fd5b5061053d61105a565b60405161054a919061312e565b60405180910390f35b34801561055f57600080fd5b50610568611060565b604051610575919061329d565b60405180910390f35b610598600480360381019061059391906138e8565b611099565b6040516105a591906131e9565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d091906139d6565b6114b6565b6040516105e291906131e9565b60405180910390f35b3480156105f757600080fd5b50610600611546565b60405161060d91906131e9565b60405180910390f35b34801561062257600080fd5b5061063d60048036038101906106389190613a4b565b611794565b005b34801561064b57600080fd5b506106546117aa565b604051610661919061312e565b60405180910390f35b34801561067657600080fd5b5061067f6117b0565b60405161068c919061312e565b60405180910390f35b3480156106a157600080fd5b506106aa6117b6565b6040516106b7919061312e565b60405180910390f35b3480156106cc57600080fd5b506106d56117bc565b6040516106e29190613a9a565b60405180910390f35b3480156106f757600080fd5b506107006117c2565b60405161070d91906131e9565b60405180910390f35b34801561072257600080fd5b5061072b61184f565b604051610738919061312e565b60405180910390f35b34801561074d57600080fd5b50610756611855565b604051610763919061312e565b60405180910390f35b61077461185b565b60405161078191906131e9565b60405180910390f35b34801561079657600080fd5b506107b160048036038101906107ac9190613ab5565b611bbd565b6040516107be91906131e9565b60405180910390f35b3480156107d357600080fd5b506107dc611c93565b6040516107e9919061312e565b60405180910390f35b3480156107fe57600080fd5b50610807611c99565b604051610814919061312e565b60405180910390f35b34801561082957600080fd5b50610832611c9f565b60405161083f9190613b63565b60405180910390f35b34801561085457600080fd5b5061085d611cc5565b60405161086a919061312e565b60405180910390f35b34801561087f57600080fd5b5061089a60048036038101906108959190613b7e565b611ccb565b6040516108a791906131e9565b60405180910390f35b3480156108bc57600080fd5b506108c5611d5f565b6040516108d2919061312e565b60405180910390f35b3480156108e757600080fd5b5061090260048036038101906108fd9190613bbe565b611d66565b005b34801561091057600080fd5b5061092b60048036038101906109269190613836565b611e07565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361099d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099490613cc7565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ac057507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ad05750610acf82611efe565b5b9050919050565b6040518060400160405280600a81526020017f5468652043686f6963650000000000000000000000000000000000000000000081525081565b606060028054610b1f90613d16565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4b90613d16565b8015610b985780601f10610b6d57610100808354040283529160200191610b98565b820191906000526020600020905b815481529060010190602001808311610b7b57829003601f168201915b50505050509050919050565b6010602052816000526040600020602052806000526040600020600091509150505481565b610bd1611f68565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610c175750610c1685610c11611f68565b611ccb565b5b610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d90613db9565b60405180910390fd5b610c638585858585611f70565b5050505050565b600f602052816000526040600020602052806000526040600020600091509150505481565b6000610c99611f68565b73ffffffffffffffffffffffffffffffffffffffff16610cb7611030565b73ffffffffffffffffffffffffffffffffffffffff1614610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0490613e25565b60405180910390fd5b610d15612283565b6001905090565b60608151835114610d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5990613eb7565b60405180910390fd5b6000835167ffffffffffffffff811115610d7f57610d7e6132f1565b5b604051908082528060200260200182016040528015610dad5781602001602082028036833780820191505090505b50905060005b8451811015610e2a57610dfa858281518110610dd257610dd1613ed7565b5b6020026020010151858381518110610ded57610dec613ed7565b5b602002602001015161092d565b828281518110610e0d57610e0c613ed7565b5b60200260200101818152505080610e2390613f35565b9050610db3565b508091505092915050565b6000600360009054906101000a900460ff16905090565b610e54611f68565b73ffffffffffffffffffffffffffffffffffffffff16610e72611030565b73ffffffffffffffffffffffffffffffffffffffff1614610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90613e25565b60405180910390fd5b610ed26000612326565b565b6000610ede611f68565b73ffffffffffffffffffffffffffffffffffffffff16610efc611030565b73ffffffffffffffffffffffffffffffffffffffff1614610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4990613e25565b60405180910390fd5b8160068190555060019050919050565b600c5481565b6000610f72611f68565b73ffffffffffffffffffffffffffffffffffffffff16610f90611030565b73ffffffffffffffffffffffffffffffffffffffff1614610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd90613e25565b60405180910390fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61138881565b6040518060400160405280600981526020017f54484543484f494345000000000000000000000000000000000000000000000081525081565b60006110a3610e35565b156110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da90613fc9565b60405180910390fd5b600260045403611128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111f90614035565b60405180910390fd5b60026004819055506008544211611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116b906140a1565b60405180910390fd5b61118b6138406008546123ec90919063ffffffff16565b4211156111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c49061410d565b60405180910390fd5b600560008154809291906111e090613f35565b9190505550611388600554111561122c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122390614179565b60405180910390fd5b600e600081548092919061123f90613f35565b9190505550600d54600e54111561128b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611282906141e5565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c5481526020019081526020016000205414611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131790614251565b60405180910390fd5b600954341015611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c906142bd565b60405180910390fd5b6000336040516020016113789190614325565b6040516020818303038152906040528051906020012090506113de848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060065483612402565b61141d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114149061438c565b60405180910390fd5b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c548152602001908152602001600020600081548092919061148090613f35565b91905055506114a333600554600160405180602001604052806000815250612419565b6001915050600160048190555092915050565b60006114c0611f68565b73ffffffffffffffffffffffffffffffffffffffff166114de611030565b73ffffffffffffffffffffffffffffffffffffffff1614611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b90613e25565b60405180910390fd5b61153d826125ae565b60019050919050565b6000611550610e35565b15611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790613fc9565b60405180910390fd5b6002600454036115d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cc90614035565b60405180910390fd5b6002600481905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461166d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611664906143f8565b60405180910390fd5b6000479050600081036116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac90614464565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516116fd906144b5565b60006040518083038185875af1925050503d806000811461173a576040519150601f19603f3d011682016040523d82523d6000602084013e61173f565b606091505b5050905080611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177a90614516565b60405180910390fd5b600192505050600160048190555090565b6117a661179f611f68565b83836125c8565b5050565b600b5481565b600e5481565b60055481565b60065481565b60006117cc611f68565b73ffffffffffffffffffffffffffffffffffffffff166117ea611030565b73ffffffffffffffffffffffffffffffffffffffff1614611840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183790613e25565b60405180910390fd5b611848612734565b6001905090565b60095481565b600d5481565b6000611865610e35565b156118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90613fc9565b60405180910390fd5b6002600454036118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e190614035565b60405180910390fd5b6002600481905550600a544211611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d90614582565b60405180910390fd5b61194e6202a300600a546123ec90919063ffffffff16565b421115611990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611987906145ee565b60405180910390fd5b600560008154809291906119a390613f35565b919050555061138860055411156119ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e69061465a565b60405180910390fd5b600e6000815480929190611a0290613f35565b9190505550600d54600e541115611a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a45906146c6565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c5481526020019081526020016000205414611ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ada90614732565b60405180910390fd5b600b54341015611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f9061479e565b60405180910390fd5b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c5481526020019081526020016000206000815480929190611b8b90613f35565b9190505550611bae33600554600160405180602001604052806000815250612419565b60019050600160048190555090565b6000611bc7611f68565b73ffffffffffffffffffffffffffffffffffffffff16611be5611030565b73ffffffffffffffffffffffffffffffffffffffff1614611c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3290613e25565b60405180910390fd5b866006819055508560088190555084600a8190555083600d819055508260098190555081600b819055506000600e81905550600c6000815480929190611c8090613f35565b9190505550600190509695505050505050565b61384081565b600a5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6202a30081565b611d6e611f68565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611db45750611db385611dae611f68565b611ccb565b5b611df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dea90614830565b60405180910390fd5b611e0085858585856127d6565b5050505050565b611e0f611f68565b73ffffffffffffffffffffffffffffffffffffffff16611e2d611030565b73ffffffffffffffffffffffffffffffffffffffff1614611e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7a90613e25565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee9906148c2565b60405180910390fd5b611efb81612326565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8151835114611fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fab90614954565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201a906149e6565b60405180910390fd5b600061202d611f68565b905061203d818787878787612a57565b60005b84518110156121ee57600085828151811061205e5761205d613ed7565b5b60200260200101519050600085838151811061207d5761207c613ed7565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561211e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211590614a78565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121d39190614a98565b92505081905550505050806121e790613f35565b9050612040565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612265929190614aee565b60405180910390a461227b818787878787612ab5565b505050505050565b61228b610e35565b156122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c290613fc9565b60405180910390fd5b6001600360006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861230f611f68565b60405161231c9190613872565b60405180910390a1565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836123fa9190614a98565b905092915050565b60008261240f8584612c8c565b1490509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90614b97565b60405180910390fd5b6000612492611f68565b90506124b3816000876124a488612d01565b6124ad88612d01565b87612a57565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125129190614a98565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612590929190614bb7565b60405180910390a46125a781600087878787612d7b565b5050505050565b80600290805190602001906125c4929190612f94565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d90614c52565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161272791906131e9565b60405180910390a3505050565b61273c610e35565b61277b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277290614cbe565b60405180910390fd5b6000600360006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6127bf611f68565b6040516127cc9190613872565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283c906149e6565b60405180910390fd5b600061284f611f68565b905061286f81878761286088612d01565b61286988612d01565b87612a57565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015612906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fd90614a78565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129bb9190614a98565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051612a38929190614bb7565b60405180910390a4612a4e828888888888612d7b565b50505050505050565b612a65868686868686612f52565b612a6d610e35565b15612aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa490614d50565b60405180910390fd5b505050505050565b612ad48473ffffffffffffffffffffffffffffffffffffffff16612f5a565b15612c84578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612b1a959493929190614dc5565b6020604051808303816000875af1925050508015612b5657506040513d601f19601f82011682018060405250810190612b539190614e42565b60015b612bfb57612b62614e7c565b806308c379a003612bbe5750612b76614e9e565b80612b815750612bc0565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb5919061329d565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf290614fa0565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7990615032565b60405180910390fd5b505b505050505050565b60008082905060005b8451811015612cf6576000858281518110612cb357612cb2613ed7565b5b60200260200101519050808311612cd557612cce8382612f7d565b9250612ce2565b612cdf8184612f7d565b92505b508080612cee90613f35565b915050612c95565b508091505092915050565b60606000600167ffffffffffffffff811115612d2057612d1f6132f1565b5b604051908082528060200260200182016040528015612d4e5781602001602082028036833780820191505090505b5090508281600081518110612d6657612d65613ed7565b5b60200260200101818152505080915050919050565b612d9a8473ffffffffffffffffffffffffffffffffffffffff16612f5a565b15612f4a578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612de0959493929190615052565b6020604051808303816000875af1925050508015612e1c57506040513d601f19601f82011682018060405250810190612e199190614e42565b60015b612ec157612e28614e7c565b806308c379a003612e845750612e3c614e9e565b80612e475750612e86565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7b919061329d565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb890614fa0565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3f90615032565b60405180910390fd5b505b505050505050565b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082600052816020526040600020905092915050565b828054612fa090613d16565b90600052602060002090601f016020900481019282612fc25760008555613009565b82601f10612fdb57805160ff1916838001178555613009565b82800160010185558215613009579182015b82811115613008578251825591602001919060010190612fed565b5b509050613016919061301a565b5090565b5b8082111561303357600081600090555060010161301b565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130768261304b565b9050919050565b6130868161306b565b811461309157600080fd5b50565b6000813590506130a38161307d565b92915050565b6000819050919050565b6130bc816130a9565b81146130c757600080fd5b50565b6000813590506130d9816130b3565b92915050565b600080604083850312156130f6576130f5613041565b5b600061310485828601613094565b9250506020613115858286016130ca565b9150509250929050565b613128816130a9565b82525050565b6000602082019050613143600083018461311f565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61317e81613149565b811461318957600080fd5b50565b60008135905061319b81613175565b92915050565b6000602082840312156131b7576131b6613041565b5b60006131c58482850161318c565b91505092915050565b60008115159050919050565b6131e3816131ce565b82525050565b60006020820190506131fe60008301846131da565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561323e578082015181840152602081019050613223565b8381111561324d576000848401525b50505050565b6000601f19601f8301169050919050565b600061326f82613204565b613279818561320f565b9350613289818560208601613220565b61329281613253565b840191505092915050565b600060208201905081810360008301526132b78184613264565b905092915050565b6000602082840312156132d5576132d4613041565b5b60006132e3848285016130ca565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61332982613253565b810181811067ffffffffffffffff82111715613348576133476132f1565b5b80604052505050565b600061335b613037565b90506133678282613320565b919050565b600067ffffffffffffffff821115613387576133866132f1565b5b602082029050602081019050919050565b600080fd5b60006133b06133ab8461336c565b613351565b905080838252602082019050602084028301858111156133d3576133d2613398565b5b835b818110156133fc57806133e888826130ca565b8452602084019350506020810190506133d5565b5050509392505050565b600082601f83011261341b5761341a6132ec565b5b813561342b84826020860161339d565b91505092915050565b600080fd5b600067ffffffffffffffff821115613454576134536132f1565b5b61345d82613253565b9050602081019050919050565b82818337600083830152505050565b600061348c61348784613439565b613351565b9050828152602081018484840111156134a8576134a7613434565b5b6134b384828561346a565b509392505050565b600082601f8301126134d0576134cf6132ec565b5b81356134e0848260208601613479565b91505092915050565b600080600080600060a0868803121561350557613504613041565b5b600061351388828901613094565b955050602061352488828901613094565b945050604086013567ffffffffffffffff81111561354557613544613046565b5b61355188828901613406565b935050606086013567ffffffffffffffff81111561357257613571613046565b5b61357e88828901613406565b925050608086013567ffffffffffffffff81111561359f5761359e613046565b5b6135ab888289016134bb565b9150509295509295909350565b600067ffffffffffffffff8211156135d3576135d26132f1565b5b602082029050602081019050919050565b60006135f76135f2846135b8565b613351565b9050808382526020820190506020840283018581111561361a57613619613398565b5b835b81811015613643578061362f8882613094565b84526020840193505060208101905061361c565b5050509392505050565b600082601f830112613662576136616132ec565b5b81356136728482602086016135e4565b91505092915050565b6000806040838503121561369257613691613041565b5b600083013567ffffffffffffffff8111156136b0576136af613046565b5b6136bc8582860161364d565b925050602083013567ffffffffffffffff8111156136dd576136dc613046565b5b6136e985828601613406565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613728816130a9565b82525050565b600061373a838361371f565b60208301905092915050565b6000602082019050919050565b600061375e826136f3565b61376881856136fe565b93506137738361370f565b8060005b838110156137a457815161378b888261372e565b975061379683613746565b925050600181019050613777565b5085935050505092915050565b600060208201905081810360008301526137cb8184613753565b905092915050565b6000819050919050565b6137e6816137d3565b81146137f157600080fd5b50565b600081359050613803816137dd565b92915050565b60006020828403121561381f5761381e613041565b5b600061382d848285016137f4565b91505092915050565b60006020828403121561384c5761384b613041565b5b600061385a84828501613094565b91505092915050565b61386c8161306b565b82525050565b60006020820190506138876000830184613863565b92915050565b600080fd5b60008083601f8401126138a8576138a76132ec565b5b8235905067ffffffffffffffff8111156138c5576138c461388d565b5b6020830191508360208202830111156138e1576138e0613398565b5b9250929050565b600080602083850312156138ff576138fe613041565b5b600083013567ffffffffffffffff81111561391d5761391c613046565b5b61392985828601613892565b92509250509250929050565b600067ffffffffffffffff8211156139505761394f6132f1565b5b61395982613253565b9050602081019050919050565b600061397961397484613935565b613351565b90508281526020810184848401111561399557613994613434565b5b6139a084828561346a565b509392505050565b600082601f8301126139bd576139bc6132ec565b5b81356139cd848260208601613966565b91505092915050565b6000602082840312156139ec576139eb613041565b5b600082013567ffffffffffffffff811115613a0a57613a09613046565b5b613a16848285016139a8565b91505092915050565b613a28816131ce565b8114613a3357600080fd5b50565b600081359050613a4581613a1f565b92915050565b60008060408385031215613a6257613a61613041565b5b6000613a7085828601613094565b9250506020613a8185828601613a36565b9150509250929050565b613a94816137d3565b82525050565b6000602082019050613aaf6000830184613a8b565b92915050565b60008060008060008060c08789031215613ad257613ad1613041565b5b6000613ae089828a016137f4565b9650506020613af189828a016130ca565b9550506040613b0289828a016130ca565b9450506060613b1389828a016130ca565b9350506080613b2489828a016130ca565b92505060a0613b3589828a016130ca565b9150509295509295509295565b6000613b4d8261304b565b9050919050565b613b5d81613b42565b82525050565b6000602082019050613b786000830184613b54565b92915050565b60008060408385031215613b9557613b94613041565b5b6000613ba385828601613094565b9250506020613bb485828601613094565b9150509250929050565b600080600080600060a08688031215613bda57613bd9613041565b5b6000613be888828901613094565b9550506020613bf988828901613094565b9450506040613c0a888289016130ca565b9350506060613c1b888289016130ca565b925050608086013567ffffffffffffffff811115613c3c57613c3b613046565b5b613c48888289016134bb565b9150509295509295909350565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000613cb1602b8361320f565b9150613cbc82613c55565b604082019050919050565b60006020820190508181036000830152613ce081613ca4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d2e57607f821691505b602082108103613d4157613d40613ce7565b5b50919050565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b6000613da360328361320f565b9150613dae82613d47565b604082019050919050565b60006020820190508181036000830152613dd281613d96565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613e0f60208361320f565b9150613e1a82613dd9565b602082019050919050565b60006020820190508181036000830152613e3e81613e02565b9050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b6000613ea160298361320f565b9150613eac82613e45565b604082019050919050565b60006020820190508181036000830152613ed081613e94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613f40826130a9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f7257613f71613f06565b5b600182019050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613fb360108361320f565b9150613fbe82613f7d565b602082019050919050565b60006020820190508181036000830152613fe281613fa6565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b600061401f601f8361320f565b915061402a82613fe9565b602082019050919050565b6000602082019050818103600083015261404e81614012565b9050919050565b7f4c5f575354000000000000000000000000000000000000000000000000000000600082015250565b600061408b60058361320f565b915061409682614055565b602082019050919050565b600060208201905081810360008301526140ba8161407e565b9050919050565b7f4c5f574554000000000000000000000000000000000000000000000000000000600082015250565b60006140f760058361320f565b9150614102826140c1565b602082019050919050565b60006020820190508181036000830152614126816140ea565b9050919050565b7f4c5f575400000000000000000000000000000000000000000000000000000000600082015250565b600061416360048361320f565b915061416e8261412d565b602082019050919050565b6000602082019050818103600083015261419281614156565b9050919050565b7f4c5f574d5f4f4100000000000000000000000000000000000000000000000000600082015250565b60006141cf60078361320f565b91506141da82614199565b602082019050919050565b600060208201905081810360008301526141fe816141c2565b9050919050565b7f4c5f574c00000000000000000000000000000000000000000000000000000000600082015250565b600061423b60048361320f565b915061424682614205565b602082019050919050565b6000602082019050818103600083015261426a8161422e565b9050919050565b7f4c5f575000000000000000000000000000000000000000000000000000000000600082015250565b60006142a760048361320f565b91506142b282614271565b602082019050919050565b600060208201905081810360008301526142d68161429a565b9050919050565b60008160601b9050919050565b60006142f5826142dd565b9050919050565b6000614307826142ea565b9050919050565b61431f61431a8261306b565b6142fc565b82525050565b6000614331828461430e565b60148201915081905092915050565b7f4c5f575600000000000000000000000000000000000000000000000000000000600082015250565b600061437660048361320f565b915061438182614340565b602082019050919050565b600060208201905081810360008301526143a581614369565b9050919050565b7f4c5f575f5041594d454e54000000000000000000000000000000000000000000600082015250565b60006143e2600b8361320f565b91506143ed826143ac565b602082019050919050565b60006020820190508181036000830152614411816143d5565b9050919050565b7f4c5f575f54000000000000000000000000000000000000000000000000000000600082015250565b600061444e60058361320f565b915061445982614418565b602082019050919050565b6000602082019050818103600083015261447d81614441565b9050919050565b600081905092915050565b50565b600061449f600083614484565b91506144aa8261448f565b600082019050919050565b60006144c082614492565b9150819050919050565b7f4c5f575f53554343455353000000000000000000000000000000000000000000600082015250565b6000614500600b8361320f565b915061450b826144ca565b602082019050919050565b6000602082019050818103600083015261452f816144f3565b9050919050565b7f4c5f4f5354000000000000000000000000000000000000000000000000000000600082015250565b600061456c60058361320f565b915061457782614536565b602082019050919050565b6000602082019050818103600083015261459b8161455f565b9050919050565b7f4c5f4f4554000000000000000000000000000000000000000000000000000000600082015250565b60006145d860058361320f565b91506145e3826145a2565b602082019050919050565b60006020820190508181036000830152614607816145cb565b9050919050565b7f4c5f4f5400000000000000000000000000000000000000000000000000000000600082015250565b600061464460048361320f565b915061464f8261460e565b602082019050919050565b6000602082019050818103600083015261467381614637565b9050919050565b7f4c5f4f4d5f4f4100000000000000000000000000000000000000000000000000600082015250565b60006146b060078361320f565b91506146bb8261467a565b602082019050919050565b600060208201905081810360008301526146df816146a3565b9050919050565b7f4c5f4f4c00000000000000000000000000000000000000000000000000000000600082015250565b600061471c60048361320f565b9150614727826146e6565b602082019050919050565b6000602082019050818103600083015261474b8161470f565b9050919050565b7f4c5f4f5000000000000000000000000000000000000000000000000000000000600082015250565b600061478860048361320f565b915061479382614752565b602082019050919050565b600060208201905081810360008301526147b78161477b565b9050919050565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b600061481a60298361320f565b9150614825826147be565b604082019050919050565b600060208201905081810360008301526148498161480d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006148ac60268361320f565b91506148b782614850565b604082019050919050565b600060208201905081810360008301526148db8161489f565b9050919050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b600061493e60288361320f565b9150614949826148e2565b604082019050919050565b6000602082019050818103600083015261496d81614931565b9050919050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006149d060258361320f565b91506149db82614974565b604082019050919050565b600060208201905081810360008301526149ff816149c3565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b6000614a62602a8361320f565b9150614a6d82614a06565b604082019050919050565b60006020820190508181036000830152614a9181614a55565b9050919050565b6000614aa3826130a9565b9150614aae836130a9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ae357614ae2613f06565b5b828201905092915050565b60006040820190508181036000830152614b088185613753565b90508181036020830152614b1c8184613753565b90509392505050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b8160218361320f565b9150614b8c82614b25565b604082019050919050565b60006020820190508181036000830152614bb081614b74565b9050919050565b6000604082019050614bcc600083018561311f565b614bd9602083018461311f565b9392505050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b6000614c3c60298361320f565b9150614c4782614be0565b604082019050919050565b60006020820190508181036000830152614c6b81614c2f565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000614ca860148361320f565b9150614cb382614c72565b602082019050919050565b60006020820190508181036000830152614cd781614c9b565b9050919050565b7f455243313135355061757361626c653a20746f6b656e207472616e736665722060008201527f7768696c65207061757365640000000000000000000000000000000000000000602082015250565b6000614d3a602c8361320f565b9150614d4582614cde565b604082019050919050565b60006020820190508181036000830152614d6981614d2d565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000614d9782614d70565b614da18185614d7b565b9350614db1818560208601613220565b614dba81613253565b840191505092915050565b600060a082019050614dda6000830188613863565b614de76020830187613863565b8181036040830152614df98186613753565b90508181036060830152614e0d8185613753565b90508181036080830152614e218184614d8c565b90509695505050505050565b600081519050614e3c81613175565b92915050565b600060208284031215614e5857614e57613041565b5b6000614e6684828501614e2d565b91505092915050565b60008160e01c9050919050565b600060033d1115614e9b5760046000803e614e98600051614e6f565b90505b90565b600060443d10614f2b57614eb0613037565b60043d036004823e80513d602482011167ffffffffffffffff82111715614ed8575050614f2b565b808201805167ffffffffffffffff811115614ef65750505050614f2b565b80602083010160043d038501811115614f13575050505050614f2b565b614f2282602001850186613320565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b6000614f8a60348361320f565b9150614f9582614f2e565b604082019050919050565b60006020820190508181036000830152614fb981614f7d565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b600061501c60288361320f565b915061502782614fc0565b604082019050919050565b6000602082019050818103600083015261504b8161500f565b9050919050565b600060a0820190506150676000830188613863565b6150746020830187613863565b615081604083018661311f565b61508e606083018561311f565b81810360808301526150a08184614d8c565b9050969550505050505056fea2646970667358221220ad907052bc0f91c69da9f688cea3a767d3ede0389384ddf9e7372c61fa6051fc64736f6c634300080d00330000000000000000000000006d59c49fe8751996cbbcd05a755034901739ae28c1210a487dea363bb78d1d152be7c8cc6576dba4b63d3c1c10688d1b3e3977fa0000000000000000000000000000000000000000000000000000000062e250100000000000000000000000000000000000000000000000000000000062e2885000000000000000000000000000000000000000000000000000000000000007d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000003368747470733a2f2f7777772e746865616e696d616c6167652e636f6d2f6170692f6e66742f696e666f2f7b69647d2e6a736f6e00000000000000000000000000

Deployed Bytecode

0x6080604052600436106102245760003560e01c8063a118babd11610123578063bce6d672116100ab578063e8ca65071161006f578063e8ca650714610848578063e985e9c514610873578063ef80a29d146108b0578063f242432a146108db578063f2fde38b1461090457610224565b8063bce6d6721461076c578063c1dfd9a11461078a578063c30373ab146107c7578063d6e2da11146107f2578063dbe55e561461081d57610224565b8063aa46a400116100f2578063aa46a40014610695578063ac3aa463146106c0578063b33712c5146106eb578063b7cf942614610716578063bc8471bc1461074157610224565b8063a118babd146105eb578063a22cb46514610616578063a2d27a0f1461063f578063a38f2fd81461066a57610224565b80635c975abb116101b15780638da5cb5b116101755780638da5cb5b146104fd57806394a08c691461052857806395d89b411461055357806397254e551461057e57806398cd6153146105ae57610224565b80635c975abb14610416578063715018a614610441578063728676df146104585780637df2c163146104955780638c262ecc146104c057610224565b8063158a2389116101f8578063158a23891461030b5780632eb2c2d6146103485780633110f22a14610371578063439766ce146103ae5780634e1273f4146103d957610224565b8062fdd58e1461022957806301ffc9a71461026657806306fdde03146102a35780630e89341c146102ce575b600080fd5b34801561023557600080fd5b50610250600480360381019061024b91906130df565b61092d565b60405161025d919061312e565b60405180910390f35b34801561027257600080fd5b5061028d600480360381019061028891906131a1565b6109f5565b60405161029a91906131e9565b60405180910390f35b3480156102af57600080fd5b506102b8610ad7565b6040516102c5919061329d565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f091906132bf565b610b10565b604051610302919061329d565b60405180910390f35b34801561031757600080fd5b50610332600480360381019061032d91906130df565b610ba4565b60405161033f919061312e565b60405180910390f35b34801561035457600080fd5b5061036f600480360381019061036a91906134e9565b610bc9565b005b34801561037d57600080fd5b50610398600480360381019061039391906130df565b610c6a565b6040516103a5919061312e565b60405180910390f35b3480156103ba57600080fd5b506103c3610c8f565b6040516103d091906131e9565b60405180910390f35b3480156103e557600080fd5b5061040060048036038101906103fb919061367b565b610d1c565b60405161040d91906137b1565b60405180910390f35b34801561042257600080fd5b5061042b610e35565b60405161043891906131e9565b60405180910390f35b34801561044d57600080fd5b50610456610e4c565b005b34801561046457600080fd5b5061047f600480360381019061047a9190613809565b610ed4565b60405161048c91906131e9565b60405180910390f35b3480156104a157600080fd5b506104aa610f62565b6040516104b7919061312e565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e29190613836565b610f68565b6040516104f491906131e9565b60405180910390f35b34801561050957600080fd5b50610512611030565b60405161051f9190613872565b60405180910390f35b34801561053457600080fd5b5061053d61105a565b60405161054a919061312e565b60405180910390f35b34801561055f57600080fd5b50610568611060565b604051610575919061329d565b60405180910390f35b610598600480360381019061059391906138e8565b611099565b6040516105a591906131e9565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d091906139d6565b6114b6565b6040516105e291906131e9565b60405180910390f35b3480156105f757600080fd5b50610600611546565b60405161060d91906131e9565b60405180910390f35b34801561062257600080fd5b5061063d60048036038101906106389190613a4b565b611794565b005b34801561064b57600080fd5b506106546117aa565b604051610661919061312e565b60405180910390f35b34801561067657600080fd5b5061067f6117b0565b60405161068c919061312e565b60405180910390f35b3480156106a157600080fd5b506106aa6117b6565b6040516106b7919061312e565b60405180910390f35b3480156106cc57600080fd5b506106d56117bc565b6040516106e29190613a9a565b60405180910390f35b3480156106f757600080fd5b506107006117c2565b60405161070d91906131e9565b60405180910390f35b34801561072257600080fd5b5061072b61184f565b604051610738919061312e565b60405180910390f35b34801561074d57600080fd5b50610756611855565b604051610763919061312e565b60405180910390f35b61077461185b565b60405161078191906131e9565b60405180910390f35b34801561079657600080fd5b506107b160048036038101906107ac9190613ab5565b611bbd565b6040516107be91906131e9565b60405180910390f35b3480156107d357600080fd5b506107dc611c93565b6040516107e9919061312e565b60405180910390f35b3480156107fe57600080fd5b50610807611c99565b604051610814919061312e565b60405180910390f35b34801561082957600080fd5b50610832611c9f565b60405161083f9190613b63565b60405180910390f35b34801561085457600080fd5b5061085d611cc5565b60405161086a919061312e565b60405180910390f35b34801561087f57600080fd5b5061089a60048036038101906108959190613b7e565b611ccb565b6040516108a791906131e9565b60405180910390f35b3480156108bc57600080fd5b506108c5611d5f565b6040516108d2919061312e565b60405180910390f35b3480156108e757600080fd5b5061090260048036038101906108fd9190613bbe565b611d66565b005b34801561091057600080fd5b5061092b60048036038101906109269190613836565b611e07565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361099d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099490613cc7565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ac057507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ad05750610acf82611efe565b5b9050919050565b6040518060400160405280600a81526020017f5468652043686f6963650000000000000000000000000000000000000000000081525081565b606060028054610b1f90613d16565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4b90613d16565b8015610b985780601f10610b6d57610100808354040283529160200191610b98565b820191906000526020600020905b815481529060010190602001808311610b7b57829003601f168201915b50505050509050919050565b6010602052816000526040600020602052806000526040600020600091509150505481565b610bd1611f68565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610c175750610c1685610c11611f68565b611ccb565b5b610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d90613db9565b60405180910390fd5b610c638585858585611f70565b5050505050565b600f602052816000526040600020602052806000526040600020600091509150505481565b6000610c99611f68565b73ffffffffffffffffffffffffffffffffffffffff16610cb7611030565b73ffffffffffffffffffffffffffffffffffffffff1614610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0490613e25565b60405180910390fd5b610d15612283565b6001905090565b60608151835114610d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5990613eb7565b60405180910390fd5b6000835167ffffffffffffffff811115610d7f57610d7e6132f1565b5b604051908082528060200260200182016040528015610dad5781602001602082028036833780820191505090505b50905060005b8451811015610e2a57610dfa858281518110610dd257610dd1613ed7565b5b6020026020010151858381518110610ded57610dec613ed7565b5b602002602001015161092d565b828281518110610e0d57610e0c613ed7565b5b60200260200101818152505080610e2390613f35565b9050610db3565b508091505092915050565b6000600360009054906101000a900460ff16905090565b610e54611f68565b73ffffffffffffffffffffffffffffffffffffffff16610e72611030565b73ffffffffffffffffffffffffffffffffffffffff1614610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90613e25565b60405180910390fd5b610ed26000612326565b565b6000610ede611f68565b73ffffffffffffffffffffffffffffffffffffffff16610efc611030565b73ffffffffffffffffffffffffffffffffffffffff1614610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4990613e25565b60405180910390fd5b8160068190555060019050919050565b600c5481565b6000610f72611f68565b73ffffffffffffffffffffffffffffffffffffffff16610f90611030565b73ffffffffffffffffffffffffffffffffffffffff1614610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd90613e25565b60405180910390fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61138881565b6040518060400160405280600981526020017f54484543484f494345000000000000000000000000000000000000000000000081525081565b60006110a3610e35565b156110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da90613fc9565b60405180910390fd5b600260045403611128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111f90614035565b60405180910390fd5b60026004819055506008544211611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116b906140a1565b60405180910390fd5b61118b6138406008546123ec90919063ffffffff16565b4211156111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c49061410d565b60405180910390fd5b600560008154809291906111e090613f35565b9190505550611388600554111561122c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122390614179565b60405180910390fd5b600e600081548092919061123f90613f35565b9190505550600d54600e54111561128b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611282906141e5565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c5481526020019081526020016000205414611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131790614251565b60405180910390fd5b600954341015611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c906142bd565b60405180910390fd5b6000336040516020016113789190614325565b6040516020818303038152906040528051906020012090506113de848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060065483612402565b61141d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114149061438c565b60405180910390fd5b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c548152602001908152602001600020600081548092919061148090613f35565b91905055506114a333600554600160405180602001604052806000815250612419565b6001915050600160048190555092915050565b60006114c0611f68565b73ffffffffffffffffffffffffffffffffffffffff166114de611030565b73ffffffffffffffffffffffffffffffffffffffff1614611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b90613e25565b60405180910390fd5b61153d826125ae565b60019050919050565b6000611550610e35565b15611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790613fc9565b60405180910390fd5b6002600454036115d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cc90614035565b60405180910390fd5b6002600481905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461166d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611664906143f8565b60405180910390fd5b6000479050600081036116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac90614464565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516116fd906144b5565b60006040518083038185875af1925050503d806000811461173a576040519150601f19603f3d011682016040523d82523d6000602084013e61173f565b606091505b5050905080611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177a90614516565b60405180910390fd5b600192505050600160048190555090565b6117a661179f611f68565b83836125c8565b5050565b600b5481565b600e5481565b60055481565b60065481565b60006117cc611f68565b73ffffffffffffffffffffffffffffffffffffffff166117ea611030565b73ffffffffffffffffffffffffffffffffffffffff1614611840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183790613e25565b60405180910390fd5b611848612734565b6001905090565b60095481565b600d5481565b6000611865610e35565b156118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90613fc9565b60405180910390fd5b6002600454036118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e190614035565b60405180910390fd5b6002600481905550600a544211611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d90614582565b60405180910390fd5b61194e6202a300600a546123ec90919063ffffffff16565b421115611990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611987906145ee565b60405180910390fd5b600560008154809291906119a390613f35565b919050555061138860055411156119ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e69061465a565b60405180910390fd5b600e6000815480929190611a0290613f35565b9190505550600d54600e541115611a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a45906146c6565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c5481526020019081526020016000205414611ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ada90614732565b60405180910390fd5b600b54341015611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f9061479e565b60405180910390fd5b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c5481526020019081526020016000206000815480929190611b8b90613f35565b9190505550611bae33600554600160405180602001604052806000815250612419565b60019050600160048190555090565b6000611bc7611f68565b73ffffffffffffffffffffffffffffffffffffffff16611be5611030565b73ffffffffffffffffffffffffffffffffffffffff1614611c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3290613e25565b60405180910390fd5b866006819055508560088190555084600a8190555083600d819055508260098190555081600b819055506000600e81905550600c6000815480929190611c8090613f35565b9190505550600190509695505050505050565b61384081565b600a5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6202a30081565b611d6e611f68565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611db45750611db385611dae611f68565b611ccb565b5b611df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dea90614830565b60405180910390fd5b611e0085858585856127d6565b5050505050565b611e0f611f68565b73ffffffffffffffffffffffffffffffffffffffff16611e2d611030565b73ffffffffffffffffffffffffffffffffffffffff1614611e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7a90613e25565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee9906148c2565b60405180910390fd5b611efb81612326565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8151835114611fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fab90614954565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201a906149e6565b60405180910390fd5b600061202d611f68565b905061203d818787878787612a57565b60005b84518110156121ee57600085828151811061205e5761205d613ed7565b5b60200260200101519050600085838151811061207d5761207c613ed7565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561211e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211590614a78565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121d39190614a98565b92505081905550505050806121e790613f35565b9050612040565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612265929190614aee565b60405180910390a461227b818787878787612ab5565b505050505050565b61228b610e35565b156122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c290613fc9565b60405180910390fd5b6001600360006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861230f611f68565b60405161231c9190613872565b60405180910390a1565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836123fa9190614a98565b905092915050565b60008261240f8584612c8c565b1490509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90614b97565b60405180910390fd5b6000612492611f68565b90506124b3816000876124a488612d01565b6124ad88612d01565b87612a57565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125129190614a98565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612590929190614bb7565b60405180910390a46125a781600087878787612d7b565b5050505050565b80600290805190602001906125c4929190612f94565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d90614c52565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161272791906131e9565b60405180910390a3505050565b61273c610e35565b61277b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277290614cbe565b60405180910390fd5b6000600360006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6127bf611f68565b6040516127cc9190613872565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283c906149e6565b60405180910390fd5b600061284f611f68565b905061286f81878761286088612d01565b61286988612d01565b87612a57565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015612906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fd90614a78565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129bb9190614a98565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051612a38929190614bb7565b60405180910390a4612a4e828888888888612d7b565b50505050505050565b612a65868686868686612f52565b612a6d610e35565b15612aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa490614d50565b60405180910390fd5b505050505050565b612ad48473ffffffffffffffffffffffffffffffffffffffff16612f5a565b15612c84578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612b1a959493929190614dc5565b6020604051808303816000875af1925050508015612b5657506040513d601f19601f82011682018060405250810190612b539190614e42565b60015b612bfb57612b62614e7c565b806308c379a003612bbe5750612b76614e9e565b80612b815750612bc0565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb5919061329d565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf290614fa0565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7990615032565b60405180910390fd5b505b505050505050565b60008082905060005b8451811015612cf6576000858281518110612cb357612cb2613ed7565b5b60200260200101519050808311612cd557612cce8382612f7d565b9250612ce2565b612cdf8184612f7d565b92505b508080612cee90613f35565b915050612c95565b508091505092915050565b60606000600167ffffffffffffffff811115612d2057612d1f6132f1565b5b604051908082528060200260200182016040528015612d4e5781602001602082028036833780820191505090505b5090508281600081518110612d6657612d65613ed7565b5b60200260200101818152505080915050919050565b612d9a8473ffffffffffffffffffffffffffffffffffffffff16612f5a565b15612f4a578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612de0959493929190615052565b6020604051808303816000875af1925050508015612e1c57506040513d601f19601f82011682018060405250810190612e199190614e42565b60015b612ec157612e28614e7c565b806308c379a003612e845750612e3c614e9e565b80612e475750612e86565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7b919061329d565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb890614fa0565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3f90615032565b60405180910390fd5b505b505050505050565b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082600052816020526040600020905092915050565b828054612fa090613d16565b90600052602060002090601f016020900481019282612fc25760008555613009565b82601f10612fdb57805160ff1916838001178555613009565b82800160010185558215613009579182015b82811115613008578251825591602001919060010190612fed565b5b509050613016919061301a565b5090565b5b8082111561303357600081600090555060010161301b565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130768261304b565b9050919050565b6130868161306b565b811461309157600080fd5b50565b6000813590506130a38161307d565b92915050565b6000819050919050565b6130bc816130a9565b81146130c757600080fd5b50565b6000813590506130d9816130b3565b92915050565b600080604083850312156130f6576130f5613041565b5b600061310485828601613094565b9250506020613115858286016130ca565b9150509250929050565b613128816130a9565b82525050565b6000602082019050613143600083018461311f565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61317e81613149565b811461318957600080fd5b50565b60008135905061319b81613175565b92915050565b6000602082840312156131b7576131b6613041565b5b60006131c58482850161318c565b91505092915050565b60008115159050919050565b6131e3816131ce565b82525050565b60006020820190506131fe60008301846131da565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561323e578082015181840152602081019050613223565b8381111561324d576000848401525b50505050565b6000601f19601f8301169050919050565b600061326f82613204565b613279818561320f565b9350613289818560208601613220565b61329281613253565b840191505092915050565b600060208201905081810360008301526132b78184613264565b905092915050565b6000602082840312156132d5576132d4613041565b5b60006132e3848285016130ca565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61332982613253565b810181811067ffffffffffffffff82111715613348576133476132f1565b5b80604052505050565b600061335b613037565b90506133678282613320565b919050565b600067ffffffffffffffff821115613387576133866132f1565b5b602082029050602081019050919050565b600080fd5b60006133b06133ab8461336c565b613351565b905080838252602082019050602084028301858111156133d3576133d2613398565b5b835b818110156133fc57806133e888826130ca565b8452602084019350506020810190506133d5565b5050509392505050565b600082601f83011261341b5761341a6132ec565b5b813561342b84826020860161339d565b91505092915050565b600080fd5b600067ffffffffffffffff821115613454576134536132f1565b5b61345d82613253565b9050602081019050919050565b82818337600083830152505050565b600061348c61348784613439565b613351565b9050828152602081018484840111156134a8576134a7613434565b5b6134b384828561346a565b509392505050565b600082601f8301126134d0576134cf6132ec565b5b81356134e0848260208601613479565b91505092915050565b600080600080600060a0868803121561350557613504613041565b5b600061351388828901613094565b955050602061352488828901613094565b945050604086013567ffffffffffffffff81111561354557613544613046565b5b61355188828901613406565b935050606086013567ffffffffffffffff81111561357257613571613046565b5b61357e88828901613406565b925050608086013567ffffffffffffffff81111561359f5761359e613046565b5b6135ab888289016134bb565b9150509295509295909350565b600067ffffffffffffffff8211156135d3576135d26132f1565b5b602082029050602081019050919050565b60006135f76135f2846135b8565b613351565b9050808382526020820190506020840283018581111561361a57613619613398565b5b835b81811015613643578061362f8882613094565b84526020840193505060208101905061361c565b5050509392505050565b600082601f830112613662576136616132ec565b5b81356136728482602086016135e4565b91505092915050565b6000806040838503121561369257613691613041565b5b600083013567ffffffffffffffff8111156136b0576136af613046565b5b6136bc8582860161364d565b925050602083013567ffffffffffffffff8111156136dd576136dc613046565b5b6136e985828601613406565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613728816130a9565b82525050565b600061373a838361371f565b60208301905092915050565b6000602082019050919050565b600061375e826136f3565b61376881856136fe565b93506137738361370f565b8060005b838110156137a457815161378b888261372e565b975061379683613746565b925050600181019050613777565b5085935050505092915050565b600060208201905081810360008301526137cb8184613753565b905092915050565b6000819050919050565b6137e6816137d3565b81146137f157600080fd5b50565b600081359050613803816137dd565b92915050565b60006020828403121561381f5761381e613041565b5b600061382d848285016137f4565b91505092915050565b60006020828403121561384c5761384b613041565b5b600061385a84828501613094565b91505092915050565b61386c8161306b565b82525050565b60006020820190506138876000830184613863565b92915050565b600080fd5b60008083601f8401126138a8576138a76132ec565b5b8235905067ffffffffffffffff8111156138c5576138c461388d565b5b6020830191508360208202830111156138e1576138e0613398565b5b9250929050565b600080602083850312156138ff576138fe613041565b5b600083013567ffffffffffffffff81111561391d5761391c613046565b5b61392985828601613892565b92509250509250929050565b600067ffffffffffffffff8211156139505761394f6132f1565b5b61395982613253565b9050602081019050919050565b600061397961397484613935565b613351565b90508281526020810184848401111561399557613994613434565b5b6139a084828561346a565b509392505050565b600082601f8301126139bd576139bc6132ec565b5b81356139cd848260208601613966565b91505092915050565b6000602082840312156139ec576139eb613041565b5b600082013567ffffffffffffffff811115613a0a57613a09613046565b5b613a16848285016139a8565b91505092915050565b613a28816131ce565b8114613a3357600080fd5b50565b600081359050613a4581613a1f565b92915050565b60008060408385031215613a6257613a61613041565b5b6000613a7085828601613094565b9250506020613a8185828601613a36565b9150509250929050565b613a94816137d3565b82525050565b6000602082019050613aaf6000830184613a8b565b92915050565b60008060008060008060c08789031215613ad257613ad1613041565b5b6000613ae089828a016137f4565b9650506020613af189828a016130ca565b9550506040613b0289828a016130ca565b9450506060613b1389828a016130ca565b9350506080613b2489828a016130ca565b92505060a0613b3589828a016130ca565b9150509295509295509295565b6000613b4d8261304b565b9050919050565b613b5d81613b42565b82525050565b6000602082019050613b786000830184613b54565b92915050565b60008060408385031215613b9557613b94613041565b5b6000613ba385828601613094565b9250506020613bb485828601613094565b9150509250929050565b600080600080600060a08688031215613bda57613bd9613041565b5b6000613be888828901613094565b9550506020613bf988828901613094565b9450506040613c0a888289016130ca565b9350506060613c1b888289016130ca565b925050608086013567ffffffffffffffff811115613c3c57613c3b613046565b5b613c48888289016134bb565b9150509295509295909350565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000613cb1602b8361320f565b9150613cbc82613c55565b604082019050919050565b60006020820190508181036000830152613ce081613ca4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d2e57607f821691505b602082108103613d4157613d40613ce7565b5b50919050565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b6000613da360328361320f565b9150613dae82613d47565b604082019050919050565b60006020820190508181036000830152613dd281613d96565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613e0f60208361320f565b9150613e1a82613dd9565b602082019050919050565b60006020820190508181036000830152613e3e81613e02565b9050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b6000613ea160298361320f565b9150613eac82613e45565b604082019050919050565b60006020820190508181036000830152613ed081613e94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613f40826130a9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f7257613f71613f06565b5b600182019050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613fb360108361320f565b9150613fbe82613f7d565b602082019050919050565b60006020820190508181036000830152613fe281613fa6565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b600061401f601f8361320f565b915061402a82613fe9565b602082019050919050565b6000602082019050818103600083015261404e81614012565b9050919050565b7f4c5f575354000000000000000000000000000000000000000000000000000000600082015250565b600061408b60058361320f565b915061409682614055565b602082019050919050565b600060208201905081810360008301526140ba8161407e565b9050919050565b7f4c5f574554000000000000000000000000000000000000000000000000000000600082015250565b60006140f760058361320f565b9150614102826140c1565b602082019050919050565b60006020820190508181036000830152614126816140ea565b9050919050565b7f4c5f575400000000000000000000000000000000000000000000000000000000600082015250565b600061416360048361320f565b915061416e8261412d565b602082019050919050565b6000602082019050818103600083015261419281614156565b9050919050565b7f4c5f574d5f4f4100000000000000000000000000000000000000000000000000600082015250565b60006141cf60078361320f565b91506141da82614199565b602082019050919050565b600060208201905081810360008301526141fe816141c2565b9050919050565b7f4c5f574c00000000000000000000000000000000000000000000000000000000600082015250565b600061423b60048361320f565b915061424682614205565b602082019050919050565b6000602082019050818103600083015261426a8161422e565b9050919050565b7f4c5f575000000000000000000000000000000000000000000000000000000000600082015250565b60006142a760048361320f565b91506142b282614271565b602082019050919050565b600060208201905081810360008301526142d68161429a565b9050919050565b60008160601b9050919050565b60006142f5826142dd565b9050919050565b6000614307826142ea565b9050919050565b61431f61431a8261306b565b6142fc565b82525050565b6000614331828461430e565b60148201915081905092915050565b7f4c5f575600000000000000000000000000000000000000000000000000000000600082015250565b600061437660048361320f565b915061438182614340565b602082019050919050565b600060208201905081810360008301526143a581614369565b9050919050565b7f4c5f575f5041594d454e54000000000000000000000000000000000000000000600082015250565b60006143e2600b8361320f565b91506143ed826143ac565b602082019050919050565b60006020820190508181036000830152614411816143d5565b9050919050565b7f4c5f575f54000000000000000000000000000000000000000000000000000000600082015250565b600061444e60058361320f565b915061445982614418565b602082019050919050565b6000602082019050818103600083015261447d81614441565b9050919050565b600081905092915050565b50565b600061449f600083614484565b91506144aa8261448f565b600082019050919050565b60006144c082614492565b9150819050919050565b7f4c5f575f53554343455353000000000000000000000000000000000000000000600082015250565b6000614500600b8361320f565b915061450b826144ca565b602082019050919050565b6000602082019050818103600083015261452f816144f3565b9050919050565b7f4c5f4f5354000000000000000000000000000000000000000000000000000000600082015250565b600061456c60058361320f565b915061457782614536565b602082019050919050565b6000602082019050818103600083015261459b8161455f565b9050919050565b7f4c5f4f4554000000000000000000000000000000000000000000000000000000600082015250565b60006145d860058361320f565b91506145e3826145a2565b602082019050919050565b60006020820190508181036000830152614607816145cb565b9050919050565b7f4c5f4f5400000000000000000000000000000000000000000000000000000000600082015250565b600061464460048361320f565b915061464f8261460e565b602082019050919050565b6000602082019050818103600083015261467381614637565b9050919050565b7f4c5f4f4d5f4f4100000000000000000000000000000000000000000000000000600082015250565b60006146b060078361320f565b91506146bb8261467a565b602082019050919050565b600060208201905081810360008301526146df816146a3565b9050919050565b7f4c5f4f4c00000000000000000000000000000000000000000000000000000000600082015250565b600061471c60048361320f565b9150614727826146e6565b602082019050919050565b6000602082019050818103600083015261474b8161470f565b9050919050565b7f4c5f4f5000000000000000000000000000000000000000000000000000000000600082015250565b600061478860048361320f565b915061479382614752565b602082019050919050565b600060208201905081810360008301526147b78161477b565b9050919050565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b600061481a60298361320f565b9150614825826147be565b604082019050919050565b600060208201905081810360008301526148498161480d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006148ac60268361320f565b91506148b782614850565b604082019050919050565b600060208201905081810360008301526148db8161489f565b9050919050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b600061493e60288361320f565b9150614949826148e2565b604082019050919050565b6000602082019050818103600083015261496d81614931565b9050919050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006149d060258361320f565b91506149db82614974565b604082019050919050565b600060208201905081810360008301526149ff816149c3565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b6000614a62602a8361320f565b9150614a6d82614a06565b604082019050919050565b60006020820190508181036000830152614a9181614a55565b9050919050565b6000614aa3826130a9565b9150614aae836130a9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ae357614ae2613f06565b5b828201905092915050565b60006040820190508181036000830152614b088185613753565b90508181036020830152614b1c8184613753565b90509392505050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b8160218361320f565b9150614b8c82614b25565b604082019050919050565b60006020820190508181036000830152614bb081614b74565b9050919050565b6000604082019050614bcc600083018561311f565b614bd9602083018461311f565b9392505050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b6000614c3c60298361320f565b9150614c4782614be0565b604082019050919050565b60006020820190508181036000830152614c6b81614c2f565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000614ca860148361320f565b9150614cb382614c72565b602082019050919050565b60006020820190508181036000830152614cd781614c9b565b9050919050565b7f455243313135355061757361626c653a20746f6b656e207472616e736665722060008201527f7768696c65207061757365640000000000000000000000000000000000000000602082015250565b6000614d3a602c8361320f565b9150614d4582614cde565b604082019050919050565b60006020820190508181036000830152614d6981614d2d565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000614d9782614d70565b614da18185614d7b565b9350614db1818560208601613220565b614dba81613253565b840191505092915050565b600060a082019050614dda6000830188613863565b614de76020830187613863565b8181036040830152614df98186613753565b90508181036060830152614e0d8185613753565b90508181036080830152614e218184614d8c565b90509695505050505050565b600081519050614e3c81613175565b92915050565b600060208284031215614e5857614e57613041565b5b6000614e6684828501614e2d565b91505092915050565b60008160e01c9050919050565b600060033d1115614e9b5760046000803e614e98600051614e6f565b90505b90565b600060443d10614f2b57614eb0613037565b60043d036004823e80513d602482011167ffffffffffffffff82111715614ed8575050614f2b565b808201805167ffffffffffffffff811115614ef65750505050614f2b565b80602083010160043d038501811115614f13575050505050614f2b565b614f2282602001850186613320565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b6000614f8a60348361320f565b9150614f9582614f2e565b604082019050919050565b60006020820190508181036000830152614fb981614f7d565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b600061501c60288361320f565b915061502782614fc0565b604082019050919050565b6000602082019050818103600083015261504b8161500f565b9050919050565b600060a0820190506150676000830188613863565b6150746020830187613863565b615081604083018661311f565b61508e606083018561311f565b81810360808301526150a08184614d8c565b9050969550505050505056fea2646970667358221220ad907052bc0f91c69da9f688cea3a767d3ede0389384ddf9e7372c61fa6051fc64736f6c634300080d0033

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

0000000000000000000000006d59c49fe8751996cbbcd05a755034901739ae28c1210a487dea363bb78d1d152be7c8cc6576dba4b63d3c1c10688d1b3e3977fa0000000000000000000000000000000000000000000000000000000062e250100000000000000000000000000000000000000000000000000000000062e2885000000000000000000000000000000000000000000000000000000000000007d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000003368747470733a2f2f7777772e746865616e696d616c6167652e636f6d2f6170692f6e66742f696e666f2f7b69647d2e6a736f6e00000000000000000000000000

-----Decoded View---------------
Arg [0] : _platformAddress (address): 0x6d59c49Fe8751996CBbcD05A755034901739ae28
Arg [1] : _root (bytes32): 0xc1210a487dea363bb78d1d152be7c8cc6576dba4b63d3c1c10688d1b3e3977fa
Arg [2] : _whiteListStartSaleTime (uint256): 1658998800
Arg [3] : _openStartSaleTime (uint256): 1659013200
Arg [4] : _onceMaxMintTotal (uint256): 2000
Arg [5] : _whiteList_mint_price (uint256): 0
Arg [6] : _open_mint_price (uint256): 0
Arg [7] : _newURI (string): https://www.theanimalage.com/api/nft/info/{id}.json

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 0000000000000000000000006d59c49fe8751996cbbcd05a755034901739ae28
Arg [1] : c1210a487dea363bb78d1d152be7c8cc6576dba4b63d3c1c10688d1b3e3977fa
Arg [2] : 0000000000000000000000000000000000000000000000000000000062e25010
Arg [3] : 0000000000000000000000000000000000000000000000000000000062e28850
Arg [4] : 00000000000000000000000000000000000000000000000000000000000007d0
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000033
Arg [9] : 68747470733a2f2f7777772e746865616e696d616c6167652e636f6d2f617069
Arg [10] : 2f6e66742f696e666f2f7b69647d2e6a736f6e00000000000000000000000000


Deployed Bytecode Sourcemap

27777:5207:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18120:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17689:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27916:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18007:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28652:69;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19639:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28575:70;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30696:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18359:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10983:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10255:103;;;;;;;;;;;;;:::i;:::-;;30289:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28279:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30487:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10032:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28398:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27965;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30932:928;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30113:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32588:393;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18891:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28239:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28357;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27883:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28017:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30812:112;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28154:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28318:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31868:712;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29414:691;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28448:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28199:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28062:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19054:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28512:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19230:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10366:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18120:231;18206:7;18253:1;18234:21;;:7;:21;;;18226:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;18321:9;:13;18331:2;18321:13;;;;;;;;;;;:22;18335:7;18321:22;;;;;;;;;;;;;;;;18314:29;;18120:231;;;;:::o;17689:310::-;17791:4;17843:26;17828:41;;;:11;:41;;;;:110;;;;17901:37;17886:52;;;:11;:52;;;;17828:110;:163;;;;17955:36;17979:11;17955:23;:36::i;:::-;17828:163;17808:183;;17689:310;;;:::o;27916:42::-;;;;;;;;;;;;;;;;;;;:::o;18007:105::-;18067:13;18100:4;18093:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18007:105;;;:::o;28652:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19639:442::-;19880:12;:10;:12::i;:::-;19872:20;;:4;:20;;;:60;;;;19896:36;19913:4;19919:12;:10;:12::i;:::-;19896:16;:36::i;:::-;19872:60;19850:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;20021:52;20044:4;20050:2;20054:3;20059:7;20068:4;20021:22;:52::i;:::-;19639:442;;;;;:::o;28575:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;30696:108::-;30749:4;10178:12;:10;:12::i;:::-;10167:23;;:7;:5;:7::i;:::-;:23;;;10159:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30766:8:::1;:6;:8::i;:::-;30792:4;30785:11;;30696:108:::0;:::o;18359:524::-;18515:16;18576:3;:10;18557:8;:15;:29;18549:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;18645:30;18692:8;:15;18678:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18645:63;;18726:9;18721:122;18745:8;:15;18741:1;:19;18721:122;;;18801:30;18811:8;18820:1;18811:11;;;;;;;;:::i;:::-;;;;;;;;18824:3;18828:1;18824:6;;;;;;;;:::i;:::-;;;;;;;;18801:9;:30::i;:::-;18782:13;18796:1;18782:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;18762:3;;;;:::i;:::-;;;18721:122;;;;18862:13;18855:20;;;18359:524;;;;:::o;10983:86::-;11030:4;11054:7;;;;;;;;;;;11047:14;;10983:86;:::o;10255:103::-;10178:12;:10;:12::i;:::-;10167:23;;:7;:5;:7::i;:::-;:23;;;10159:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10320:30:::1;10347:1;10320:18;:30::i;:::-;10255:103::o:0;30289:190::-;30397:4;10178:12;:10;:12::i;:::-;10167:23;;:7;:5;:7::i;:::-;:23;;;10159:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30445:4:::1;30419:23;:30;;;;30467:4;30460:11;;30289:190:::0;;;:::o;28279:32::-;;;;:::o;30487:201::-;30599:4;10178:12;:10;:12::i;:::-;10167:23;;:7;:5;:7::i;:::-;:23;;;10159:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30647:10:::1;30621:15;;:37;;;;;;;;;;;;;;;;;;30676:4;30669:11;;30487:201:::0;;;:::o;10032:87::-;10078:7;10105:6;;;;;;;;;;;10098:13;;10032:87;:::o;28398:43::-;28437:4;28398:43;:::o;27965:::-;;;;;;;;;;;;;;;;;;;:::o;30932:928::-;31088:4;11126:8;:6;:8::i;:::-;11125:9;11117:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8845:1:::1;9443:7;;:19:::0;9435:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8845:1;9576:7;:18;;;;31136:22:::2;;31118:15;:40;31110:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;31206:47;28495:7;31206:22;;:26;;:47;;;;:::i;:::-;31187:15;:66;;31179:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;31275:9;;:11;;;;;;;;;:::i;:::-;;;;;;28437:4;31305:9;;:24;;31297:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;31350:15;;:17;;;;;;;;;:::i;:::-;;;;;;31405:16;;31386:15;;:35;;31378:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;31499:1;31453:16;:28;31470:10;31453:28;;;;;;;;;;;;;;;:42;31482:12;;31453:42;;;;;;;;;;;;:47;31445:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;31540:20;;31527:9;:33;;31519:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;31581:12;31623:10;31606:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;31596:39;;;;;;31581:54;;31654:63;31673:12;;31654:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31687:23;;31712:4;31654:18;:63::i;:::-;31646:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;31739:16;:28;31756:10;31739:28;;;;;;;;;;;;;;;:42;31768:12;;31739:42;;;;;;;;;;;;:45;;;;;;;;;:::i;:::-;;;;;;31795:35;31801:10;31813:9;;31824:1;31795:35;;;;;;;;;;;::::0;:5:::2;:35::i;:::-;31848:4;31841:11;;;8801:1:::1;9755:7;:22;;;;30932:928:::0;;;;:::o;30113:168::-;30214:4;10178:12;:10;:12::i;:::-;10167:23;;:7;:5;:7::i;:::-;:23;;;10159:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30236:15:::1;30244:6;30236:7;:15::i;:::-;30269:4;30262:11;;30113:168:::0;;;:::o;32588:393::-;32660:4;11126:8;:6;:8::i;:::-;11125:9;11117:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8845:1:::1;9443:7;;:19:::0;9435:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8845:1;9576:7;:18;;;;32699:15:::2;;;;;;;;;;;32685:29;;:10;:29;;;32677:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;32741:20;32764:21;32741:44;;32820:1;32804:12;:17:::0;32796:35:::2;;;;;;;;;;;;:::i;:::-;;;;;;;;;32843:14;32863:15;;;;;;;;;;;:20;;32891:12;32863:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32842:66;;;32927:9;32919:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;32969:4;32962:11;;;;8801:1:::1;9755:7;:22;;;;32588:393:::0;:::o;18891:155::-;18986:52;19005:12;:10;:12::i;:::-;19019:8;19029;18986:18;:52::i;:::-;18891:155;;:::o;28239:31::-;;;;:::o;28357:::-;;;;:::o;27883:24::-;;;;:::o;28017:38::-;;;;:::o;30812:112::-;30867:4;10178:12;:10;:12::i;:::-;10167:23;;:7;:5;:7::i;:::-;:23;;;10159:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30884:10:::1;:8;:10::i;:::-;30912:4;30905:11;;30812:112:::0;:::o;28154:36::-;;;;:::o;28318:32::-;;;;:::o;31868:712::-;31988:4;11126:8;:6;:8::i;:::-;11125:9;11117:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8845:1:::1;9443:7;;:19:::0;9435:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8845:1;9576:7;:18;;;;32036:17:::2;;32018:15;:35;32010:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;32101:37;28554:8;32101:17;;:21;;:37;;;;:::i;:::-;32082:15;:56;;32074:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;32160:9;;:11;;;;;;;;;:::i;:::-;;;;;;28437:4;32190:9;;:24;;32182:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;32235:15;;:17;;;;;;;;;:::i;:::-;;;;;;32290:16;;32271:15;;:35;;32263:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;32383:1;32338:15;:27;32354:10;32338:27;;;;;;;;;;;;;;;:41;32366:12;;32338:41;;;;;;;;;;;;:46;32330:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;32424:15;;32411:9;:28;;32403:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;32460:15;:27;32476:10;32460:27;;;;;;;;;;;;;;;:41;32488:12;;32460:41;;;;;;;;;;;;:44;;;;;;;;;:::i;:::-;;;;;;32515:35;32521:10;32533:9;;32544:1;32515:35;;;;;;;;;;;::::0;:5:::2;:35::i;:::-;32568:4;32561:11;;8801:1:::1;9755:7;:22;;;;31868:712:::0;:::o;29414:691::-;29712:4;10178:12;:10;:12::i;:::-;10167:23;;:7;:5;:7::i;:::-;:23;;;10159:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29760:5:::1;29734:23;:31;;;;29801:23;29776:22;:48;;;;29855:18;29835:17;:38;;;;29903:17;29884:16;:36;;;;29954:21;29931:20;:44;;;;30004:16;29986:15;:34;;;;30049:1;30031:15;:19;;;;30061:12;;:14;;;;;;;;;:::i;:::-;;;;;;30093:4;30086:11;;29414:691:::0;;;;;;;;:::o;28448:54::-;28495:7;28448:54;:::o;28199:33::-;;;;:::o;28062:38::-;;;;;;;;;;;;;:::o;28109:::-;;;;:::o;19054:168::-;19153:4;19177:18;:27;19196:7;19177:27;;;;;;;;;;;;;;;:37;19205:8;19177:37;;;;;;;;;;;;;;;;;;;;;;;;;19170:44;;19054:168;;;;:::o;28512:50::-;28554:8;28512:50;:::o;19230:401::-;19446:12;:10;:12::i;:::-;19438:20;;:4;:20;;;:60;;;;19462:36;19479:4;19485:12;:10;:12::i;:::-;19462:16;:36::i;:::-;19438:60;19416:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;19578:45;19596:4;19602:2;19606;19610:6;19618:4;19578:17;:45::i;:::-;19230:401;;;;;:::o;10366:201::-;10178:12;:10;:12::i;:::-;10167:23;;:7;:5;:7::i;:::-;:23;;;10159:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10475:1:::1;10455:22;;:8;:22;;::::0;10447:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10531:28;10550:8;10531:18;:28::i;:::-;10366:201:::0;:::o;15307:157::-;15392:4;15431:25;15416:40;;;:11;:40;;;;15409:47;;15307:157;;;:::o;7747:98::-;7800:7;7827:10;7820:17;;7747:98;:::o;20917:1074::-;21144:7;:14;21130:3;:10;:28;21122:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;21236:1;21222:16;;:2;:16;;;21214:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;21293:16;21312:12;:10;:12::i;:::-;21293:31;;21337:60;21358:8;21368:4;21374:2;21378:3;21383:7;21392:4;21337:20;:60::i;:::-;21415:9;21410:421;21434:3;:10;21430:1;:14;21410:421;;;21466:10;21479:3;21483:1;21479:6;;;;;;;;:::i;:::-;;;;;;;;21466:19;;21500:14;21517:7;21525:1;21517:10;;;;;;;;:::i;:::-;;;;;;;;21500:27;;21544:19;21566:9;:13;21576:2;21566:13;;;;;;;;;;;:19;21580:4;21566:19;;;;;;;;;;;;;;;;21544:41;;21623:6;21608:11;:21;;21600:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;21756:6;21742:11;:20;21720:9;:13;21730:2;21720:13;;;;;;;;;;;:19;21734:4;21720:19;;;;;;;;;;;;;;;:42;;;;21813:6;21792:9;:13;21802:2;21792:13;;;;;;;;;;;:17;21806:2;21792:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;21451:380;;;21446:3;;;;:::i;:::-;;;21410:421;;;;21878:2;21848:47;;21872:4;21848:47;;21862:8;21848:47;;;21882:3;21887:7;21848:47;;;;;;;:::i;:::-;;;;;;;;21908:75;21944:8;21954:4;21960:2;21964:3;21969:7;21978:4;21908:35;:75::i;:::-;21111:880;20917:1074;;;;;:::o;11285:118::-;11126:8;:6;:8::i;:::-;11125:9;11117:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11355:4:::1;11345:7;;:14;;;;;;;;;;;;;;;;;;11375:20;11382:12;:10;:12::i;:::-;11375:20;;;;;;:::i;:::-;;;;;;;;11285:118::o:0;10575:191::-;10649:16;10668:6;;;;;;;;;;;10649:25;;10694:8;10685:6;;:17;;;;;;;;;;;;;;;;;;10749:8;10718:40;;10739:8;10718:40;;;;;;;;;;;;10638:128;10575:191;:::o;3549:98::-;3607:7;3638:1;3634;:5;;;;:::i;:::-;3627:12;;3549:98;;;;:::o;87:190::-;212:4;265;236:25;249:5;256:4;236:12;:25::i;:::-;:33;229:40;;87:190;;;;;:::o;22095:569::-;22262:1;22248:16;;:2;:16;;;22240:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22315:16;22334:12;:10;:12::i;:::-;22315:31;;22359:102;22380:8;22398:1;22402:2;22406:21;22424:2;22406:17;:21::i;:::-;22429:25;22447:6;22429:17;:25::i;:::-;22456:4;22359:20;:102::i;:::-;22495:6;22474:9;:13;22484:2;22474:13;;;;;;;;;;;:17;22488:2;22474:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;22554:2;22517:52;;22550:1;22517:52;;22532:8;22517:52;;;22558:2;22562:6;22517:52;;;;;;;:::i;:::-;;;;;;;;22582:74;22613:8;22631:1;22635:2;22639;22643:6;22651:4;22582:30;:74::i;:::-;22229:435;22095:569;;;;:::o;21999:88::-;22073:6;22066:4;:13;;;;;;;;;;;;:::i;:::-;;21999:88;:::o;24970:331::-;25125:8;25116:17;;:5;:17;;;25108:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25228:8;25190:18;:25;25209:5;25190:25;;;;;;;;;;;;;;;:35;25216:8;25190:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;25274:8;25252:41;;25267:5;25252:41;;;25284:8;25252:41;;;;;;:::i;:::-;;;;;;;;24970:331;;;:::o;11411:120::-;11224:8;:6;:8::i;:::-;11216:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11480:5:::1;11470:7;;:15;;;;;;;;;;;;;;;;;;11501:22;11510:12;:10;:12::i;:::-;11501:22;;;;;;:::i;:::-;;;;;;;;11411:120::o:0;20089:820::-;20291:1;20277:16;;:2;:16;;;20269:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;20348:16;20367:12;:10;:12::i;:::-;20348:31;;20392:96;20413:8;20423:4;20429:2;20433:21;20451:2;20433:17;:21::i;:::-;20456:25;20474:6;20456:17;:25::i;:::-;20483:4;20392:20;:96::i;:::-;20501:19;20523:9;:13;20533:2;20523:13;;;;;;;;;;;:19;20537:4;20523:19;;;;;;;;;;;;;;;;20501:41;;20576:6;20561:11;:21;;20553:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;20701:6;20687:11;:20;20665:9;:13;20675:2;20665:13;;;;;;;;;;;:19;20679:4;20665:19;;;;;;;;;;;;;;;:42;;;;20750:6;20729:9;:13;20739:2;20729:13;;;;;;;;;;;:17;20743:2;20729:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;20805:2;20774:46;;20799:4;20774:46;;20789:8;20774:46;;;20809:2;20813:6;20774:46;;;;;;;:::i;:::-;;;;;;;;20833:68;20864:8;20874:4;20880:2;20884;20888:6;20896:4;20833:30;:68::i;:::-;20258:651;;20089:820;;;;;:::o;27378:392::-;27617:66;27644:8;27654:4;27660:2;27664:3;27669:7;27678:4;27617:26;:66::i;:::-;27705:8;:6;:8::i;:::-;27704:9;27696:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;27378:392;;;;;;:::o;26290:813::-;26530:15;:2;:13;;;:15::i;:::-;26526:570;;;26583:2;26566:43;;;26610:8;26620:4;26626:3;26631:7;26640:4;26566:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;26562:523;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;26958:6;26951:14;;;;;;;;;;;:::i;:::-;;;;;;;;26562:523;;;27007:62;;;;;;;;;;:::i;:::-;;;;;;;;26562:523;26739:48;;;26727:60;;;:8;:60;;;;26723:159;;26812:50;;;;;;;;;;:::i;:::-;;;;;;;;26723:159;26646:251;26526:570;26290:813;;;;;;:::o;285:675::-;368:7;388:20;411:4;388:27;;431:9;426:497;450:5;:12;446:1;:16;426:497;;;484:20;507:5;513:1;507:8;;;;;;;;:::i;:::-;;;;;;;;484:31;;550:12;534;:28;530:382;;677:42;692:12;706;677:14;:42::i;:::-;662:57;;530:382;;;854:42;869:12;883;854:14;:42::i;:::-;839:57;;530:382;469:454;464:3;;;;;:::i;:::-;;;;426:497;;;;940:12;933:19;;;285:675;;;;:::o;27111:198::-;27177:16;27206:22;27245:1;27231:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27206:41;;27269:7;27258:5;27264:1;27258:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;27296:5;27289:12;;;27111:198;;;:::o;25538:744::-;25753:15;:2;:13;;;:15::i;:::-;25749:526;;;25806:2;25789:38;;;25828:8;25838:4;25844:2;25848:6;25856:4;25789:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;25785:479;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;26137:6;26130:14;;;;;;;;;;;:::i;:::-;;;;;;;;25785:479;;;26186:62;;;;;;;;;;:::i;:::-;;;;;;;;25785:479;25923:43;;;25911:55;;;:8;:55;;;;25907:154;;25991:50;;;;;;;;;;:::i;:::-;;;;;;;;25907:154;25862:214;25749:526;25538:744;;;;;;:::o;25309:221::-;;;;;;;:::o;11561:115::-;11621:4;11667:1;11645:7;:19;;;:23;11638:30;;11561:115;;;:::o;968:224::-;1036:13;1099:1;1093:4;1086:15;1128:1;1122:4;1115:15;1169:4;1163;1153:21;1144:30;;968:224;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:118::-;1764:24;1782:5;1764:24;:::i;:::-;1759:3;1752:37;1677:118;;:::o;1801:222::-;1894:4;1932:2;1921:9;1917:18;1909:26;;1945:71;2013:1;2002:9;1998:17;1989:6;1945:71;:::i;:::-;1801:222;;;;:::o;2029:149::-;2065:7;2105:66;2098:5;2094:78;2083:89;;2029:149;;;:::o;2184:120::-;2256:23;2273:5;2256:23;:::i;:::-;2249:5;2246:34;2236:62;;2294:1;2291;2284:12;2236:62;2184:120;:::o;2310:137::-;2355:5;2393:6;2380:20;2371:29;;2409:32;2435:5;2409:32;:::i;:::-;2310:137;;;;:::o;2453:327::-;2511:6;2560:2;2548:9;2539:7;2535:23;2531:32;2528:119;;;2566:79;;:::i;:::-;2528:119;2686:1;2711:52;2755:7;2746:6;2735:9;2731:22;2711:52;:::i;:::-;2701:62;;2657:116;2453:327;;;;:::o;2786:90::-;2820:7;2863:5;2856:13;2849:21;2838:32;;2786:90;;;:::o;2882:109::-;2963:21;2978:5;2963:21;:::i;:::-;2958:3;2951:34;2882:109;;:::o;2997:210::-;3084:4;3122:2;3111:9;3107:18;3099:26;;3135:65;3197:1;3186:9;3182:17;3173:6;3135:65;:::i;:::-;2997:210;;;;:::o;3213:99::-;3265:6;3299:5;3293:12;3283:22;;3213:99;;;:::o;3318:169::-;3402:11;3436:6;3431:3;3424:19;3476:4;3471:3;3467:14;3452:29;;3318:169;;;;:::o;3493:307::-;3561:1;3571:113;3585:6;3582:1;3579:13;3571:113;;;3670:1;3665:3;3661:11;3655:18;3651:1;3646:3;3642:11;3635:39;3607:2;3604:1;3600:10;3595:15;;3571:113;;;3702:6;3699:1;3696:13;3693:101;;;3782:1;3773:6;3768:3;3764:16;3757:27;3693:101;3542:258;3493:307;;;:::o;3806:102::-;3847:6;3898:2;3894:7;3889:2;3882:5;3878:14;3874:28;3864:38;;3806:102;;;:::o;3914:364::-;4002:3;4030:39;4063:5;4030:39;:::i;:::-;4085:71;4149:6;4144:3;4085:71;:::i;:::-;4078:78;;4165:52;4210:6;4205:3;4198:4;4191:5;4187:16;4165:52;:::i;:::-;4242:29;4264:6;4242:29;:::i;:::-;4237:3;4233:39;4226:46;;4006:272;3914:364;;;;:::o;4284:313::-;4397:4;4435:2;4424:9;4420:18;4412:26;;4484:9;4478:4;4474:20;4470:1;4459:9;4455:17;4448:47;4512:78;4585:4;4576:6;4512:78;:::i;:::-;4504:86;;4284:313;;;;:::o;4603:329::-;4662:6;4711:2;4699:9;4690:7;4686:23;4682:32;4679:119;;;4717:79;;:::i;:::-;4679:119;4837:1;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4808:117;4603:329;;;;:::o;4938:117::-;5047:1;5044;5037:12;5061:180;5109:77;5106:1;5099:88;5206:4;5203:1;5196:15;5230:4;5227:1;5220:15;5247:281;5330:27;5352:4;5330:27;:::i;:::-;5322:6;5318:40;5460:6;5448:10;5445:22;5424:18;5412:10;5409:34;5406:62;5403:88;;;5471:18;;:::i;:::-;5403:88;5511:10;5507:2;5500:22;5290:238;5247:281;;:::o;5534:129::-;5568:6;5595:20;;:::i;:::-;5585:30;;5624:33;5652:4;5644:6;5624:33;:::i;:::-;5534:129;;;:::o;5669:311::-;5746:4;5836:18;5828:6;5825:30;5822:56;;;5858:18;;:::i;:::-;5822:56;5908:4;5900:6;5896:17;5888:25;;5968:4;5962;5958:15;5950:23;;5669:311;;;:::o;5986:117::-;6095:1;6092;6085:12;6126:710;6222:5;6247:81;6263:64;6320:6;6263:64;:::i;:::-;6247:81;:::i;:::-;6238:90;;6348:5;6377:6;6370:5;6363:21;6411:4;6404:5;6400:16;6393:23;;6464:4;6456:6;6452:17;6444:6;6440:30;6493:3;6485:6;6482:15;6479:122;;;6512:79;;:::i;:::-;6479:122;6627:6;6610:220;6644:6;6639:3;6636:15;6610:220;;;6719:3;6748:37;6781:3;6769:10;6748:37;:::i;:::-;6743:3;6736:50;6815:4;6810:3;6806:14;6799:21;;6686:144;6670:4;6665:3;6661:14;6654:21;;6610:220;;;6614:21;6228:608;;6126:710;;;;;:::o;6859:370::-;6930:5;6979:3;6972:4;6964:6;6960:17;6956:27;6946:122;;6987:79;;:::i;:::-;6946:122;7104:6;7091:20;7129:94;7219:3;7211:6;7204:4;7196:6;7192:17;7129:94;:::i;:::-;7120:103;;6936:293;6859:370;;;;:::o;7235:117::-;7344:1;7341;7334:12;7358:307;7419:4;7509:18;7501:6;7498:30;7495:56;;;7531:18;;:::i;:::-;7495:56;7569:29;7591:6;7569:29;:::i;:::-;7561:37;;7653:4;7647;7643:15;7635:23;;7358:307;;;:::o;7671:154::-;7755:6;7750:3;7745;7732:30;7817:1;7808:6;7803:3;7799:16;7792:27;7671:154;;;:::o;7831:410::-;7908:5;7933:65;7949:48;7990:6;7949:48;:::i;:::-;7933:65;:::i;:::-;7924:74;;8021:6;8014:5;8007:21;8059:4;8052:5;8048:16;8097:3;8088:6;8083:3;8079:16;8076:25;8073:112;;;8104:79;;:::i;:::-;8073:112;8194:41;8228:6;8223:3;8218;8194:41;:::i;:::-;7914:327;7831:410;;;;;:::o;8260:338::-;8315:5;8364:3;8357:4;8349:6;8345:17;8341:27;8331:122;;8372:79;;:::i;:::-;8331:122;8489:6;8476:20;8514:78;8588:3;8580:6;8573:4;8565:6;8561:17;8514:78;:::i;:::-;8505:87;;8321:277;8260:338;;;;:::o;8604:1509::-;8758:6;8766;8774;8782;8790;8839:3;8827:9;8818:7;8814:23;8810:33;8807:120;;;8846:79;;:::i;:::-;8807:120;8966:1;8991:53;9036:7;9027:6;9016:9;9012:22;8991:53;:::i;:::-;8981:63;;8937:117;9093:2;9119:53;9164:7;9155:6;9144:9;9140:22;9119:53;:::i;:::-;9109:63;;9064:118;9249:2;9238:9;9234:18;9221:32;9280:18;9272:6;9269:30;9266:117;;;9302:79;;:::i;:::-;9266:117;9407:78;9477:7;9468:6;9457:9;9453:22;9407:78;:::i;:::-;9397:88;;9192:303;9562:2;9551:9;9547:18;9534:32;9593:18;9585:6;9582:30;9579:117;;;9615:79;;:::i;:::-;9579:117;9720:78;9790:7;9781:6;9770:9;9766:22;9720:78;:::i;:::-;9710:88;;9505:303;9875:3;9864:9;9860:19;9847:33;9907:18;9899:6;9896:30;9893:117;;;9929:79;;:::i;:::-;9893:117;10034:62;10088:7;10079:6;10068:9;10064:22;10034:62;:::i;:::-;10024:72;;9818:288;8604:1509;;;;;;;;:::o;10119:311::-;10196:4;10286:18;10278:6;10275:30;10272:56;;;10308:18;;:::i;:::-;10272:56;10358:4;10350:6;10346:17;10338:25;;10418:4;10412;10408:15;10400:23;;10119:311;;;:::o;10453:710::-;10549:5;10574:81;10590:64;10647:6;10590:64;:::i;:::-;10574:81;:::i;:::-;10565:90;;10675:5;10704:6;10697:5;10690:21;10738:4;10731:5;10727:16;10720:23;;10791:4;10783:6;10779:17;10771:6;10767:30;10820:3;10812:6;10809:15;10806:122;;;10839:79;;:::i;:::-;10806:122;10954:6;10937:220;10971:6;10966:3;10963:15;10937:220;;;11046:3;11075:37;11108:3;11096:10;11075:37;:::i;:::-;11070:3;11063:50;11142:4;11137:3;11133:14;11126:21;;11013:144;10997:4;10992:3;10988:14;10981:21;;10937:220;;;10941:21;10555:608;;10453:710;;;;;:::o;11186:370::-;11257:5;11306:3;11299:4;11291:6;11287:17;11283:27;11273:122;;11314:79;;:::i;:::-;11273:122;11431:6;11418:20;11456:94;11546:3;11538:6;11531:4;11523:6;11519:17;11456:94;:::i;:::-;11447:103;;11263:293;11186:370;;;;:::o;11562:894::-;11680:6;11688;11737:2;11725:9;11716:7;11712:23;11708:32;11705:119;;;11743:79;;:::i;:::-;11705:119;11891:1;11880:9;11876:17;11863:31;11921:18;11913:6;11910:30;11907:117;;;11943:79;;:::i;:::-;11907:117;12048:78;12118:7;12109:6;12098:9;12094:22;12048:78;:::i;:::-;12038:88;;11834:302;12203:2;12192:9;12188:18;12175:32;12234:18;12226:6;12223:30;12220:117;;;12256:79;;:::i;:::-;12220:117;12361:78;12431:7;12422:6;12411:9;12407:22;12361:78;:::i;:::-;12351:88;;12146:303;11562:894;;;;;:::o;12462:114::-;12529:6;12563:5;12557:12;12547:22;;12462:114;;;:::o;12582:184::-;12681:11;12715:6;12710:3;12703:19;12755:4;12750:3;12746:14;12731:29;;12582:184;;;;:::o;12772:132::-;12839:4;12862:3;12854:11;;12892:4;12887:3;12883:14;12875:22;;12772:132;;;:::o;12910:108::-;12987:24;13005:5;12987:24;:::i;:::-;12982:3;12975:37;12910:108;;:::o;13024:179::-;13093:10;13114:46;13156:3;13148:6;13114:46;:::i;:::-;13192:4;13187:3;13183:14;13169:28;;13024:179;;;;:::o;13209:113::-;13279:4;13311;13306:3;13302:14;13294:22;;13209:113;;;:::o;13358:732::-;13477:3;13506:54;13554:5;13506:54;:::i;:::-;13576:86;13655:6;13650:3;13576:86;:::i;:::-;13569:93;;13686:56;13736:5;13686:56;:::i;:::-;13765:7;13796:1;13781:284;13806:6;13803:1;13800:13;13781:284;;;13882:6;13876:13;13909:63;13968:3;13953:13;13909:63;:::i;:::-;13902:70;;13995:60;14048:6;13995:60;:::i;:::-;13985:70;;13841:224;13828:1;13825;13821:9;13816:14;;13781:284;;;13785:14;14081:3;14074:10;;13482:608;;;13358:732;;;;:::o;14096:373::-;14239:4;14277:2;14266:9;14262:18;14254:26;;14326:9;14320:4;14316:20;14312:1;14301:9;14297:17;14290:47;14354:108;14457:4;14448:6;14354:108;:::i;:::-;14346:116;;14096:373;;;;:::o;14475:77::-;14512:7;14541:5;14530:16;;14475:77;;;:::o;14558:122::-;14631:24;14649:5;14631:24;:::i;:::-;14624:5;14621:35;14611:63;;14670:1;14667;14660:12;14611:63;14558:122;:::o;14686:139::-;14732:5;14770:6;14757:20;14748:29;;14786:33;14813:5;14786:33;:::i;:::-;14686:139;;;;:::o;14831:329::-;14890:6;14939:2;14927:9;14918:7;14914:23;14910:32;14907:119;;;14945:79;;:::i;:::-;14907:119;15065:1;15090:53;15135:7;15126:6;15115:9;15111:22;15090:53;:::i;:::-;15080:63;;15036:117;14831:329;;;;:::o;15166:::-;15225:6;15274:2;15262:9;15253:7;15249:23;15245:32;15242:119;;;15280:79;;:::i;:::-;15242:119;15400:1;15425:53;15470:7;15461:6;15450:9;15446:22;15425:53;:::i;:::-;15415:63;;15371:117;15166:329;;;;:::o;15501:118::-;15588:24;15606:5;15588:24;:::i;:::-;15583:3;15576:37;15501:118;;:::o;15625:222::-;15718:4;15756:2;15745:9;15741:18;15733:26;;15769:71;15837:1;15826:9;15822:17;15813:6;15769:71;:::i;:::-;15625:222;;;;:::o;15853:117::-;15962:1;15959;15952:12;15993:568;16066:8;16076:6;16126:3;16119:4;16111:6;16107:17;16103:27;16093:122;;16134:79;;:::i;:::-;16093:122;16247:6;16234:20;16224:30;;16277:18;16269:6;16266:30;16263:117;;;16299:79;;:::i;:::-;16263:117;16413:4;16405:6;16401:17;16389:29;;16467:3;16459:4;16451:6;16447:17;16437:8;16433:32;16430:41;16427:128;;;16474:79;;:::i;:::-;16427:128;15993:568;;;;;:::o;16567:559::-;16653:6;16661;16710:2;16698:9;16689:7;16685:23;16681:32;16678:119;;;16716:79;;:::i;:::-;16678:119;16864:1;16853:9;16849:17;16836:31;16894:18;16886:6;16883:30;16880:117;;;16916:79;;:::i;:::-;16880:117;17029:80;17101:7;17092:6;17081:9;17077:22;17029:80;:::i;:::-;17011:98;;;;16807:312;16567:559;;;;;:::o;17132:308::-;17194:4;17284:18;17276:6;17273:30;17270:56;;;17306:18;;:::i;:::-;17270:56;17344:29;17366:6;17344:29;:::i;:::-;17336:37;;17428:4;17422;17418:15;17410:23;;17132:308;;;:::o;17446:412::-;17524:5;17549:66;17565:49;17607:6;17565:49;:::i;:::-;17549:66;:::i;:::-;17540:75;;17638:6;17631:5;17624:21;17676:4;17669:5;17665:16;17714:3;17705:6;17700:3;17696:16;17693:25;17690:112;;;17721:79;;:::i;:::-;17690:112;17811:41;17845:6;17840:3;17835;17811:41;:::i;:::-;17530:328;17446:412;;;;;:::o;17878:340::-;17934:5;17983:3;17976:4;17968:6;17964:17;17960:27;17950:122;;17991:79;;:::i;:::-;17950:122;18108:6;18095:20;18133:79;18208:3;18200:6;18193:4;18185:6;18181:17;18133:79;:::i;:::-;18124:88;;17940:278;17878:340;;;;:::o;18224:509::-;18293:6;18342:2;18330:9;18321:7;18317:23;18313:32;18310:119;;;18348:79;;:::i;:::-;18310:119;18496:1;18485:9;18481:17;18468:31;18526:18;18518:6;18515:30;18512:117;;;18548:79;;:::i;:::-;18512:117;18653:63;18708:7;18699:6;18688:9;18684:22;18653:63;:::i;:::-;18643:73;;18439:287;18224:509;;;;:::o;18739:116::-;18809:21;18824:5;18809:21;:::i;:::-;18802:5;18799:32;18789:60;;18845:1;18842;18835:12;18789:60;18739:116;:::o;18861:133::-;18904:5;18942:6;18929:20;18920:29;;18958:30;18982:5;18958:30;:::i;:::-;18861:133;;;;:::o;19000:468::-;19065:6;19073;19122:2;19110:9;19101:7;19097:23;19093:32;19090:119;;;19128:79;;:::i;:::-;19090:119;19248:1;19273:53;19318:7;19309:6;19298:9;19294:22;19273:53;:::i;:::-;19263:63;;19219:117;19375:2;19401:50;19443:7;19434:6;19423:9;19419:22;19401:50;:::i;:::-;19391:60;;19346:115;19000:468;;;;;:::o;19474:118::-;19561:24;19579:5;19561:24;:::i;:::-;19556:3;19549:37;19474:118;;:::o;19598:222::-;19691:4;19729:2;19718:9;19714:18;19706:26;;19742:71;19810:1;19799:9;19795:17;19786:6;19742:71;:::i;:::-;19598:222;;;;:::o;19826:1057::-;19930:6;19938;19946;19954;19962;19970;20019:3;20007:9;19998:7;19994:23;19990:33;19987:120;;;20026:79;;:::i;:::-;19987:120;20146:1;20171:53;20216:7;20207:6;20196:9;20192:22;20171:53;:::i;:::-;20161:63;;20117:117;20273:2;20299:53;20344:7;20335:6;20324:9;20320:22;20299:53;:::i;:::-;20289:63;;20244:118;20401:2;20427:53;20472:7;20463:6;20452:9;20448:22;20427:53;:::i;:::-;20417:63;;20372:118;20529:2;20555:53;20600:7;20591:6;20580:9;20576:22;20555:53;:::i;:::-;20545:63;;20500:118;20657:3;20684:53;20729:7;20720:6;20709:9;20705:22;20684:53;:::i;:::-;20674:63;;20628:119;20786:3;20813:53;20858:7;20849:6;20838:9;20834:22;20813:53;:::i;:::-;20803:63;;20757:119;19826:1057;;;;;;;;:::o;20889:104::-;20934:7;20963:24;20981:5;20963:24;:::i;:::-;20952:35;;20889:104;;;:::o;20999:142::-;21102:32;21128:5;21102:32;:::i;:::-;21097:3;21090:45;20999:142;;:::o;21147:254::-;21256:4;21294:2;21283:9;21279:18;21271:26;;21307:87;21391:1;21380:9;21376:17;21367:6;21307:87;:::i;:::-;21147:254;;;;:::o;21407:474::-;21475:6;21483;21532:2;21520:9;21511:7;21507:23;21503:32;21500:119;;;21538:79;;:::i;:::-;21500:119;21658:1;21683:53;21728:7;21719:6;21708:9;21704:22;21683:53;:::i;:::-;21673:63;;21629:117;21785:2;21811:53;21856:7;21847:6;21836:9;21832:22;21811:53;:::i;:::-;21801:63;;21756:118;21407:474;;;;;:::o;21887:1089::-;21991:6;21999;22007;22015;22023;22072:3;22060:9;22051:7;22047:23;22043:33;22040:120;;;22079:79;;:::i;:::-;22040:120;22199:1;22224:53;22269:7;22260:6;22249:9;22245:22;22224:53;:::i;:::-;22214:63;;22170:117;22326:2;22352:53;22397:7;22388:6;22377:9;22373:22;22352:53;:::i;:::-;22342:63;;22297:118;22454:2;22480:53;22525:7;22516:6;22505:9;22501:22;22480:53;:::i;:::-;22470:63;;22425:118;22582:2;22608:53;22653:7;22644:6;22633:9;22629:22;22608:53;:::i;:::-;22598:63;;22553:118;22738:3;22727:9;22723:19;22710:33;22770:18;22762:6;22759:30;22756:117;;;22792:79;;:::i;:::-;22756:117;22897:62;22951:7;22942:6;22931:9;22927:22;22897:62;:::i;:::-;22887:72;;22681:288;21887:1089;;;;;;;;:::o;22982:230::-;23122:34;23118:1;23110:6;23106:14;23099:58;23191:13;23186:2;23178:6;23174:15;23167:38;22982:230;:::o;23218:366::-;23360:3;23381:67;23445:2;23440:3;23381:67;:::i;:::-;23374:74;;23457:93;23546:3;23457:93;:::i;:::-;23575:2;23570:3;23566:12;23559:19;;23218:366;;;:::o;23590:419::-;23756:4;23794:2;23783:9;23779:18;23771:26;;23843:9;23837:4;23833:20;23829:1;23818:9;23814:17;23807:47;23871:131;23997:4;23871:131;:::i;:::-;23863:139;;23590:419;;;:::o;24015:180::-;24063:77;24060:1;24053:88;24160:4;24157:1;24150:15;24184:4;24181:1;24174:15;24201:320;24245:6;24282:1;24276:4;24272:12;24262:22;;24329:1;24323:4;24319:12;24350:18;24340:81;;24406:4;24398:6;24394:17;24384:27;;24340:81;24468:2;24460:6;24457:14;24437:18;24434:38;24431:84;;24487:18;;:::i;:::-;24431:84;24252:269;24201:320;;;:::o;24527:237::-;24667:34;24663:1;24655:6;24651:14;24644:58;24736:20;24731:2;24723:6;24719:15;24712:45;24527:237;:::o;24770:366::-;24912:3;24933:67;24997:2;24992:3;24933:67;:::i;:::-;24926:74;;25009:93;25098:3;25009:93;:::i;:::-;25127:2;25122:3;25118:12;25111:19;;24770:366;;;:::o;25142:419::-;25308:4;25346:2;25335:9;25331:18;25323:26;;25395:9;25389:4;25385:20;25381:1;25370:9;25366:17;25359:47;25423:131;25549:4;25423:131;:::i;:::-;25415:139;;25142:419;;;:::o;25567:182::-;25707:34;25703:1;25695:6;25691:14;25684:58;25567:182;:::o;25755:366::-;25897:3;25918:67;25982:2;25977:3;25918:67;:::i;:::-;25911:74;;25994:93;26083:3;25994:93;:::i;:::-;26112:2;26107:3;26103:12;26096:19;;25755:366;;;:::o;26127:419::-;26293:4;26331:2;26320:9;26316:18;26308:26;;26380:9;26374:4;26370:20;26366:1;26355:9;26351:17;26344:47;26408:131;26534:4;26408:131;:::i;:::-;26400:139;;26127:419;;;:::o;26552:228::-;26692:34;26688:1;26680:6;26676:14;26669:58;26761:11;26756:2;26748:6;26744:15;26737:36;26552:228;:::o;26786:366::-;26928:3;26949:67;27013:2;27008:3;26949:67;:::i;:::-;26942:74;;27025:93;27114:3;27025:93;:::i;:::-;27143:2;27138:3;27134:12;27127:19;;26786:366;;;:::o;27158:419::-;27324:4;27362:2;27351:9;27347:18;27339:26;;27411:9;27405:4;27401:20;27397:1;27386:9;27382:17;27375:47;27439:131;27565:4;27439:131;:::i;:::-;27431:139;;27158:419;;;:::o;27583:180::-;27631:77;27628:1;27621:88;27728:4;27725:1;27718:15;27752:4;27749:1;27742:15;27769:180;27817:77;27814:1;27807:88;27914:4;27911:1;27904:15;27938:4;27935:1;27928:15;27955:233;27994:3;28017:24;28035:5;28017:24;:::i;:::-;28008:33;;28063:66;28056:5;28053:77;28050:103;;28133:18;;:::i;:::-;28050:103;28180:1;28173:5;28169:13;28162:20;;27955:233;;;:::o;28194:166::-;28334:18;28330:1;28322:6;28318:14;28311:42;28194:166;:::o;28366:366::-;28508:3;28529:67;28593:2;28588:3;28529:67;:::i;:::-;28522:74;;28605:93;28694:3;28605:93;:::i;:::-;28723:2;28718:3;28714:12;28707:19;;28366:366;;;:::o;28738:419::-;28904:4;28942:2;28931:9;28927:18;28919:26;;28991:9;28985:4;28981:20;28977:1;28966:9;28962:17;28955:47;29019:131;29145:4;29019:131;:::i;:::-;29011:139;;28738:419;;;:::o;29163:181::-;29303:33;29299:1;29291:6;29287:14;29280:57;29163:181;:::o;29350:366::-;29492:3;29513:67;29577:2;29572:3;29513:67;:::i;:::-;29506:74;;29589:93;29678:3;29589:93;:::i;:::-;29707:2;29702:3;29698:12;29691:19;;29350:366;;;:::o;29722:419::-;29888:4;29926:2;29915:9;29911:18;29903:26;;29975:9;29969:4;29965:20;29961:1;29950:9;29946:17;29939:47;30003:131;30129:4;30003:131;:::i;:::-;29995:139;;29722:419;;;:::o;30147:155::-;30287:7;30283:1;30275:6;30271:14;30264:31;30147:155;:::o;30308:365::-;30450:3;30471:66;30535:1;30530:3;30471:66;:::i;:::-;30464:73;;30546:93;30635:3;30546:93;:::i;:::-;30664:2;30659:3;30655:12;30648:19;;30308:365;;;:::o;30679:419::-;30845:4;30883:2;30872:9;30868:18;30860:26;;30932:9;30926:4;30922:20;30918:1;30907:9;30903:17;30896:47;30960:131;31086:4;30960:131;:::i;:::-;30952:139;;30679:419;;;:::o;31104:155::-;31244:7;31240:1;31232:6;31228:14;31221:31;31104:155;:::o;31265:365::-;31407:3;31428:66;31492:1;31487:3;31428:66;:::i;:::-;31421:73;;31503:93;31592:3;31503:93;:::i;:::-;31621:2;31616:3;31612:12;31605:19;;31265:365;;;:::o;31636:419::-;31802:4;31840:2;31829:9;31825:18;31817:26;;31889:9;31883:4;31879:20;31875:1;31864:9;31860:17;31853:47;31917:131;32043:4;31917:131;:::i;:::-;31909:139;;31636:419;;;:::o;32061:154::-;32201:6;32197:1;32189:6;32185:14;32178:30;32061:154;:::o;32221:365::-;32363:3;32384:66;32448:1;32443:3;32384:66;:::i;:::-;32377:73;;32459:93;32548:3;32459:93;:::i;:::-;32577:2;32572:3;32568:12;32561:19;;32221:365;;;:::o;32592:419::-;32758:4;32796:2;32785:9;32781:18;32773:26;;32845:9;32839:4;32835:20;32831:1;32820:9;32816:17;32809:47;32873:131;32999:4;32873:131;:::i;:::-;32865:139;;32592:419;;;:::o;33017:157::-;33157:9;33153:1;33145:6;33141:14;33134:33;33017:157;:::o;33180:365::-;33322:3;33343:66;33407:1;33402:3;33343:66;:::i;:::-;33336:73;;33418:93;33507:3;33418:93;:::i;:::-;33536:2;33531:3;33527:12;33520:19;;33180:365;;;:::o;33551:419::-;33717:4;33755:2;33744:9;33740:18;33732:26;;33804:9;33798:4;33794:20;33790:1;33779:9;33775:17;33768:47;33832:131;33958:4;33832:131;:::i;:::-;33824:139;;33551:419;;;:::o;33976:154::-;34116:6;34112:1;34104:6;34100:14;34093:30;33976:154;:::o;34136:365::-;34278:3;34299:66;34363:1;34358:3;34299:66;:::i;:::-;34292:73;;34374:93;34463:3;34374:93;:::i;:::-;34492:2;34487:3;34483:12;34476:19;;34136:365;;;:::o;34507:419::-;34673:4;34711:2;34700:9;34696:18;34688:26;;34760:9;34754:4;34750:20;34746:1;34735:9;34731:17;34724:47;34788:131;34914:4;34788:131;:::i;:::-;34780:139;;34507:419;;;:::o;34932:154::-;35072:6;35068:1;35060:6;35056:14;35049:30;34932:154;:::o;35092:365::-;35234:3;35255:66;35319:1;35314:3;35255:66;:::i;:::-;35248:73;;35330:93;35419:3;35330:93;:::i;:::-;35448:2;35443:3;35439:12;35432:19;;35092:365;;;:::o;35463:419::-;35629:4;35667:2;35656:9;35652:18;35644:26;;35716:9;35710:4;35706:20;35702:1;35691:9;35687:17;35680:47;35744:131;35870:4;35744:131;:::i;:::-;35736:139;;35463:419;;;:::o;35888:94::-;35921:8;35969:5;35965:2;35961:14;35940:35;;35888:94;;;:::o;35988:::-;36027:7;36056:20;36070:5;36056:20;:::i;:::-;36045:31;;35988:94;;;:::o;36088:100::-;36127:7;36156:26;36176:5;36156:26;:::i;:::-;36145:37;;36088:100;;;:::o;36194:157::-;36299:45;36319:24;36337:5;36319:24;:::i;:::-;36299:45;:::i;:::-;36294:3;36287:58;36194:157;;:::o;36357:256::-;36469:3;36484:75;36555:3;36546:6;36484:75;:::i;:::-;36584:2;36579:3;36575:12;36568:19;;36604:3;36597:10;;36357:256;;;;:::o;36619:154::-;36759:6;36755:1;36747:6;36743:14;36736:30;36619:154;:::o;36779:365::-;36921:3;36942:66;37006:1;37001:3;36942:66;:::i;:::-;36935:73;;37017:93;37106:3;37017:93;:::i;:::-;37135:2;37130:3;37126:12;37119:19;;36779:365;;;:::o;37150:419::-;37316:4;37354:2;37343:9;37339:18;37331:26;;37403:9;37397:4;37393:20;37389:1;37378:9;37374:17;37367:47;37431:131;37557:4;37431:131;:::i;:::-;37423:139;;37150:419;;;:::o;37575:161::-;37715:13;37711:1;37703:6;37699:14;37692:37;37575:161;:::o;37742:366::-;37884:3;37905:67;37969:2;37964:3;37905:67;:::i;:::-;37898:74;;37981:93;38070:3;37981:93;:::i;:::-;38099:2;38094:3;38090:12;38083:19;;37742:366;;;:::o;38114:419::-;38280:4;38318:2;38307:9;38303:18;38295:26;;38367:9;38361:4;38357:20;38353:1;38342:9;38338:17;38331:47;38395:131;38521:4;38395:131;:::i;:::-;38387:139;;38114:419;;;:::o;38539:155::-;38679:7;38675:1;38667:6;38663:14;38656:31;38539:155;:::o;38700:365::-;38842:3;38863:66;38927:1;38922:3;38863:66;:::i;:::-;38856:73;;38938:93;39027:3;38938:93;:::i;:::-;39056:2;39051:3;39047:12;39040:19;;38700:365;;;:::o;39071:419::-;39237:4;39275:2;39264:9;39260:18;39252:26;;39324:9;39318:4;39314:20;39310:1;39299:9;39295:17;39288:47;39352:131;39478:4;39352:131;:::i;:::-;39344:139;;39071:419;;;:::o;39496:147::-;39597:11;39634:3;39619:18;;39496:147;;;;:::o;39649:114::-;;:::o;39769:398::-;39928:3;39949:83;40030:1;40025:3;39949:83;:::i;:::-;39942:90;;40041:93;40130:3;40041:93;:::i;:::-;40159:1;40154:3;40150:11;40143:18;;39769:398;;;:::o;40173:379::-;40357:3;40379:147;40522:3;40379:147;:::i;:::-;40372:154;;40543:3;40536:10;;40173:379;;;:::o;40558:161::-;40698:13;40694:1;40686:6;40682:14;40675:37;40558:161;:::o;40725:366::-;40867:3;40888:67;40952:2;40947:3;40888:67;:::i;:::-;40881:74;;40964:93;41053:3;40964:93;:::i;:::-;41082:2;41077:3;41073:12;41066:19;;40725:366;;;:::o;41097:419::-;41263:4;41301:2;41290:9;41286:18;41278:26;;41350:9;41344:4;41340:20;41336:1;41325:9;41321:17;41314:47;41378:131;41504:4;41378:131;:::i;:::-;41370:139;;41097:419;;;:::o;41522:155::-;41662:7;41658:1;41650:6;41646:14;41639:31;41522:155;:::o;41683:365::-;41825:3;41846:66;41910:1;41905:3;41846:66;:::i;:::-;41839:73;;41921:93;42010:3;41921:93;:::i;:::-;42039:2;42034:3;42030:12;42023:19;;41683:365;;;:::o;42054:419::-;42220:4;42258:2;42247:9;42243:18;42235:26;;42307:9;42301:4;42297:20;42293:1;42282:9;42278:17;42271:47;42335:131;42461:4;42335:131;:::i;:::-;42327:139;;42054:419;;;:::o;42479:155::-;42619:7;42615:1;42607:6;42603:14;42596:31;42479:155;:::o;42640:365::-;42782:3;42803:66;42867:1;42862:3;42803:66;:::i;:::-;42796:73;;42878:93;42967:3;42878:93;:::i;:::-;42996:2;42991:3;42987:12;42980:19;;42640:365;;;:::o;43011:419::-;43177:4;43215:2;43204:9;43200:18;43192:26;;43264:9;43258:4;43254:20;43250:1;43239:9;43235:17;43228:47;43292:131;43418:4;43292:131;:::i;:::-;43284:139;;43011:419;;;:::o;43436:154::-;43576:6;43572:1;43564:6;43560:14;43553:30;43436:154;:::o;43596:365::-;43738:3;43759:66;43823:1;43818:3;43759:66;:::i;:::-;43752:73;;43834:93;43923:3;43834:93;:::i;:::-;43952:2;43947:3;43943:12;43936:19;;43596:365;;;:::o;43967:419::-;44133:4;44171:2;44160:9;44156:18;44148:26;;44220:9;44214:4;44210:20;44206:1;44195:9;44191:17;44184:47;44248:131;44374:4;44248:131;:::i;:::-;44240:139;;43967:419;;;:::o;44392:157::-;44532:9;44528:1;44520:6;44516:14;44509:33;44392:157;:::o;44555:365::-;44697:3;44718:66;44782:1;44777:3;44718:66;:::i;:::-;44711:73;;44793:93;44882:3;44793:93;:::i;:::-;44911:2;44906:3;44902:12;44895:19;;44555:365;;;:::o;44926:419::-;45092:4;45130:2;45119:9;45115:18;45107:26;;45179:9;45173:4;45169:20;45165:1;45154:9;45150:17;45143:47;45207:131;45333:4;45207:131;:::i;:::-;45199:139;;44926:419;;;:::o;45351:154::-;45491:6;45487:1;45479:6;45475:14;45468:30;45351:154;:::o;45511:365::-;45653:3;45674:66;45738:1;45733:3;45674:66;:::i;:::-;45667:73;;45749:93;45838:3;45749:93;:::i;:::-;45867:2;45862:3;45858:12;45851:19;;45511:365;;;:::o;45882:419::-;46048:4;46086:2;46075:9;46071:18;46063:26;;46135:9;46129:4;46125:20;46121:1;46110:9;46106:17;46099:47;46163:131;46289:4;46163:131;:::i;:::-;46155:139;;45882:419;;;:::o;46307:154::-;46447:6;46443:1;46435:6;46431:14;46424:30;46307:154;:::o;46467:365::-;46609:3;46630:66;46694:1;46689:3;46630:66;:::i;:::-;46623:73;;46705:93;46794:3;46705:93;:::i;:::-;46823:2;46818:3;46814:12;46807:19;;46467:365;;;:::o;46838:419::-;47004:4;47042:2;47031:9;47027:18;47019:26;;47091:9;47085:4;47081:20;47077:1;47066:9;47062:17;47055:47;47119:131;47245:4;47119:131;:::i;:::-;47111:139;;46838:419;;;:::o;47263:228::-;47403:34;47399:1;47391:6;47387:14;47380:58;47472:11;47467:2;47459:6;47455:15;47448:36;47263:228;:::o;47497:366::-;47639:3;47660:67;47724:2;47719:3;47660:67;:::i;:::-;47653:74;;47736:93;47825:3;47736:93;:::i;:::-;47854:2;47849:3;47845:12;47838:19;;47497:366;;;:::o;47869:419::-;48035:4;48073:2;48062:9;48058:18;48050:26;;48122:9;48116:4;48112:20;48108:1;48097:9;48093:17;48086:47;48150:131;48276:4;48150:131;:::i;:::-;48142:139;;47869:419;;;:::o;48294:225::-;48434:34;48430:1;48422:6;48418:14;48411:58;48503:8;48498:2;48490:6;48486:15;48479:33;48294:225;:::o;48525:366::-;48667:3;48688:67;48752:2;48747:3;48688:67;:::i;:::-;48681:74;;48764:93;48853:3;48764:93;:::i;:::-;48882:2;48877:3;48873:12;48866:19;;48525:366;;;:::o;48897:419::-;49063:4;49101:2;49090:9;49086:18;49078:26;;49150:9;49144:4;49140:20;49136:1;49125:9;49121:17;49114:47;49178:131;49304:4;49178:131;:::i;:::-;49170:139;;48897:419;;;:::o;49322:227::-;49462:34;49458:1;49450:6;49446:14;49439:58;49531:10;49526:2;49518:6;49514:15;49507:35;49322:227;:::o;49555:366::-;49697:3;49718:67;49782:2;49777:3;49718:67;:::i;:::-;49711:74;;49794:93;49883:3;49794:93;:::i;:::-;49912:2;49907:3;49903:12;49896:19;;49555:366;;;:::o;49927:419::-;50093:4;50131:2;50120:9;50116:18;50108:26;;50180:9;50174:4;50170:20;50166:1;50155:9;50151:17;50144:47;50208:131;50334:4;50208:131;:::i;:::-;50200:139;;49927:419;;;:::o;50352:224::-;50492:34;50488:1;50480:6;50476:14;50469:58;50561:7;50556:2;50548:6;50544:15;50537:32;50352:224;:::o;50582:366::-;50724:3;50745:67;50809:2;50804:3;50745:67;:::i;:::-;50738:74;;50821:93;50910:3;50821:93;:::i;:::-;50939:2;50934:3;50930:12;50923:19;;50582:366;;;:::o;50954:419::-;51120:4;51158:2;51147:9;51143:18;51135:26;;51207:9;51201:4;51197:20;51193:1;51182:9;51178:17;51171:47;51235:131;51361:4;51235:131;:::i;:::-;51227:139;;50954:419;;;:::o;51379:229::-;51519:34;51515:1;51507:6;51503:14;51496:58;51588:12;51583:2;51575:6;51571:15;51564:37;51379:229;:::o;51614:366::-;51756:3;51777:67;51841:2;51836:3;51777:67;:::i;:::-;51770:74;;51853:93;51942:3;51853:93;:::i;:::-;51971:2;51966:3;51962:12;51955:19;;51614:366;;;:::o;51986:419::-;52152:4;52190:2;52179:9;52175:18;52167:26;;52239:9;52233:4;52229:20;52225:1;52214:9;52210:17;52203:47;52267:131;52393:4;52267:131;:::i;:::-;52259:139;;51986:419;;;:::o;52411:305::-;52451:3;52470:20;52488:1;52470:20;:::i;:::-;52465:25;;52504:20;52522:1;52504:20;:::i;:::-;52499:25;;52658:1;52590:66;52586:74;52583:1;52580:81;52577:107;;;52664:18;;:::i;:::-;52577:107;52708:1;52705;52701:9;52694:16;;52411:305;;;;:::o;52722:634::-;52943:4;52981:2;52970:9;52966:18;52958:26;;53030:9;53024:4;53020:20;53016:1;53005:9;53001:17;52994:47;53058:108;53161:4;53152:6;53058:108;:::i;:::-;53050:116;;53213:9;53207:4;53203:20;53198:2;53187:9;53183:18;53176:48;53241:108;53344:4;53335:6;53241:108;:::i;:::-;53233:116;;52722:634;;;;;:::o;53362:220::-;53502:34;53498:1;53490:6;53486:14;53479:58;53571:3;53566:2;53558:6;53554:15;53547:28;53362:220;:::o;53588:366::-;53730:3;53751:67;53815:2;53810:3;53751:67;:::i;:::-;53744:74;;53827:93;53916:3;53827:93;:::i;:::-;53945:2;53940:3;53936:12;53929:19;;53588:366;;;:::o;53960:419::-;54126:4;54164:2;54153:9;54149:18;54141:26;;54213:9;54207:4;54203:20;54199:1;54188:9;54184:17;54177:47;54241:131;54367:4;54241:131;:::i;:::-;54233:139;;53960:419;;;:::o;54385:332::-;54506:4;54544:2;54533:9;54529:18;54521:26;;54557:71;54625:1;54614:9;54610:17;54601:6;54557:71;:::i;:::-;54638:72;54706:2;54695:9;54691:18;54682:6;54638:72;:::i;:::-;54385:332;;;;;:::o;54723:228::-;54863:34;54859:1;54851:6;54847:14;54840:58;54932:11;54927:2;54919:6;54915:15;54908:36;54723:228;:::o;54957:366::-;55099:3;55120:67;55184:2;55179:3;55120:67;:::i;:::-;55113:74;;55196:93;55285:3;55196:93;:::i;:::-;55314:2;55309:3;55305:12;55298:19;;54957:366;;;:::o;55329:419::-;55495:4;55533:2;55522:9;55518:18;55510:26;;55582:9;55576:4;55572:20;55568:1;55557:9;55553:17;55546:47;55610:131;55736:4;55610:131;:::i;:::-;55602:139;;55329:419;;;:::o;55754:170::-;55894:22;55890:1;55882:6;55878:14;55871:46;55754:170;:::o;55930:366::-;56072:3;56093:67;56157:2;56152:3;56093:67;:::i;:::-;56086:74;;56169:93;56258:3;56169:93;:::i;:::-;56287:2;56282:3;56278:12;56271:19;;55930:366;;;:::o;56302:419::-;56468:4;56506:2;56495:9;56491:18;56483:26;;56555:9;56549:4;56545:20;56541:1;56530:9;56526:17;56519:47;56583:131;56709:4;56583:131;:::i;:::-;56575:139;;56302:419;;;:::o;56727:231::-;56867:34;56863:1;56855:6;56851:14;56844:58;56936:14;56931:2;56923:6;56919:15;56912:39;56727:231;:::o;56964:366::-;57106:3;57127:67;57191:2;57186:3;57127:67;:::i;:::-;57120:74;;57203:93;57292:3;57203:93;:::i;:::-;57321:2;57316:3;57312:12;57305:19;;56964:366;;;:::o;57336:419::-;57502:4;57540:2;57529:9;57525:18;57517:26;;57589:9;57583:4;57579:20;57575:1;57564:9;57560:17;57553:47;57617:131;57743:4;57617:131;:::i;:::-;57609:139;;57336:419;;;:::o;57761:98::-;57812:6;57846:5;57840:12;57830:22;;57761:98;;;:::o;57865:168::-;57948:11;57982:6;57977:3;57970:19;58022:4;58017:3;58013:14;57998:29;;57865:168;;;;:::o;58039:360::-;58125:3;58153:38;58185:5;58153:38;:::i;:::-;58207:70;58270:6;58265:3;58207:70;:::i;:::-;58200:77;;58286:52;58331:6;58326:3;58319:4;58312:5;58308:16;58286:52;:::i;:::-;58363:29;58385:6;58363:29;:::i;:::-;58358:3;58354:39;58347:46;;58129:270;58039:360;;;;:::o;58405:1053::-;58728:4;58766:3;58755:9;58751:19;58743:27;;58780:71;58848:1;58837:9;58833:17;58824:6;58780:71;:::i;:::-;58861:72;58929:2;58918:9;58914:18;58905:6;58861:72;:::i;:::-;58980:9;58974:4;58970:20;58965:2;58954:9;58950:18;58943:48;59008:108;59111:4;59102:6;59008:108;:::i;:::-;59000:116;;59163:9;59157:4;59153:20;59148:2;59137:9;59133:18;59126:48;59191:108;59294:4;59285:6;59191:108;:::i;:::-;59183:116;;59347:9;59341:4;59337:20;59331:3;59320:9;59316:19;59309:49;59375:76;59446:4;59437:6;59375:76;:::i;:::-;59367:84;;58405:1053;;;;;;;;:::o;59464:141::-;59520:5;59551:6;59545:13;59536:22;;59567:32;59593:5;59567:32;:::i;:::-;59464:141;;;;:::o;59611:349::-;59680:6;59729:2;59717:9;59708:7;59704:23;59700:32;59697:119;;;59735:79;;:::i;:::-;59697:119;59855:1;59880:63;59935:7;59926:6;59915:9;59911:22;59880:63;:::i;:::-;59870:73;;59826:127;59611:349;;;;:::o;59966:106::-;60010:8;60059:5;60054:3;60050:15;60029:36;;59966:106;;;:::o;60078:183::-;60113:3;60151:1;60133:16;60130:23;60127:128;;;60189:1;60186;60183;60168:23;60211:34;60242:1;60236:8;60211:34;:::i;:::-;60204:41;;60127:128;60078:183;:::o;60267:711::-;60306:3;60344:4;60326:16;60323:26;60352:5;60320:39;60381:20;;:::i;:::-;60456:1;60438:16;60434:24;60431:1;60425:4;60410:49;60489:4;60483:11;60588:16;60581:4;60573:6;60569:17;60566:39;60533:18;60525:6;60522:30;60506:113;60503:146;;;60634:5;;;;60503:146;60680:6;60674:4;60670:17;60716:3;60710:10;60743:18;60735:6;60732:30;60729:43;;;60765:5;;;;;;60729:43;60813:6;60806:4;60801:3;60797:14;60793:27;60872:1;60854:16;60850:24;60844:4;60840:35;60835:3;60832:44;60829:57;;;60879:5;;;;;;;60829:57;60896;60944:6;60938:4;60934:17;60926:6;60922:30;60916:4;60896:57;:::i;:::-;60969:3;60962:10;;60310:668;;;;;60267:711;;:::o;60984:239::-;61124:34;61120:1;61112:6;61108:14;61101:58;61193:22;61188:2;61180:6;61176:15;61169:47;60984:239;:::o;61229:366::-;61371:3;61392:67;61456:2;61451:3;61392:67;:::i;:::-;61385:74;;61468:93;61557:3;61468:93;:::i;:::-;61586:2;61581:3;61577:12;61570:19;;61229:366;;;:::o;61601:419::-;61767:4;61805:2;61794:9;61790:18;61782:26;;61854:9;61848:4;61844:20;61840:1;61829:9;61825:17;61818:47;61882:131;62008:4;61882:131;:::i;:::-;61874:139;;61601:419;;;:::o;62026:227::-;62166:34;62162:1;62154:6;62150:14;62143:58;62235:10;62230:2;62222:6;62218:15;62211:35;62026:227;:::o;62259:366::-;62401:3;62422:67;62486:2;62481:3;62422:67;:::i;:::-;62415:74;;62498:93;62587:3;62498:93;:::i;:::-;62616:2;62611:3;62607:12;62600:19;;62259:366;;;:::o;62631:419::-;62797:4;62835:2;62824:9;62820:18;62812:26;;62884:9;62878:4;62874:20;62870:1;62859:9;62855:17;62848:47;62912:131;63038:4;62912:131;:::i;:::-;62904:139;;62631:419;;;:::o;63056:751::-;63279:4;63317:3;63306:9;63302:19;63294:27;;63331:71;63399:1;63388:9;63384:17;63375:6;63331:71;:::i;:::-;63412:72;63480:2;63469:9;63465:18;63456:6;63412:72;:::i;:::-;63494;63562:2;63551:9;63547:18;63538:6;63494:72;:::i;:::-;63576;63644:2;63633:9;63629:18;63620:6;63576:72;:::i;:::-;63696:9;63690:4;63686:20;63680:3;63669:9;63665:19;63658:49;63724:76;63795:4;63786:6;63724:76;:::i;:::-;63716:84;;63056:751;;;;;;;;:::o

Swarm Source

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

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