ETH Price: $2,499.46 (-3.43%)

Token

Node Empire (NE)
 

Overview

Max Total Supply

110,000,000 NE

Holders

155

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
133,380.315601953137550306 NE

Value
$0.00
0x54fb063f08ad01d58fdae27107f0b537e54df36c
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:
NodeEmpire

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-21
*/

/**
 *Submitted for verification at Etherscan.io on 2022-02-21
*/

/**
 *Submitted for verification at Etherscan.io on 2022-02-17
*/

// File: https://github.com/Uniswap/v2-periphery/blob/master/contracts/interfaces/IUniswapV2Router01.sol

pragma solidity >=0.6.2;

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

// File: https://github.com/Uniswap/v2-periphery/blob/master/contracts/interfaces/IUniswapV2Router02.sol

pragma solidity >=0.6.2;


interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

// File: https://github.com/Uniswap/v2-core/blob/master/contracts/interfaces/IUniswapV2Factory.sol

pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

    /**
     * @dev Moves `amount` 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 amount) 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 `amount` 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 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` 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 amount
    ) external returns (bool);

    /**
     * @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);
}

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @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;
    }
}

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol


// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @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.
 *
 * By default, the owner account will be the one that deploys the contract. 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;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing 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 {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _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: contracts/DividendTracker.sol


pragma solidity ^0.8.10;





contract DividendTracker is Ownable, IERC20 {
    address UNISWAPROUTER;

    string private _name = "NE_DividendTracker";
    string private _symbol = "NE_DividendTracker";

    uint256 public lastProcessedIndex;

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

    uint256 private constant magnitude = 2**128;
    uint256 public immutable minTokenBalanceForDividends;
    uint256 private magnifiedDividendPerShare;
    uint256 public totalDividendsDistributed;
    uint256 public totalDividendsWithdrawn;

    address public tokenAddress;

    mapping(address => bool) public excludedFromDividends;
    mapping(address => int256) private magnifiedDividendCorrections;
    mapping(address => uint256) private withdrawnDividends;
    mapping(address => uint256) private lastClaimTimes;

    event DividendsDistributed(address indexed from, uint256 weiAmount);
    event DividendWithdrawn(address indexed to, uint256 weiAmount);
    event ExcludeFromDividends(address indexed account, bool excluded);
    event Claim(address indexed account, uint256 amount);
    event Compound(address indexed account, uint256 amount, uint256 tokens);

    struct AccountInfo {
        address account;
        uint256 withdrawableDividends;
        uint256 totalDividends;
        uint256 lastClaimTime;
    }

    constructor(address _tokenAddress, address _uniswapRouter) {
        minTokenBalanceForDividends = 10000 * (10**18);
        tokenAddress = _tokenAddress;
        UNISWAPROUTER = _uniswapRouter;
    }

    receive() external payable {
        distributeDividends();
    }

    function distributeDividends() public payable {
        require(_totalSupply > 0);
        if (msg.value > 0) {
            magnifiedDividendPerShare =
                magnifiedDividendPerShare +
                ((msg.value * magnitude) / _totalSupply);
            emit DividendsDistributed(msg.sender, msg.value);
            totalDividendsDistributed += msg.value;
        }
    }

    function setBalance(address payable account, uint256 newBalance)
        external
        onlyOwner
    {
        if (excludedFromDividends[account]) {
            return;
        }
        if (newBalance >= minTokenBalanceForDividends) {
            _setBalance(account, newBalance);
        } else {
            _setBalance(account, 0);
        }
    }

    function excludeFromDividends(address account, bool excluded)
        external
        onlyOwner
    {
        require(
            excludedFromDividends[account] != excluded,
            "NE_DividendTracker: account already set to requested state"
        );
        excludedFromDividends[account] = excluded;
        if (excluded) {
            _setBalance(account, 0);
        } else {
            uint256 newBalance = IERC20(tokenAddress).balanceOf(account);
            if (newBalance >= minTokenBalanceForDividends) {
                _setBalance(account, newBalance);
            } else {
                _setBalance(account, 0);
            }
        }
        emit ExcludeFromDividends(account, excluded);
    }

    function isExcludedFromDividends(address account)
        public
        view
        returns (bool)
    {
        return excludedFromDividends[account];
    }

    function manualSendDividend(uint256 amount, address holder)
        external
        onlyOwner
    {
        uint256 contractETHBalance = address(this).balance;
        payable(holder).transfer(amount > 0 ? amount : contractETHBalance);
    }

    function _setBalance(address account, uint256 newBalance) internal {
        uint256 currentBalance = _balances[account];
        if (newBalance > currentBalance) {
            uint256 addAmount = newBalance - currentBalance;
            _mint(account, addAmount);
        } else if (newBalance < currentBalance) {
            uint256 subAmount = currentBalance - newBalance;
            _burn(account, subAmount);
        }
    }

    function _mint(address account, uint256 amount) private {
        require(
            account != address(0),
            "NE_DividendTracker: mint to the zero address"
        );
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
        magnifiedDividendCorrections[account] =
            magnifiedDividendCorrections[account] -
            int256(magnifiedDividendPerShare * amount);
    }

    function _burn(address account, uint256 amount) private {
        require(
            account != address(0),
            "NE_DividendTracker: burn from the zero address"
        );
        uint256 accountBalance = _balances[account];
        require(
            accountBalance >= amount,
            "NE_DividendTracker: burn amount exceeds balance"
        );
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        magnifiedDividendCorrections[account] =
            magnifiedDividendCorrections[account] +
            int256(magnifiedDividendPerShare * amount);
    }

    function processAccount(address payable account)
        public
        onlyOwner
        returns (bool)
    {
        uint256 amount = _withdrawDividendOfUser(account);
        if (amount > 0) {
            lastClaimTimes[account] = block.timestamp;
            emit Claim(account, amount);
            return true;
        }
        return false;
    }

    function _withdrawDividendOfUser(address payable account)
        private
        returns (uint256)
    {
        uint256 _withdrawableDividend = withdrawableDividendOf(account);
        if (_withdrawableDividend > 0) {
            withdrawnDividends[account] += _withdrawableDividend;
            totalDividendsWithdrawn += _withdrawableDividend;
            emit DividendWithdrawn(account, _withdrawableDividend);
            (bool success, ) = account.call{
                value: _withdrawableDividend,
                gas: 3000
            }("");
            if (!success) {
                withdrawnDividends[account] -= _withdrawableDividend;
                totalDividendsWithdrawn -= _withdrawableDividend;
                return 0;
            }
            return _withdrawableDividend;
        }
        return 0;
    }

    function compoundAccount(address payable account)
        public
        onlyOwner
        returns (bool)
    {
        (uint256 amount, uint256 tokens) = _compoundDividendOfUser(account);
        if (amount > 0) {
            lastClaimTimes[account] = block.timestamp;
            emit Compound(account, amount, tokens);
            return true;
        }
        return false;
    }

    function _compoundDividendOfUser(address payable account)
        private
        returns (uint256, uint256)
    {
        uint256 _withdrawableDividend = withdrawableDividendOf(account);
        if (_withdrawableDividend > 0) {
            withdrawnDividends[account] += _withdrawableDividend;
            totalDividendsWithdrawn += _withdrawableDividend;
            emit DividendWithdrawn(account, _withdrawableDividend);

            IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(
                UNISWAPROUTER
            );

            address[] memory path = new address[](2);
            path[0] = uniswapV2Router.WETH();
            path[1] = address(tokenAddress);

            bool success;
            uint256 tokens;

            uint256 initTokenBal = IERC20(tokenAddress).balanceOf(account);
            try
                uniswapV2Router
                    .swapExactETHForTokensSupportingFeeOnTransferTokens{
                    value: _withdrawableDividend
                }(0, path, address(account), block.timestamp)
            {
                success = true;
                tokens = IERC20(tokenAddress).balanceOf(account) - initTokenBal;
            } catch Error(
                string memory /*err*/
            ) {
                success = false;
            }

            if (!success) {
                withdrawnDividends[account] -= _withdrawableDividend;
                totalDividendsWithdrawn -= _withdrawableDividend;
                return (0, 0);
            }

            return (_withdrawableDividend, tokens);
        }
        return (0, 0);
    }

    function withdrawableDividendOf(address account)
        public
        view
        returns (uint256)
    {
        return accumulativeDividendOf(account) - withdrawnDividends[account];
    }

    function withdrawnDividendOf(address account)
        public
        view
        returns (uint256)
    {
        return withdrawnDividends[account];
    }

    function accumulativeDividendOf(address account)
        public
        view
        returns (uint256)
    {
        int256 a = int256(magnifiedDividendPerShare * balanceOf(account));
        int256 b = magnifiedDividendCorrections[account]; // this is an explicit int256 (signed)
        return uint256(a + b) / magnitude;
    }

    function getAccountInfo(address account)
        public
        view
        returns (
            address,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        AccountInfo memory info;
        info.account = account;
        info.withdrawableDividends = withdrawableDividendOf(account);
        info.totalDividends = accumulativeDividendOf(account);
        info.lastClaimTime = lastClaimTimes[account];
        return (
            info.account,
            info.withdrawableDividends,
            info.totalDividends,
            info.lastClaimTime,
            totalDividendsWithdrawn
        );
    }

    function getLastClaimTime(address account) public view returns (uint256) {
        return lastClaimTimes[account];
    }

    function name() public view returns (string memory) {
        return _name;
    }

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

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

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

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

    function transfer(address, uint256) public pure override returns (bool) {
        revert("NE_DividendTracker: method not implemented");
    }

    function allowance(address, address)
        public
        pure
        override
        returns (uint256)
    {
        revert("NE_DividendTracker: method not implemented");
    }

    function approve(address, uint256) public pure override returns (bool) {
        revert("NE_DividendTracker: method not implemented");
    }

    function transferFrom(
        address,
        address,
        uint256
    ) public pure override returns (bool) {
        revert("NE_DividendTracker: method not implemented");
    }
}
// File: contracts/NodeEmpire.sol


pragma solidity ^0.8.10;





