ETH Price: $3,395.79 (+1.12%)
Gas: 7 Gwei

Token

Trump Cash (TCASH)
 

Overview

Max Total Supply

21,000,000 TCASH

Holders

299

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
7,970.502050633 TCASH

Value
$0.00
0xd14ccb74bb779c2ee9aed0730041456c04d88dd6
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:
TCASH

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-04
*/

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


// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * The initial owner is set to the address provided by the deployer. This can
 * later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: @openzeppelin/contracts/security/Pausable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        _requirePaused();
        _;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Throws if the contract is paused.
     */
    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }

    /**
     * @dev Throws if the contract is not paused.
     */
    function _requirePaused() internal view virtual {
        require(paused(), "Pausable: not paused");
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

// File: @openzeppelin/contracts/utils/math/SafeMath.sol


// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
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;
        }
    }
}

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


// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the value of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves a `value` amount of tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 value) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the
     * caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 value) external returns (bool);

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

// File: TCash.sol

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.26;





interface Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface Router {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract TCASH is IERC20, Ownable, Pausable {
    using SafeMath for uint256;
    Router public router = Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    string _name = "Trump Cash";
    string _symbol = "TCASH";

    uint256 _totalSupply = 21000000000000000;

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

    mapping(address => bool) public isFeeExempt;

    uint256 public liquidityFee = 1;
    uint256 public marketingFee = 1;
    uint256 public claimFee = 1;
    uint256 public extraFeeOnSell = 3;

    uint256 public totalFee = 3;
    uint256 public totalFeeIfSelling = 6;

    address public marketingWallet = 0xEaEE4625dF4CD677569e8DCe02bA771790a0b215;
    address public claimWallet = 0x56F97b7Ccf63a1264c61D3aACE01f18F63Fe4619;

    address public pair;

    uint256 public launchedAt;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    uint256 public swapThreshold = 2100000000000;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() Ownable(msg.sender) {
        pair = Factory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;

        isFeeExempt[address(this)] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    //========== TOKEN FUNCTIONS ==========\\
    function name() external view returns (string memory) {
        return _name;
    }

    function symbol() external view returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return 9;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return
            _totalSupply
                .sub(balanceOf(0x000000000000000000000000000000000000dEaD))
                .sub(balanceOf(0x0000000000000000000000000000000000000000));
    }

    function balanceOf(address _account)
        public
        view
        override
        returns (uint256)
    {
        return _balances[_account];
    }

    function allowance(address _holder, address _spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[_holder][_spender];
    }

    function approve(address _spender, uint256 _amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][_spender] = _amount;
        emit Approval(msg.sender, _spender, _amount);
        return true;
    }

    function approveMax(address _spender) external returns (bool) {
        return approve(_spender, type(uint256).max);
    }

    //========== LAUNCH FUNCTIONS ==========\\
    function launchToken() external onlyOwner {
        require(!launched(), "Token is launched");
        launch();
    }

    function pauseTransfers() external onlyOwner {
        _pause();
    }

    function unpauseTransfers() external onlyOwner {
        _unpause();
    }

    //========== TAX FUNCTIONS ==========\\
    function changeIsFeeExempt(address _holder, bool _exempt) public onlyOwner {
        isFeeExempt[_holder] = _exempt;
    }

    function changeSwapThreshold(uint256 _newLimit) external onlyOwner {
        swapThreshold = _newLimit;
    }

    function changeFees(
        uint256 _lpFee,
        uint256 _claimFee,
        uint256 _marketingFee,
        uint256 _sellFee
    ) external onlyOwner {
        liquidityFee = _lpFee;
        claimFee = _claimFee;
        marketingFee = _marketingFee;
        extraFeeOnSell = _sellFee;

        totalFee = liquidityFee.add(marketingFee).add(claimFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);
    }

    function changeFeeReceiver(
        address _newMarketingWallet,
        address _newClaimWallet
    ) external onlyOwner {
        marketingWallet = _newMarketingWallet;
        claimWallet = _newClaimWallet;
    }

    //========== TRANSFER FUNCTIONS ==========\\
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    //========== INTERNAL FUNCTIONS ==========\\
    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(
            sender == owner() || (launched() && !paused()),
            "Token must be launched and not paused"
        );

        if (inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (
            msg.sender != pair &&
            !inSwapAndLiquify &&
            swapAndLiquifyEnabled &&
            _balances[address(this)] >= swapThreshold
        ) {
            swapBack();
        }

        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );

        uint256 finalAmount = isFeeExempt[sender] ||
            isFeeExempt[recipient] ||
            (recipient != pair && sender != pair)
            ? amount
            : takeFee(sender, recipient, amount);

        _balances[recipient] = _balances[recipient].add(finalAmount);

        emit Transfer(sender, recipient, finalAmount);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeApplicable = pair == recipient
            ? totalFeeIfSelling
            : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function swapBack() internal lockTheSwap {
        uint256 ttl = _balances[address(this)]; //total tokens built as taxes
        uint256 atl = ttl.mul(liquidityFee).div(totalFee).div(2); //the tokens to keep to make liq

        uint256 ats = ttl.sub(atl); //rest of the tokens left over
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            ats,
            0,
            path,
            address(this),
            block.timestamp
        ); //swap the tokens

        uint256 eth = address(this).balance;

        uint256 teth = totalFee.sub(liquidityFee.div(2));

        uint256 lp = eth.mul(liquidityFee).div(teth).div(2);

        uint256 c = eth.mul(claimFee).div(teth);
        uint256 m = eth.sub(lp).sub(c);

        (bool tmpSuccess, ) = payable(claimWallet).call{value: c, gas: 30000}(
            ""
        );

        (bool tmpSuccess1, ) = payable(marketingWallet).call{
            value: m,
            gas: 30000
        }("");

        tmpSuccess = false;
        tmpSuccess1 = false;

        if (atl > 0) {
            router.addLiquidityETH{value: lp}(
                address(this),
                atl,
                0,
                0,
                marketingWallet,
                block.timestamp
            );
            emit AutoLiquify(lp, atl);
        }
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    //========== EVENTS ==========\\
    event AutoLiquify(uint256 amountETH, uint256 amountTOKEN);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTOKEN","type":"uint256"}],"name":"AutoLiquify","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newMarketingWallet","type":"address"},{"internalType":"address","name":"_newClaimWallet","type":"address"}],"name":"changeFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lpFee","type":"uint256"},{"internalType":"uint256","name":"_claimFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"},{"internalType":"bool","name":"_exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"changeSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"extraFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseTransfers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseTransfers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600a81526020017f5472756d702043617368000000000000000000000000000000000000000000008152506002908161009c9190610965565b506040518060400160405280600581526020017f5443415348000000000000000000000000000000000000000000000000000000815250600390816100e19190610965565b50664a9b6384488000600455600160085560016009556001600a556003600b556003600c556006600d5573eaee4625df4cd677569e8dce02ba771790a0b215600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507356f97b7ccf63a1264c61d3aace01f18f63fe4619600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260016101000a81548160ff0219169083151502179055506501e8f1c108006013553480156101e3575f80fd5b50335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610255575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161024c9190610a73565b60405180910390fd5b6102648161066a60201b60201c565b505f8060146101000a81548160ff02191690831515021790555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030c9190610aba565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610391573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103b59190610aba565b306040518363ffffffff1660e01b81526004016103d3929190610ae5565b6020604051808303815f875af11580156103ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104139190610aba565b60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060045460055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405161065d9190610b1b565b60405180910390a3610b34565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806107a657607f821691505b6020821081036107b9576107b8610762565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261081b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826107e0565b61082586836107e0565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61086961086461085f8461083d565b610846565b61083d565b9050919050565b5f819050919050565b6108828361084f565b61089661088e82610870565b8484546107ec565b825550505050565b5f90565b6108aa61089e565b6108b5818484610879565b505050565b5b818110156108d8576108cd5f826108a2565b6001810190506108bb565b5050565b601f82111561091d576108ee816107bf565b6108f7846107d1565b81016020851015610906578190505b61091a610912856107d1565b8301826108ba565b50505b505050565b5f82821c905092915050565b5f61093d5f1984600802610922565b1980831691505092915050565b5f610955838361092e565b9150826002028217905092915050565b61096e8261072b565b67ffffffffffffffff81111561098757610986610735565b5b610991825461078f565b61099c8282856108dc565b5f60209050601f8311600181146109cd575f84156109bb578287015190505b6109c5858261094a565b865550610a2c565b601f1984166109db866107bf565b5f5b82811015610a02578489015182556001820191506020850194506020810190506109dd565b86831015610a1f5784890151610a1b601f89168261092e565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a5d82610a34565b9050919050565b610a6d81610a53565b82525050565b5f602082019050610a865f830184610a64565b92915050565b5f80fd5b610a9981610a53565b8114610aa3575f80fd5b50565b5f81519050610ab481610a90565b92915050565b5f60208284031215610acf57610ace610a8c565b5b5f610adc84828501610aa6565b91505092915050565b5f604082019050610af85f830185610a64565b610b056020830184610a64565b9392505050565b610b158161083d565b82525050565b5f602082019050610b2e5f830184610b0c565b92915050565b612d6f80610b415f395ff3fe608060405260043610610212575f3560e01c8063715018a611610117578063a28a4d861161009f578063bf56b3711161006e578063bf56b37114610747578063ca987b0e14610771578063dd62ed3e1461079b578063f2fde38b146107d7578063f887ea40146107ff57610219565b8063a28a4d86146106a3578063a3a2e89e146106b9578063a8aa1b31146106e1578063a9059cbb1461070b57610219565b806389f425e7116100e657806389f425e7146105d35780638da5cb5b146105fb57806395d89b411461062557806398118cb41461064f57806399d32fc41461067957610219565b8063715018a61461055557806375f0a8741461056b578063840b31cb146105955780638936a91f146105bd57610219565b806343ec53fb1161019a5780635c975abb116101695780635c975abb14610473578063650c42261461049d57806369cf17d4146104c55780636b67c4df146104ef57806370a082311461051957610219565b806343ec53fb146103cd57806347af9957146103f75780634a74bb021461040d578063571ac8b01461043757610219565b80631df4ccfc116101e15780631df4ccfc146102d757806323b872dd146103015780632b112e491461033d578063313ce567146103675780633f4218e01461039157610219565b80630445b6671461021d57806306fdde0314610247578063095ea7b31461027157806318160ddd146102ad57610219565b3661021957005b5f80fd5b348015610228575f80fd5b50610231610829565b60405161023e91906122b7565b60405180910390f35b348015610252575f80fd5b5061025b61082f565b6040516102689190612340565b60405180910390f35b34801561027c575f80fd5b50610297600480360381019061029291906123e8565b6108bf565b6040516102a49190612440565b60405180910390f35b3480156102b8575f80fd5b506102c16109ac565b6040516102ce91906122b7565b60405180910390f35b3480156102e2575f80fd5b506102eb6109b5565b6040516102f891906122b7565b60405180910390f35b34801561030c575f80fd5b5061032760048036038101906103229190612459565b6109bb565b6040516103349190612440565b60405180910390f35b348015610348575f80fd5b50610351610bae565b60405161035e91906122b7565b60405180910390f35b348015610372575f80fd5b5061037b610bed565b60405161038891906124c4565b60405180910390f35b34801561039c575f80fd5b506103b760048036038101906103b291906124dd565b610bf5565b6040516103c49190612440565b60405180910390f35b3480156103d8575f80fd5b506103e1610c12565b6040516103ee9190612517565b60405180910390f35b348015610402575f80fd5b5061040b610c37565b005b348015610418575f80fd5b50610421610c49565b60405161042e9190612440565b60405180910390f35b348015610442575f80fd5b5061045d600480360381019061045891906124dd565b610c5c565b60405161046a9190612440565b60405180910390f35b34801561047e575f80fd5b50610487610c8e565b6040516104949190612440565b60405180910390f35b3480156104a8575f80fd5b506104c360048036038101906104be9190612530565b610ca3565b005b3480156104d0575f80fd5b506104d9610d1b565b6040516104e691906122b7565b60405180910390f35b3480156104fa575f80fd5b50610503610d21565b60405161051091906122b7565b60405180910390f35b348015610524575f80fd5b5061053f600480360381019061053a91906124dd565b610d27565b60405161054c91906122b7565b60405180910390f35b348015610560575f80fd5b50610569610d6d565b005b348015610576575f80fd5b5061057f610d80565b60405161058c9190612517565b60405180910390f35b3480156105a0575f80fd5b506105bb60048036038101906105b69190612594565b610da5565b005b3480156105c8575f80fd5b506105d1610e31565b005b3480156105de575f80fd5b506105f960048036038101906105f491906125d2565b610e43565b005b348015610606575f80fd5b5061060f610e55565b60405161061c9190612517565b60405180910390f35b348015610630575f80fd5b50610639610e7c565b6040516106469190612340565b60405180910390f35b34801561065a575f80fd5b50610663610f0c565b60405161067091906122b7565b60405180910390f35b348015610684575f80fd5b5061068d610f12565b60405161069a91906122b7565b60405180910390f35b3480156106ae575f80fd5b506106b7610f18565b005b3480156106c4575f80fd5b506106df60048036038101906106da9190612627565b610f72565b005b3480156106ec575f80fd5b506106f5610fd2565b6040516107029190612517565b60405180910390f35b348015610716575f80fd5b50610731600480360381019061072c91906123e8565b610ff7565b60405161073e9190612440565b60405180910390f35b348015610752575f80fd5b5061075b61100b565b60405161076891906122b7565b60405180910390f35b34801561077c575f80fd5b50610785611011565b60405161079291906122b7565b60405180910390f35b3480156107a6575f80fd5b506107c160048036038101906107bc9190612594565b611017565b6040516107ce91906122b7565b60405180910390f35b3480156107e2575f80fd5b506107fd60048036038101906107f891906124dd565b611099565b005b34801561080a575f80fd5b5061081361111d565b60405161082091906126c0565b60405180910390f35b60135481565b60606002805461083e90612706565b80601f016020809104026020016040519081016040528092919081815260200182805461086a90612706565b80156108b55780601f1061088c576101008083540402835291602001916108b5565b820191905f5260205f20905b81548152906001019060200180831161089857829003601f168201915b5050505050905090565b5f8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161099a91906122b7565b60405180910390a36001905092915050565b5f600454905090565b600c5481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b9a57610b1d826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546111429092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610ba5848484611196565b90509392505050565b5f610be8610bbb5f610d27565b610bda610bc961dead610d27565b60045461165c90919063ffffffff16565b61165c90919063ffffffff16565b905090565b5f6009905090565b6007602052805f5260405f205f915054906101000a900460ff1681565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c3f611671565b610c476116f8565b565b601260019054906101000a900460ff1681565b5f610c87827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108bf565b9050919050565b5f8060149054906101000a900460ff16905090565b610cab611671565b8360088190555082600a819055508160098190555080600b81905550610cf2600a54610ce460095460085461175a90919063ffffffff16565b61175a90919063ffffffff16565b600c81905550610d0f600b54600c5461175a90919063ffffffff16565b600d8190555050505050565b600b5481565b60095481565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d75611671565b610d7e5f61176f565b565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610dad611671565b81600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610e39611671565b610e41611830565b565b610e4b611671565b8060138190555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610e8b90612706565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb790612706565b8015610f025780601f10610ed957610100808354040283529160200191610f02565b820191905f5260205f20905b815481529060010190602001808311610ee557829003601f168201915b5050505050905090565b60085481565b600a5481565b610f20611671565b610f28611891565b15610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90612780565b60405180910390fd5b610f7061189d565b565b610f7a611671565b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611003338484611196565b905092915050565b60115481565b600d5481565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110a1611671565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611111575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016111089190612517565b60405180910390fd5b61111a8161176f565b50565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f838311158290611189576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111809190612340565b60405180910390fd5b5082840390509392505050565b5f61119f610e55565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806111ed57506111db611891565b80156111ec57506111ea610c8e565b155b5b61122c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112239061280e565b60405180910390fd5b60125f9054906101000a900460ff16156112525761124b8484846118a6565b9050611655565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156112bb575060125f9054906101000a900460ff16155b80156112d35750601260019054906101000a900460ff165b801561131e575060135460055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b1561132c5761132b611a70565b5b6113b3826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546111429092919063ffffffff16565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611490575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611541575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611540575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b5b6115555761155085858561203a565b611557565b825b90506115a98160055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461175a90919063ffffffff16565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161164791906122b7565b60405180910390a360019150505b9392505050565b5f81836116699190612859565b905092915050565b6116796121db565b73ffffffffffffffffffffffffffffffffffffffff16611697610e55565b73ffffffffffffffffffffffffffffffffffffffff16146116f6576116ba6121db565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116ed9190612517565b60405180910390fd5b565b6117006121e2565b60015f60146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117436121db565b6040516117509190612517565b60405180910390a1565b5f8183611767919061288c565b905092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61183861222c565b5f8060146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61187a6121db565b6040516118879190612517565b60405180910390a1565b5f806011541415905090565b43601181905550565b5f61192e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546111429092919063ffffffff16565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506119bf8260055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461175a90919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a5d91906122b7565b60405180910390a3600190509392505050565b600160125f6101000a81548160ff0219169083151502179055505f60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f611b086002611afa600c54611aec6008548761227590919063ffffffff16565b61228a90919063ffffffff16565b61228a90919063ffffffff16565b90505f611b1e828461165c90919063ffffffff16565b90505f600267ffffffffffffffff811115611b3c57611b3b6128bf565b5b604051908082528060200260200182016040528015611b6a5781602001602082028036833780820191505090505b50905030815f81518110611b8157611b806128ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c25573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c49919061292d565b81600181518110611c5d57611c5c6128ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611cf9959493929190612a48565b5f604051808303815f87803b158015611d10575f80fd5b505af1158015611d22573d5f803e3d5ffd5b505050505f4790505f611d55611d44600260085461228a90919063ffffffff16565b600c5461165c90919063ffffffff16565b90505f611d926002611d8484611d766008548861227590919063ffffffff16565b61228a90919063ffffffff16565b61228a90919063ffffffff16565b90505f611dbc83611dae600a548761227590919063ffffffff16565b61228a90919063ffffffff16565b90505f611de482611dd6858861165c90919063ffffffff16565b61165c90919063ffffffff16565b90505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051611e3090612acd565b5f60405180830381858888f193505050503d805f8114611e6b576040519150601f19603f3d011682016040523d82523d5f602084013e611e70565b606091505b505090505f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051611ebe90612acd565b5f60405180830381858888f193505050503d805f8114611ef9576040519150601f19603f3d011682016040523d82523d5f602084013e611efe565b606091505b505090505f91505f90505f8a11156120145760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308d5f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611f9696959493929190612ae1565b60606040518083038185885af1158015611fb2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611fd79190612b54565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858b60405161200b929190612ba4565b60405180910390a15b50505050505050505050505f60125f6101000a81548160ff021916908315150217905550565b5f808373ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461209857600c5461209c565b600d545b90505f6120c560646120b7848761227590919063ffffffff16565b61228a90919063ffffffff16565b90506121178160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461175a90919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121b591906122b7565b60405180910390a36121d0818561165c90919063ffffffff16565b925050509392505050565b5f33905090565b6121ea610c8e565b1561222a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222190612c15565b60405180910390fd5b565b612234610c8e565b612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a90612c7d565b60405180910390fd5b565b5f81836122829190612c9b565b905092915050565b5f81836122979190612d09565b905092915050565b5f819050919050565b6122b18161229f565b82525050565b5f6020820190506122ca5f8301846122a8565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612312826122d0565b61231c81856122da565b935061232c8185602086016122ea565b612335816122f8565b840191505092915050565b5f6020820190508181035f8301526123588184612308565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61238d82612364565b9050919050565b61239d81612383565b81146123a7575f80fd5b50565b5f813590506123b881612394565b92915050565b6123c78161229f565b81146123d1575f80fd5b50565b5f813590506123e2816123be565b92915050565b5f80604083850312156123fe576123fd612360565b5b5f61240b858286016123aa565b925050602061241c858286016123d4565b9150509250929050565b5f8115159050919050565b61243a81612426565b82525050565b5f6020820190506124535f830184612431565b92915050565b5f805f606084860312156124705761246f612360565b5b5f61247d868287016123aa565b935050602061248e868287016123aa565b925050604061249f868287016123d4565b9150509250925092565b5f60ff82169050919050565b6124be816124a9565b82525050565b5f6020820190506124d75f8301846124b5565b92915050565b5f602082840312156124f2576124f1612360565b5b5f6124ff848285016123aa565b91505092915050565b61251181612383565b82525050565b5f60208201905061252a5f830184612508565b92915050565b5f805f806080858703121561254857612547612360565b5b5f612555878288016123d4565b9450506020612566878288016123d4565b9350506040612577878288016123d4565b9250506060612588878288016123d4565b91505092959194509250565b5f80604083850312156125aa576125a9612360565b5b5f6125b7858286016123aa565b92505060206125c8858286016123aa565b9150509250929050565b5f602082840312156125e7576125e6612360565b5b5f6125f4848285016123d4565b91505092915050565b61260681612426565b8114612610575f80fd5b50565b5f81359050612621816125fd565b92915050565b5f806040838503121561263d5761263c612360565b5b5f61264a858286016123aa565b925050602061265b85828601612613565b9150509250929050565b5f819050919050565b5f61268861268361267e84612364565b612665565b612364565b9050919050565b5f6126998261266e565b9050919050565b5f6126aa8261268f565b9050919050565b6126ba816126a0565b82525050565b5f6020820190506126d35f8301846126b1565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061271d57607f821691505b6020821081036127305761272f6126d9565b5b50919050565b7f546f6b656e206973206c61756e636865640000000000000000000000000000005f82015250565b5f61276a6011836122da565b915061277582612736565b602082019050919050565b5f6020820190508181035f8301526127978161275e565b9050919050565b7f546f6b656e206d757374206265206c61756e6368656420616e64206e6f7420705f8201527f6175736564000000000000000000000000000000000000000000000000000000602082015250565b5f6127f86025836122da565b91506128038261279e565b604082019050919050565b5f6020820190508181035f830152612825816127ec565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128638261229f565b915061286e8361229f565b92508282039050818111156128865761288561282c565b5b92915050565b5f6128968261229f565b91506128a18361229f565b92508282019050808211156128b9576128b861282c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061292781612394565b92915050565b5f6020828403121561294257612941612360565b5b5f61294f84828501612919565b91505092915050565b5f819050919050565b5f61297b61297661297184612958565b612665565b61229f565b9050919050565b61298b81612961565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129c381612383565b82525050565b5f6129d483836129ba565b60208301905092915050565b5f602082019050919050565b5f6129f682612991565b612a00818561299b565b9350612a0b836129ab565b805f5b83811015612a3b578151612a2288826129c9565b9750612a2d836129e0565b925050600181019050612a0e565b5085935050505092915050565b5f60a082019050612a5b5f8301886122a8565b612a686020830187612982565b8181036040830152612a7a81866129ec565b9050612a896060830185612508565b612a9660808301846122a8565b9695505050505050565b5f81905092915050565b50565b5f612ab85f83612aa0565b9150612ac382612aaa565b5f82019050919050565b5f612ad782612aad565b9150819050919050565b5f60c082019050612af45f830189612508565b612b0160208301886122a8565b612b0e6040830187612982565b612b1b6060830186612982565b612b286080830185612508565b612b3560a08301846122a8565b979650505050505050565b5f81519050612b4e816123be565b92915050565b5f805f60608486031215612b6b57612b6a612360565b5b5f612b7886828701612b40565b9350506020612b8986828701612b40565b9250506040612b9a86828701612b40565b9150509250925092565b5f604082019050612bb75f8301856122a8565b612bc460208301846122a8565b9392505050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f612bff6010836122da565b9150612c0a82612bcb565b602082019050919050565b5f6020820190508181035f830152612c2c81612bf3565b9050919050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f612c676014836122da565b9150612c7282612c33565b602082019050919050565b5f6020820190508181035f830152612c9481612c5b565b9050919050565b5f612ca58261229f565b9150612cb08361229f565b9250828202612cbe8161229f565b91508282048414831517612cd557612cd461282c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d138261229f565b9150612d1e8361229f565b925082612d2e57612d2d612cdc565b5b82820490509291505056fea26469706673582212203e0a64818b17fe082b894f4bf3cd5ec88a80d472e1950af19c4d99a7e8024e4e64736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610212575f3560e01c8063715018a611610117578063a28a4d861161009f578063bf56b3711161006e578063bf56b37114610747578063ca987b0e14610771578063dd62ed3e1461079b578063f2fde38b146107d7578063f887ea40146107ff57610219565b8063a28a4d86146106a3578063a3a2e89e146106b9578063a8aa1b31146106e1578063a9059cbb1461070b57610219565b806389f425e7116100e657806389f425e7146105d35780638da5cb5b146105fb57806395d89b411461062557806398118cb41461064f57806399d32fc41461067957610219565b8063715018a61461055557806375f0a8741461056b578063840b31cb146105955780638936a91f146105bd57610219565b806343ec53fb1161019a5780635c975abb116101695780635c975abb14610473578063650c42261461049d57806369cf17d4146104c55780636b67c4df146104ef57806370a082311461051957610219565b806343ec53fb146103cd57806347af9957146103f75780634a74bb021461040d578063571ac8b01461043757610219565b80631df4ccfc116101e15780631df4ccfc146102d757806323b872dd146103015780632b112e491461033d578063313ce567146103675780633f4218e01461039157610219565b80630445b6671461021d57806306fdde0314610247578063095ea7b31461027157806318160ddd146102ad57610219565b3661021957005b5f80fd5b348015610228575f80fd5b50610231610829565b60405161023e91906122b7565b60405180910390f35b348015610252575f80fd5b5061025b61082f565b6040516102689190612340565b60405180910390f35b34801561027c575f80fd5b50610297600480360381019061029291906123e8565b6108bf565b6040516102a49190612440565b60405180910390f35b3480156102b8575f80fd5b506102c16109ac565b6040516102ce91906122b7565b60405180910390f35b3480156102e2575f80fd5b506102eb6109b5565b6040516102f891906122b7565b60405180910390f35b34801561030c575f80fd5b5061032760048036038101906103229190612459565b6109bb565b6040516103349190612440565b60405180910390f35b348015610348575f80fd5b50610351610bae565b60405161035e91906122b7565b60405180910390f35b348015610372575f80fd5b5061037b610bed565b60405161038891906124c4565b60405180910390f35b34801561039c575f80fd5b506103b760048036038101906103b291906124dd565b610bf5565b6040516103c49190612440565b60405180910390f35b3480156103d8575f80fd5b506103e1610c12565b6040516103ee9190612517565b60405180910390f35b348015610402575f80fd5b5061040b610c37565b005b348015610418575f80fd5b50610421610c49565b60405161042e9190612440565b60405180910390f35b348015610442575f80fd5b5061045d600480360381019061045891906124dd565b610c5c565b60405161046a9190612440565b60405180910390f35b34801561047e575f80fd5b50610487610c8e565b6040516104949190612440565b60405180910390f35b3480156104a8575f80fd5b506104c360048036038101906104be9190612530565b610ca3565b005b3480156104d0575f80fd5b506104d9610d1b565b6040516104e691906122b7565b60405180910390f35b3480156104fa575f80fd5b50610503610d21565b60405161051091906122b7565b60405180910390f35b348015610524575f80fd5b5061053f600480360381019061053a91906124dd565b610d27565b60405161054c91906122b7565b60405180910390f35b348015610560575f80fd5b50610569610d6d565b005b348015610576575f80fd5b5061057f610d80565b60405161058c9190612517565b60405180910390f35b3480156105a0575f80fd5b506105bb60048036038101906105b69190612594565b610da5565b005b3480156105c8575f80fd5b506105d1610e31565b005b3480156105de575f80fd5b506105f960048036038101906105f491906125d2565b610e43565b005b348015610606575f80fd5b5061060f610e55565b60405161061c9190612517565b60405180910390f35b348015610630575f80fd5b50610639610e7c565b6040516106469190612340565b60405180910390f35b34801561065a575f80fd5b50610663610f0c565b60405161067091906122b7565b60405180910390f35b348015610684575f80fd5b5061068d610f12565b60405161069a91906122b7565b60405180910390f35b3480156106ae575f80fd5b506106b7610f18565b005b3480156106c4575f80fd5b506106df60048036038101906106da9190612627565b610f72565b005b3480156106ec575f80fd5b506106f5610fd2565b6040516107029190612517565b60405180910390f35b348015610716575f80fd5b50610731600480360381019061072c91906123e8565b610ff7565b60405161073e9190612440565b60405180910390f35b348015610752575f80fd5b5061075b61100b565b60405161076891906122b7565b60405180910390f35b34801561077c575f80fd5b50610785611011565b60405161079291906122b7565b60405180910390f35b3480156107a6575f80fd5b506107c160048036038101906107bc9190612594565b611017565b6040516107ce91906122b7565b60405180910390f35b3480156107e2575f80fd5b506107fd60048036038101906107f891906124dd565b611099565b005b34801561080a575f80fd5b5061081361111d565b60405161082091906126c0565b60405180910390f35b60135481565b60606002805461083e90612706565b80601f016020809104026020016040519081016040528092919081815260200182805461086a90612706565b80156108b55780601f1061088c576101008083540402835291602001916108b5565b820191905f5260205f20905b81548152906001019060200180831161089857829003601f168201915b5050505050905090565b5f8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161099a91906122b7565b60405180910390a36001905092915050565b5f600454905090565b600c5481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b9a57610b1d826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546111429092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610ba5848484611196565b90509392505050565b5f610be8610bbb5f610d27565b610bda610bc961dead610d27565b60045461165c90919063ffffffff16565b61165c90919063ffffffff16565b905090565b5f6009905090565b6007602052805f5260405f205f915054906101000a900460ff1681565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c3f611671565b610c476116f8565b565b601260019054906101000a900460ff1681565b5f610c87827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108bf565b9050919050565b5f8060149054906101000a900460ff16905090565b610cab611671565b8360088190555082600a819055508160098190555080600b81905550610cf2600a54610ce460095460085461175a90919063ffffffff16565b61175a90919063ffffffff16565b600c81905550610d0f600b54600c5461175a90919063ffffffff16565b600d8190555050505050565b600b5481565b60095481565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d75611671565b610d7e5f61176f565b565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610dad611671565b81600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610e39611671565b610e41611830565b565b610e4b611671565b8060138190555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610e8b90612706565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb790612706565b8015610f025780601f10610ed957610100808354040283529160200191610f02565b820191905f5260205f20905b815481529060010190602001808311610ee557829003601f168201915b5050505050905090565b60085481565b600a5481565b610f20611671565b610f28611891565b15610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90612780565b60405180910390fd5b610f7061189d565b565b610f7a611671565b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611003338484611196565b905092915050565b60115481565b600d5481565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110a1611671565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611111575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016111089190612517565b60405180910390fd5b61111a8161176f565b50565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f838311158290611189576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111809190612340565b60405180910390fd5b5082840390509392505050565b5f61119f610e55565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806111ed57506111db611891565b80156111ec57506111ea610c8e565b155b5b61122c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112239061280e565b60405180910390fd5b60125f9054906101000a900460ff16156112525761124b8484846118a6565b9050611655565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156112bb575060125f9054906101000a900460ff16155b80156112d35750601260019054906101000a900460ff165b801561131e575060135460055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b1561132c5761132b611a70565b5b6113b3826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546111429092919063ffffffff16565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611490575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611541575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611540575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b5b6115555761155085858561203a565b611557565b825b90506115a98160055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461175a90919063ffffffff16565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161164791906122b7565b60405180910390a360019150505b9392505050565b5f81836116699190612859565b905092915050565b6116796121db565b73ffffffffffffffffffffffffffffffffffffffff16611697610e55565b73ffffffffffffffffffffffffffffffffffffffff16146116f6576116ba6121db565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116ed9190612517565b60405180910390fd5b565b6117006121e2565b60015f60146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117436121db565b6040516117509190612517565b60405180910390a1565b5f8183611767919061288c565b905092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61183861222c565b5f8060146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61187a6121db565b6040516118879190612517565b60405180910390a1565b5f806011541415905090565b43601181905550565b5f61192e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546111429092919063ffffffff16565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506119bf8260055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461175a90919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a5d91906122b7565b60405180910390a3600190509392505050565b600160125f6101000a81548160ff0219169083151502179055505f60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f611b086002611afa600c54611aec6008548761227590919063ffffffff16565b61228a90919063ffffffff16565b61228a90919063ffffffff16565b90505f611b1e828461165c90919063ffffffff16565b90505f600267ffffffffffffffff811115611b3c57611b3b6128bf565b5b604051908082528060200260200182016040528015611b6a5781602001602082028036833780820191505090505b50905030815f81518110611b8157611b806128ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c25573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c49919061292d565b81600181518110611c5d57611c5c6128ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611cf9959493929190612a48565b5f604051808303815f87803b158015611d10575f80fd5b505af1158015611d22573d5f803e3d5ffd5b505050505f4790505f611d55611d44600260085461228a90919063ffffffff16565b600c5461165c90919063ffffffff16565b90505f611d926002611d8484611d766008548861227590919063ffffffff16565b61228a90919063ffffffff16565b61228a90919063ffffffff16565b90505f611dbc83611dae600a548761227590919063ffffffff16565b61228a90919063ffffffff16565b90505f611de482611dd6858861165c90919063ffffffff16565b61165c90919063ffffffff16565b90505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051611e3090612acd565b5f60405180830381858888f193505050503d805f8114611e6b576040519150601f19603f3d011682016040523d82523d5f602084013e611e70565b606091505b505090505f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051611ebe90612acd565b5f60405180830381858888f193505050503d805f8114611ef9576040519150601f19603f3d011682016040523d82523d5f602084013e611efe565b606091505b505090505f91505f90505f8a11156120145760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308d5f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611f9696959493929190612ae1565b60606040518083038185885af1158015611fb2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611fd79190612b54565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858b60405161200b929190612ba4565b60405180910390a15b50505050505050505050505f60125f6101000a81548160ff021916908315150217905550565b5f808373ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461209857600c5461209c565b600d545b90505f6120c560646120b7848761227590919063ffffffff16565b61228a90919063ffffffff16565b90506121178160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461175a90919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121b591906122b7565b60405180910390a36121d0818561165c90919063ffffffff16565b925050509392505050565b5f33905090565b6121ea610c8e565b1561222a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222190612c15565b60405180910390fd5b565b612234610c8e565b612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a90612c7d565b60405180910390fd5b565b5f81836122829190612c9b565b905092915050565b5f81836122979190612d09565b905092915050565b5f819050919050565b6122b18161229f565b82525050565b5f6020820190506122ca5f8301846122a8565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612312826122d0565b61231c81856122da565b935061232c8185602086016122ea565b612335816122f8565b840191505092915050565b5f6020820190508181035f8301526123588184612308565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61238d82612364565b9050919050565b61239d81612383565b81146123a7575f80fd5b50565b5f813590506123b881612394565b92915050565b6123c78161229f565b81146123d1575f80fd5b50565b5f813590506123e2816123be565b92915050565b5f80604083850312156123fe576123fd612360565b5b5f61240b858286016123aa565b925050602061241c858286016123d4565b9150509250929050565b5f8115159050919050565b61243a81612426565b82525050565b5f6020820190506124535f830184612431565b92915050565b5f805f606084860312156124705761246f612360565b5b5f61247d868287016123aa565b935050602061248e868287016123aa565b925050604061249f868287016123d4565b9150509250925092565b5f60ff82169050919050565b6124be816124a9565b82525050565b5f6020820190506124d75f8301846124b5565b92915050565b5f602082840312156124f2576124f1612360565b5b5f6124ff848285016123aa565b91505092915050565b61251181612383565b82525050565b5f60208201905061252a5f830184612508565b92915050565b5f805f806080858703121561254857612547612360565b5b5f612555878288016123d4565b9450506020612566878288016123d4565b9350506040612577878288016123d4565b9250506060612588878288016123d4565b91505092959194509250565b5f80604083850312156125aa576125a9612360565b5b5f6125b7858286016123aa565b92505060206125c8858286016123aa565b9150509250929050565b5f602082840312156125e7576125e6612360565b5b5f6125f4848285016123d4565b91505092915050565b61260681612426565b8114612610575f80fd5b50565b5f81359050612621816125fd565b92915050565b5f806040838503121561263d5761263c612360565b5b5f61264a858286016123aa565b925050602061265b85828601612613565b9150509250929050565b5f819050919050565b5f61268861268361267e84612364565b612665565b612364565b9050919050565b5f6126998261266e565b9050919050565b5f6126aa8261268f565b9050919050565b6126ba816126a0565b82525050565b5f6020820190506126d35f8301846126b1565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061271d57607f821691505b6020821081036127305761272f6126d9565b5b50919050565b7f546f6b656e206973206c61756e636865640000000000000000000000000000005f82015250565b5f61276a6011836122da565b915061277582612736565b602082019050919050565b5f6020820190508181035f8301526127978161275e565b9050919050565b7f546f6b656e206d757374206265206c61756e6368656420616e64206e6f7420705f8201527f6175736564000000000000000000000000000000000000000000000000000000602082015250565b5f6127f86025836122da565b91506128038261279e565b604082019050919050565b5f6020820190508181035f830152612825816127ec565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128638261229f565b915061286e8361229f565b92508282039050818111156128865761288561282c565b5b92915050565b5f6128968261229f565b91506128a18361229f565b92508282019050808211156128b9576128b861282c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061292781612394565b92915050565b5f6020828403121561294257612941612360565b5b5f61294f84828501612919565b91505092915050565b5f819050919050565b5f61297b61297661297184612958565b612665565b61229f565b9050919050565b61298b81612961565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129c381612383565b82525050565b5f6129d483836129ba565b60208301905092915050565b5f602082019050919050565b5f6129f682612991565b612a00818561299b565b9350612a0b836129ab565b805f5b83811015612a3b578151612a2288826129c9565b9750612a2d836129e0565b925050600181019050612a0e565b5085935050505092915050565b5f60a082019050612a5b5f8301886122a8565b612a686020830187612982565b8181036040830152612a7a81866129ec565b9050612a896060830185612508565b612a9660808301846122a8565b9695505050505050565b5f81905092915050565b50565b5f612ab85f83612aa0565b9150612ac382612aaa565b5f82019050919050565b5f612ad782612aad565b9150819050919050565b5f60c082019050612af45f830189612508565b612b0160208301886122a8565b612b0e6040830187612982565b612b1b6060830186612982565b612b286080830185612508565b612b3560a08301846122a8565b979650505050505050565b5f81519050612b4e816123be565b92915050565b5f805f60608486031215612b6b57612b6a612360565b5b5f612b7886828701612b40565b9350506020612b8986828701612b40565b9250506040612b9a86828701612b40565b9150509250925092565b5f604082019050612bb75f8301856122a8565b612bc460208301846122a8565b9392505050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f612bff6010836122da565b9150612c0a82612bcb565b602082019050919050565b5f6020820190508181035f830152612c2c81612bf3565b9050919050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f612c676014836122da565b9150612c7282612c33565b602082019050919050565b5f6020820190508181035f830152612c9481612c5b565b9050919050565b5f612ca58261229f565b9150612cb08361229f565b9250828202612cbe8161229f565b91508282048414831517612cd557612cd461282c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d138261229f565b9150612d1e8361229f565b925082612d2e57612d2d612cdc565b5b82820490509291505056fea26469706673582212203e0a64818b17fe082b894f4bf3cd5ec88a80d472e1950af19c4d99a7e8024e4e64736f6c634300081a0033

Deployed Bytecode Sourcemap

17642:8930:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18620:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19324:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20348:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19597:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18240:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22291:420;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19705:267;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19514:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18036:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18401:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20919:72;;;;;;;;;;;;;:::i;:::-;;18571:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20610:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5870:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21379:431;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18198:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18126:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19980:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3361:103;;;;;;;;;;;;;:::i;:::-;;18319:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21818:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20999:76;;;;;;;;;;;;;:::i;:::-;;21260:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2686:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19417:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18088:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18164:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20790:121;;;;;;;;;;;;;:::i;:::-;;21128:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18481:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22097:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18509:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18274:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20150:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3619:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17726:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18620:44;;;;:::o;19324:85::-;19363:13;19396:5;19389:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19324:85;:::o;20348:254::-;20452:4;20510:7;20474:11;:23;20486:10;20474:23;;;;;;;;;;;;;;;:33;20498:8;20474:33;;;;;;;;;;;;;;;:43;;;;20554:8;20533:39;;20542:10;20533:39;;;20564:7;20533:39;;;;;;:::i;:::-;;;;;;;;20590:4;20583:11;;20348:254;;;;:::o;19597:100::-;19650:7;19677:12;;19670:19;;19597:100;:::o;18240:27::-;;;;:::o;22291:420::-;22423:4;22479:17;22444:11;:19;22456:6;22444:19;;;;;;;;;;;;;;;:31;22464:10;22444:31;;;;;;;;;;;;;;;;:52;22440:206;;22547:87;22601:6;22547:87;;;;;;;;;;;;;;;;;:11;:19;22559:6;22547:19;;;;;;;;;;;;;;;:31;22567:10;22547:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;22513:11;:19;22525:6;22513:19;;;;;;;;;;;;;;;:31;22533:10;22513:31;;;;;;;;;;;;;;;:121;;;;22440:206;22663:40;22677:6;22685:9;22696:6;22663:13;:40::i;:::-;22656:47;;22291:420;;;;;:::o;19705:267::-;19758:7;19798:166;19910:53;19920:42;19910:9;:53::i;:::-;19798:89;19833:53;19843:42;19833:9;:53::i;:::-;19798:12;;:34;;:89;;;;:::i;:::-;:111;;:166;;;;:::i;:::-;19778:186;;19705:267;:::o;19514:75::-;19555:5;19580:1;19573:8;;19514:75;:::o;18036:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;18401:71::-;;;;;;;;;;;;;:::o;20919:72::-;2572:13;:11;:13::i;:::-;20975:8:::1;:6;:8::i;:::-;20919:72::o:0;18571:40::-;;;;;;;;;;;;;:::o;20610:124::-;20666:4;20690:36;20698:8;20708:17;20690:7;:36::i;:::-;20683:43;;20610:124;;;:::o;5870:86::-;5917:4;5941:7;;;;;;;;;;;5934:14;;5870:86;:::o;21379:431::-;2572:13;:11;:13::i;:::-;21563:6:::1;21548:12;:21;;;;21591:9;21580:8;:20;;;;21626:13;21611:12;:28;;;;21667:8;21650:14;:25;;;;21699:44;21734:8;;21699:30;21716:12;;21699;;:16;;:30;;;;:::i;:::-;:34;;:44;;;;:::i;:::-;21688:8;:55;;;;21774:28;21787:14;;21774:8;;:12;;:28;;;;:::i;:::-;21754:17;:48;;;;21379:431:::0;;;;:::o;18198:33::-;;;;:::o;18126:31::-;;;;:::o;19980:162::-;20083:7;20115:9;:19;20125:8;20115:19;;;;;;;;;;;;;;;;20108:26;;19980:162;;;:::o;3361:103::-;2572:13;:11;:13::i;:::-;3426:30:::1;3453:1;3426:18;:30::i;:::-;3361:103::o:0;18319:75::-;;;;;;;;;;;;;:::o;21818:221::-;2572:13;:11;:13::i;:::-;21972:19:::1;21954:15;;:37;;;;;;;;;;;;;;;;;;22016:15;22002:11;;:29;;;;;;;;;;;;;;;;;;21818:221:::0;;:::o;20999:76::-;2572:13;:11;:13::i;:::-;21057:10:::1;:8;:10::i;:::-;20999:76::o:0;21260:111::-;2572:13;:11;:13::i;:::-;21354:9:::1;21338:13;:25;;;;21260:111:::0;:::o;2686:87::-;2732:7;2759:6;;;;;;;;;;;2752:13;;2686:87;:::o;19417:89::-;19458:13;19491:7;19484:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19417:89;:::o;18088:31::-;;;;:::o;18164:27::-;;;;:::o;20790:121::-;2572:13;:11;:13::i;:::-;20852:10:::1;:8;:10::i;:::-;20851:11;20843:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;20895:8;:6;:8::i;:::-;20790:121::o:0;21128:124::-;2572:13;:11;:13::i;:::-;21237:7:::1;21214:11;:20;21226:7;21214:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;21128:124:::0;;:::o;18481:19::-;;;;;;;;;;;;;:::o;22097:186::-;22202:4;22231:44;22245:10;22257:9;22268:6;22231:13;:44::i;:::-;22224:51;;22097:186;;;;:::o;18509:25::-;;;;:::o;18274:36::-;;;;:::o;20150:190::-;20270:7;20302:11;:20;20314:7;20302:20;;;;;;;;;;;;;;;:30;20323:8;20302:30;;;;;;;;;;;;;;;;20295:37;;20150:190;;;;:::o;3619:220::-;2572:13;:11;:13::i;:::-;3724:1:::1;3704:22;;:8;:22;;::::0;3700:93:::1;;3778:1;3750:31;;;;;;;;;;;:::i;:::-;;;;;;;;3700:93;3803:28;3822:8;3803:18;:28::i;:::-;3619:220:::0;:::o;17726:73::-;;;;;;;;;;;;;:::o;12007:206::-;12093:7;12151:1;12146;:6;;12154:12;12138:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;12193:1;12189;:5;12182:12;;12007:206;;;;;:::o;22769:1115::-;22895:4;22944:7;:5;:7::i;:::-;22934:17;;:6;:17;;;:46;;;;22956:10;:8;:10::i;:::-;:23;;;;;22971:8;:6;:8::i;:::-;22970:9;22956:23;22934:46;22912:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;23062:16;;;;;;;;;;;23058:97;;;23102:41;23117:6;23125:9;23136:6;23102:14;:41::i;:::-;23095:48;;;;23058:97;23199:4;;;;;;;;;;;23185:18;;:10;:18;;;;:52;;;;;23221:16;;;;;;;;;;;23220:17;23185:52;:90;;;;;23254:21;;;;;;;;;;;23185:90;:148;;;;;23320:13;;23292:9;:24;23310:4;23292:24;;;;;;;;;;;;;;;;:41;;23185:148;23167:215;;;23360:10;:8;:10::i;:::-;23167:215;23414:90;23450:6;23414:90;;;;;;;;;;;;;;;;;:9;:17;23424:6;23414:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;23394:9;:17;23404:6;23394:17;;;;;;;;;;;;;;;:110;;;;23517:19;23539:11;:19;23551:6;23539:19;;;;;;;;;;;;;;;;;;;;;;;;;:58;;;;23575:11;:22;23587:9;23575:22;;;;;;;;;;;;;;;;;;;;;;;;;23539:58;:112;;;;23628:4;;;;;;;;;;;23615:17;;:9;:17;;;;:35;;;;;23646:4;;;;;;;;;;;23636:14;;:6;:14;;;;23615:35;23539:112;:184;;23689:34;23697:6;23705:9;23716:6;23689:7;:34::i;:::-;23539:184;;;23667:6;23539:184;23517:206;;23759:37;23784:11;23759:9;:20;23769:9;23759:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;23736:9;:20;23746:9;23736:20;;;;;;;;;;;;;;;:60;;;;23831:9;23814:40;;23823:6;23814:40;;;23842:11;23814:40;;;;;;:::i;:::-;;;;;;;;23872:4;23865:11;;;22769:1115;;;;;;:::o;10109:98::-;10167:7;10198:1;10194;:5;;;;:::i;:::-;10187:12;;10109:98;;;;:::o;2851:166::-;2922:12;:10;:12::i;:::-;2911:23;;:7;:5;:7::i;:::-;:23;;;2907:103;;2985:12;:10;:12::i;:::-;2958:40;;;;;;;;;;;:::i;:::-;;;;;;;;2907:103;2851:166::o;6466:118::-;5475:19;:17;:19::i;:::-;6536:4:::1;6526:7;;:14;;;;;;;;;;;;;;;;;;6556:20;6563:12;:10;:12::i;:::-;6556:20;;;;;;:::i;:::-;;;;;;;;6466:118::o:0;9728:98::-;9786:7;9817:1;9813;:5;;;;:::i;:::-;9806:12;;9728:98;;;;:::o;3999:191::-;4073:16;4092:6;;;;;;;;;;;4073:25;;4118:8;4109:6;;:17;;;;;;;;;;;;;;;;;;4173:8;4142:40;;4163:8;4142:40;;;;;;;;;;;;4062:128;3999:191;:::o;6725:120::-;5734:16;:14;:16::i;:::-;6794:5:::1;6784:7:::0;::::1;:15;;;;;;;;;;;;;;;;;;6815:22;6824:12;:10;:12::i;:::-;6815:22;;;;;;:::i;:::-;;;;;;;;6725:120::o:0;26296:90::-;26339:4;26377:1;26363:10;;:15;;26356:22;;26296:90;:::o;26394:71::-;26445:12;26432:10;:25;;;;26394:71::o;23892:401::-;24019:4;24056:90;24092:6;24056:90;;;;;;;;;;;;;;;;;:9;:17;24066:6;24056:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;24036:9;:17;24046:6;24036:17;;;;;;;;;;;;;;;:110;;;;24180:32;24205:6;24180:9;:20;24190:9;24180:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24157:9;:20;24167:9;24157:20;;;;;;;;;;;;;;;:55;;;;24245:9;24228:35;;24237:6;24228:35;;;24256:6;24228:35;;;;;;:::i;:::-;;;;;;;;24281:4;24274:11;;23892:401;;;;;:::o;24796:1492::-;18726:4;18707:16;;:23;;;;;;;;;;;;;;;;;;24848:11:::1;24862:9;:24;24880:4;24862:24;;;;;;;;;;;;;;;;24848:38;;24927:11;24941:42;24981:1;24941:35;24967:8;;24941:21;24949:12;;24941:3;:7;;:21;;;;:::i;:::-;:25;;:35;;;;:::i;:::-;:39;;:42;;;;:::i;:::-;24927:56;;25029:11;25043:12;25051:3;25043;:7;;:12;;;;:::i;:::-;25029:26;;25097:21;25135:1;25121:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25097:40;;25166:4;25148;25153:1;25148:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;25192:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25182:4;25187:1;25182:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;25216:6;;;;;;;;;;;:57;;;25288:3;25306:1;25322:4;25349;25369:15;25216:179;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25426:11;25440:21;25426:35;;25474:12;25489:33;25502:19;25519:1;25502:12;;:16;;:19;;;;:::i;:::-;25489:8;;:12;;:33;;;;:::i;:::-;25474:48;;25535:10;25548:38;25584:1;25548:31;25574:4;25548:21;25556:12;;25548:3;:7;;:21;;;;:::i;:::-;:25;;:31;;;;:::i;:::-;:35;;:38;;;;:::i;:::-;25535:51;;25599:9;25611:27;25633:4;25611:17;25619:8;;25611:3;:7;;:17;;;;:::i;:::-;:21;;:27;;;;:::i;:::-;25599:39;;25649:9;25661:18;25677:1;25661:11;25669:2;25661:3;:7;;:11;;;;:::i;:::-;:15;;:18;;;;:::i;:::-;25649:30;;25693:15;25722:11;;;;;;;;;;;25714:25;;25747:1;25755:5;25714:75;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25692:97;;;25803:16;25833:15;;;;;;;;;;;25825:29;;25876:1;25897:5;25825:92;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25802:115;;;25943:5;25930:18;;25973:5;25959:19;;26001:1;25995:3;:7;25991:290;;;26019:6;;;;;;;;;;;:22;;;26049:2;26079:4;26103:3;26125:1;26145::::0;26165:15:::1;;;;;;;;;;;26199;26019:210;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26249:20;26261:2;26265:3;26249:20;;;;;;;:::i;:::-;;;;;;;;25991:290;24837:1451;;;;;;;;;;;18772:5:::0;18753:16;;:24;;;;;;;;;;;;;;;;;;24796:1492::o;24301:487::-;24421:7;24441:21;24473:9;24465:17;;:4;;;;;;;;;;;:17;;;:74;;24531:8;;24465:74;;;24498:17;;24465:74;24441:98;;24550:17;24570:34;24600:3;24570:25;24581:13;24570:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;24550:54;;24644:39;24673:9;24644;:24;24662:4;24644:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;24617:9;:24;24635:4;24617:24;;;;;;;;;;;;;;;:66;;;;24724:4;24699:42;;24708:6;24699:42;;;24731:9;24699:42;;;;;;:::i;:::-;;;;;;;;24759:21;24770:9;24759:6;:10;;:21;;;;:::i;:::-;24752:28;;;;24301:487;;;;;:::o;695:98::-;748:7;775:10;768:17;;695:98;:::o;6029:108::-;6100:8;:6;:8::i;:::-;6099:9;6091:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6029:108::o;6214:::-;6281:8;:6;:8::i;:::-;6273:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;6214:108::o;10466:98::-;10524:7;10555:1;10551;:5;;;;:::i;:::-;10544:12;;10466:98;;;;:::o;10865:::-;10923:7;10954:1;10950;:5;;;;:::i;:::-;10943:12;;10865:98;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:139::-;811:6;806:3;801;795:23;852:1;843:6;838:3;834:16;827:27;722:139;;;:::o;867:102::-;908:6;959:2;955:7;950:2;943:5;939:14;935:28;925:38;;867:102;;;:::o;975:377::-;1063:3;1091:39;1124:5;1091:39;:::i;:::-;1146:71;1210:6;1205:3;1146:71;:::i;:::-;1139:78;;1226:65;1284:6;1279:3;1272:4;1265:5;1261:16;1226:65;:::i;:::-;1316:29;1338:6;1316:29;:::i;:::-;1311:3;1307:39;1300:46;;1067:285;975:377;;;;:::o;1358:313::-;1471:4;1509:2;1498:9;1494:18;1486:26;;1558:9;1552:4;1548:20;1544:1;1533:9;1529:17;1522:47;1586:78;1659:4;1650:6;1586:78;:::i;:::-;1578:86;;1358:313;;;;:::o;1758:117::-;1867:1;1864;1857:12;2004:126;2041:7;2081:42;2074:5;2070:54;2059:65;;2004:126;;;:::o;2136:96::-;2173:7;2202:24;2220:5;2202:24;:::i;:::-;2191:35;;2136:96;;;:::o;2238:122::-;2311:24;2329:5;2311:24;:::i;:::-;2304:5;2301:35;2291:63;;2350:1;2347;2340:12;2291:63;2238:122;:::o;2366:139::-;2412:5;2450:6;2437:20;2428:29;;2466:33;2493:5;2466:33;:::i;:::-;2366:139;;;;:::o;2511:122::-;2584:24;2602:5;2584:24;:::i;:::-;2577:5;2574:35;2564:63;;2623:1;2620;2613:12;2564:63;2511:122;:::o;2639:139::-;2685:5;2723:6;2710:20;2701:29;;2739:33;2766:5;2739:33;:::i;:::-;2639:139;;;;:::o;2784:474::-;2852:6;2860;2909:2;2897:9;2888:7;2884:23;2880:32;2877:119;;;2915:79;;:::i;:::-;2877:119;3035:1;3060:53;3105:7;3096:6;3085:9;3081:22;3060:53;:::i;:::-;3050:63;;3006:117;3162:2;3188:53;3233:7;3224:6;3213:9;3209:22;3188:53;:::i;:::-;3178:63;;3133:118;2784:474;;;;;:::o;3264:90::-;3298:7;3341:5;3334:13;3327:21;3316:32;;3264:90;;;:::o;3360:109::-;3441:21;3456:5;3441:21;:::i;:::-;3436:3;3429:34;3360:109;;:::o;3475:210::-;3562:4;3600:2;3589:9;3585:18;3577:26;;3613:65;3675:1;3664:9;3660:17;3651:6;3613:65;:::i;:::-;3475:210;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:118::-;5168:24;5186:5;5168:24;:::i;:::-;5163:3;5156:37;5081:118;;:::o;5205:222::-;5298:4;5336:2;5325:9;5321:18;5313:26;;5349:71;5417:1;5406:9;5402:17;5393:6;5349:71;:::i;:::-;5205:222;;;;:::o;5433:765::-;5519:6;5527;5535;5543;5592:3;5580:9;5571:7;5567:23;5563:33;5560:120;;;5599:79;;:::i;:::-;5560:120;5719:1;5744:53;5789:7;5780:6;5769:9;5765:22;5744:53;:::i;:::-;5734:63;;5690:117;5846:2;5872:53;5917:7;5908:6;5897:9;5893:22;5872:53;:::i;:::-;5862:63;;5817:118;5974:2;6000:53;6045:7;6036:6;6025:9;6021:22;6000:53;:::i;:::-;5990:63;;5945:118;6102:2;6128:53;6173:7;6164:6;6153:9;6149:22;6128:53;:::i;:::-;6118:63;;6073:118;5433:765;;;;;;;:::o;6204:474::-;6272:6;6280;6329:2;6317:9;6308:7;6304:23;6300:32;6297:119;;;6335:79;;:::i;:::-;6297:119;6455:1;6480:53;6525:7;6516:6;6505:9;6501:22;6480:53;:::i;:::-;6470:63;;6426:117;6582:2;6608:53;6653:7;6644:6;6633:9;6629:22;6608:53;:::i;:::-;6598:63;;6553:118;6204:474;;;;;:::o;6684:329::-;6743:6;6792:2;6780:9;6771:7;6767:23;6763:32;6760:119;;;6798:79;;:::i;:::-;6760:119;6918:1;6943:53;6988:7;6979:6;6968:9;6964:22;6943:53;:::i;:::-;6933:63;;6889:117;6684:329;;;;:::o;7019:116::-;7089:21;7104:5;7089:21;:::i;:::-;7082:5;7079:32;7069:60;;7125:1;7122;7115:12;7069:60;7019:116;:::o;7141:133::-;7184:5;7222:6;7209:20;7200:29;;7238:30;7262:5;7238:30;:::i;:::-;7141:133;;;;:::o;7280:468::-;7345:6;7353;7402:2;7390:9;7381:7;7377:23;7373:32;7370:119;;;7408:79;;:::i;:::-;7370:119;7528:1;7553:53;7598:7;7589:6;7578:9;7574:22;7553:53;:::i;:::-;7543:63;;7499:117;7655:2;7681:50;7723:7;7714:6;7703:9;7699:22;7681:50;:::i;:::-;7671:60;;7626:115;7280:468;;;;;:::o;7754:60::-;7782:3;7803:5;7796:12;;7754:60;;;:::o;7820:142::-;7870:9;7903:53;7921:34;7930:24;7948:5;7930:24;:::i;:::-;7921:34;:::i;:::-;7903:53;:::i;:::-;7890:66;;7820:142;;;:::o;7968:126::-;8018:9;8051:37;8082:5;8051:37;:::i;:::-;8038:50;;7968:126;;;:::o;8100:140::-;8164:9;8197:37;8228:5;8197:37;:::i;:::-;8184:50;;8100:140;;;:::o;8246:159::-;8347:51;8392:5;8347:51;:::i;:::-;8342:3;8335:64;8246:159;;:::o;8411:250::-;8518:4;8556:2;8545:9;8541:18;8533:26;;8569:85;8651:1;8640:9;8636:17;8627:6;8569:85;:::i;:::-;8411:250;;;;:::o;8667:180::-;8715:77;8712:1;8705:88;8812:4;8809:1;8802:15;8836:4;8833:1;8826:15;8853:320;8897:6;8934:1;8928:4;8924:12;8914:22;;8981:1;8975:4;8971:12;9002:18;8992:81;;9058:4;9050:6;9046:17;9036:27;;8992:81;9120:2;9112:6;9109:14;9089:18;9086:38;9083:84;;9139:18;;:::i;:::-;9083:84;8904:269;8853:320;;;:::o;9179:167::-;9319:19;9315:1;9307:6;9303:14;9296:43;9179:167;:::o;9352:366::-;9494:3;9515:67;9579:2;9574:3;9515:67;:::i;:::-;9508:74;;9591:93;9680:3;9591:93;:::i;:::-;9709:2;9704:3;9700:12;9693:19;;9352:366;;;:::o;9724:419::-;9890:4;9928:2;9917:9;9913:18;9905:26;;9977:9;9971:4;9967:20;9963:1;9952:9;9948:17;9941:47;10005:131;10131:4;10005:131;:::i;:::-;9997:139;;9724:419;;;:::o;10149:224::-;10289:34;10285:1;10277:6;10273:14;10266:58;10358:7;10353:2;10345:6;10341:15;10334:32;10149:224;:::o;10379:366::-;10521:3;10542:67;10606:2;10601:3;10542:67;:::i;:::-;10535:74;;10618:93;10707:3;10618:93;:::i;:::-;10736:2;10731:3;10727:12;10720:19;;10379:366;;;:::o;10751:419::-;10917:4;10955:2;10944:9;10940:18;10932:26;;11004:9;10998:4;10994:20;10990:1;10979:9;10975:17;10968:47;11032:131;11158:4;11032:131;:::i;:::-;11024:139;;10751:419;;;:::o;11176:180::-;11224:77;11221:1;11214:88;11321:4;11318:1;11311:15;11345:4;11342:1;11335:15;11362:194;11402:4;11422:20;11440:1;11422:20;:::i;:::-;11417:25;;11456:20;11474:1;11456:20;:::i;:::-;11451:25;;11500:1;11497;11493:9;11485:17;;11524:1;11518:4;11515:11;11512:37;;;11529:18;;:::i;:::-;11512:37;11362:194;;;;:::o;11562:191::-;11602:3;11621:20;11639:1;11621:20;:::i;:::-;11616:25;;11655:20;11673:1;11655:20;:::i;:::-;11650:25;;11698:1;11695;11691:9;11684:16;;11719:3;11716:1;11713:10;11710:36;;;11726:18;;:::i;:::-;11710:36;11562:191;;;;:::o;11759:180::-;11807:77;11804:1;11797:88;11904:4;11901:1;11894:15;11928:4;11925:1;11918:15;11945:180;11993:77;11990:1;11983:88;12090:4;12087:1;12080:15;12114:4;12111:1;12104:15;12131:143;12188:5;12219:6;12213:13;12204:22;;12235:33;12262:5;12235:33;:::i;:::-;12131:143;;;;:::o;12280:351::-;12350:6;12399:2;12387:9;12378:7;12374:23;12370:32;12367:119;;;12405:79;;:::i;:::-;12367:119;12525:1;12550:64;12606:7;12597:6;12586:9;12582:22;12550:64;:::i;:::-;12540:74;;12496:128;12280:351;;;;:::o;12637:85::-;12682:7;12711:5;12700:16;;12637:85;;;:::o;12728:158::-;12786:9;12819:61;12837:42;12846:32;12872:5;12846:32;:::i;:::-;12837:42;:::i;:::-;12819:61;:::i;:::-;12806:74;;12728:158;;;:::o;12892:147::-;12987:45;13026:5;12987:45;:::i;:::-;12982:3;12975:58;12892:147;;:::o;13045:114::-;13112:6;13146:5;13140:12;13130:22;;13045:114;;;:::o;13165:184::-;13264:11;13298:6;13293:3;13286:19;13338:4;13333:3;13329:14;13314:29;;13165:184;;;;:::o;13355:132::-;13422:4;13445:3;13437:11;;13475:4;13470:3;13466:14;13458:22;;13355:132;;;:::o;13493:108::-;13570:24;13588:5;13570:24;:::i;:::-;13565:3;13558:37;13493:108;;:::o;13607:179::-;13676:10;13697:46;13739:3;13731:6;13697:46;:::i;:::-;13775:4;13770:3;13766:14;13752:28;;13607:179;;;;:::o;13792:113::-;13862:4;13894;13889:3;13885:14;13877:22;;13792:113;;;:::o;13941:732::-;14060:3;14089:54;14137:5;14089:54;:::i;:::-;14159:86;14238:6;14233:3;14159:86;:::i;:::-;14152:93;;14269:56;14319:5;14269:56;:::i;:::-;14348:7;14379:1;14364:284;14389:6;14386:1;14383:13;14364:284;;;14465:6;14459:13;14492:63;14551:3;14536:13;14492:63;:::i;:::-;14485:70;;14578:60;14631:6;14578:60;:::i;:::-;14568:70;;14424:224;14411:1;14408;14404:9;14399:14;;14364:284;;;14368:14;14664:3;14657:10;;14065:608;;;13941:732;;;;:::o;14679:831::-;14942:4;14980:3;14969:9;14965:19;14957:27;;14994:71;15062:1;15051:9;15047:17;15038:6;14994:71;:::i;:::-;15075:80;15151:2;15140:9;15136:18;15127:6;15075:80;:::i;:::-;15202:9;15196:4;15192:20;15187:2;15176:9;15172:18;15165:48;15230:108;15333:4;15324:6;15230:108;:::i;:::-;15222:116;;15348:72;15416:2;15405:9;15401:18;15392:6;15348:72;:::i;:::-;15430:73;15498:3;15487:9;15483:19;15474:6;15430:73;:::i;:::-;14679:831;;;;;;;;:::o;15516:147::-;15617:11;15654:3;15639:18;;15516:147;;;;:::o;15669:114::-;;:::o;15789:398::-;15948:3;15969:83;16050:1;16045:3;15969:83;:::i;:::-;15962:90;;16061:93;16150:3;16061:93;:::i;:::-;16179:1;16174:3;16170:11;16163:18;;15789:398;;;:::o;16193:379::-;16377:3;16399:147;16542:3;16399:147;:::i;:::-;16392:154;;16563:3;16556:10;;16193:379;;;:::o;16578:807::-;16827:4;16865:3;16854:9;16850:19;16842:27;;16879:71;16947:1;16936:9;16932:17;16923:6;16879:71;:::i;:::-;16960:72;17028:2;17017:9;17013:18;17004:6;16960:72;:::i;:::-;17042:80;17118:2;17107:9;17103:18;17094:6;17042:80;:::i;:::-;17132;17208:2;17197:9;17193:18;17184:6;17132:80;:::i;:::-;17222:73;17290:3;17279:9;17275:19;17266:6;17222:73;:::i;:::-;17305;17373:3;17362:9;17358:19;17349:6;17305:73;:::i;:::-;16578:807;;;;;;;;;:::o;17391:143::-;17448:5;17479:6;17473:13;17464:22;;17495:33;17522:5;17495:33;:::i;:::-;17391:143;;;;:::o;17540:663::-;17628:6;17636;17644;17693:2;17681:9;17672:7;17668:23;17664:32;17661:119;;;17699:79;;:::i;:::-;17661:119;17819:1;17844:64;17900:7;17891:6;17880:9;17876:22;17844:64;:::i;:::-;17834:74;;17790:128;17957:2;17983:64;18039:7;18030:6;18019:9;18015:22;17983:64;:::i;:::-;17973:74;;17928:129;18096:2;18122:64;18178:7;18169:6;18158:9;18154:22;18122:64;:::i;:::-;18112:74;;18067:129;17540:663;;;;;:::o;18209:332::-;18330:4;18368:2;18357:9;18353:18;18345:26;;18381:71;18449:1;18438:9;18434:17;18425:6;18381:71;:::i;:::-;18462:72;18530:2;18519:9;18515:18;18506:6;18462:72;:::i;:::-;18209:332;;;;;:::o;18547:166::-;18687:18;18683:1;18675:6;18671:14;18664:42;18547:166;:::o;18719:366::-;18861:3;18882:67;18946:2;18941:3;18882:67;:::i;:::-;18875:74;;18958:93;19047:3;18958:93;:::i;:::-;19076:2;19071:3;19067:12;19060:19;;18719:366;;;:::o;19091:419::-;19257:4;19295:2;19284:9;19280:18;19272:26;;19344:9;19338:4;19334:20;19330:1;19319:9;19315:17;19308:47;19372:131;19498:4;19372:131;:::i;:::-;19364:139;;19091:419;;;:::o;19516:170::-;19656:22;19652:1;19644:6;19640:14;19633:46;19516:170;:::o;19692:366::-;19834:3;19855:67;19919:2;19914:3;19855:67;:::i;:::-;19848:74;;19931:93;20020:3;19931:93;:::i;:::-;20049:2;20044:3;20040:12;20033:19;;19692:366;;;:::o;20064:419::-;20230:4;20268:2;20257:9;20253:18;20245:26;;20317:9;20311:4;20307:20;20303:1;20292:9;20288:17;20281:47;20345:131;20471:4;20345:131;:::i;:::-;20337:139;;20064:419;;;:::o;20489:410::-;20529:7;20552:20;20570:1;20552:20;:::i;:::-;20547:25;;20586:20;20604:1;20586:20;:::i;:::-;20581:25;;20641:1;20638;20634:9;20663:30;20681:11;20663:30;:::i;:::-;20652:41;;20842:1;20833:7;20829:15;20826:1;20823:22;20803:1;20796:9;20776:83;20753:139;;20872:18;;:::i;:::-;20753:139;20537:362;20489:410;;;;:::o;20905:180::-;20953:77;20950:1;20943:88;21050:4;21047:1;21040:15;21074:4;21071:1;21064:15;21091:185;21131:1;21148:20;21166:1;21148:20;:::i;:::-;21143:25;;21182:20;21200:1;21182:20;:::i;:::-;21177:25;;21221:1;21211:35;;21226:18;;:::i;:::-;21211:35;21268:1;21265;21261:9;21256:14;;21091:185;;;;:::o

Swarm Source

ipfs://3e0a64818b17fe082b894f4bf3cd5ec88a80d472e1950af19c4d99a7e8024e4e
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.