contract NodeEmpire is Ownable, IERC20 {
    address UNISWAPROUTER = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string private _name = "Node Empire";
    string private _symbol = "NE";

    uint256 public treasuryFeeBPS = 600;
    uint256 public liquidityFeeBPS = 200;
    uint256 public dividendFeeBPS = 300;
    uint256 public marketingFeeBPS = 300;
    uint256 public totalFeeBPS = 1400;

    uint256 public swapTokensAtAmount = 1000000 * (10**18);
    uint256 public lastSwapTime;
    bool swapAllToken = true;

    bool public swapEnabled = true;
    bool public taxEnabled = true;
    bool public compoundingEnabled = true;

    uint256 private _totalSupply;
    bool private swapping;

    address marketingWallet;
    address liquidityWallet;
    address treasuryWallet;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) private _whiteList;
    mapping(address => bool) isBlacklisted;

    event SwapAndAddLiquidity(
        uint256 tokensSwapped,
        uint256 nativeReceived,
        uint256 tokensIntoLiquidity
    );
    event SendDividends(uint256 tokensSwapped, uint256 amount);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );
    event SwapEnabled(bool enabled);
    event TaxEnabled(bool enabled);
    event CompoundingEnabled(bool enabled);
    event BlacklistEnabled(bool enabled);

    DividendTracker public dividendTracker;
    IUniswapV2Router02 public uniswapV2Router;

    address public uniswapV2Pair;

    uint256 public maxTxBPS = 100;
    uint256 public maxWalletBPS = 200;

    bool isOpen = false;

    mapping(address => bool) private _isExcludedFromMaxTx;
    mapping(address => bool) private _isExcludedFromMaxWallet;

    constructor(
        address _marketingWallet,
        address _liquidityWallet,
        address _treasuryWallet
    ) {
        marketingWallet = _marketingWallet;
        liquidityWallet = _liquidityWallet;
        treasuryWallet = _treasuryWallet;

        dividendTracker = new DividendTracker(address(this), UNISWAPROUTER);

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(UNISWAPROUTER);


        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;

        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);

        dividendTracker.excludeFromDividends(address(dividendTracker), true);
        dividendTracker.excludeFromDividends(address(this), true);
        dividendTracker.excludeFromDividends(owner(), true);
        dividendTracker.excludeFromDividends(address(_uniswapV2Router), true);

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(dividendTracker), true);

        excludeFromMaxTx(owner(), true);
        excludeFromMaxTx(address(this), true);
        excludeFromMaxTx(address(dividendTracker), true);

        excludeFromMaxWallet(owner(), true);
        excludeFromMaxWallet(address(this), true);
        excludeFromMaxWallet(address(dividendTracker), true);

        _mint(owner(), 110000000 * (10**18));
    }

    receive() external payable {}

    function name() public view returns (string memory) {
        return _name;
    }

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

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

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

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

    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue
        );
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        return true;
    }

    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "allowance exceeded"
        );
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }

    function openTrading() external onlyOwner {
        isOpen = true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        require(
            isOpen ||
                sender == owner() ||
                recipient == owner() ||
                _whiteList[sender] ||
                _whiteList[recipient],
            "Not Open"
        );

        require(!isBlacklisted[sender], "sender blacklisted");
        require(!isBlacklisted[recipient], "recipient blacklisted");

        require(sender != address(0));
        require(recipient != address(0));

        uint256 _maxTxAmount = (totalSupply() * maxTxBPS) / 10000;
        uint256 _maxWallet = (totalSupply() * maxWalletBPS) / 10000;
        require(
            amount <= _maxTxAmount || _isExcludedFromMaxTx[sender],
            "TX Limit Exceeded"
        );

        if (
            sender != owner() &&
            recipient != address(this) &&
            recipient != address(DEAD) &&
            recipient != uniswapV2Pair
        ) {
            uint256 currentBalance = balanceOf(recipient);
            require(
                _isExcludedFromMaxWallet[recipient] ||
                    (currentBalance + amount <= _maxWallet)
            );
        }

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount
        );

        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 contractNativeBalance = address(this).balance;

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            swapEnabled && // True
            canSwap && // true
            !swapping && // swapping=false !false true
            !automatedMarketMakerPairs[sender] && // no swap on remove liquidity step 1 or DEX buy
            sender != address(uniswapV2Router) && // no swap on remove liquidity step 2
            sender != owner() &&
            recipient != owner()
        ) {
            swapping = true;

            if (!swapAllToken) {
                contractTokenBalance = swapTokensAtAmount;
            }
            _executeSwap(contractTokenBalance, contractNativeBalance);

            lastSwapTime = block.timestamp;
            swapping = false;
        }

        bool takeFee;

        if (
            sender == address(uniswapV2Pair) ||
            recipient == address(uniswapV2Pair)
        ) {
            takeFee = true;
        }

        if (_isExcludedFromFees[sender] || _isExcludedFromFees[recipient]) {
            takeFee = false;
        }

        if (swapping || !taxEnabled) {
            takeFee = false;
        }

        if (takeFee) {
            uint256 fees = (amount * totalFeeBPS) / 10000;
            amount -= fees;
            _executeTransfer(sender, address(this), fees);
        }

        _executeTransfer(sender, recipient, amount);

        dividendTracker.setBalance(payable(sender), balanceOf(sender));
        dividendTracker.setBalance(payable(recipient), balanceOf(recipient));
    }

    function _executeTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        require(sender != address(0));
        require(recipient != address(0));
        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount
        );
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0));
        require(spender != address(0));
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _mint(address account, uint256 amount) private {
        require(account != address(0));
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) private {
        require(account != address(0));
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount);
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

    function swapTokensForNative(uint256 tokens) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokens);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokens,
            0, // accept any amount of native
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokens, uint256 native) private {
        _approve(address(this), address(uniswapV2Router), tokens);
        uniswapV2Router.addLiquidityETH{value: native}(
            address(this),
            tokens,
            0, // slippage unavoidable
            0, // slippage unavoidable
            liquidityWallet,
            block.timestamp
        );
    }

   

    function _executeSwap(uint256 tokens, uint256 native) private {
        if (tokens <= 0) {
            return;
        }

        uint256 swapTokensMarketing;
        if (address(marketingWallet) != address(0)) {
            swapTokensMarketing = (tokens * marketingFeeBPS) / totalFeeBPS;
        }

        uint256 swapTokensTreasury;
        if(address(treasuryWallet) != address(0)){
            swapTokensTreasury = (tokens * treasuryFeeBPS) / totalFeeBPS;
        }

        uint256 swapTokensDividends;
        if (dividendTracker.totalSupply() > 0) {
            swapTokensDividends = (tokens * dividendFeeBPS) / totalFeeBPS;
        }

        uint256 tokensForLiquidity = tokens -
            swapTokensMarketing -
            swapTokensDividends -
            swapTokensTreasury;
        uint256 swapTokensLiquidity = tokensForLiquidity / 2;
        uint256 addTokensLiquidity = tokensForLiquidity - swapTokensLiquidity;
        uint256 swapTokensTotal = swapTokensMarketing +
            swapTokensDividends +
            swapTokensLiquidity+
            swapTokensTreasury;

        uint256 initNativeBal = address(this).balance;
        swapTokensForNative(swapTokensTotal);
        uint256 nativeSwapped = (address(this).balance - initNativeBal) +
            native;

        uint256 nativeMarketing = (nativeSwapped * swapTokensMarketing) /
            swapTokensTotal;
        uint256 nativeDividends = (nativeSwapped * swapTokensDividends) /
            swapTokensTotal;
        uint256 nativeTreasury = (nativeSwapped * swapTokensTreasury) / swapTokensTotal;
        uint256 nativeLiquidity = nativeSwapped -
            nativeMarketing -
            nativeDividends - nativeTreasury;

        if (nativeMarketing > 0) {
            payable(marketingWallet).transfer(nativeMarketing);
        }

        if(nativeTreasury > 0){
            payable(treasuryWallet).transfer(nativeTreasury);
        }

        addLiquidity(addTokensLiquidity, nativeLiquidity);
        emit SwapAndAddLiquidity(
            swapTokensLiquidity,
            nativeLiquidity,
            addTokensLiquidity
        );

        if (nativeDividends > 0) {
            (bool success, ) = address(dividendTracker).call{
                value: nativeDividends
            }("");
            if (success) {
                emit SendDividends(swapTokensDividends, nativeDividends);
            }
        }
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        require(
            _isExcludedFromFees[account] != excluded
        );
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function manualSendDividend(uint256 amount, address holder)
        external
        onlyOwner
    {
        dividendTracker.manualSendDividend(amount, holder);
    }

    function excludeFromDividends(address account, bool excluded)
        public
        onlyOwner
    {
        dividendTracker.excludeFromDividends(account, excluded);
    }

    function isExcludedFromDividends(address account)
        public
        view
        returns (bool)
    {
        return dividendTracker.isExcludedFromDividends(account);
    }

    function setWallet(
        address payable _marketingWallet,
        address payable _liquidityWallet
    ) external onlyOwner {
        marketingWallet = _marketingWallet;
        liquidityWallet = _liquidityWallet;
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(pair != uniswapV2Pair);
        _setAutomatedMarketMakerPair(pair, value);
    }

    function setFee(
        uint256 _treasuryFee,
        uint256 _liquidityFee,
        uint256 _dividendFee
    ) external onlyOwner {
        treasuryFeeBPS = _treasuryFee;
        liquidityFeeBPS = _liquidityFee;
        dividendFeeBPS = _dividendFee;
        totalFeeBPS = _treasuryFee + _liquidityFee + _dividendFee;
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(
            automatedMarketMakerPairs[pair] != value
        );
        automatedMarketMakerPairs[pair] = value;
        if (value) {
            dividendTracker.excludeFromDividends(pair, true);
        }
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateUniswapV2Router(address newAddress) public onlyOwner {
        require(
            newAddress != address(uniswapV2Router)
        );
        emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router));
        uniswapV2Router = IUniswapV2Router02(newAddress);
        address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
            .createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Pair = _uniswapV2Pair;
    }

    function claim() public {
        dividendTracker.processAccount(payable(_msgSender()));
    }

    function compound() public {
        require(compoundingEnabled);
        dividendTracker.compoundAccount(payable(_msgSender()));
    }

    function withdrawableDividendOf(address account)
        public
        view
        returns (uint256)
    {
        return dividendTracker.withdrawableDividendOf(account);
    }

    function withdrawnDividendOf(address account)
        public
        view
        returns (uint256)
    {
        return dividendTracker.withdrawnDividendOf(account);
    }

    function accumulativeDividendOf(address account)
        public
        view
        returns (uint256)
    {
        return dividendTracker.accumulativeDividendOf(account);
    }

    function getAccountInfo(address account)
        public
        view
        returns (
            address,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        return dividendTracker.getAccountInfo(account);
    }

    function getLastClaimTime(address account) public view returns (uint256) {
        return dividendTracker.getLastClaimTime(account);
    }

    function setSwapEnabled(bool _enabled) external onlyOwner {
        swapEnabled = _enabled;
        emit SwapEnabled(_enabled);
    }

    function setTaxEnabled(bool _enabled) external onlyOwner {
        taxEnabled = _enabled;
        emit TaxEnabled(_enabled);
    }

    function setCompoundingEnabled(bool _enabled) external onlyOwner {
        compoundingEnabled = _enabled;
        emit CompoundingEnabled(_enabled);
    }

    function updateDividendSettings(
        bool _swapEnabled,
        uint256 _swapTokensAtAmount,
        bool _swapAllToken
    ) external onlyOwner {
        swapEnabled = _swapEnabled;
        swapTokensAtAmount = _swapTokensAtAmount;
        swapAllToken = _swapAllToken;
    }

    function setMaxTxBPS(uint256 bps) external onlyOwner {
        require(bps >= 75 && bps <= 10000);
        maxTxBPS = bps;
    }

    function excludeFromMaxTx(address account, bool excluded) public onlyOwner {
        _isExcludedFromMaxTx[account] = excluded;
    }

    function isExcludedFromMaxTx(address account) public view returns (bool) {
        return _isExcludedFromMaxTx[account];
    }

    function setMaxWalletBPS(uint256 bps) external onlyOwner {
        require(
            bps >= 175 && bps <= 10000
        );
        maxWalletBPS = bps;
    }

    function excludeFromMaxWallet(address account, bool excluded)
        public
        onlyOwner
    {
        _isExcludedFromMaxWallet[account] = excluded;
    }

    function isExcludedFromMaxWallet(address account)
        public
        view
        returns (bool)
    {
        return _isExcludedFromMaxWallet[account];
    }

    function rescueToken(address _token, uint256 _amount) external onlyOwner {
        IERC20(_token).transfer(msg.sender, _amount);
    }

    function rescueETH(uint256 _amount) external onlyOwner {
        payable(msg.sender).transfer(_amount);
    }

    function blackList(address _user) public onlyOwner {
        require(!isBlacklisted[_user]);
        isBlacklisted[_user] = true;
        // events?
    }

    function removeFromBlacklist(address _user) public onlyOwner {
        require(isBlacklisted[_user]);
        isBlacklisted[_user] = false;
        //events?
    }

    // function blackListMany(address[] memory _users) public onlyOwner {
    //     for (uint8 i = 0; i < _users.length; i++) {
    //         isBlacklisted[_users[i]] = true;
    //     }
    // }

    // function unBlackListMany(address[] memory _users) public onlyOwner {
    //     for (uint8 i = 0; i < _users.length; i++) {
    //         isBlacklisted[_users[i]] = false;
    //     }
    // }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_liquidityWallet","type":"address"},{"internalType":"address","name":"_treasuryWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"bool","name":"enabled","type":"bool"}],"name":"BlacklistEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"CompoundingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nativeReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndAddLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"TaxEnabled","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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"accumulativeDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"_user","type":"address"}],"name":"blackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compoundingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dividendFeeBPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendTracker","outputs":[{"internalType":"contract DividendTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getLastClaimTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromDividends","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSwapTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeBPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"holder","type":"address"}],"name":"manualSendDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFeeBPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxBPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setCompoundingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_dividendFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bps","type":"uint256"}],"name":"setMaxTxBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bps","type":"uint256"}],"name":"setMaxWalletBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTaxEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketingWallet","type":"address"},{"internalType":"address payable","name":"_liquidityWallet","type":"address"}],"name":"setWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","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":"taxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeBPS","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":"treasuryFeeBPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"},{"internalType":"uint256","name":"_swapTokensAtAmount","type":"uint256"},{"internalType":"bool","name":"_swapAllToken","type":"bool"}],"name":"updateDividendSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"withdrawableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"withdrawnDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600180546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d1790915560028054821661dead17905560038054909116905560c0604052600b60808190526a4e6f646520456d7069726560a81b60a09081526200006c9160049190620009ef565b50604080518082019091526002808252614e4560f01b60209092019182526200009891600591620009ef565b5061025860065560c8600781905561012c6008819055600955610578600a5569d3c21bcecceda1000000600b55600d805463ffffffff191663010101011790556064601b55601c55601d805460ff19169055348015620000f757600080fd5b50604051620057a2380380620057a28339810160408190526200011a9162000ac0565b620001253362000629565b600f8054610100600160a81b0319166101006001600160a01b038681169190910291909117909155601080546001600160a01b0319908116858416179091556011805490911683831617905560015460405130929190911690620001899062000a7e565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620001bd573d6000803e3d6000fd5b50601880546001600160a01b0319166001600160a01b039283161790556001546040805163c45a015560e01b815290519190921691600091839163c45a01559160048083019260209291908290030181865afa15801562000222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000248919062000b0a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000296573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bc919062000b0a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200030a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000330919062000b0a565b601980546001600160a01b038086166001600160a01b031992831617909255601a80549284169290911691909117905590506200036f81600162000679565b60185460405162241fbd60e51b81526001600160a01b03909116600482018190526001602483015290630483f7a090604401600060405180830381600087803b158015620003bc57600080fd5b505af1158015620003d1573d6000803e3d6000fd5b505060185460405162241fbd60e51b8152306004820152600160248201526001600160a01b039091169250630483f7a09150604401600060405180830381600087803b1580156200042157600080fd5b505af115801562000436573d6000803e3d6000fd5b50506018546001600160a01b03169150630483f7a09050620004606000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b158015620004a957600080fd5b505af1158015620004be573d6000803e3d6000fd5b505060185460405162241fbd60e51b81526001600160a01b038681166004830152600160248301529091169250630483f7a09150604401600060405180830381600087803b1580156200051057600080fd5b505af115801562000525573d6000803e3d6000fd5b50505050620005456200053d6200077860201b60201c565b600162000787565b6200055230600162000787565b6018546200056b906001600160a01b0316600162000787565b6200058a620005826000546001600160a01b031690565b600162000862565b6200059730600162000862565b601854620005b0906001600160a01b0316600162000862565b620005cf620005c76000546001600160a01b031690565b6001620008d8565b620005dc306001620008d8565b601854620005f5906001600160a01b03166001620008d8565b6200061e6200060c6000546001600160a01b031690565b6a5afd67f2dc0e1b2e0000006200094e565b505050505062000b93565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03821660009081526015602052604090205460ff1615158115151415620006a657600080fd5b6001600160a01b0382166000908152601560205260409020805460ff191682158015919091179091556200073c5760185460405162241fbd60e51b81526001600160a01b0384811660048301526001602483015290911690630483f7a090604401600060405180830381600087803b1580156200072257600080fd5b505af115801562000737573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6000546001600160a01b031690565b6000546001600160a01b03163314620007d65760405162461bcd60e51b815260206004820181905260248201526000805160206200578283398151915260448201526064015b60405180910390fd5b6001600160a01b03821660009081526014602052604090205460ff16151581151514156200080357600080fd5b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b03163314620008ad5760405162461bcd60e51b81526020600482018190526024820152600080516020620057828339815191526044820152606401620007cd565b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314620009235760405162461bcd60e51b81526020600482018190526024820152600080516020620057828339815191526044820152606401620007cd565b6001600160a01b03919091166000908152601f60205260409020805460ff1916911515919091179055565b6001600160a01b0382166200096257600080fd5b80600e600082825462000976919062000b2f565b90915550506001600160a01b03821660009081526012602052604081208054839290620009a590849062000b2f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620009fd9062000b56565b90600052602060002090601f01602090048101928262000a21576000855562000a6c565b82601f1062000a3c57805160ff191683800117855562000a6c565b8280016001018555821562000a6c579182015b8281111562000a6c57825182559160200191906001019062000a4f565b5062000a7a92915062000a8c565b5090565b611dec806200399683390190565b5b8082111562000a7a576000815560010162000a8d565b80516001600160a01b038116811462000abb57600080fd5b919050565b60008060006060848603121562000ad657600080fd5b62000ae18462000aa3565b925062000af16020850162000aa3565b915062000b016040850162000aa3565b90509250925092565b60006020828403121562000b1d57600080fd5b62000b288262000aa3565b9392505050565b6000821982111562000b5157634e487b7160e01b600052601160045260246000fd5b500190565b600181811c9082168062000b6b57607f821691505b6020821081141562000b8d57634e487b7160e01b600052602260045260246000fd5b50919050565b612df38062000ba36000396000f3fe6080604052600436106103a65760003560e01c8063744d1591116101e7578063b62496f51161010d578063dd62ed3e116100a0578063ebbf1ace1161006f578063ebbf1ace14610b51578063f1b234ad14610b67578063f2fde38b14610b87578063f69e204614610ba757600080fd5b8063dd62ed3e14610ab5578063e01af92c14610afb578063e2f4560514610b1b578063e4956ce214610b3157600080fd5b8063c705c569116100dc578063c705c56914610a40578063c9567bf914610a60578063d2fcc00114610a75578063d4c989d314610a9557600080fd5b8063b62496f5146109ba578063b80b6e89146109ea578063c024666814610a00578063c6af580b14610a2057600080fd5b80639a7a23d611610185578063a8b9d24011610154578063a8b9d2401461093a578063a9059cbb1461095a578063aa4e8c4a1461097a578063aafd847a1461099a57600080fd5b80639a7a23d6146108ba5780639e252f00146108da578063a457c2d7146108fa578063a680e0bc1461091a57600080fd5b8063870bd30b116101c1578063870bd30b146108475780638da5cb5b146108675780638e1269441461088557806395d89b41146108a557600080fd5b8063744d1591146107c95780637a69c377146107df5780637b510fe8146107f557600080fd5b806349bd5a5e116102cc5780635e843ad21161026a5780636dd3d39f116102395780636dd3d39f146107265780636ddd17131461075f57806370a082311461077e578063715018a6146107b457600080fd5b80635e843ad21461068d578063658c27a9146106ad57806365b8dbc0146106e657806368c51e351461070657600080fd5b8063537df3b6116102a6578063537df3b61461062157806357777d31146106415780635937ea6c146106575780635b65b9ab1461066d57600080fd5b806349bd5a5e146105b35780634e71d92d146105d35780634fbee193146105e857600080fd5b806327ce01471161034457806333f3d6281161031357806333f3d6281461053d57806337eb15281461055d57806339509351146105735780634838d1651461059357600080fd5b806327ce0147146104c05780632c1f5216146104e05780632f4504ae14610500578063313ce5671461052157600080fd5b80630dd87157116103805780630dd871571461042f5780631694505e1461045357806318160ddd1461048b57806323b872dd146104a057600080fd5b80630483f7a0146103b257806306fdde03146103d4578063095ea7b3146103ff57600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103d26103cd366004612960565b610bbc565b005b3480156103e057600080fd5b506103e9610c5a565b6040516103f69190612999565b60405180910390f35b34801561040b57600080fd5b5061041f61041a3660046129ee565b610cec565b60405190151581526020016103f6565b34801561043b57600080fd5b50610445600c5481565b6040519081526020016103f6565b34801561045f57600080fd5b50601954610473906001600160a01b031681565b6040516001600160a01b0390911681526020016103f6565b34801561049757600080fd5b50600e54610445565b3480156104ac57600080fd5b5061041f6104bb366004612a1a565b610d02565b3480156104cc57600080fd5b506104456104db366004612a5b565b610d97565b3480156104ec57600080fd5b50601854610473906001600160a01b031681565b34801561050c57600080fd5b50600d5461041f906301000000900460ff1681565b34801561052d57600080fd5b50604051601281526020016103f6565b34801561054957600080fd5b506103d26105583660046129ee565b610e0d565b34801561056957600080fd5b50610445600a5481565b34801561057f57600080fd5b5061041f61058e3660046129ee565b610ead565b34801561059f57600080fd5b506103d26105ae366004612a5b565b610ee4565b3480156105bf57600080fd5b50601a54610473906001600160a01b031681565b3480156105df57600080fd5b506103d2610f58565b3480156105f457600080fd5b5061041f610603366004612a5b565b6001600160a01b031660009081526014602052604090205460ff1690565b34801561062d57600080fd5b506103d261063c366004612a5b565b610fd8565b34801561064d57600080fd5b50610445601b5481565b34801561066357600080fd5b5061044560065481565b34801561067957600080fd5b506103d2610688366004612a7f565b611048565b34801561069957600080fd5b506103d26106a8366004612aab565b61109e565b3480156106b957600080fd5b5061041f6106c8366004612a5b565b6001600160a01b03166000908152601e602052604090205460ff1690565b3480156106f257600080fd5b506103d2610701366004612a5b565b6110f6565b34801561071257600080fd5b506103d2610721366004612aed565b611311565b34801561073257600080fd5b5061041f610741366004612a5b565b6001600160a01b03166000908152601f602052604090205460ff1690565b34801561076b57600080fd5b50600d5461041f90610100900460ff1681565b34801561078a57600080fd5b50610445610799366004612a5b565b6001600160a01b031660009081526012602052604090205490565b3480156107c057600080fd5b506103d261135c565b3480156107d557600080fd5b50610445601c5481565b3480156107eb57600080fd5b5061044560095481565b34801561080157600080fd5b50610815610810366004612a5b565b611392565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a0016103f6565b34801561085357600080fd5b50600d5461041f9062010000900460ff1681565b34801561087357600080fd5b506000546001600160a01b0316610473565b34801561089157600080fd5b506103d26108a0366004612b06565b61141c565b3480156108b157600080fd5b506103e961147f565b3480156108c657600080fd5b506103d26108d5366004612960565b61148e565b3480156108e657600080fd5b506103d26108f5366004612aed565b6114e1565b34801561090657600080fd5b5061041f6109153660046129ee565b611538565b34801561092657600080fd5b50610445610935366004612a5b565b611582565b34801561094657600080fd5b50610445610955366004612a5b565b6115b5565b34801561096657600080fd5b5061041f6109753660046129ee565b6115e8565b34801561098657600080fd5b506103d2610995366004612aed565b6115f5565b3480156109a657600080fd5b506104456109b5366004612a5b565b611640565b3480156109c657600080fd5b5061041f6109d5366004612a5b565b60156020526000908152604090205460ff1681565b3480156109f657600080fd5b5061044560085481565b348015610a0c57600080fd5b506103d2610a1b366004612960565b611673565b348015610a2c57600080fd5b506103d2610a3b366004612b2b565b611728565b348015610a4c57600080fd5b5061041f610a5b366004612a5b565b6117a8565b348015610a6c57600080fd5b506103d2611817565b348015610a8157600080fd5b506103d2610a90366004612960565b611850565b348015610aa157600080fd5b506103d2610ab0366004612960565b6118a5565b348015610ac157600080fd5b50610445610ad0366004612b48565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b348015610b0757600080fd5b506103d2610b16366004612b2b565b6118fa565b348015610b2757600080fd5b50610445600b5481565b348015610b3d57600080fd5b506103d2610b4c366004612b2b565b61196d565b348015610b5d57600080fd5b5061044560075481565b348015610b7357600080fd5b506103d2610b82366004612b48565b6119e4565b348015610b9357600080fd5b506103d2610ba2366004612a5b565b611a46565b348015610bb357600080fd5b506103d2611ade565b6000546001600160a01b03163314610bef5760405162461bcd60e51b8152600401610be690612b76565b60405180910390fd5b60185460405162241fbd60e51b81526001600160a01b038481166004830152831515602483015290911690630483f7a0906044015b600060405180830381600087803b158015610c3e57600080fd5b505af1158015610c52573d6000803e3d6000fd5b505050505050565b606060048054610c6990612bab565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9590612bab565b8015610ce25780601f10610cb757610100808354040283529160200191610ce2565b820191906000526020600020905b815481529060010190602001808311610cc557829003601f168201915b5050505050905090565b6000610cf9338484611b0b565b50600192915050565b6000610d0f848484611b92565b6001600160a01b038416600090815260136020908152604080832033845290915290205482811015610d785760405162461bcd60e51b8152602060048201526012602482015271185b1b1bddd85b98d948195e18d95959195960721b6044820152606401610be6565b610d8c8533610d878685612bfc565b611b0b565b506001949350505050565b6018546040516327ce014760e01b81526001600160a01b03838116600483015260009216906327ce0147906024015b602060405180830381865afa158015610de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e079190612c13565b92915050565b6000546001600160a01b03163314610e375760405162461bcd60e51b8152600401610be690612b76565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610e84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea89190612c2c565b505050565b3360008181526013602090815260408083206001600160a01b03871684529091528120549091610cf9918590610d87908690612c49565b6000546001600160a01b03163314610f0e5760405162461bcd60e51b8152600401610be690612b76565b6001600160a01b03811660009081526017602052604090205460ff1615610f3457600080fd5b6001600160a01b03166000908152601760205260409020805460ff19166001179055565b6018546001600160a01b031663807ab4f7335b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190612c2c565b50565b6000546001600160a01b031633146110025760405162461bcd60e51b8152600401610be690612b76565b6001600160a01b03811660009081526017602052604090205460ff1661102757600080fd5b6001600160a01b03166000908152601760205260409020805460ff19169055565b6000546001600160a01b031633146110725760405162461bcd60e51b8152600401610be690612b76565b6006839055600782905560088190558061108c8385612c49565b6110969190612c49565b600a55505050565b6000546001600160a01b031633146110c85760405162461bcd60e51b8152600401610be690612b76565b600d8054600b9390935590151560ff19931515610100029390931661ffff1990921691909117919091179055565b6000546001600160a01b031633146111205760405162461bcd60e51b8152600401610be690612b76565b6019546001600160a01b038281169116141561113b57600080fd5b6019546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3601980546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f69190612c61565b6001600160a01b031663c9c6539630601960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127c9190612c61565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190612c61565b601a80546001600160a01b0319166001600160a01b03929092169190911790555050565b6000546001600160a01b0316331461133b5760405162461bcd60e51b8152600401610be690612b76565b60af811015801561134e57506127108111155b61135757600080fd5b601c55565b6000546001600160a01b031633146113865760405162461bcd60e51b8152600401610be690612b76565b61139060006121ab565b565b601854604051630f6a21fd60e31b81526001600160a01b0383811660048301526000928392839283928392911690637b510fe89060240160a060405180830381865afa1580156113e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140a9190612c7e565b939a9299509097509550909350915050565b6000546001600160a01b031633146114465760405162461bcd60e51b8152600401610be690612b76565b6018546040516323849a5160e21b8152600481018490526001600160a01b03838116602483015290911690638e12694490604401610c24565b606060058054610c6990612bab565b6000546001600160a01b031633146114b85760405162461bcd60e51b8152600401610be690612b76565b601a546001600160a01b03838116911614156114d357600080fd5b6114dd82826121fb565b5050565b6000546001600160a01b0316331461150b5760405162461bcd60e51b8152600401610be690612b76565b604051339082156108fc029083906000818181858888f193505050501580156114dd573d6000803e3d6000fd5b3360009081526013602090815260408083206001600160a01b03861684529091528120548281101561156957600080fd5b6115783385610d878685612bfc565b5060019392505050565b6018546040516329a0382f60e21b81526001600160a01b038381166004830152600092169063a680e0bc90602401610dc6565b6018546040516302a2e74960e61b81526001600160a01b038381166004830152600092169063a8b9d24090602401610dc6565b6000610cf9338484611b92565b6000546001600160a01b0316331461161f5760405162461bcd60e51b8152600401610be690612b76565b604b811015801561163257506127108111155b61163b57600080fd5b601b55565b60185460405163557ec23d60e11b81526001600160a01b038381166004830152600092169063aafd847a90602401610dc6565b6000546001600160a01b0316331461169d5760405162461bcd60e51b8152600401610be690612b76565b6001600160a01b03821660009081526014602052604090205460ff16151581151514156116c957600080fd5b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b031633146117525760405162461bcd60e51b8152600401610be690612b76565b600d8054821515620100000262ff0000199091161790556040517f5bb2376cf656637e70e36c01d3da25685bf3b353f18681b8a5e48c7b2effe1339061179d90831515815260200190565b60405180910390a150565b60185460405163c705c56960e01b81526001600160a01b038381166004830152600092169063c705c56990602401602060405180830381865afa1580156117f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e079190612c2c565b6000546001600160a01b031633146118415760405162461bcd60e51b8152600401610be690612b76565b601d805460ff19166001179055565b6000546001600160a01b0316331461187a5760405162461bcd60e51b8152600401610be690612b76565b6001600160a01b03919091166000908152601f60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118cf5760405162461bcd60e51b8152600401610be690612b76565b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119245760405162461bcd60e51b8152600401610be690612b76565b600d80548215156101000261ff00199091161790556040517fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c89061179d90831515815260200190565b6000546001600160a01b031633146119975760405162461bcd60e51b8152600401610be690612b76565b600d805482151563010000000263ff000000199091161790556040517f341322866a3a2c26c27efa4c270c5ba86f6963257118897dd8196f224c002d439061179d90831515815260200190565b6000546001600160a01b03163314611a0e5760405162461bcd60e51b8152600401610be690612b76565b600f8054610100600160a81b0319166101006001600160a01b0394851602179055601080546001600160a01b03191691909216179055565b6000546001600160a01b03163314611a705760405162461bcd60e51b8152600401610be690612b76565b6001600160a01b038116611ad55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610be6565b610fd5816121ab565b600d546301000000900460ff16611af457600080fd5b6018546001600160a01b0316636de1a5a933610f6b565b6001600160a01b038316611b1e57600080fd5b6001600160a01b038216611b3157600080fd5b6001600160a01b0383811660008181526013602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601d5460ff1680611bb057506000546001600160a01b038481169116145b80611bc857506000546001600160a01b038381169116145b80611beb57506001600160a01b03831660009081526016602052604090205460ff165b80611c0e57506001600160a01b03821660009081526016602052604090205460ff165b611c455760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b6044820152606401610be6565b6001600160a01b03831660009081526017602052604090205460ff1615611ca35760405162461bcd60e51b81526020600482015260126024820152711cd95b99195c88189b1858dadb1a5cdd195960721b6044820152606401610be6565b6001600160a01b03821660009081526017602052604090205460ff1615611d045760405162461bcd60e51b81526020600482015260156024820152741c9958da5c1a595b9d08189b1858dadb1a5cdd1959605a1b6044820152606401610be6565b6001600160a01b038316611d1757600080fd5b6001600160a01b038216611d2a57600080fd5b6000612710601b54611d3b600e5490565b611d459190612cc7565b611d4f9190612ce6565b90506000612710601c54611d62600e5490565b611d6c9190612cc7565b611d769190612ce6565b90508183111580611d9f57506001600160a01b0385166000908152601e602052604090205460ff165b611ddf5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610be6565b6000546001600160a01b03868116911614801590611e0657506001600160a01b0384163014155b8015611e2057506002546001600160a01b03858116911614155b8015611e3a5750601a546001600160a01b03858116911614155b15611e86576001600160a01b038416600090815260126020908152604080832054601f9092529091205460ff1680611e7b575081611e788583612c49565b11155b611e8457600080fd5b505b6001600160a01b03851660009081526012602052604090205483811015611eac57600080fd5b30600090815260126020526040902054600b54600d54479183101590610100900460ff168015611ed95750805b8015611ee85750600f5460ff16155b8015611f0d57506001600160a01b03891660009081526015602052604090205460ff16155b8015611f2757506019546001600160a01b038a8116911614155b8015611f4157506000546001600160a01b038a8116911614155b8015611f5b57506000546001600160a01b03898116911614155b15611f9657600f805460ff19166001179055600d5460ff16611f7d57600b5492505b611f8783836122f6565b42600c55600f805460ff191690555b601a546000906001600160a01b038b811691161480611fc25750601a546001600160a01b038a81169116145b15611fcb575060015b6001600160a01b038a1660009081526014602052604090205460ff168061200a57506001600160a01b03891660009081526014602052604090205460ff165b15612013575060005b600f5460ff168061202d5750600d5462010000900460ff16155b15612036575060005b8015612074576000612710600a548a61204f9190612cc7565b6120599190612ce6565b9050612065818a612bfc565b98506120728b308361267f565b505b61207f8a8a8a61267f565b6018546001600160a01b031663e30443bc8b6120b0816001600160a01b031660009081526012602052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156120f657600080fd5b505af115801561210a573d6000803e3d6000fd5b50506018546001600160a01b0316915063e30443bc90508a612141816001600160a01b031660009081526012602052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561218757600080fd5b505af115801561219b573d6000803e3d6000fd5b5050505050505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03821660009081526015602052604090205460ff161515811515141561222757600080fd5b6001600160a01b0382166000908152601560205260409020805460ff191682158015919091179091556122ba5760185460405162241fbd60e51b81526001600160a01b0384811660048301526001602483015290911690630483f7a090604401600060405180830381600087803b1580156122a157600080fd5b505af11580156122b5573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b60008211612302575050565b600f5460009061010090046001600160a01b03161561233857600a5460095461232b9085612cc7565b6123359190612ce6565b90505b6011546000906001600160a01b03161561236957600a5460065461235c9086612cc7565b6123669190612ce6565b90505b600080601860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e39190612c13565b111561240657600a546008546123f99087612cc7565b6124039190612ce6565b90505b600082826124148689612bfc565b61241e9190612bfc565b6124289190612bfc565b90506000612437600283612ce6565b905060006124458284612bfc565b905060008583612455878a612c49565b61245f9190612c49565b6124699190612c49565b90504761247582612765565b6000896124828347612bfc565b61248c9190612c49565b905060008361249b8b84612cc7565b6124a59190612ce6565b90506000846124b48a85612cc7565b6124be9190612ce6565b90506000856124cd8c86612cc7565b6124d79190612ce6565b9050600081836124e78688612bfc565b6124f19190612bfc565b6124fb9190612bfc565b9050831561254357600f546040516101009091046001600160a01b0316906108fc8615029086906000818181858888f19350505050158015612541573d6000803e3d6000fd5b505b8115612585576011546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612583573d6000803e3d6000fd5b505b61258f8882612889565b604080518a8152602081018390529081018990527fb63dc6f50047533abe2d6adf180d38d524c8d98e55ad199aac8d6b9801bbe24a9060600160405180910390a1821561266e576018546040516000916001600160a01b03169085908381818185875af1925050503d8060008114612623576040519150601f19603f3d011682016040523d82523d6000602084013e612628565b606091505b50509050801561266c57604080518d8152602081018690527f80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc3910160405180910390a15b505b505050505050505050505050505050565b6001600160a01b03831661269257600080fd5b6001600160a01b0382166126a557600080fd5b6001600160a01b038316600090815260126020526040902054818110156126cb57600080fd5b6126d58282612bfc565b6001600160a01b03808616600090815260126020526040808220939093559085168152908120805484929061270b908490612c49565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161275791815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061279a5761279a612d08565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156127f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128179190612c61565b8160018151811061282a5761282a612d08565b6001600160a01b0392831660209182029290920101526019546128509130911684611b0b565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790610c24908590600090869030904290600401612d1e565b6019546128a19030906001600160a01b031684611b0b565b60195460105460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612911573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129369190612d8f565b5050505050565b6001600160a01b0381168114610fd557600080fd5b8015158114610fd557600080fd5b6000806040838503121561297357600080fd5b823561297e8161293d565b9150602083013561298e81612952565b809150509250929050565b600060208083528351808285015260005b818110156129c6578581018301518582016040015282016129aa565b818111156129d8576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612a0157600080fd5b8235612a0c8161293d565b946020939093013593505050565b600080600060608486031215612a2f57600080fd5b8335612a3a8161293d565b92506020840135612a4a8161293d565b929592945050506040919091013590565b600060208284031215612a6d57600080fd5b8135612a788161293d565b9392505050565b600080600060608486031215612a9457600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612ac057600080fd5b8335612acb81612952565b9250602084013591506040840135612ae281612952565b809150509250925092565b600060208284031215612aff57600080fd5b5035919050565b60008060408385031215612b1957600080fd5b82359150602083013561298e8161293d565b600060208284031215612b3d57600080fd5b8135612a7881612952565b60008060408385031215612b5b57600080fd5b8235612b668161293d565b9150602083013561298e8161293d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612bbf57607f821691505b60208210811415612be057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015612c0e57612c0e612be6565b500390565b600060208284031215612c2557600080fd5b5051919050565b600060208284031215612c3e57600080fd5b8151612a7881612952565b60008219821115612c5c57612c5c612be6565b500190565b600060208284031215612c7357600080fd5b8151612a788161293d565b600080600080600060a08688031215612c9657600080fd5b8551612ca18161293d565b602087015160408801516060890151608090990151929a91995097965090945092505050565b6000816000190483118215151615612ce157612ce1612be6565b500290565b600082612d0357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d6e5784516001600160a01b031683529383019391830191600101612d49565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612da457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e14b03b7866ea023813550a97b1e0e8c646ab74824d08ae2e2081d2662757dd264736f6c634300080a003360e0604052601260a0819052712722afa234bb34b232b7322a3930b1b5b2b960711b60c09081526200003591600291906200013d565b50604080518082019091526012808252712722afa234bb34b232b7322a3930b1b5b2b960711b602090920191825262000071916003916200013d565b503480156200007f57600080fd5b5060405162001dec38038062001dec833981016040819052620000a29162000200565b620000ad33620000ed565b69021e19e0c9bab2400000608052600a80546001600160a01b039384166001600160a01b0319918216179091556001805492909316911617905562000275565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200014b9062000238565b90600052602060002090601f0160209004810192826200016f5760008555620001ba565b82601f106200018a57805160ff1916838001178555620001ba565b82800160010185558215620001ba579182015b82811115620001ba5782518255916020019190600101906200019d565b50620001c8929150620001cc565b5090565b5b80821115620001c85760008155600101620001cd565b80516001600160a01b0381168114620001fb57600080fd5b919050565b600080604083850312156200021457600080fd5b6200021f83620001e3565b91506200022f60208401620001e3565b90509250929050565b600181811c908216806200024d57607f821691505b602082108114156200026f57634e487b7160e01b600052602260045260246000fd5b50919050565b608051611b4d6200029f600039600081816105520152818161080f0152610d1e0152611b4d6000f3fe6080604052600436106101d15760003560e01c806385a6b3ae116100f7578063a8b9d24011610095578063c705c56911610064578063c705c56914610574578063dd62ed3e146105ad578063e30443bc146105c8578063f2fde38b146105e857600080fd5b8063a8b9d240146104ea578063a9059cbb14610238578063aafd847a1461050a578063c49af5f01461054057600080fd5b806395d89b41116100d157806395d89b41146104695780639d76ea581461047e5780639e1e06611461049e578063a680e0bc146104b457600080fd5b806385a6b3ae146104015780638da5cb5b146104175780638e1269441461044957600080fd5b80633009a6091161016f57806370a082311161013e57806370a0823114610344578063715018a61461037a5780637b510fe81461038f578063807ab4f7146103e157600080fd5b80633009a609146102c2578063313ce567146102d85780634e7b827f146102f45780636de1a5a91461032457600080fd5b8063095ea7b3116101ab578063095ea7b31461023857806318160ddd1461026857806323b872dd1461028757806327ce0147146102a257600080fd5b806303c83302146101e55780630483f7a0146101ed57806306fdde031461020d57600080fd5b366101e0576101de610608565b005b600080fd5b6101de610608565b3480156101f957600080fd5b506101de610208366004611693565b610697565b34801561021957600080fd5b50610222610899565b60405161022f91906116d1565b60405180910390f35b34801561024457600080fd5b50610258610253366004611726565b61092b565b604051901515815260200161022f565b34801561027457600080fd5b506005545b60405190815260200161022f565b34801561029357600080fd5b50610258610253366004611752565b3480156102ae57600080fd5b506102796102bd366004611793565b610989565b3480156102ce57600080fd5b5061027960045481565b3480156102e457600080fd5b506040516012815260200161022f565b34801561030057600080fd5b5061025861030f366004611793565b600b6020526000908152604090205460ff1681565b34801561033057600080fd5b5061025861033f366004611793565b6109ed565b34801561035057600080fd5b5061027961035f366004611793565b6001600160a01b031660009081526006602052604090205490565b34801561038657600080fd5b506101de610a98565b34801561039b57600080fd5b506103af6103aa366004611793565b610acc565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a00161022f565b3480156103ed57600080fd5b506102586103fc366004611793565b610b74565b34801561040d57600080fd5b5061027960085481565b34801561042357600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161022f565b34801561045557600080fd5b506101de6104643660046117b7565b610c19565b34801561047557600080fd5b50610222610c8c565b34801561048a57600080fd5b50600a54610431906001600160a01b031681565b3480156104aa57600080fd5b5061027960095481565b3480156104c057600080fd5b506102796104cf366004611793565b6001600160a01b03166000908152600e602052604090205490565b3480156104f657600080fd5b50610279610505366004611793565b610c9b565b34801561051657600080fd5b50610279610525366004611793565b6001600160a01b03166000908152600d602052604090205490565b34801561054c57600080fd5b506102797f000000000000000000000000000000000000000000000000000000000000000081565b34801561058057600080fd5b5061025861058f366004611793565b6001600160a01b03166000908152600b602052604090205460ff1690565b3480156105b957600080fd5b506102796102533660046117dc565b3480156105d457600080fd5b506101de6105e3366004611726565b610ccd565b3480156105f457600080fd5b506101de610603366004611793565b610d5c565b60006005541161061757600080fd5b34156106955760055461062e600160801b34611820565b610638919061183f565b6007546106459190611861565b60075560405134815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a2346008600082825461068f9190611861565b90915550505b565b6000546001600160a01b031633146106ca5760405162461bcd60e51b81526004016106c190611879565b60405180910390fd5b6001600160a01b0382166000908152600b602052604090205460ff161515811515141561075f5760405162461bcd60e51b815260206004820152603a60248201527f4e455f4469766964656e64547261636b65723a206163636f756e7420616c726560448201527f6164792073657420746f2072657175657374656420737461746500000000000060648201526084016106c1565b6001600160a01b0382166000908152600b60205260409020805460ff1916821580159190911790915561079c57610797826000610df7565b610850565b600a546040516370a0823160e01b81526001600160a01b03848116600483015260009216906370a0823190602401602060405180830381865afa1580156107e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080b91906118ae565b90507f000000000000000000000000000000000000000000000000000000000000000081106108435761083e8382610df7565b61084e565b61084e836000610df7565b505b816001600160a01b03167fa3c7c11b2e12c4144b09a7813f3393ba646392788638998c97be8da908cf04be8260405161088d911515815260200190565b60405180910390a25050565b6060600280546108a8906118c7565b80601f01602080910402602001604051908101604052809291908181526020018280546108d4906118c7565b80156109215780601f106108f657610100808354040283529160200191610921565b820191906000526020600020905b81548152906001019060200180831161090457829003601f168201915b5050505050905090565b60405162461bcd60e51b815260206004820152602a60248201527f4e455f4469766964656e64547261636b65723a206d6574686f64206e6f7420696044820152691b5c1b195b595b9d195960b21b60648201526000906084016106c1565b6001600160a01b03811660009081526006602052604081205460075482916109b091611820565b6001600160a01b0384166000908152600c6020526040902054909150600160801b6109db8284611902565b6109e5919061183f565b949350505050565b600080546001600160a01b03163314610a185760405162461bcd60e51b81526004016106c190611879565b600080610a2484610e55565b90925090508115610a8e576001600160a01b0384166000818152600e602090815260409182902042905581518581529081018490527f0e311a2c6dbfb0153ec3a8a5bdca09070b3e5f60768fdc10a20453f38d186873910160405180910390a25060019392505050565b5060009392505050565b6000546001600160a01b03163314610ac25760405162461bcd60e51b81526004016106c190611879565b61069560006111e0565b6000806000806000610b08604051806080016040528060006001600160a01b031681526020016000815260200160008152602001600081525090565b6001600160a01b0387168152610b1d87610c9b565b6020820152610b2b87610989565b60408281019182526001600160a01b03989098166000908152600e6020908152989020546060830181905282519890920151905160095498999198909750919550909350915050565b600080546001600160a01b03163314610b9f5760405162461bcd60e51b81526004016106c190611879565b6000610baa83611230565b90508015610c10576001600160a01b0383166000818152600e602052604090819020429055517f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d490610bff9084815260200190565b60405180910390a250600192915050565b50600092915050565b6000546001600160a01b03163314610c435760405162461bcd60e51b81526004016106c190611879565b476001600160a01b0382166108fc84610c5c5782610c5e565b845b6040518115909202916000818181858888f19350505050158015610c86573d6000803e3d6000fd5b50505050565b6060600380546108a8906118c7565b6001600160a01b0381166000908152600d6020526040812054610cbd83610989565b610cc79190611943565b92915050565b6000546001600160a01b03163314610cf75760405162461bcd60e51b81526004016106c190611879565b6001600160a01b0382166000908152600b602052604090205460ff1615610d1c575050565b7f00000000000000000000000000000000000000000000000000000000000000008110610d5157610d4d8282610df7565b5050565b610d4d826000610df7565b6000546001600160a01b03163314610d865760405162461bcd60e51b81526004016106c190611879565b6001600160a01b038116610deb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106c1565b610df4816111e0565b50565b6001600160a01b03821660009081526006602052604090205480821115610e30576000610e248284611943565b9050610c86848261137f565b80821015610e50576000610e448383611943565b9050610c8684826114c0565b505050565b6000806000610e6384610c9b565b905080156111d4576001600160a01b0384166000908152600d602052604081208054839290610e93908490611861565b925050819055508060096000828254610eac9190611861565b90915550506040518181526001600160a01b038516907fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d9060200160405180910390a26001546040805160028082526060820183526001600160a01b0390931692600092602083019080368337019050509050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f81919061195a565b81600081518110610f9457610f94611977565b6001600160a01b039283166020918202929092010152600a54825191169082906001908110610fc557610fc5611977565b6001600160a01b039283166020918202929092010152600a546040516370a0823160e01b81528883166004820152600092839283929116906370a0823190602401602060405180830381865afa158015611023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104791906118ae565b9050846001600160a01b031663b6f9de95876000878d426040518663ffffffff1660e01b815260040161107d949392919061198d565b6000604051808303818588803b15801561109657600080fd5b505af1935050505080156110a8575060015b6110ea576110b46119f7565b806308c379a014156110de57506110c9611a4e565b806110d457506110e0565b6000935050611169565b505b3d6000803e3d6000fd5b600a546040516370a0823160e01b81526001600160a01b038b8116600483015260019550839216906370a0823190602401602060405180830381865afa158015611138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115c91906118ae565b6111669190611943565b91505b826111c5576001600160a01b0389166000908152600d602052604081208054889290611196908490611943565b9250508190555085600960008282546111af9190611943565b9091555060009a8b9a5098505050505050505050565b50939793965092945050505050565b50600093849350915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008061123c83610c9b565b90508015610c10576001600160a01b0383166000908152600d60205260408120805483929061126c908490611861565b9250508190555080600960008282546112859190611861565b90915550506040518181526001600160a01b038416907fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d9060200160405180910390a26000836001600160a01b031682610bb890604051600060405180830381858888f193505050503d806000811461131a576040519150601f19603f3d011682016040523d82523d6000602084013e61131f565b606091505b5050905080611378576001600160a01b0384166000908152600d602052604081208054849290611350908490611943565b9250508190555081600960008282546113699190611943565b90915550600095945050505050565b5092915050565b6001600160a01b0382166113ea5760405162461bcd60e51b815260206004820152602c60248201527f4e455f4469766964656e64547261636b65723a206d696e7420746f207468652060448201526b7a65726f206164647265737360a01b60648201526084016106c1565b80600560008282546113fc9190611861565b90915550506001600160a01b03821660009081526006602052604081208054839290611429908490611861565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a38060075461147d9190611820565b6001600160a01b0383166000908152600c60205260409020546114a09190611ad8565b6001600160a01b039092166000908152600c602052604090209190915550565b6001600160a01b03821661152d5760405162461bcd60e51b815260206004820152602e60248201527f4e455f4469766964656e64547261636b65723a206275726e2066726f6d20746860448201526d65207a65726f206164647265737360901b60648201526084016106c1565b6001600160a01b038216600090815260066020526040902054818110156115ae5760405162461bcd60e51b815260206004820152602f60248201527f4e455f4469766964656e64547261636b65723a206275726e20616d6f756e742060448201526e657863656564732062616c616e636560881b60648201526084016106c1565b6115b88282611943565b6001600160a01b038416600090815260066020526040812091909155600580548492906115e6908490611943565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a38160075461163a9190611820565b6001600160a01b0384166000908152600c602052604090205461165d9190611902565b6001600160a01b039093166000908152600c60205260409020929092555050565b6001600160a01b0381168114610df457600080fd5b600080604083850312156116a657600080fd5b82356116b18161167e565b9150602083013580151581146116c657600080fd5b809150509250929050565b600060208083528351808285015260005b818110156116fe578581018301518582016040015282016116e2565b81811115611710576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561173957600080fd5b82356117448161167e565b946020939093013593505050565b60008060006060848603121561176757600080fd5b83356117728161167e565b925060208401356117828161167e565b929592945050506040919091013590565b6000602082840312156117a557600080fd5b81356117b08161167e565b9392505050565b600080604083850312156117ca57600080fd5b8235915060208301356116c68161167e565b600080604083850312156117ef57600080fd5b82356117fa8161167e565b915060208301356116c68161167e565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561183a5761183a61180a565b500290565b60008261185c57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156118745761187461180a565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156118c057600080fd5b5051919050565b600181811c908216806118db57607f821691505b602082108114156118fc57634e487b7160e01b600052602260045260246000fd5b50919050565b600080821280156001600160ff1b03849003851316156119245761192461180a565b600160ff1b839003841281161561193d5761193d61180a565b50500190565b6000828210156119555761195561180a565b500390565b60006020828403121561196c57600080fd5b81516117b08161167e565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b818110156119d75784516001600160a01b0316835293830193918301916001016119b2565b50506001600160a01b039690961660408501525050506060015292915050565b600060033d1115611a105760046000803e5060005160e01c5b90565b601f8201601f1916810167ffffffffffffffff81118282101715611a4757634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d1015611a5c5790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715611a8c57505050505090565b8285019150815181811115611aa45750505050505090565b843d8701016020828501011115611abe5750505050505090565b611acd60208286010187611a13565b509095945050505050565b60008083128015600160ff1b850184121615611af657611af661180a565b6001600160ff1b0384018313811615611b1157611b1161180a565b5050039056fea26469706673582212201d7469f3d1ef00bd415ba997d89e2011af155561d8b928633fdaab530e375ad964736f6c634300080a00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000e5cd580507fbd1216af09404164446e264ac61e20000000000000000000000005bfbdc0e1e20dcdc580c481a4d6633439e0dd049000000000000000000000000d24b1f8220365da13dbc759c2c25252a968b7cb1

Deployed Bytecode

0x6080604052600436106103a65760003560e01c8063744d1591116101e7578063b62496f51161010d578063dd62ed3e116100a0578063ebbf1ace1161006f578063ebbf1ace14610b51578063f1b234ad14610b67578063f2fde38b14610b87578063f69e204614610ba757600080fd5b8063dd62ed3e14610ab5578063e01af92c14610afb578063e2f4560514610b1b578063e4956ce214610b3157600080fd5b8063c705c569116100dc578063c705c56914610a40578063c9567bf914610a60578063d2fcc00114610a75578063d4c989d314610a9557600080fd5b8063b62496f5146109ba578063b80b6e89146109ea578063c024666814610a00578063c6af580b14610a2057600080fd5b80639a7a23d611610185578063a8b9d24011610154578063a8b9d2401461093a578063a9059cbb1461095a578063aa4e8c4a1461097a578063aafd847a1461099a57600080fd5b80639a7a23d6146108ba5780639e252f00146108da578063a457c2d7146108fa578063a680e0bc1461091a57600080fd5b8063870bd30b116101c1578063870bd30b146108475780638da5cb5b146108675780638e1269441461088557806395d89b41146108a557600080fd5b8063744d1591146107c95780637a69c377146107df5780637b510fe8146107f557600080fd5b806349bd5a5e116102cc5780635e843ad21161026a5780636dd3d39f116102395780636dd3d39f146107265780636ddd17131461075f57806370a082311461077e578063715018a6146107b457600080fd5b80635e843ad21461068d578063658c27a9146106ad57806365b8dbc0146106e657806368c51e351461070657600080fd5b8063537df3b6116102a6578063537df3b61461062157806357777d31146106415780635937ea6c146106575780635b65b9ab1461066d57600080fd5b806349bd5a5e146105b35780634e71d92d146105d35780634fbee193146105e857600080fd5b806327ce01471161034457806333f3d6281161031357806333f3d6281461053d57806337eb15281461055d57806339509351146105735780634838d1651461059357600080fd5b806327ce0147146104c05780632c1f5216146104e05780632f4504ae14610500578063313ce5671461052157600080fd5b80630dd87157116103805780630dd871571461042f5780631694505e1461045357806318160ddd1461048b57806323b872dd146104a057600080fd5b80630483f7a0146103b257806306fdde03146103d4578063095ea7b3146103ff57600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103d26103cd366004612960565b610bbc565b005b3480156103e057600080fd5b506103e9610c5a565b6040516103f69190612999565b60405180910390f35b34801561040b57600080fd5b5061041f61041a3660046129ee565b610cec565b60405190151581526020016103f6565b34801561043b57600080fd5b50610445600c5481565b6040519081526020016103f6565b34801561045f57600080fd5b50601954610473906001600160a01b031681565b6040516001600160a01b0390911681526020016103f6565b34801561049757600080fd5b50600e54610445565b3480156104ac57600080fd5b5061041f6104bb366004612a1a565b610d02565b3480156104cc57600080fd5b506104456104db366004612a5b565b610d97565b3480156104ec57600080fd5b50601854610473906001600160a01b031681565b34801561050c57600080fd5b50600d5461041f906301000000900460ff1681565b34801561052d57600080fd5b50604051601281526020016103f6565b34801561054957600080fd5b506103d26105583660046129ee565b610e0d565b34801561056957600080fd5b50610445600a5481565b34801561057f57600080fd5b5061041f61058e3660046129ee565b610ead565b34801561059f57600080fd5b506103d26105ae366004612a5b565b610ee4565b3480156105bf57600080fd5b50601a54610473906001600160a01b031681565b3480156105df57600080fd5b506103d2610f58565b3480156105f457600080fd5b5061041f610603366004612a5b565b6001600160a01b031660009081526014602052604090205460ff1690565b34801561062d57600080fd5b506103d261063c366004612a5b565b610fd8565b34801561064d57600080fd5b50610445601b5481565b34801561066357600080fd5b5061044560065481565b34801561067957600080fd5b506103d2610688366004612a7f565b611048565b34801561069957600080fd5b506103d26106a8366004612aab565b61109e565b3480156106b957600080fd5b5061041f6106c8366004612a5b565b6001600160a01b03166000908152601e602052604090205460ff1690565b3480156106f257600080fd5b506103d2610701366004612a5b565b6110f6565b34801561071257600080fd5b506103d2610721366004612aed565b611311565b34801561073257600080fd5b5061041f610741366004612a5b565b6001600160a01b03166000908152601f602052604090205460ff1690565b34801561076b57600080fd5b50600d5461041f90610100900460ff1681565b34801561078a57600080fd5b50610445610799366004612a5b565b6001600160a01b031660009081526012602052604090205490565b3480156107c057600080fd5b506103d261135c565b3480156107d557600080fd5b50610445601c5481565b3480156107eb57600080fd5b5061044560095481565b34801561080157600080fd5b50610815610810366004612a5b565b611392565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a0016103f6565b34801561085357600080fd5b50600d5461041f9062010000900460ff1681565b34801561087357600080fd5b506000546001600160a01b0316610473565b34801561089157600080fd5b506103d26108a0366004612b06565b61141c565b3480156108b157600080fd5b506103e961147f565b3480156108c657600080fd5b506103d26108d5366004612960565b61148e565b3480156108e657600080fd5b506103d26108f5366004612aed565b6114e1565b34801561090657600080fd5b5061041f6109153660046129ee565b611538565b34801561092657600080fd5b50610445610935366004612a5b565b611582565b34801561094657600080fd5b50610445610955366004612a5b565b6115b5565b34801561096657600080fd5b5061041f6109753660046129ee565b6115e8565b34801561098657600080fd5b506103d2610995366004612aed565b6115f5565b3480156109a657600080fd5b506104456109b5366004612a5b565b611640565b3480156109c657600080fd5b5061041f6109d5366004612a5b565b60156020526000908152604090205460ff1681565b3480156109f657600080fd5b5061044560085481565b348015610a0c57600080fd5b506103d2610a1b366004612960565b611673565b348015610a2c57600080fd5b506103d2610a3b366004612b2b565b611728565b348015610a4c57600080fd5b5061041f610a5b366004612a5b565b6117a8565b348015610a6c57600080fd5b506103d2611817565b348015610a8157600080fd5b506103d2610a90366004612960565b611850565b348015610aa157600080fd5b506103d2610ab0366004612960565b6118a5565b348015610ac157600080fd5b50610445610ad0366004612b48565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b348015610b0757600080fd5b506103d2610b16366004612b2b565b6118fa565b348015610b2757600080fd5b50610445600b5481565b348015610b3d57600080fd5b506103d2610b4c366004612b2b565b61196d565b348015610b5d57600080fd5b5061044560075481565b348015610b7357600080fd5b506103d2610b82366004612b48565b6119e4565b348015610b9357600080fd5b506103d2610ba2366004612a5b565b611a46565b348015610bb357600080fd5b506103d2611ade565b6000546001600160a01b03163314610bef5760405162461bcd60e51b8152600401610be690612b76565b60405180910390fd5b60185460405162241fbd60e51b81526001600160a01b038481166004830152831515602483015290911690630483f7a0906044015b600060405180830381600087803b158015610c3e57600080fd5b505af1158015610c52573d6000803e3d6000fd5b505050505050565b606060048054610c6990612bab565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9590612bab565b8015610ce25780601f10610cb757610100808354040283529160200191610ce2565b820191906000526020600020905b815481529060010190602001808311610cc557829003601f168201915b5050505050905090565b6000610cf9338484611b0b565b50600192915050565b6000610d0f848484611b92565b6001600160a01b038416600090815260136020908152604080832033845290915290205482811015610d785760405162461bcd60e51b8152602060048201526012602482015271185b1b1bddd85b98d948195e18d95959195960721b6044820152606401610be6565b610d8c8533610d878685612bfc565b611b0b565b506001949350505050565b6018546040516327ce014760e01b81526001600160a01b03838116600483015260009216906327ce0147906024015b602060405180830381865afa158015610de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e079190612c13565b92915050565b6000546001600160a01b03163314610e375760405162461bcd60e51b8152600401610be690612b76565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610e84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea89190612c2c565b505050565b3360008181526013602090815260408083206001600160a01b03871684529091528120549091610cf9918590610d87908690612c49565b6000546001600160a01b03163314610f0e5760405162461bcd60e51b8152600401610be690612b76565b6001600160a01b03811660009081526017602052604090205460ff1615610f3457600080fd5b6001600160a01b03166000908152601760205260409020805460ff19166001179055565b6018546001600160a01b031663807ab4f7335b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190612c2c565b50565b6000546001600160a01b031633146110025760405162461bcd60e51b8152600401610be690612b76565b6001600160a01b03811660009081526017602052604090205460ff1661102757600080fd5b6001600160a01b03166000908152601760205260409020805460ff19169055565b6000546001600160a01b031633146110725760405162461bcd60e51b8152600401610be690612b76565b6006839055600782905560088190558061108c8385612c49565b6110969190612c49565b600a55505050565b6000546001600160a01b031633146110c85760405162461bcd60e51b8152600401610be690612b76565b600d8054600b9390935590151560ff19931515610100029390931661ffff1990921691909117919091179055565b6000546001600160a01b031633146111205760405162461bcd60e51b8152600401610be690612b76565b6019546001600160a01b038281169116141561113b57600080fd5b6019546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3601980546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f69190612c61565b6001600160a01b031663c9c6539630601960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127c9190612c61565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190612c61565b601a80546001600160a01b0319166001600160a01b03929092169190911790555050565b6000546001600160a01b0316331461133b5760405162461bcd60e51b8152600401610be690612b76565b60af811015801561134e57506127108111155b61135757600080fd5b601c55565b6000546001600160a01b031633146113865760405162461bcd60e51b8152600401610be690612b76565b61139060006121ab565b565b601854604051630f6a21fd60e31b81526001600160a01b0383811660048301526000928392839283928392911690637b510fe89060240160a060405180830381865afa1580156113e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140a9190612c7e565b939a9299509097509550909350915050565b6000546001600160a01b031633146114465760405162461bcd60e51b8152600401610be690612b76565b6018546040516323849a5160e21b8152600481018490526001600160a01b03838116602483015290911690638e12694490604401610c24565b606060058054610c6990612bab565b6000546001600160a01b031633146114b85760405162461bcd60e51b8152600401610be690612b76565b601a546001600160a01b03838116911614156114d357600080fd5b6114dd82826121fb565b5050565b6000546001600160a01b0316331461150b5760405162461bcd60e51b8152600401610be690612b76565b604051339082156108fc029083906000818181858888f193505050501580156114dd573d6000803e3d6000fd5b3360009081526013602090815260408083206001600160a01b03861684529091528120548281101561156957600080fd5b6115783385610d878685612bfc565b5060019392505050565b6018546040516329a0382f60e21b81526001600160a01b038381166004830152600092169063a680e0bc90602401610dc6565b6018546040516302a2e74960e61b81526001600160a01b038381166004830152600092169063a8b9d24090602401610dc6565b6000610cf9338484611b92565b6000546001600160a01b0316331461161f5760405162461bcd60e51b8152600401610be690612b76565b604b811015801561163257506127108111155b61163b57600080fd5b601b55565b60185460405163557ec23d60e11b81526001600160a01b038381166004830152600092169063aafd847a90602401610dc6565b6000546001600160a01b0316331461169d5760405162461bcd60e51b8152600401610be690612b76565b6001600160a01b03821660009081526014602052604090205460ff16151581151514156116c957600080fd5b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b031633146117525760405162461bcd60e51b8152600401610be690612b76565b600d8054821515620100000262ff0000199091161790556040517f5bb2376cf656637e70e36c01d3da25685bf3b353f18681b8a5e48c7b2effe1339061179d90831515815260200190565b60405180910390a150565b60185460405163c705c56960e01b81526001600160a01b038381166004830152600092169063c705c56990602401602060405180830381865afa1580156117f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e079190612c2c565b6000546001600160a01b031633146118415760405162461bcd60e51b8152600401610be690612b76565b601d805460ff19166001179055565b6000546001600160a01b0316331461187a5760405162461bcd60e51b8152600401610be690612b76565b6001600160a01b03919091166000908152601f60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118cf5760405162461bcd60e51b8152600401610be690612b76565b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119245760405162461bcd60e51b8152600401610be690612b76565b600d80548215156101000261ff00199091161790556040517fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c89061179d90831515815260200190565b6000546001600160a01b031633146119975760405162461bcd60e51b8152600401610be690612b76565b600d805482151563010000000263ff000000199091161790556040517f341322866a3a2c26c27efa4c270c5ba86f6963257118897dd8196f224c002d439061179d90831515815260200190565b6000546001600160a01b03163314611a0e5760405162461bcd60e51b8152600401610be690612b76565b600f8054610100600160a81b0319166101006001600160a01b0394851602179055601080546001600160a01b03191691909216179055565b6000546001600160a01b03163314611a705760405162461bcd60e51b8152600401610be690612b76565b6001600160a01b038116611ad55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610be6565b610fd5816121ab565b600d546301000000900460ff16611af457600080fd5b6018546001600160a01b0316636de1a5a933610f6b565b6001600160a01b038316611b1e57600080fd5b6001600160a01b038216611b3157600080fd5b6001600160a01b0383811660008181526013602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601d5460ff1680611bb057506000546001600160a01b038481169116145b80611bc857506000546001600160a01b038381169116145b80611beb57506001600160a01b03831660009081526016602052604090205460ff165b80611c0e57506001600160a01b03821660009081526016602052604090205460ff165b611c455760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b6044820152606401610be6565b6001600160a01b03831660009081526017602052604090205460ff1615611ca35760405162461bcd60e51b81526020600482015260126024820152711cd95b99195c88189b1858dadb1a5cdd195960721b6044820152606401610be6565b6001600160a01b03821660009081526017602052604090205460ff1615611d045760405162461bcd60e51b81526020600482015260156024820152741c9958da5c1a595b9d08189b1858dadb1a5cdd1959605a1b6044820152606401610be6565b6001600160a01b038316611d1757600080fd5b6001600160a01b038216611d2a57600080fd5b6000612710601b54611d3b600e5490565b611d459190612cc7565b611d4f9190612ce6565b90506000612710601c54611d62600e5490565b611d6c9190612cc7565b611d769190612ce6565b90508183111580611d9f57506001600160a01b0385166000908152601e602052604090205460ff165b611ddf5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610be6565b6000546001600160a01b03868116911614801590611e0657506001600160a01b0384163014155b8015611e2057506002546001600160a01b03858116911614155b8015611e3a5750601a546001600160a01b03858116911614155b15611e86576001600160a01b038416600090815260126020908152604080832054601f9092529091205460ff1680611e7b575081611e788583612c49565b11155b611e8457600080fd5b505b6001600160a01b03851660009081526012602052604090205483811015611eac57600080fd5b30600090815260126020526040902054600b54600d54479183101590610100900460ff168015611ed95750805b8015611ee85750600f5460ff16155b8015611f0d57506001600160a01b03891660009081526015602052604090205460ff16155b8015611f2757506019546001600160a01b038a8116911614155b8015611f4157506000546001600160a01b038a8116911614155b8015611f5b57506000546001600160a01b03898116911614155b15611f9657600f805460ff19166001179055600d5460ff16611f7d57600b5492505b611f8783836122f6565b42600c55600f805460ff191690555b601a546000906001600160a01b038b811691161480611fc25750601a546001600160a01b038a81169116145b15611fcb575060015b6001600160a01b038a1660009081526014602052604090205460ff168061200a57506001600160a01b03891660009081526014602052604090205460ff165b15612013575060005b600f5460ff168061202d5750600d5462010000900460ff16155b15612036575060005b8015612074576000612710600a548a61204f9190612cc7565b6120599190612ce6565b9050612065818a612bfc565b98506120728b308361267f565b505b61207f8a8a8a61267f565b6018546001600160a01b031663e30443bc8b6120b0816001600160a01b031660009081526012602052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156120f657600080fd5b505af115801561210a573d6000803e3d6000fd5b50506018546001600160a01b0316915063e30443bc90508a612141816001600160a01b031660009081526012602052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561218757600080fd5b505af115801561219b573d6000803e3d6000fd5b5050505050505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03821660009081526015602052604090205460ff161515811515141561222757600080fd5b6001600160a01b0382166000908152601560205260409020805460ff191682158015919091179091556122ba5760185460405162241fbd60e51b81526001600160a01b0384811660048301526001602483015290911690630483f7a090604401600060405180830381600087803b1580156122a157600080fd5b505af11580156122b5573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b60008211612302575050565b600f5460009061010090046001600160a01b03161561233857600a5460095461232b9085612cc7565b6123359190612ce6565b90505b6011546000906001600160a01b03161561236957600a5460065461235c9086612cc7565b6123669190612ce6565b90505b600080601860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e39190612c13565b111561240657600a546008546123f99087612cc7565b6124039190612ce6565b90505b600082826124148689612bfc565b61241e9190612bfc565b6124289190612bfc565b90506000612437600283612ce6565b905060006124458284612bfc565b905060008583612455878a612c49565b61245f9190612c49565b6124699190612c49565b90504761247582612765565b6000896124828347612bfc565b61248c9190612c49565b905060008361249b8b84612cc7565b6124a59190612ce6565b90506000846124b48a85612cc7565b6124be9190612ce6565b90506000856124cd8c86612cc7565b6124d79190612ce6565b9050600081836124e78688612bfc565b6124f19190612bfc565b6124fb9190612bfc565b9050831561254357600f546040516101009091046001600160a01b0316906108fc8615029086906000818181858888f19350505050158015612541573d6000803e3d6000fd5b505b8115612585576011546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612583573d6000803e3d6000fd5b505b61258f8882612889565b604080518a8152602081018390529081018990527fb63dc6f50047533abe2d6adf180d38d524c8d98e55ad199aac8d6b9801bbe24a9060600160405180910390a1821561266e576018546040516000916001600160a01b03169085908381818185875af1925050503d8060008114612623576040519150601f19603f3d011682016040523d82523d6000602084013e612628565b606091505b50509050801561266c57604080518d8152602081018690527f80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc3910160405180910390a15b505b505050505050505050505050505050565b6001600160a01b03831661269257600080fd5b6001600160a01b0382166126a557600080fd5b6001600160a01b038316600090815260126020526040902054818110156126cb57600080fd5b6126d58282612bfc565b6001600160a01b03808616600090815260126020526040808220939093559085168152908120805484929061270b908490612c49565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161275791815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061279a5761279a612d08565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156127f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128179190612c61565b8160018151811061282a5761282a612d08565b6001600160a01b0392831660209182029290920101526019546128509130911684611b0b565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790610c24908590600090869030904290600401612d1e565b6019546128a19030906001600160a01b031684611b0b565b60195460105460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612911573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129369190612d8f565b5050505050565b6001600160a01b0381168114610fd557600080fd5b8015158114610fd557600080fd5b6000806040838503121561297357600080fd5b823561297e8161293d565b9150602083013561298e81612952565b809150509250929050565b600060208083528351808285015260005b818110156129c6578581018301518582016040015282016129aa565b818111156129d8576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612a0157600080fd5b8235612a0c8161293d565b946020939093013593505050565b600080600060608486031215612a2f57600080fd5b8335612a3a8161293d565b92506020840135612a4a8161293d565b929592945050506040919091013590565b600060208284031215612a6d57600080fd5b8135612a788161293d565b9392505050565b600080600060608486031215612a9457600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612ac057600080fd5b8335612acb81612952565b9250602084013591506040840135612ae281612952565b809150509250925092565b600060208284031215612aff57600080fd5b5035919050565b60008060408385031215612b1957600080fd5b82359150602083013561298e8161293d565b600060208284031215612b3d57600080fd5b8135612a7881612952565b60008060408385031215612b5b57600080fd5b8235612b668161293d565b9150602083013561298e8161293d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612bbf57607f821691505b60208210811415612be057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015612c0e57612c0e612be6565b500390565b600060208284031215612c2557600080fd5b5051919050565b600060208284031215612c3e57600080fd5b8151612a7881612952565b60008219821115612c5c57612c5c612be6565b500190565b600060208284031215612c7357600080fd5b8151612a788161293d565b600080600080600060a08688031215612c9657600080fd5b8551612ca18161293d565b602087015160408801516060890151608090990151929a91995097965090945092505050565b6000816000190483118215151615612ce157612ce1612be6565b500290565b600082612d0357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d6e5784516001600160a01b031683529383019391830191600101612d49565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612da457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e14b03b7866ea023813550a97b1e0e8c646ab74824d08ae2e2081d2662757dd264736f6c634300080a0033

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

000000000000000000000000e5cd580507fbd1216af09404164446e264ac61e20000000000000000000000005bfbdc0e1e20dcdc580c481a4d6633439e0dd049000000000000000000000000d24b1f8220365da13dbc759c2c25252a968b7cb1

-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0xE5cD580507FbD1216af09404164446e264ac61e2
Arg [1] : _liquidityWallet (address): 0x5bFbdc0E1E20dcDc580C481A4d6633439e0DD049
Arg [2] : _treasuryWallet (address): 0xd24b1f8220365da13DBc759C2C25252a968b7cb1

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000e5cd580507fbd1216af09404164446e264ac61e2
Arg [1] : 0000000000000000000000005bfbdc0e1e20dcdc580c481a4d6633439e0dd049
Arg [2] : 000000000000000000000000d24b1f8220365da13dbc759c2c25252a968b7cb1


Deployed Bytecode Sourcemap

23935:20750:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38706:176;;;;;;;;;;-1:-1:-1;38706:176:0;;;;;:::i;:::-;;:::i;:::-;;27814:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28594:210;;;;;;;;;;-1:-1:-1;28594:210:0;;;;;:::i;:::-;;:::i;:::-;;;1747:14:1;;1740:22;1722:41;;1710:2;1695:18;28594:210:0;1582:187:1;24547:27:0;;;;;;;;;;;;;;;;;;;1920:25:1;;;1908:2;1893:18;24547:27:0;1774:177:1;25919:41:0;;;;;;;;;;-1:-1:-1;25919:41:0;;;;-1:-1:-1;;;;;25919:41:0;;;;;;-1:-1:-1;;;;;2146:32:1;;;2128:51;;2116:2;2101:18;25919:41:0;1956:229:1;28084:108:0;;;;;;;;;;-1:-1:-1;28172:12:0;;28084:108;;29705:467;;;;;;;;;;-1:-1:-1;29705:467:0;;;;;:::i;:::-;;:::i;41359:184::-;;;;;;;;;;-1:-1:-1;41359:184:0;;;;;:::i;:::-;;:::i;25874:38::-;;;;;;;;;;-1:-1:-1;25874:38:0;;;;-1:-1:-1;;;;;25874:38:0;;;24687:37;;;;;;;;;;-1:-1:-1;24687:37:0;;;;;;;;;;;28000:76;;;;;;;;;;-1:-1:-1;28000:76:0;;28066:2;3285:36:1;;3273:2;3258:18;28000:76:0;3143:184:1;43671:136:0;;;;;;;;;;-1:-1:-1;43671:136:0;;;;;:::i;:::-;;:::i;24444:33::-;;;;;;;;;;;;;;;;28812:280;;;;;;;;;;-1:-1:-1;28812:280:0;;;;;:::i;:::-;;:::i;43934:158::-;;;;;;;;;;-1:-1:-1;43934:158:0;;;;;:::i;:::-;;:::i;25969:28::-;;;;;;;;;;-1:-1:-1;25969:28:0;;;;-1:-1:-1;;;;;25969:28:0;;;40731:96;;;;;;;;;;;;;:::i;38393:126::-;;;;;;;;;;-1:-1:-1;38393:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;38483:28:0;38459:4;38483:28;;;:19;:28;;;;;;;;;38393:126;44100:167;;;;;;;;;;-1:-1:-1;44100:167:0;;;;;:::i;:::-;;:::i;26006:29::-;;;;;;;;;;;;;;;;24274:35;;;;;;;;;;;;;;;;39530:334;;;;;;;;;;-1:-1:-1;39530:334:0;;;;;:::i;:::-;;:::i;42437:288::-;;;;;;;;;;-1:-1:-1;42437:288:0;;;;;:::i;:::-;;:::i;43014:128::-;;;;;;;;;;-1:-1:-1;43014:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;43105:29:0;43081:4;43105:29;;;:20;:29;;;;;;;;;43014:128;40246:477;;;;;;;;;;-1:-1:-1;40246:477:0;;;;;:::i;:::-;;:::i;43150:164::-;;;;;;;;;;-1:-1:-1;43150:164:0;;;;;:::i;:::-;;:::i;43495:168::-;;;;;;;;;;-1:-1:-1;43495:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;43622:33:0;43593:4;43622:33;;;:24;:33;;;;;;;;;43495:168;24614:30;;;;;;;;;;-1:-1:-1;24614:30:0;;;;;;;;;;;28200:177;;;;;;;;;;-1:-1:-1;28200:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;28351:18:0;28319:7;28351:18;;;:9;:18;;;;;;;28200:177;11703:103;;;;;;;;;;;;;:::i;26042:33::-;;;;;;;;;;;;;;;;24401:36;;;;;;;;;;;;;;;;41551:280;;;;;;;;;;-1:-1:-1;41551:280:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;4772:32:1;;;4754:51;;4836:2;4821:18;;4814:34;;;;4864:18;;;4857:34;;;;4922:2;4907:18;;4900:34;4965:3;4950:19;;4943:35;4741:3;4726:19;41551:280:0;4495:489:1;24651:29:0;;;;;;;;;;-1:-1:-1;24651:29:0;;;;;;;;;;;11052:87;;;;;;;;;;-1:-1:-1;11098:7:0;11125:6;-1:-1:-1;;;;;11125:6:0;11052:87;;38527:171;;;;;;;;;;-1:-1:-1;38527:171:0;;;;;:::i;:::-;;:::i;27905:87::-;;;;;;;;;;;;;:::i;39318:204::-;;;;;;;;;;-1:-1:-1;39318:204:0;;;;;:::i;:::-;;:::i;43815:111::-;;;;;;;;;;-1:-1:-1;43815:111:0;;;;;:::i;:::-;;:::i;29100:373::-;;;;;;;;;;-1:-1:-1;29100:373:0;;;;;:::i;:::-;;:::i;41839:140::-;;;;;;;;;;-1:-1:-1;41839:140:0;;;;;:::i;:::-;;:::i;40981:184::-;;;;;;;;;;-1:-1:-1;40981:184:0;;;;;:::i;:::-;;:::i;29481:216::-;;;;;;;;;;-1:-1:-1;29481:216:0;;;;;:::i;:::-;;:::i;42733:131::-;;;;;;;;;;-1:-1:-1;42733:131:0;;;;;:::i;:::-;;:::i;41173:178::-;;;;;;;;;;-1:-1:-1;41173:178:0;;;;;:::i;:::-;;:::i;25074:57::-;;;;;;;;;;-1:-1:-1;25074:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24359:35;;;;;;;;;;;;;;;;38119:266;;;;;;;;;;-1:-1:-1;38119:266:0;;;;;:::i;:::-;;:::i;42131:133::-;;;;;;;;;;-1:-1:-1;42131:133:0;;;;;:::i;:::-;;:::i;38890:183::-;;;;;;;;;;-1:-1:-1;38890:183:0;;;;;:::i;:::-;;:::i;30180:74::-;;;;;;;;;;;;;:::i;43322:165::-;;;;;;;;;;-1:-1:-1;43322:165:0;;;;;:::i;:::-;;:::i;42872:134::-;;;;;;;;;;-1:-1:-1;42872:134:0;;;;;:::i;:::-;;:::i;28385:201::-;;;;;;;;;;-1:-1:-1;28385:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;28551:18:0;;;28519:7;28551:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;28385:201;41987:136;;;;;;;;;;-1:-1:-1;41987:136:0;;;;;:::i;:::-;;:::i;24486:54::-;;;;;;;;;;;;;;;;42272:157;;;;;;;;;;-1:-1:-1;42272:157:0;;;;;:::i;:::-;;:::i;24316:36::-;;;;;;;;;;;;;;;;39081:229;;;;;;;;;;-1:-1:-1;39081:229:0;;;;;:::i;:::-;;:::i;11961:201::-;;;;;;;;;;-1:-1:-1;11961:201:0;;;;;:::i;:::-;;:::i;40835:138::-;;;;;;;;;;;;;:::i;38706:176::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;;;;;;;;;38819:15:::1;::::0;:55:::1;::::0;-1:-1:-1;;;38819:55:0;;-1:-1:-1;;;;;6904:32:1;;;38819:55:0::1;::::0;::::1;6886:51:1::0;6980:14;;6973:22;6953:18;;;6946:50;38819:15:0;;::::1;::::0;:36:::1;::::0;6859:18:1;;38819:55:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;38706:176:::0;;:::o;27814:83::-;27851:13;27884:5;27877:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27814:83;:::o;28594:210::-;28713:4;28735:39;9803:10;28758:7;28767:6;28735:8;:39::i;:::-;-1:-1:-1;28792:4:0;28594:210;;;;:::o;29705:467::-;29845:4;29862:36;29872:6;29880:9;29891:6;29862:9;:36::i;:::-;-1:-1:-1;;;;;29936:19:0;;29909:24;29936:19;;;:11;:19;;;;;;;;9803:10;29936:33;;;;;;;;30002:26;;;;29980:94;;;;-1:-1:-1;;;29980:94:0;;7594:2:1;29980:94:0;;;7576:21:1;7633:2;7613:18;;;7606:30;-1:-1:-1;;;7652:18:1;;;7645:48;7710:18;;29980:94:0;7392:342:1;29980:94:0;30085:57;30094:6;9803:10;30116:25;30135:6;30116:16;:25;:::i;:::-;30085:8;:57::i;:::-;-1:-1:-1;30160:4:0;;29705:467;-1:-1:-1;;;;29705:467:0:o;41359:184::-;41488:15;;:47;;-1:-1:-1;;;41488:47:0;;-1:-1:-1;;;;;2146:32:1;;;41488:47:0;;;2128:51:1;41456:7:0;;41488:15;;:38;;2101:18:1;;41488:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41481:54;41359:184;-1:-1:-1;;41359:184:0:o;43671:136::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;43755:44:::1;::::0;-1:-1:-1;;;43755:44:0;;43779:10:::1;43755:44;::::0;::::1;8364:51:1::0;8431:18;;;8424:34;;;-1:-1:-1;;;;;43755:23:0;::::1;::::0;::::1;::::0;8337:18:1;;43755:44:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;43671:136:::0;;:::o;28812:280::-;9803:10;28910:4;29004:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;29004:34:0;;;;;;;;;;28910:4;;28932:130;;28982:7;;29004:47;;29041:10;;29004:47;:::i;43934:158::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44005:20:0;::::1;;::::0;;;:13:::1;:20;::::0;;;;;::::1;;44004:21;43996:30;;;::::0;::::1;;-1:-1:-1::0;;;;;44037:20:0::1;;::::0;;;:13:::1;:20;::::0;;;;:27;;-1:-1:-1;;44037:27:0::1;44060:4;44037:27;::::0;;43934:158::o;40731:96::-;40766:15;;-1:-1:-1;;;;;40766:15:0;:30;9803:10;40805:12;40766:53;;-1:-1:-1;;;;;;40766:53:0;;;;;;;-1:-1:-1;;;;;2146:32:1;;;40766:53:0;;;2128:51:1;2101:18;;40766:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40731:96::o;44100:167::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44180:20:0;::::1;;::::0;;;:13:::1;:20;::::0;;;;;::::1;;44172:29;;;::::0;::::1;;-1:-1:-1::0;;;;;44212:20:0::1;44235:5;44212:20:::0;;;:13:::1;:20;::::0;;;;:28;;-1:-1:-1;;44212:28:0::1;::::0;;44100:167::o;39530:334::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;39677:14:::1;:29:::0;;;39717:15:::1;:31:::0;;;39759:14:::1;:29:::0;;;39776:12;39813:28:::1;39735:13:::0;39694:12;39813:28:::1;:::i;:::-;:43;;;;:::i;:::-;39799:11;:57:::0;-1:-1:-1;;;39530:334:0:o;42437:288::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;42601:11:::1;:26:::0;;42638:18:::1;:40:::0;;;;42689:28;::::1;;-1:-1:-1::0;;42601:26:0;::::1;;;;42689:28:::0;;;;-1:-1:-1;;42689:28:0;;;;;;;;;;::::1;::::0;;42437:288::o;40246:477::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;40369:15:::1;::::0;-1:-1:-1;;;;;40347:38:0;;::::1;40369:15:::0;::::1;40347:38;;40325:71;;;::::0;::::1;;40454:15;::::0;40412:59:::1;::::0;-1:-1:-1;;;;;40454:15:0;;::::1;::::0;40412:59;::::1;::::0;::::1;::::0;40454:15:::1;::::0;40412:59:::1;40482:15;:48:::0;;-1:-1:-1;;;;;;40482:48:0::1;-1:-1:-1::0;;;;;40482:48:0;::::1;::::0;;::::1;::::0;;;40584:25:::1;::::0;;-1:-1:-1;;;40584:25:0;;;;-1:-1:-1;;40482:48:0;40584:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;40482:48;40584:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;40566:69:0::1;;40644:4;40651:15;;;;;;;;;-1:-1:-1::0;;;;;40651:15:0::1;-1:-1:-1::0;;;;;40651:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40566:108;::::0;-1:-1:-1;;;;;;40566:108:0::1;::::0;;;;;;-1:-1:-1;;;;;9562:15:1;;;40566:108:0::1;::::0;::::1;9544:34:1::0;9614:15;;9594:18;;;9587:43;9479:18;;40566:108:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40685:13;:30:::0;;-1:-1:-1;;;;;;40685:30:0::1;-1:-1:-1::0;;;;;40685:30:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;40246:477:0:o;43150:164::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;43247:3:::1;43240;:10;;:26;;;;;43261:5;43254:3;:12;;43240:26;43218:59;;;::::0;::::1;;43288:12;:18:::0;43150:164::o;11703:103::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;11768:30:::1;11795:1;11768:18;:30::i;:::-;11703:103::o:0;41551:280::-;41784:15;;:39;;-1:-1:-1;;;41784:39:0;;-1:-1:-1;;;;;2146:32:1;;;41784:39:0;;;2128:51:1;41654:7:0;;;;;;;;;;41784:15;;;:30;;2101:18:1;;41784:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41777:46;;;;-1:-1:-1;41777:46:0;;-1:-1:-1;41777:46:0;-1:-1:-1;41777:46:0;;-1:-1:-1;41551:280:0;-1:-1:-1;;41551:280:0:o;38527:171::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;38640:15:::1;::::0;:50:::1;::::0;-1:-1:-1;;;38640:50:0;;::::1;::::0;::::1;10317:25:1::0;;;-1:-1:-1;;;;;10378:32:1;;;10358:18;;;10351:60;38640:15:0;;::::1;::::0;:34:::1;::::0;10290:18:1;;38640:50:0::1;10143:274:1::0;27905:87:0;27944:13;27977:7;27970:14;;;;;:::i;39318:204::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;39448:13:::1;::::0;-1:-1:-1;;;;;39440:21:0;;::::1;39448:13:::0;::::1;39440:21;;39432:30;;;::::0;::::1;;39473:41;39502:4;39508:5;39473:28;:41::i;:::-;39318:204:::0;;:::o;43815:111::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;43881:37:::1;::::0;43889:10:::1;::::0;43881:37;::::1;;;::::0;43910:7;;43881:37:::1;::::0;;;43910:7;43889:10;43881:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;29100:373:::0;9803:10;29203:4;29252:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;29252:34:0;;;;;;;;;;29319:35;;;;29297:68;;;;;;29376:67;9803:10;29399:7;29408:34;29427:15;29408:16;:34;:::i;29376:67::-;-1:-1:-1;29461:4:0;;29100:373;-1:-1:-1;;;29100:373:0:o;41839:140::-;41930:15;;:41;;-1:-1:-1;;;41930:41:0;;-1:-1:-1;;;;;2146:32:1;;;41930:41:0;;;2128:51:1;41903:7:0;;41930:15;;:32;;2101:18:1;;41930:41:0;1956:229:1;40981:184:0;41110:15;;:47;;-1:-1:-1;;;41110:47:0;;-1:-1:-1;;;;;2146:32:1;;;41110:47:0;;;2128:51:1;41078:7:0;;41110:15;;:38;;2101:18:1;;41110:47:0;1956:229:1;29481:216:0;29603:4;29625:42;9803:10;29649:9;29660:6;29625:9;:42::i;42733:131::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;42812:2:::1;42805:3;:9;;:25;;;;;42825:5;42818:3;:12;;42805:25;42797:34;;;::::0;::::1;;42842:8;:14:::0;42733:131::o;41173:178::-;41299:15;;:44;;-1:-1:-1;;;41299:44:0;;-1:-1:-1;;;;;2146:32:1;;;41299:44:0;;;2128:51:1;41267:7:0;;41299:15;;:35;;2101:18:1;;41299:44:0;1956:229:1;38119:266:0;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38226:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;:40;;::::0;::::1;;;;38204:73;;;::::0;::::1;;-1:-1:-1::0;;;;;38288:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;38288:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;38343:34;;1722:41:1;;;38343:34:0::1;::::0;1695:18:1;38343:34:0::1;;;;;;;38119:266:::0;;:::o;42131:133::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;42199:10:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;42199:21:0;;::::1;;::::0;;42236:20:::1;::::0;::::1;::::0;::::1;::::0;42212:8;1747:14:1;1740:22;1722:41;;1710:2;1695:18;;1582:187;42236:20:0::1;;;;;;;;42131:133:::0;:::o;38890:183::-;39017:15;;:48;;-1:-1:-1;;;39017:48:0;;-1:-1:-1;;;;;2146:32:1;;;39017:48:0;;;2128:51:1;38988:4:0;;39017:15;;:39;;2101:18:1;;39017:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;30180:74::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;30233:6:::1;:13:::0;;-1:-1:-1;;30233:13:0::1;30242:4;30233:13;::::0;;30180:74::o;43322:165::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;43435:33:0;;;::::1;;::::0;;;:24:::1;:33;::::0;;;;:44;;-1:-1:-1;;43435:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43322:165::o;42872:134::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;42958:29:0;;;::::1;;::::0;;;:20:::1;:29;::::0;;;;:40;;-1:-1:-1;;42958:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;42872:134::o;41987:136::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;42056:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;42056:22:0;;::::1;;::::0;;42094:21:::1;::::0;::::1;::::0;::::1;::::0;42070:8;1747:14:1;1740:22;1722:41;;1710:2;1695:18;;1582:187;42272:157:0;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;42348:18:::1;:29:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;42348:29:0;;::::1;;::::0;;42393:28:::1;::::0;::::1;::::0;::::1;::::0;42369:8;1747:14:1;1740:22;1722:41;;1710:2;1695:18;;1582:187;39081:229:0;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;39223:15:::1;:34:::0;;-1:-1:-1;;;;;;39223:34:0::1;;-1:-1:-1::0;;;;;39223:34:0;;::::1;;;::::0;;39268:15:::1;:34:::0;;-1:-1:-1;;;;;;39268:34:0::1;::::0;;;::::1;;::::0;;39081:229::o;11961:201::-;11098:7;11125:6;-1:-1:-1;;;;;11125:6:0;9803:10;11272:23;11264:68;;;;-1:-1:-1;;;11264:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12050:22:0;::::1;12042:73;;;::::0;-1:-1:-1;;;12042:73:0;;10624:2:1;12042:73:0::1;::::0;::::1;10606:21:1::0;10663:2;10643:18;;;10636:30;10702:34;10682:18;;;10675:62;-1:-1:-1;;;10753:18:1;;;10746:36;10799:19;;12042:73:0::1;10422:402:1::0;12042:73:0::1;12126:28;12145:8;12126:18;:28::i;40835:138::-:0;40881:18;;;;;;;40873:27;;;;;;40911:15;;-1:-1:-1;;;;;40911:15:0;:31;9803:10;40951:12;9723:98;33843:291;-1:-1:-1;;;;;33970:19:0;;33962:28;;;;;;-1:-1:-1;;;;;34009:21:0;;34001:30;;;;;;-1:-1:-1;;;;;34042:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;34094:32;;1920:25:1;;;34094:32:0;;1893:18:1;34094:32:0;;;;;;;33843:291;;;:::o;30262:3091::-;30408:6;;;;;:44;;-1:-1:-1;11098:7:0;11125:6;-1:-1:-1;;;;;30435:17:0;;;11125:6;;30435:17;30408:44;:85;;;-1:-1:-1;11098:7:0;11125:6;-1:-1:-1;;;;;30473:20:0;;;11125:6;;30473:20;30408:85;:124;;;-1:-1:-1;;;;;;30514:18:0;;;;;;:10;:18;;;;;;;;30408:124;:166;;;-1:-1:-1;;;;;;30553:21:0;;;;;;:10;:21;;;;;;;;30408:166;30386:224;;;;-1:-1:-1;;;30386:224:0;;11031:2:1;30386:224:0;;;11013:21:1;11070:1;11050:18;;;11043:29;-1:-1:-1;;;11088:18:1;;;11081:38;11136:18;;30386:224:0;10829:331:1;30386:224:0;-1:-1:-1;;;;;30632:21:0;;;;;;:13;:21;;;;;;;;30631:22;30623:53;;;;-1:-1:-1;;;30623:53:0;;11367:2:1;30623:53:0;;;11349:21:1;11406:2;11386:18;;;11379:30;-1:-1:-1;;;11425:18:1;;;11418:48;11483:18;;30623:53:0;11165:342:1;30623:53:0;-1:-1:-1;;;;;30696:24:0;;;;;;:13;:24;;;;;;;;30695:25;30687:59;;;;-1:-1:-1;;;30687:59:0;;11714:2:1;30687:59:0;;;11696:21:1;11753:2;11733:18;;;11726:30;-1:-1:-1;;;11772:18:1;;;11765:51;11833:18;;30687:59:0;11512:345:1;30687:59:0;-1:-1:-1;;;;;30767:20:0;;30759:29;;;;;;-1:-1:-1;;;;;30807:23:0;;30799:32;;;;;;30844:20;30896:5;30884:8;;30868:13;28172:12;;;28084:108;30868:13;:24;;;;:::i;:::-;30867:34;;;;:::i;:::-;30844:57;;30912:18;30966:5;30950:12;;30934:13;28172:12;;;28084:108;30934:13;:28;;;;:::i;:::-;30933:38;;;;:::i;:::-;30912:59;;31014:12;31004:6;:22;;:54;;;-1:-1:-1;;;;;;31030:28:0;;;;;;:20;:28;;;;;;;;31004:54;30982:121;;;;-1:-1:-1;;;30982:121:0;;12459:2:1;30982:121:0;;;12441:21:1;12498:2;12478:18;;;12471:30;-1:-1:-1;;;12517:18:1;;;12510:47;12574:18;;30982:121:0;12257:341:1;30982:121:0;11098:7;11125:6;-1:-1:-1;;;;;31134:17:0;;;11125:6;;31134:17;;;;:60;;-1:-1:-1;;;;;;31168:26:0;;31189:4;31168:26;;31134:60;:103;;;;-1:-1:-1;31232:4:0;;-1:-1:-1;;;;;31211:26:0;;;31232:4;;31211:26;;31134:103;:146;;;;-1:-1:-1;31267:13:0;;-1:-1:-1;;;;;31254:26:0;;;31267:13;;31254:26;;31134:146;31116:403;;;-1:-1:-1;;;;;28351:18:0;;31307:22;28351:18;;;:9;:18;;;;;;;;;31393:24;:35;;;;;;;;;;:99;;-1:-1:-1;31481:10:0;31454:23;31471:6;31454:14;:23;:::i;:::-;:37;;31393:99;31367:140;;;;;;31292:227;31116:403;-1:-1:-1;;;;;31555:17:0;;31531:21;31555:17;;;:9;:17;;;;;;31605:23;;;;31583:56;;;;;;31701:4;31652:28;28351:18;;;:9;:18;;;;;;31823;;31872:11;;31750:21;;31799:42;;;;31872:11;;;;;:43;;;;;31908:7;31872:43;:77;;;;-1:-1:-1;31941:8:0;;;;31940:9;31872:77;:158;;;;-1:-1:-1;;;;;;31997:33:0;;;;;;:25;:33;;;;;;;;31996:34;31872:158;:258;;;;-1:-1:-1;32114:15:0;;-1:-1:-1;;;;;32096:34:0;;;32114:15;;32096:34;;31872:258;:330;;;;-1:-1:-1;11098:7:0;11125:6;-1:-1:-1;;;;;32185:17:0;;;11125:6;;32185:17;;31872:330;:367;;;;-1:-1:-1;11098:7:0;11125:6;-1:-1:-1;;;;;32219:20:0;;;11125:6;;32219:20;;31872:367;31854:700;;;32266:8;:15;;-1:-1:-1;;32266:15:0;32277:4;32266:15;;;32303:12;;32266:15;32303:12;32298:95;;32359:18;;32336:41;;32298:95;32407:57;32420:20;32442:21;32407:12;:57::i;:::-;32496:15;32481:12;:30;32526:8;:16;;-1:-1:-1;;32526:16:0;;;31854:700;32627:13;;32566:12;;-1:-1:-1;;;;;32609:32:0;;;32627:13;;32609:32;;:84;;-1:-1:-1;32679:13:0;;-1:-1:-1;;;;;32658:35:0;;;32679:13;;32658:35;32609:84;32591:155;;;-1:-1:-1;32730:4:0;32591:155;-1:-1:-1;;;;;32762:27:0;;;;;;:19;:27;;;;;;;;;:61;;-1:-1:-1;;;;;;32793:30:0;;;;;;:19;:30;;;;;;;;32762:61;32758:109;;;-1:-1:-1;32850:5:0;32758:109;32883:8;;;;;:23;;-1:-1:-1;32896:10:0;;;;;;;32895:11;32883:23;32879:71;;;-1:-1:-1;32933:5:0;32879:71;32966:7;32962:174;;;32990:12;33030:5;33015:11;;33006:6;:20;;;;:::i;:::-;33005:30;;;;:::i;:::-;32990:45;-1:-1:-1;33050:14:0;32990:45;33050:14;;:::i;:::-;;;33079:45;33096:6;33112:4;33119;33079:16;:45::i;:::-;32975:161;32962:174;33148:43;33165:6;33173:9;33184:6;33148:16;:43::i;:::-;33204:15;;-1:-1:-1;;;;;33204:15:0;:26;33239:6;33248:17;33239:6;-1:-1:-1;;;;;28351:18:0;28319:7;28351:18;;;:9;:18;;;;;;;28200:177;33248:17;33204:62;;-1:-1:-1;;;;;;33204:62:0;;;;;;;-1:-1:-1;;;;;8382:32:1;;;33204:62:0;;;8364:51:1;8431:18;;;8424:34;8337:18;;33204:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;33277:15:0;;-1:-1:-1;;;;;33277:15:0;;-1:-1:-1;33277:26:0;;-1:-1:-1;33312:9:0;33324:20;33312:9;-1:-1:-1;;;;;28351:18:0;28319:7;28351:18;;;:9;:18;;;;;;;28200:177;33324:20;33277:68;;-1:-1:-1;;;;;;33277:68:0;;;;;;;-1:-1:-1;;;;;8382:32:1;;;33277:68:0;;;8364:51:1;8431:18;;;8424:34;8337:18;;33277:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30375:2978;;;;;;;30262:3091;;;:::o;12322:191::-;12396:16;12415:6;;-1:-1:-1;;;;;12432:17:0;;;-1:-1:-1;;;;;;12432:17:0;;;;;;12465:40;;12415:6;;;;;;;12465:40;;12396:16;12465:40;12385:128;12322:191;:::o;39872:366::-;-1:-1:-1;;;;;39977:31:0;;;;;;:25;:31;;;;;;;;:40;;;;;;;39955:73;;;;;;-1:-1:-1;;;;;40039:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;40039:39:0;;;;;;;;;;;;40089:86;;40115:15;;:48;;-1:-1:-1;;;40115:48:0;;-1:-1:-1;;;;;6904:32:1;;;40115:48:0;;;6886:51:1;40115:15:0;6953:18:1;;;6946:50;40115:15:0;;;;:36;;6859:18:1;;40115:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40089:86;40190:40;;;;;;-1:-1:-1;;;;;40190:40:0;;;;;;;;39872:366;;:::o;35640:2471::-;35727:1;35717:6;:11;35713:50;;35640:2471;;:::o;35713:50::-;35825:15;;35775:27;;35825:15;;;-1:-1:-1;;;;;35825:15:0;35817:38;35813:133;;35923:11;;35904:15;;35895:24;;:6;:24;:::i;:::-;35894:40;;;;:::i;:::-;35872:62;;35813:133;36006:14;;35958:26;;-1:-1:-1;;;;;36006:14:0;35998:37;35995:128;;36100:11;;36082:14;;36073:23;;:6;:23;:::i;:::-;36072:39;;;;:::i;:::-;36051:60;;35995:128;36135:27;36209:1;36177:15;;;;;;;;;-1:-1:-1;;;;;36177:15:0;-1:-1:-1;;;;;36177:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;36173:127;;;36277:11;;36259:14;;36250:23;;:6;:23;:::i;:::-;36249:39;;;;:::i;:::-;36227:61;;36173:127;36312:26;36433:18;36398:19;36341:41;36363:19;36341:6;:41;:::i;:::-;:76;;;;:::i;:::-;:110;;;;:::i;:::-;36312:139;-1:-1:-1;36462:27:0;36492:22;36513:1;36312:139;36492:22;:::i;:::-;36462:52;-1:-1:-1;36525:26:0;36554:40;36462:52;36554:18;:40;:::i;:::-;36525:69;-1:-1:-1;36605:23:0;36735:18;36701:19;36631:54;36666:19;36631;:54;:::i;:::-;:89;;;;:::i;:::-;:122;;;;:::i;:::-;36605:148;-1:-1:-1;36790:21:0;36822:36;36605:148;36822:19;:36::i;:::-;36869:21;36948:6;36894:37;36918:13;36894:21;:37;:::i;:::-;36893:61;;;;:::i;:::-;36869:85;-1:-1:-1;36967:23:0;37046:15;36994:35;37010:19;36869:85;36994:35;:::i;:::-;36993:68;;;;:::i;:::-;36967:94;-1:-1:-1;37072:23:0;37151:15;37099:35;37115:19;37099:13;:35;:::i;:::-;37098:68;;;;:::i;:::-;37072:94;-1:-1:-1;37177:22:0;37241:15;37203:34;37219:18;37203:13;:34;:::i;:::-;37202:54;;;;:::i;:::-;37177:79;-1:-1:-1;37267:23:0;37177:79;37353:15;37293:44;37322:15;37293:13;:44;:::i;:::-;:75;;;;:::i;:::-;:92;;;;:::i;:::-;37267:118;-1:-1:-1;37402:19:0;;37398:102;;37446:15;;37438:50;;37446:15;;;;-1:-1:-1;;;;;37446:15:0;;37438:50;;;;;;;;;;;;37446:15;37438:50;;;;;;;;;;;;;;;;;;;;;37398:102;37515:18;;37512:97;;37557:14;;37549:48;;-1:-1:-1;;;;;37557:14:0;;;;37549:48;;;;;37582:14;;37557;37549:48;37557:14;37549:48;37582:14;37557;37549:48;;;;;;;;;;;;;;;;;;;;;37512:97;37621:49;37634:18;37654:15;37621:12;:49::i;:::-;37686:127;;;13100:25:1;;;13156:2;13141:18;;13134:34;;;13184:18;;;13177:34;;;37686:127:0;;13088:2:1;13073:18;37686:127:0;;;;;;;37830:19;;37826:278;;37893:15;;37885:89;;37867:12;;-1:-1:-1;;;;;37893:15:0;;37940;;37867:12;37885:89;37867:12;37885:89;37940:15;37893;37885:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37866:108;;;37993:7;37989:104;;;38026:51;;;13606:25:1;;;13662:2;13647:18;;13640:34;;;38026:51:0;;13579:18:1;38026:51:0;;;;;;;37989:104;37851:253;37826:278;35702:2409;;;;;;;;;;;;;35640:2471;;:::o;33361:474::-;-1:-1:-1;;;;;33499:20:0;;33491:29;;;;;;-1:-1:-1;;;;;33539:23:0;;33531:32;;;;;;-1:-1:-1;;;;;33598:17:0;;33574:21;33598:17;;;:9;:17;;;;;;33648:23;;;;33626:56;;;;;;33713:22;33729:6;33713:13;:22;:::i;:::-;-1:-1:-1;;;;;33693:17:0;;;;;;;:9;:17;;;;;;:42;;;;33746:20;;;;;;;;:30;;33770:6;;33693:17;33746:30;;33770:6;;33746:30;:::i;:::-;;;;;;;;33809:9;-1:-1:-1;;;;;33792:35:0;33801:6;-1:-1:-1;;;;;33792:35:0;;33820:6;33792:35;;;;1920:25:1;;1908:2;1893:18;;1774:177;33792:35:0;;;;;;;;33480:355;33361:474;;;:::o;34732:490::-;34820:16;;;34834:1;34820:16;;;;;;;;34796:21;;34820:16;;;;;;;;;;-1:-1:-1;34820:16:0;34796:40;;34865:4;34847;34852:1;34847:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;34847:23:0;;;:7;;;;;;;;;;:23;;;;34891:15;;:22;;;-1:-1:-1;;;34891:22:0;;;;:15;;;;;:20;;:22;;;;;34847:7;;34891:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34881:4;34886:1;34881:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;34881:32:0;;;:7;;;;;;;;;:32;34956:15;;34924:57;;34941:4;;34956:15;34974:6;34924:8;:57::i;:::-;34992:15;;:222;;-1:-1:-1;;;34992:222:0;;-1:-1:-1;;;;;34992:15:0;;;;:66;;:222;;35073:6;;34992:15;;35141:4;;35168;;35188:15;;34992:222;;;:::i;35230:395::-;35335:15;;35303:57;;35320:4;;-1:-1:-1;;;;;35335:15:0;35353:6;35303:8;:57::i;:::-;35371:15;;35561;;35371:246;;-1:-1:-1;;;35371:246:0;;35440:4;35371:246;;;15275:34:1;15325:18;;;15318:34;;;35371:15:0;15368:18:1;;;15361:34;;;15411:18;;;15404:34;-1:-1:-1;;;;;35561:15:0;;;15454:19:1;;;15447:44;35591:15:0;15507:19:1;;;15500:35;35371:15:0;;;:31;;35410:6;;15209:19:1;;35371:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;35230:395;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:118;236:5;229:13;222:21;215:5;212:32;202:60;;258:1;255;248:12;273:382;338:6;346;399:2;387:9;378:7;374:23;370:32;367:52;;;415:1;412;405:12;367:52;454:9;441:23;473:31;498:5;473:31;:::i;:::-;523:5;-1:-1:-1;580:2:1;565:18;;552:32;593:30;552:32;593:30;:::i;:::-;642:7;632:17;;;273:382;;;;;:::o;660:597::-;772:4;801:2;830;819:9;812:21;862:6;856:13;905:6;900:2;889:9;885:18;878:34;930:1;940:140;954:6;951:1;948:13;940:140;;;1049:14;;;1045:23;;1039:30;1015:17;;;1034:2;1011:26;1004:66;969:10;;940:140;;;1098:6;1095:1;1092:13;1089:91;;;1168:1;1163:2;1154:6;1143:9;1139:22;1135:31;1128:42;1089:91;-1:-1:-1;1241:2:1;1220:15;-1:-1:-1;;1216:29:1;1201:45;;;;1248:2;1197:54;;660:597;-1:-1:-1;;;660:597:1:o;1262:315::-;1330:6;1338;1391:2;1379:9;1370:7;1366:23;1362:32;1359:52;;;1407:1;1404;1397:12;1359:52;1446:9;1433:23;1465:31;1490:5;1465:31;:::i;:::-;1515:5;1567:2;1552:18;;;;1539:32;;-1:-1:-1;;;1262:315:1:o;2190:456::-;2267:6;2275;2283;2336:2;2324:9;2315:7;2311:23;2307:32;2304:52;;;2352:1;2349;2342:12;2304:52;2391:9;2378:23;2410:31;2435:5;2410:31;:::i;:::-;2460:5;-1:-1:-1;2517:2:1;2502:18;;2489:32;2530:33;2489:32;2530:33;:::i;:::-;2190:456;;2582:7;;-1:-1:-1;;;2636:2:1;2621:18;;;;2608:32;;2190:456::o;2651:247::-;2710:6;2763:2;2751:9;2742:7;2738:23;2734:32;2731:52;;;2779:1;2776;2769:12;2731:52;2818:9;2805:23;2837:31;2862:5;2837:31;:::i;:::-;2887:5;2651:247;-1:-1:-1;;;2651:247:1:o;3540:316::-;3617:6;3625;3633;3686:2;3674:9;3665:7;3661:23;3657:32;3654:52;;;3702:1;3699;3692:12;3654:52;-1:-1:-1;;3725:23:1;;;3795:2;3780:18;;3767:32;;-1:-1:-1;3846:2:1;3831:18;;;3818:32;;3540:316;-1:-1:-1;3540:316:1:o;3861:444::-;3932:6;3940;3948;4001:2;3989:9;3980:7;3976:23;3972:32;3969:52;;;4017:1;4014;4007:12;3969:52;4056:9;4043:23;4075:28;4097:5;4075:28;:::i;:::-;4122:5;-1:-1:-1;4174:2:1;4159:18;;4146:32;;-1:-1:-1;4230:2:1;4215:18;;4202:32;4243:30;4202:32;4243:30;:::i;:::-;4292:7;4282:17;;;3861:444;;;;;:::o;4310:180::-;4369:6;4422:2;4410:9;4401:7;4397:23;4393:32;4390:52;;;4438:1;4435;4428:12;4390:52;-1:-1:-1;4461:23:1;;4310:180;-1:-1:-1;4310:180:1:o;4989:315::-;5057:6;5065;5118:2;5106:9;5097:7;5093:23;5089:32;5086:52;;;5134:1;5131;5124:12;5086:52;5170:9;5157:23;5147:33;;5230:2;5219:9;5215:18;5202:32;5243:31;5268:5;5243:31;:::i;5309:241::-;5365:6;5418:2;5406:9;5397:7;5393:23;5389:32;5386:52;;;5434:1;5431;5424:12;5386:52;5473:9;5460:23;5492:28;5514:5;5492:28;:::i;5555:388::-;5623:6;5631;5684:2;5672:9;5663:7;5659:23;5655:32;5652:52;;;5700:1;5697;5690:12;5652:52;5739:9;5726:23;5758:31;5783:5;5758:31;:::i;:::-;5808:5;-1:-1:-1;5865:2:1;5850:18;;5837:32;5878:33;5837:32;5878:33;:::i;6357:356::-;6559:2;6541:21;;;6578:18;;;6571:30;6637:34;6632:2;6617:18;;6610:62;6704:2;6689:18;;6357:356::o;7007:380::-;7086:1;7082:12;;;;7129;;;7150:61;;7204:4;7196:6;7192:17;7182:27;;7150:61;7257:2;7249:6;7246:14;7226:18;7223:38;7220:161;;;7303:10;7298:3;7294:20;7291:1;7284:31;7338:4;7335:1;7328:15;7366:4;7363:1;7356:15;7220:161;;7007:380;;;:::o;7739:127::-;7800:10;7795:3;7791:20;7788:1;7781:31;7831:4;7828:1;7821:15;7855:4;7852:1;7845:15;7871:125;7911:4;7939:1;7936;7933:8;7930:34;;;7944:18;;:::i;:::-;-1:-1:-1;7981:9:1;;7871:125::o;8001:184::-;8071:6;8124:2;8112:9;8103:7;8099:23;8095:32;8092:52;;;8140:1;8137;8130:12;8092:52;-1:-1:-1;8163:16:1;;8001:184;-1:-1:-1;8001:184:1:o;8469:245::-;8536:6;8589:2;8577:9;8568:7;8564:23;8560:32;8557:52;;;8605:1;8602;8595:12;8557:52;8637:9;8631:16;8656:28;8678:5;8656:28;:::i;8719:128::-;8759:3;8790:1;8786:6;8783:1;8780:13;8777:39;;;8796:18;;:::i;:::-;-1:-1:-1;8832:9:1;;8719:128::o;9076:251::-;9146:6;9199:2;9187:9;9178:7;9174:23;9170:32;9167:52;;;9215:1;9212;9205:12;9167:52;9247:9;9241:16;9266:31;9291:5;9266:31;:::i;9641:497::-;9747:6;9755;9763;9771;9779;9832:3;9820:9;9811:7;9807:23;9803:33;9800:53;;;9849:1;9846;9839:12;9800:53;9881:9;9875:16;9900:31;9925:5;9900:31;:::i;:::-;9995:2;9980:18;;9974:25;10039:2;10024:18;;10018:25;10083:2;10068:18;;10062:25;10127:3;10112:19;;;10106:26;9950:5;;9974:25;;-1:-1:-1;10018:25:1;10062;-1:-1:-1;10106:26:1;;-1:-1:-1;9641:497:1;-1:-1:-1;;;9641:497:1:o;11862:168::-;11902:7;11968:1;11964;11960:6;11956:14;11953:1;11950:21;11945:1;11938:9;11931:17;11927:45;11924:71;;;11975:18;;:::i;:::-;-1:-1:-1;12015:9:1;;11862:168::o;12035:217::-;12075:1;12101;12091:132;;12145:10;12140:3;12136:20;12133:1;12126:31;12180:4;12177:1;12170:15;12208:4;12205:1;12198:15;12091:132;-1:-1:-1;12237:9:1;;12035:217::o;13817:127::-;13878:10;13873:3;13869:20;13866:1;13859:31;13909:4;13906:1;13899:15;13933:4;13930:1;13923:15;13949:980;14211:4;14259:3;14248:9;14244:19;14290:6;14279:9;14272:25;14316:2;14354:6;14349:2;14338:9;14334:18;14327:34;14397:3;14392:2;14381:9;14377:18;14370:31;14421:6;14456;14450:13;14487:6;14479;14472:22;14525:3;14514:9;14510:19;14503:26;;14564:2;14556:6;14552:15;14538:29;;14585:1;14595:195;14609:6;14606:1;14603:13;14595:195;;;14674:13;;-1:-1:-1;;;;;14670:39:1;14658:52;;14765:15;;;;14730:12;;;;14706:1;14624:9;14595:195;;;-1:-1:-1;;;;;;;14846:32:1;;;;14841:2;14826:18;;14819:60;-1:-1:-1;;;14910:3:1;14895:19;14888:35;14807:3;13949:980;-1:-1:-1;;;13949:980:1:o;15546:306::-;15634:6;15642;15650;15703:2;15691:9;15682:7;15678:23;15674:32;15671:52;;;15719:1;15716;15709:12;15671:52;15748:9;15742:16;15732:26;;15798:2;15787:9;15783:18;15777:25;15767:35;;15842:2;15831:9;15827:18;15821:25;15811:35;;15546:306;;;;;:::o

Swarm Source

ipfs://1d7469f3d1ef00bd415ba997d89e2011af155561d8b928633fdaab530e375ad9
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.