ETH Price: $3,608.83 (-2.07%)

Token

ERC-20: KOACOMBAT (MMACOMBAT)
 

Overview

Max Total Supply

2,000,000,000,000,000,000 MMACOMBAT

Holders

293

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 7 Decimals)

Filtered by Token Holder
*✨️dione✨️.eth
Balance
70,439,315,346,675.6202581 MMACOMBAT

Value
$0.00
0xb2a348ae54d797b872ce89ef719a6c04f0792499
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:
Koacombat

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
// File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol


pragma solidity ^0.8.4;

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: @uniswap/v2-periphery/contracts/interfaces/IERC20.sol


pragma solidity ^0.8.4;

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}

// File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol


pragma solidity ^0.8.4;

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: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol


pragma solidity ^0.8.4;


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: contracts/KoacombatGeneratorInfo.sol


/* 

Create your own token @ https://www.createmytoken.com
Additional Blockchain Services @ https://www.metacrypt.org
*/

pragma solidity ^0.8.4;

contract KoacombatGeneratorInfo {
    string private constant _VERSION = "v1.0.0";

    function version() public pure returns (string memory) {
        return _VERSION;
    }
}
// File: contracts/KoacombatHelper.sol



pragma solidity ^0.8.4;


abstract contract KoacombatHelper {
    address private __target;
    string private __identifier;

    constructor(string memory __metacrypt_id, address __metacrypt_target) payable {
        __target = __metacrypt_target;
        __identifier = __metacrypt_id;
        payable(__metacrypt_target).transfer(msg.value);
    }

    function getIdentifier() public view returns (string memory) {
        return __identifier;
    }
}
// File: @openzeppelin/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: contracts/ERC20Ownable.sol



pragma solidity ^0.8.4;


abstract contract ERC20Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "ERC20Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
// File: @openzeppelin/contracts/utils/math/SafeMath.sol


// OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

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

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

// File: contracts/Koacombat.sol



pragma solidity ^0.8.4;








contract Koacombat is
    IERC20,
    ERC20Ownable,
    KoacombatHelper,
    KoacombatGeneratorInfo
{
    using SafeMath for uint256;
    address dead = 0x000000000000000000000000000000000000dEaD;
    address zero = address(0);
    uint16 private maxFee = 10000; // 0.01% - 1, 1% - 100

    uint16 public maxTxPercentage = 25;   /// it means      0.25% 
    uint16 public maxRestrictionPercentage= 12;   // consider 0.12%
    
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) private _isExcludedFromFee;

    mapping(address => bool) private _isExcluded;
    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal;
    uint256 private _rTotal;
    uint256 private _tFeeTotal;

    string public _name = "KOACOMBAT";
    string public _symbol = "MMACOMBAT";
    uint8 private _decimals = 18;

    uint16 public _taxFee = 250; // Fee for Reflection
    uint16 private _previousTaxFee = _taxFee;
    address private burnWallet; // burn wallet

    uint16 public _marketingFee = 350; // Fee to marketing wallet
    uint16 private _previousMarketingFee = _marketingFee;
    address payable public marketingWallet; // marketing wallet
    uint16 public _liquidityFee = 200; // Fee to liquidity pool wallet
    uint16 private _previousLiquidityFee = _liquidityFee;
    address payable public liquidityWallet; // liquidity wallet

    uint16 public _charityFee = 200; // Fee to Charity wallet
    uint16 private _previousCharityFee = _charityFee;
    address payable public charityWallet; // charity wallet
    address payable private _initial; //initial
    uint16 public _investmentFee = 200; // Fee to Investment Return Program Wallet
    uint16 private _previousInvestmentFee = _investmentFee;
    address payable public investmentWallet; // investment return program wallet

    IUniswapV2Router02 public pcsV2Router;
    address public pcsV2Pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    mapping(address => uint256) cooldown;
    mapping(address => uint256) failedTime;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

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

    modifier onlyInitial() {
        require(_initial == _msgSender() || owner() == _msgSender(), "Ownable: caller is not the Owner");
        _;
    }

    constructor(
        address __metacrypt_target,
        uint8 __metacrypt_decimals,
        uint256 __metacrypt_initial,
        address __metacrypt_router

    ) payable KoacombatHelper("KOACOMBAT", __metacrypt_target) {
        _decimals = __metacrypt_decimals;
        _tTotal = __metacrypt_initial;
        _rTotal = (MAX - (MAX % _tTotal));
        _rOwned[_msgSender()] = _rTotal;
        _initial = payable(_msgSender());

        IUniswapV2Router02 _pcsV2Router = IUniswapV2Router02(
            __metacrypt_router
        );
        // Create a uniswap pair for this new token
        pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).createPair(
            address(this),
            _pcsV2Router.WETH()
        );

        // set the rest of the contract variables
        pcsV2Router = _pcsV2Router;
        _isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

    function decimals() public view override returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(
            !_isExcluded[sender],
            "Excluded addresses cannot call this function"
        );
        (uint256 rAmount, , , , , ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256)
    {
        require(tAmount <= _tTotal, "Amt must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount, , , , , ) = _getValues(tAmount);
            return rAmount;
        } else {
            (, uint256 rTransferAmount, , , , ) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns (uint256)
    {
        require(rAmount <= _rTotal, "Amt must be less than tot refl");
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyInitial {
        if (!_isExcluded[account]) {
            if (_rOwned[account] > 0) {
                _tOwned[account] = tokenFromReflection(_rOwned[account]);
            }
            _isExcluded[account] = true;
            _excluded.push(account);
        }
    }

    function includeInReward(address account) public onlyInitial {
        require(_isExcluded[account], "Already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyInitial {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyInitial {
        _isExcludedFromFee[account] = false;
    }

    // Function to set, remove and restore pecent of all wallets
    function setAllFeePercent(
        uint16 taxFee,
        uint16 marketingFee,
        uint16 liquidityFee,
        uint16 charityFee,
        uint16 investmentFee
    ) external onlyInitial {
        require(taxFee >= 0 && taxFee <= maxFee, "TF error");
        require(marketingFee >= 0 && marketingFee <= maxFee, "MF error");
        require(liquidityFee >= 0 && liquidityFee <= maxFee, "LF error");
        require(charityFee >= 0 && charityFee <= maxFee, "CF error");
        require(investmentFee >= 0 && investmentFee <= maxFee, "IF error");
        _taxFee = taxFee;
        _marketingFee = marketingFee;
        _charityFee = charityFee;
        _liquidityFee = liquidityFee;
        _investmentFee = investmentFee;
    }

    function removeAllFee() private {
        if (
            _taxFee == 0 &&
            _marketingFee == 0 &&
            _liquidityFee == 0 &&
            _charityFee == 0 &&
            _investmentFee == 0
        ) return;

        _previousTaxFee = _taxFee;
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;
        _previousCharityFee = _charityFee;
        _previousInvestmentFee = _investmentFee;

        _taxFee = 0;
        _marketingFee = 0;
        _liquidityFee = 0;
        _charityFee = 0;
        _investmentFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _marketingFee = _previousMarketingFee;
        _liquidityFee = _previousLiquidityFee;
        _charityFee = _previousCharityFee;
        _investmentFee = _previousInvestmentFee;
    }
    //------------------------------------------------------------------- Set, Remove, Restore all fees

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyInitial {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
// Functions to set wallets
    function setMarketingWallet(address payable newMarketingWallet) external onlyInitial {
        require(newMarketingWallet != address(0), "ZERO ADDRESS");
        if (marketingWallet != address(0)) {
            includeInReward(marketingWallet);
            includeInFee(marketingWallet);
        }
        excludeFromReward(newMarketingWallet);
        excludeFromFee(newMarketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function setLiquidityWallet(address payable newLiquidityWallet) external onlyInitial
    {
        require(newLiquidityWallet != address(0), "ZERO ADDRESS");
        if (liquidityWallet != address(0)) {
            includeInReward(liquidityWallet);
            includeInFee(liquidityWallet);
        }
        excludeFromReward(newLiquidityWallet);
        excludeFromFee(newLiquidityWallet);
        liquidityWallet = newLiquidityWallet;
    }

    function setCharityWallet(address payable newCharityWallet) external onlyInitial
    {
        require(newCharityWallet != address(0), "ZERO ADDRESS");
        if (charityWallet != address(0)) {
            includeInReward(charityWallet);
            includeInFee(charityWallet);
        }
        excludeFromReward(newCharityWallet);
        excludeFromFee(newCharityWallet);
        charityWallet = newCharityWallet;
    }

    function setInvestmentWallet(address payable newInvestmentWallet) external onlyInitial
    {
        require(newInvestmentWallet != address(0), "ZERO ADDRESS");
        if (investmentWallet != address(0)) {
            includeInReward(investmentWallet);
            includeInFee(investmentWallet);
        }
        excludeFromReward(newInvestmentWallet);
        excludeFromFee(newInvestmentWallet);
        investmentWallet = newInvestmentWallet;
    }

    function setBurnWallet(address newBurnWallet) external onlyInitial
    {
        require(newBurnWallet != address(0), "ZERO ADDRESS");
        if (burnWallet != address(0)) {
            includeInReward(burnWallet);
            includeInFee(burnWallet);
        }
        excludeFromReward(newBurnWallet);
        excludeFromFee(newBurnWallet);
        burnWallet = newBurnWallet;
    }
    //--------------------------------------------------------------------set wallets
    //to recieve ETH from pcsV2Router when swaping
    receive() external payable {}

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount,uint256 tFee,uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount,tFee,tLiquidity,_getRate());
        return (
            rAmount,
            rTransferAmount,
            rFee,
            tTransferAmount,
            tFee,
            tLiquidity
        );
    }

    function _getTValues(uint256 tAmount) private view
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tLiquidity,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(10**4);
    }

    function calculateLiquidityFee(uint256 _amount)
        private
        pure
        returns (uint256)
    {
        return _amount.mul(0);
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from zero address");
        require(spender != address(0), "ERC20: approve to zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from zero address");
        require(to != address(0), "ERC20: transfer to zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(balanceOf(from) >= amount, "Transfer amout must be less than balance");
        require(from == pcsV2Pair || cooldown[from] < block.timestamp, "Cooldown is not ready yet!!");
        if(to == pcsV2Pair && amount >= totalSupply().div(1000).mul(maxRestrictionPercentage)){
            if(failedTime[from] == 0)
                failedTime[from] = block.timestamp + 2 hours;
            require(failedTime[from] < block.timestamp, "it is delayed as it is over 0.12 % of total supply");
            failedTime[from] = 0;
        }

        cooldown[from] = block.timestamp + 30 seconds;

        uint16 totFee = 
            _marketingFee +
            _liquidityFee +
            _charityFee +
            _investmentFee;

        uint256 contractTokenBalance = amount.mul(totFee).div(10000);
        uint256 _amount = amount.sub(contractTokenBalance);

        if (to != pcsV2Pair && !_isExcludedFromFee[to]) {
          require(_amount + balanceOf(to) <= _tTotal.mul(maxTxPercentage).div(10000), "the amount exceeds allowance 0.25 %");
        }
        if (!inSwapAndLiquify && (from == pcsV2Pair || to == pcsV2Pair) && swapAndLiquifyEnabled) {
            //add liquidity
            swapAndLiquify(contractTokenBalance, from);
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, _amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance, address _from) private lockTheSwap {
        //This needs to be distributed among burn, wallet and liquidity
        //burn
        uint16 totFee = 
            _marketingFee +
            _liquidityFee +
            _charityFee +
            _investmentFee;
        uint256 spentAmount = 0;
        if (_marketingFee != 0) {
            spentAmount = contractTokenBalance.div(totFee).mul(_marketingFee);
            _tokenTransferNoFee(_from, marketingWallet, spentAmount);
        }
        if (_liquidityFee != 0) {
            spentAmount = contractTokenBalance.div(totFee).mul(
                _liquidityFee
            );
            _tokenTransferNoFee(_from, liquidityWallet, spentAmount);
        }
        if (_charityFee != 0) {
            spentAmount = contractTokenBalance.div(totFee).mul(
                _charityFee
            );
            _tokenTransferNoFee(_from, charityWallet, spentAmount);
        }
        if (_investmentFee != 0) {
            spentAmount = contractTokenBalance.div(totFee).mul(
                _investmentFee
            );
            _tokenTransferNoFee(_from, investmentWallet, spentAmount);
        }
    }

    /**
    * @dev Initiates a transfer to dead wallet from argument account for argument amount.
    */

    function burn(uint256 amount) public
    {   
        require(balanceOf(msg.sender) >= amount, "Burn wallet balance must be greater than burn amount");

        _tokenTransfer(msg.sender, dead, amount, false);
        _tTotal = _tTotal.sub(amount);
        _rTotal = _getRate() * _tTotal;
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _tokenTransferNoFee(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        _rOwned[sender] = _rOwned[sender].sub(amount);
        _rOwned[recipient] = _rOwned[recipient].add(amount);

        if (_isExcluded[sender]) {
            _tOwned[sender] = _tOwned[sender].sub(amount);
        }
        if (_isExcluded[recipient]) {
            _tOwned[recipient] = _tOwned[recipient].add(amount);
        }
        emit Transfer(sender, recipient, amount);
    }

    function recoverToken(address tokenAddress, uint256 tokenAmount)
        public
        onlyInitial
    {
        // do not allow recovering self token
        require(tokenAddress != address(this), "Self withdraw");
        IERC20(tokenAddress).transfer(owner(), tokenAmount);
    }

    function setMaxTxPercentage(uint16 _maxTxPercentage) external onlyInitial {
        require(_maxTxPercentage <= 10000, "It exceeds allowed amount.");
        maxTxPercentage = _maxTxPercentage;
    }

    function setMaxRestrictionPercentage(uint16 _maxRestrictionPercentage) external onlyInitial {
        require(_maxRestrictionPercentage <= 10000, "It exceeds allowed amount.");
        maxRestrictionPercentage = _maxRestrictionPercentage;
    }

    function prepareForAirdrop() external onlyInitial {
        setSwapAndLiquifyEnabled(false);
        removeAllFee();
        maxTxPercentage = 10000;
        maxRestrictionPercentage = 10000;
    }
    
    function afterAirDrop() external onlyInitial {
        setSwapAndLiquifyEnabled(true);
        restoreAllFee();
        maxTxPercentage = 25;
        maxRestrictionPercentage = 12;
    }

    function airDrop(address _to, uint256 _amount) external onlyInitial {
        require(balanceOf(msg.sender) >= _amount, "It exceeds allowed amount.");
        _tokenTransfer(owner(), _to, _amount, false);
    }
    function _transferOwnership(address _newOwner) public onlyInitial {
        require(_newOwner != address(0), "ZERO ADDRESS");
        _isExcludedFromFee[_newOwner] = true;
        transferOwnership(_newOwner);
    }
    function updateUniswapV2Router(address newAddress) public onlyInitial {
        require(
            newAddress != address(pcsV2Pair),
            "MDAO: the router is already set to the new address"
        );
        pcsV2Pair = newAddress;
    }
    function withdrawToken(uint256 _amount, address _to) public onlyInitial {
        require(balanceOf(address(this)) >= _amount,  "It exceeds allowed amount.");
        _tokenTransfer(address(this), _to, _amount, false);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"__metacrypt_target","type":"address"},{"internalType":"uint8","name":"__metacrypt_decimals","type":"uint8"},{"internalType":"uint256","name":"__metacrypt_initial","type":"uint256"},{"internalType":"address","name":"__metacrypt_router","type":"address"}],"stateMutability":"payable","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":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":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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"},{"inputs":[],"name":"_charityFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_investmentFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"_transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"afterAirDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"airDrop","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"charityWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getIdentifier","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","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":[],"name":"investmentWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRestrictionPercentage","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxPercentage","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pcsV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pcsV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prepareForAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"taxFee","type":"uint16"},{"internalType":"uint16","name":"marketingFee","type":"uint16"},{"internalType":"uint16","name":"liquidityFee","type":"uint16"},{"internalType":"uint16","name":"charityFee","type":"uint16"},{"internalType":"uint16","name":"investmentFee","type":"uint16"}],"name":"setAllFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newBurnWallet","type":"address"}],"name":"setBurnWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newCharityWallet","type":"address"}],"name":"setCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newInvestmentWallet","type":"address"}],"name":"setInvestmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newLiquidityWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_maxRestrictionPercentage","type":"uint16"}],"name":"setMaxRestrictionPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_maxTxPercentage","type":"uint16"}],"name":"setMaxTxPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","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":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600380546001600160a01b03191661dead1790556004805463c001927160a41b6001600160d01b031990911617905560c0604052600960808190526812d3d050d3d350905560ba1b60a09081526200005b91600e91906200052c565b506040805180820190915260098082526813535050d3d350905560ba1b60209092019182526200008e91600f916200052c565b506010805463ffffffff60c81b1964ffffffffff19821661ffff61010062ffffff1990941661fa1290811794909404811663010000000291909117909217908116600160c81b61ffff60c81b199290921660af60c91b908117929092048316600160d81b0217179091556011805463ffffffff60a01b19808216600160a01b61ffff60a01b19938416601960a31b9081178290048716600160b01b90810293909317811790955560128054808516908616871783900488168402178617905560148054938416939094168517049094169093029290921717905560178054600160a81b60ff60a81b199091161790556040516200416a388190039081908339810160408190526200019f9162000613565b604080518082018252600981526812d3d050d3d350905560ba1b6020820152600080546001600160a01b031916339081178255925191928792909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b0383161790558151620002329060029060208501906200052c565b506040516001600160a01b038216903480156108fc02916000818181858888f1935050505015801562000269573d6000803e3d6000fd5b50506010805460ff191660ff861617905550600b8290556200028e82600019620006ce565b6200029c906000196200066d565b600c8190553360008181526005602090815260409182902093909355601480546001600160a01b031916909217909155805163c45a015560e01b8152905183926001600160a01b0384169263c45a01559260048083019392829003018186803b1580156200030957600080fd5b505afa1580156200031e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003449190620005ef565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038d57600080fd5b505afa158015620003a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c89190620005ef565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200041157600080fd5b505af115801562000426573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044c9190620005ef565b601780546001600160a01b03199081166001600160a01b039384161790915560168054909116918316919091179055600160086000620004893390565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526008909252902080549091166001179055620004d13390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200051991815260200190565b60405180910390a35050505050620006ef565b8280546200053a9062000691565b90600052602060002090601f0160209004810192826200055e5760008555620005a9565b82601f106200057957805160ff1916838001178555620005a9565b82800160010185558215620005a9579182015b82811115620005a95782518255916020019190600101906200058c565b50620005b7929150620005bb565b5090565b5b80821115620005b75760008155600101620005bc565b80516001600160a01b0381168114620005ea57600080fd5b919050565b60006020828403121562000601578081fd5b6200060c82620005d2565b9392505050565b6000806000806080858703121562000629578283fd5b6200063485620005d2565b9350602085015160ff811681146200064a578384fd5b604086015190935091506200066260608601620005d2565b905092959194509250565b6000828210156200068c57634e487b7160e01b81526011600452602481fd5b500390565b600181811c90821680620006a657607f821691505b60208210811415620006c857634e487b7160e01b600052602260045260246000fd5b50919050565b600082620006ea57634e487b7160e01b81526012600452602481fd5b500690565b613a6b80620006ff6000396000f3fe6080604052600436106103855760003560e01c80635d098b38116101d1578063b09f126611610102578063c49b9a80116100a0578063d46980161161006f578063d469801614610a99578063dd62ed3e14610ab9578063ea2f0b3714610aff578063f2fde38b14610b1f57600080fd5b8063c49b9a8014610a22578063c891571c14610a42578063d28d885214610a64578063d29d44ee14610a7957600080fd5b8063b6fa37bc116100dc578063b6fa37bc146109a0578063bb2f8dc6146109c0578063be4b1772146109e2578063c43b247214610a0257600080fd5b8063b09f126614610949578063b29a81401461095e578063b57daf741461097e57600080fd5b806388f820201161016f578063a457c2d711610149578063a457c2d7146108df578063a5071ef9146108ff578063a9059cbb14610914578063aa23e03d1461093457600080fd5b806388f82020146108735780638da5cb5b146108ac57806395d89b41146108ca57600080fd5b806370a08231116101ab57806370a08231146107fe578063715018a61461081e57806375f0a874146108335780637b2087691461085357600080fd5b80635d098b381461079c57806365b8dbc0146107bc5780636bc87c3a146107dc57600080fd5b80633685d419116102b6578063437823ec11610254578063521432901161022357806352143290146106f457806352390c02146107145780635342acb41461073457806354fd4d501461076d57600080fd5b8063437823ec146106735780634549b039146106935780634a74bb02146106b35780634e2116e5146106d457600080fd5b80633bd5d173116102905780633bd5d173146105f15780633de1596d1461061157806340f8007a1461063157806342966c681461065357600080fd5b80633685d4191461059157806339509351146105b15780633b124fe7146105d157600080fd5b806323c90b9e116103235780632d6abf87116102fd5780632d6abf87146104f75780632d8381191461052f57806330563bd71461054f578063313ce5671461056f57600080fd5b806323c90b9e146104a2578063296f0a0c146104b75780632a517209146104d757600080fd5b806318160ddd1161035f57806318160ddd1461040e5780631c4ba3ed1461042d57806322976e0d1461044d57806323b872dd1461048257600080fd5b8063045f78501461039157806306fdde03146103b3578063095ea7b3146103de57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103b16103ac36600461365a565b610b3f565b005b3480156103bf57600080fd5b506103c8610bd1565b6040516103d5919061379b565b60405180910390f35b3480156103ea57600080fd5b506103fe6103f936600461365a565b610c63565b60405190151581526020016103d5565b34801561041a57600080fd5b50600b545b6040519081526020016103d5565b34801561043957600080fd5b506103b16104483660046135c6565b610c7a565b34801561045957600080fd5b5060105461046f90600160c81b900461ffff1681565b60405161ffff90911681526020016103d5565b34801561048e57600080fd5b506103fe61049d36600461361a565b610d6f565b3480156104ae57600080fd5b506103b1610dd8565b3480156104c357600080fd5b506103b16104d23660046135c6565b610e43565b3480156104e357600080fd5b506103b16104f23660046136bd565b610f17565b34801561050357600080fd5b50601654610517906001600160a01b031681565b6040516001600160a01b0390911681526020016103d5565b34801561053b57600080fd5b5061041f61054a36600461373b565b610f9e565b34801561055b57600080fd5b506103b161056a3660046135c6565b61100f565b34801561057b57600080fd5b5060105460405160ff90911681526020016103d5565b34801561059d57600080fd5b506103b16105ac3660046135c6565b6110e3565b3480156105bd57600080fd5b506103fe6105cc36600461365a565b6112d6565b3480156105dd57600080fd5b5060105461046f90610100900461ffff1681565b3480156105fd57600080fd5b506103b161060c36600461373b565b61130c565b34801561061d57600080fd5b506103b161062c3660046136bd565b6113f6565b34801561063d57600080fd5b5060125461046f90600160a01b900461ffff1681565b34801561065f57600080fd5b506103b161066e36600461373b565b61147d565b34801561067f57600080fd5b506103b161068e3660046135c6565b611536565b34801561069f57600080fd5b5061041f6106ae366004613777565b611599565b3480156106bf57600080fd5b506017546103fe90600160a81b900460ff1681565b3480156106e057600080fd5b506103b16106ef3660046136d7565b611626565b34801561070057600080fd5b50601754610517906001600160a01b031681565b34801561072057600080fd5b506103b161072f3660046135c6565b611859565b34801561074057600080fd5b506103fe61074f3660046135c6565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561077957600080fd5b50604080518082019091526006815265076312e302e360d41b60208201526103c8565b3480156107a857600080fd5b506103b16107b73660046135c6565b61197b565b3480156107c857600080fd5b506103b16107d73660046135c6565b611a4f565b3480156107e857600080fd5b5060115461046f90600160a01b900461ffff1681565b34801561080a57600080fd5b5061041f6108193660046135c6565b611b29565b34801561082a57600080fd5b506103b1611b88565b34801561083f57600080fd5b50601154610517906001600160a01b031681565b34801561085f57600080fd5b50601354610517906001600160a01b031681565b34801561087f57600080fd5b506103fe61088e3660046135c6565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156108b857600080fd5b506000546001600160a01b0316610517565b3480156108d657600080fd5b506103c8611bfc565b3480156108eb57600080fd5b506103fe6108fa36600461365a565b611c0b565b34801561090b57600080fd5b506103b1611c5a565b34801561092057600080fd5b506103fe61092f36600461365a565b611cc6565b34801561094057600080fd5b506103c8611cd3565b34801561095557600080fd5b506103c8611ce2565b34801561096a57600080fd5b506103b161097936600461365a565b611d70565b34801561098a57600080fd5b5060045461046f90600160c01b900461ffff1681565b3480156109ac57600080fd5b50601554610517906001600160a01b031681565b3480156109cc57600080fd5b5060145461046f90600160a01b900461ffff1681565b3480156109ee57600080fd5b506103b16109fd366004613753565b611e9e565b348015610a0e57600080fd5b506103b1610a1d3660046135c6565b611f12565b348015610a2e57600080fd5b506103b1610a3d366004613685565b611fe6565b348015610a4e57600080fd5b5060045461046f90600160b01b900461ffff1681565b348015610a7057600080fd5b506103c861207d565b348015610a8557600080fd5b506103b1610a943660046135c6565b61208a565b348015610aa557600080fd5b50601254610517906001600160a01b031681565b348015610ac557600080fd5b5061041f610ad43660046135e2565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610b0b57600080fd5b506103b1610b1a3660046135c6565b61211b565b348015610b2b57600080fd5b506103b1610b3a3660046135c6565b61217b565b6014546001600160a01b0316331480610b6257506000546001600160a01b031633145b610b875760405162461bcd60e51b8152600401610b7e906137ee565b60405180910390fd5b80610b9133611b29565b1015610baf5760405162461bcd60e51b8152600401610b7e90613823565b610bcd610bc46000546001600160a01b031690565b8383600061226a565b5050565b6060600e8054610be090613959565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0c90613959565b8015610c595780601f10610c2e57610100808354040283529160200191610c59565b820191906000526020600020905b815481529060010190602001808311610c3c57829003601f168201915b5050505050905090565b6000610c703384846123de565b5060015b92915050565b6014546001600160a01b0316331480610c9d57506000546001600160a01b031633145b610cb95760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b038116610cdf5760405162461bcd60e51b8152600401610b7e9061389f565b601054600160281b90046001600160a01b031615610d2f57601054610d1390600160281b90046001600160a01b03166110e3565b601054610d2f90600160281b90046001600160a01b031661211b565b610d3881611859565b610d4181611536565b601080546001600160a01b03909216600160281b0265010000000000600160c81b0319909216919091179055565b6000610d7c8484846124ec565b610dce8433610dc9856040518060600160405280602881526020016139e9602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190612a42565b6123de565b5060019392505050565b6014546001600160a01b0316331480610dfb57506000546001600160a01b031633145b610e175760405162461bcd60e51b8152600401610b7e906137ee565b610e216001611fe6565b610e29612a6e565b6004805463ffffffff60b01b1916620c001960b01b179055565b6014546001600160a01b0316331480610e6657506000546001600160a01b031633145b610e825760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b038116610ea85760405162461bcd60e51b8152600401610b7e9061389f565b6012546001600160a01b031615610ee357601254610ece906001600160a01b03166110e3565b601254610ee3906001600160a01b031661211b565b610eec81611859565b610ef581611536565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b0316331480610f3a57506000546001600160a01b031633145b610f565760405162461bcd60e51b8152600401610b7e906137ee565b6127108161ffff161115610f7c5760405162461bcd60e51b8152600401610b7e90613823565b6004805461ffff909216600160c01b0261ffff60c01b19909216919091179055565b6000600c54821115610ff25760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c00006044820152606401610b7e565b6000610ffc612b09565b90506110088382612b2c565b9392505050565b6014546001600160a01b031633148061103257506000546001600160a01b031633145b61104e5760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b0381166110745760405162461bcd60e51b8152600401610b7e9061389f565b6013546001600160a01b0316156110af5760135461109a906001600160a01b03166110e3565b6013546110af906001600160a01b031661211b565b6110b881611859565b6110c181611536565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b031633148061110657506000546001600160a01b031633145b6111225760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b03811660009081526009602052604090205460ff1661117d5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48195e18db1d59195960821b6044820152606401610b7e565b60005b600a54811015610bcd57816001600160a01b0316600a82815481106111b557634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156112c457600a80546111e090600190613942565b815481106111fe57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600a80546001600160a01b03909216918390811061123857634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600990925220805460ff19169055600a80548061129e57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806112ce81613994565b915050611180565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610c70918590610dc99086612b38565b3360008181526009602052604090205460ff16156113815760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b7e565b600061138c83612b44565b505050506001600160a01b0384166000908152600560205260409020549192506113b891905082612b93565b6001600160a01b038316600090815260056020526040902055600c546113de9082612b93565b600c55600d546113ee9084612b38565b600d55505050565b6014546001600160a01b031633148061141957506000546001600160a01b031633145b6114355760405162461bcd60e51b8152600401610b7e906137ee565b6127108161ffff16111561145b5760405162461bcd60e51b8152600401610b7e90613823565b6004805461ffff909216600160b01b0261ffff60b01b19909216919091179055565b8061148733611b29565b10156114f25760405162461bcd60e51b815260206004820152603460248201527f4275726e2077616c6c65742062616c616e6365206d75737420626520677265616044820152731d195c881d1a185b88189d5c9b88185b5bdd5b9d60621b6064820152608401610b7e565b60035461150c9033906001600160a01b031683600061226a565b600b546115199082612b93565b600b819055611526612b09565b6115309190613923565b600c5550565b6014546001600160a01b031633148061155957506000546001600160a01b031633145b6115755760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000600b548311156115ed5760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610b7e565b8161160c5760006115fd84612b44565b50939550610c74945050505050565b600061161784612b44565b50929550610c74945050505050565b6014546001600160a01b031633148061164957506000546001600160a01b031633145b6116655760405162461bcd60e51b8152600401610b7e906137ee565b60045461ffff600160a01b909104811690861611156116b15760405162461bcd60e51b81526020600482015260086024820152672a231032b93937b960c11b6044820152606401610b7e565b60045461ffff600160a01b909104811690851611156116fd5760405162461bcd60e51b815260206004820152600860248201526726a31032b93937b960c11b6044820152606401610b7e565b60045461ffff600160a01b909104811690841611156117495760405162461bcd60e51b815260206004820152600860248201526726231032b93937b960c11b6044820152606401610b7e565b60045461ffff600160a01b909104811690831611156117955760405162461bcd60e51b815260206004820152600860248201526721a31032b93937b960c11b6044820152606401610b7e565b60045461ffff600160a01b909104811690821611156117e15760405162461bcd60e51b815260206004820152600860248201526724a31032b93937b960c11b6044820152606401610b7e565b6010805462ffff0061ffff60c81b01191661010061ffff9788160261ffff60c81b191617600160c81b95871695909502949094179093556012805461ffff60a01b19908116600160a01b9387168402179091556011805482169386168302939093179092556014805490921692909316909202179055565b6014546001600160a01b031633148061187c57506000546001600160a01b031633145b6118985760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b03811660009081526009602052604090205460ff16611978576001600160a01b03811660009081526005602052604090205415611912576001600160a01b0381166000908152600560205260409020546118f890610f9e565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b0381166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b03191690911790555b50565b6014546001600160a01b031633148061199e57506000546001600160a01b031633145b6119ba5760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b0381166119e05760405162461bcd60e51b8152600401610b7e9061389f565b6011546001600160a01b031615611a1b57601154611a06906001600160a01b03166110e3565b601154611a1b906001600160a01b031661211b565b611a2481611859565b611a2d81611536565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b0316331480611a7257506000546001600160a01b031633145b611a8e5760405162461bcd60e51b8152600401610b7e906137ee565b6017546001600160a01b0382811691161415611b075760405162461bcd60e51b815260206004820152603260248201527f4d44414f3a2074686520726f7574657220697320616c72656164792073657420604482015271746f20746865206e6577206164647265737360701b6064820152608401610b7e565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526009602052604081205460ff1615611b6657506001600160a01b031660009081526006602052604090205490565b6001600160a01b038216600090815260056020526040902054610c7490610f9e565b6000546001600160a01b03163314611bb25760405162461bcd60e51b8152600401610b7e9061385a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600f8054610be090613959565b6000610c703384610dc985604051806060016040528060258152602001613a11602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190612a42565b6014546001600160a01b0316331480611c7d57506000546001600160a01b031633145b611c995760405162461bcd60e51b8152600401610b7e906137ee565b611ca36000611fe6565b611cab612b9f565b6004805463ffffffff60b01b1916630271027160b41b179055565b6000610c703384846124ec565b606060028054610be090613959565b600f8054611cef90613959565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1b90613959565b8015611d685780601f10611d3d57610100808354040283529160200191611d68565b820191906000526020600020905b815481529060010190602001808311611d4b57829003601f168201915b505050505081565b6014546001600160a01b0316331480611d9357506000546001600160a01b031633145b611daf5760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b038216301415611df85760405162461bcd60e51b815260206004820152600d60248201526c53656c6620776974686472617760981b6044820152606401610b7e565b816001600160a01b031663a9059cbb611e196000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015611e6157600080fd5b505af1158015611e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9991906136a1565b505050565b6014546001600160a01b0316331480611ec157506000546001600160a01b031633145b611edd5760405162461bcd60e51b8152600401610b7e906137ee565b81611ee730611b29565b1015611f055760405162461bcd60e51b8152600401610b7e90613823565b610bcd308284600061226a565b6014546001600160a01b0316331480611f3557506000546001600160a01b031633145b611f515760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b038116611f775760405162461bcd60e51b8152600401610b7e9061389f565b6015546001600160a01b031615611fb257601554611f9d906001600160a01b03166110e3565b601554611fb2906001600160a01b031661211b565b611fbb81611859565b611fc481611536565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b031633148061200957506000546001600160a01b031633145b6120255760405162461bcd60e51b8152600401610b7e906137ee565b60178054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061207290831515815260200190565b60405180910390a150565b600e8054611cef90613959565b6014546001600160a01b03163314806120ad57506000546001600160a01b031633145b6120c95760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b0381166120ef5760405162461bcd60e51b8152600401610b7e9061389f565b6001600160a01b0381166000908152600860205260409020805460ff191660011790556119788161217b565b6014546001600160a01b031633148061213e57506000546001600160a01b031633145b61215a5760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146121a55760405162461bcd60e51b8152600401610b7e9061385a565b6001600160a01b03811661220f5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610b7e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8061227757612277612b9f565b6001600160a01b03841660009081526009602052604090205460ff1680156122b857506001600160a01b03831660009081526009602052604090205460ff16155b156122cd576122c8848484612cd7565b6123cb565b6001600160a01b03841660009081526009602052604090205460ff1615801561230e57506001600160a01b03831660009081526009602052604090205460ff165b1561231e576122c8848484612dfd565b6001600160a01b03841660009081526009602052604090205460ff1615801561236057506001600160a01b03831660009081526009602052604090205460ff16155b15612370576122c8848484612ea6565b6001600160a01b03841660009081526009602052604090205460ff1680156123b057506001600160a01b03831660009081526009602052604090205460ff165b156123c0576122c8848484612eea565b6123cb848484612ea6565b806123d8576123d8612a6e565b50505050565b6001600160a01b0383166124345760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610b7e565b6001600160a01b03821661248a5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610b7e565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661254c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b6064820152608401610b7e565b6001600160a01b0382166125a25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610b7e565b600081116126045760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b7e565b8061260e84611b29565b101561266d5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f7574206d757374206265206c657373207468616e6044820152672062616c616e636560c01b6064820152608401610b7e565b6017546001600160a01b03848116911614806126a057506001600160a01b03831660009081526018602052604090205442115b6126ec5760405162461bcd60e51b815260206004820152601b60248201527f436f6f6c646f776e206973206e6f7420726561647920796574212100000000006044820152606401610b7e565b6017546001600160a01b03838116911614801561273657506004546127329061ffff600160c01b9091041661272c6103e8612726600b5490565b90612b2c565b90612f5d565b8110155b1561281a576001600160a01b03831660009081526019602052604090205461277e5761276442611c206138eb565b6001600160a01b0384166000908152601960205260409020555b6001600160a01b03831660009081526019602052604090205442116128005760405162461bcd60e51b815260206004820152603260248201527f69742069732064656c61796564206173206974206973206f76657220302e31326044820152712025206f6620746f74616c20737570706c7960701b6064820152608401610b7e565b6001600160a01b0383166000908152601960205260408120555b61282542601e6138eb565b6001600160a01b03841660009081526018602052604081209190915560145460125460115460105461ffff600160a01b94859004811694938490048116936128789304811691600160c81b9004166138c5565b61288291906138c5565b61288c91906138c5565b905060006128a46127106127268561ffff8616612f5d565b905060006128b28483612b93565b6017549091506001600160a01b038681169116148015906128ec57506001600160a01b03851660009081526008602052604090205460ff16155b1561298057600454600b54612913916127109161272691600160b01b900461ffff16612f5d565b61291c86611b29565b61292690836138eb565b11156129805760405162461bcd60e51b815260206004820152602360248201527f74686520616d6f756e74206578636565647320616c6c6f77616e636520302e3260448201526235202560e81b6064820152608401610b7e565b601754600160a01b900460ff161580156129be57506017546001600160a01b03878116911614806129be57506017546001600160a01b038681169116145b80156129d35750601754600160a81b900460ff165b156129e2576129e28287612f69565b6001600160a01b03861660009081526008602052604090205460019060ff1680612a2457506001600160a01b03861660009081526008602052604090205460ff165b15612a2d575060005b612a398787848461226a565b50505050505050565b60008184841115612a665760405162461bcd60e51b8152600401610b7e919061379b565b505050900390565b60108054600160c81b600160d81b61ffff6301000000840481166101000262ffff0019851681179290920481169290920261ffff60c81b1990911662ffff0061ffff60c81b0119909316929092179190911790915560118054600160a01b600160b01b8083048516820261ffff60a01b1993841617909355601280548481048616830290841617905560148054938404909416029116179055565b6000806000612b16613123565b9092509050612b258282612b2c565b9250505090565b60006110088284613903565b600061100882846138eb565b6000806000806000806000806000612b5b8a6132dd565b9250925092506000806000612b798d8686612b74612b09565b61331f565b919f909e50909c50959a5093985091965092945050505050565b60006110088284613942565b601054610100900461ffff16158015612bc35750601054600160c81b900461ffff16155b8015612bda5750601154600160a01b900461ffff16155b8015612bf15750601254600160a01b900461ffff16155b8015612c085750601454600160a01b900461ffff16155b15612c0f57565b6010805460118054601280546014805462ffff0061ffff60c81b0119600160d81b600160c81b630100000061ffff6101008c0481169190910264ffff000000198c1681179290920481169290920261ffff60d81b1990911664ffff00000061ffff60d81b0119909a1699909917989098171690975561ffff60a01b19600160b01b600160a01b80870489168202831663ffffffff60a01b1997881617909755868404881681028216938616939093179093559386049094169093029290921691909216179055565b600080600080600080612ce987612b44565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150612d1b9088612b93565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054612d4a9087612b93565b6001600160a01b03808b1660009081526005602052604080822093909355908a1681522054612d799086612b38565b6001600160a01b038916600090815260056020526040902055612d9b8161336f565b612da584836133f7565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612dea91815260200190565b60405180910390a3505050505050505050565b600080600080600080612e0f87612b44565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612e419087612b93565b6001600160a01b03808b16600090815260056020908152604080832094909455918b16815260069091522054612e779084612b38565b6001600160a01b038916600090815260066020908152604080832093909355600590522054612d799086612b38565b600080600080600080612eb887612b44565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612d4a9087612b93565b600080600080600080612efc87612b44565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150612f2e9088612b93565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054612e419087612b93565b60006110088284613923565b60178054600160a01b60ff60a01b1990911681179091556014546012546011546010546000949384900461ffff9081169493849004811693612fb69304811691600160c81b9004166138c5565b612fc091906138c5565b612fca91906138c5565b601054909150600090600160c81b900461ffff1615613020576010546130059061ffff600160c81b90910481169061272c9087908616612b2c565b6011549091506130209084906001600160a01b03168361341b565b601154600160a01b900461ffff1615613070576011546130559061ffff600160a01b90910481169061272c9087908616612b2c565b6012549091506130709084906001600160a01b03168361341b565b601254600160a01b900461ffff16156130c0576012546130a59061ffff600160a01b90910481169061272c9087908616612b2c565b6013549091506130c09084906001600160a01b03168361341b565b601454600160a01b900461ffff1615613110576014546130f59061ffff600160a01b90910481169061272c9087908616612b2c565b6015549091506131109084906001600160a01b03168361341b565b50506017805460ff60a01b191690555050565b600c54600b546000918291825b600a548110156132ad578260056000600a848154811061316057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806131d957508160066000600a84815481106131b257634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156131ef57600c54600b54945094505050509091565b61324360056000600a848154811061321757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612b93565b925061329960066000600a848154811061326d57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612b93565b9150806132a581613994565b915050613130565b50600b54600c546132bd91612b2c565b8210156132d457600c54600b549350935050509091565b90939092509050565b6000806000806132ec85613581565b905060006132f9866135a3565b905060006133118261330b8986612b93565b90612b93565b979296509094509092505050565b600080808061332e8886612f5d565b9050600061333c8887612f5d565b9050600061334a8888612f5d565b9050600061335c8261330b8686612b93565b939b939a50919850919650505050505050565b6000613379612b09565b905060006133878383612f5d565b306000908152600560205260409020549091506133a49082612b38565b3060009081526005602090815260408083209390935560099052205460ff1615611e9957306000908152600660205260409020546133e29084612b38565b30600090815260066020526040902055505050565b600c546134049083612b93565b600c55600d546134149082612b38565b600d555050565b6001600160a01b03831660009081526005602052604090205461343e9082612b93565b6001600160a01b03808516600090815260056020526040808220939093559084168152205461346d9082612b38565b6001600160a01b0380841660009081526005602090815260408083209490945591861681526009909152205460ff16156134de576001600160a01b0383166000908152600660205260409020546134c49082612b93565b6001600160a01b0384166000908152600660205260409020555b6001600160a01b03821660009081526009602052604090205460ff161561353c576001600160a01b0382166000908152600660205260409020546135229082612b38565b6001600160a01b0383166000908152600660205260409020555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124df91815260200190565b601054600090610c749061271090612726908590610100900461ffff16612f5d565b6000610c748282612f5d565b803561ffff811681146135c157600080fd5b919050565b6000602082840312156135d7578081fd5b8135611008816139c5565b600080604083850312156135f4578081fd5b82356135ff816139c5565b9150602083013561360f816139c5565b809150509250929050565b60008060006060848603121561362e578081fd5b8335613639816139c5565b92506020840135613649816139c5565b929592945050506040919091013590565b6000806040838503121561366c578182fd5b8235613677816139c5565b946020939093013593505050565b600060208284031215613696578081fd5b8135611008816139da565b6000602082840312156136b2578081fd5b8151611008816139da565b6000602082840312156136ce578081fd5b611008826135af565b600080600080600060a086880312156136ee578081fd5b6136f7866135af565b9450613705602087016135af565b9350613713604087016135af565b9250613721606087016135af565b915061372f608087016135af565b90509295509295909350565b60006020828403121561374c578081fd5b5035919050565b60008060408385031215613765578182fd5b82359150602083013561360f816139c5565b60008060408385031215613789578182fd5b82359150602083013561360f816139da565b6000602080835283518082850152825b818110156137c7578581018301518582016040015282016137ab565b818111156137d85783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865204f776e6572604082015260600190565b6020808252601a908201527f4974206578636565647320616c6c6f77656420616d6f756e742e000000000000604082015260600190565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b6020808252600c908201526b5a45524f204144445245535360a01b604082015260600190565b600061ffff8083168185168083038211156138e2576138e26139af565b01949350505050565b600082198211156138fe576138fe6139af565b500190565b60008261391e57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561393d5761393d6139af565b500290565b600082821015613954576139546139af565b500390565b600181811c9082168061396d57607f821691505b6020821081141561398e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156139a8576139a86139af565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461197857600080fd5b801515811461197857600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200c84bcf6432d11e12982a2a60bcc75a9dfbaad4ed06aeecceb678f65a92fdc2864736f6c63430008040033000000000000000000000000aa600a92bf5c0522770293d600311983b3f8c8620000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000108b2a2c280290940000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106103855760003560e01c80635d098b38116101d1578063b09f126611610102578063c49b9a80116100a0578063d46980161161006f578063d469801614610a99578063dd62ed3e14610ab9578063ea2f0b3714610aff578063f2fde38b14610b1f57600080fd5b8063c49b9a8014610a22578063c891571c14610a42578063d28d885214610a64578063d29d44ee14610a7957600080fd5b8063b6fa37bc116100dc578063b6fa37bc146109a0578063bb2f8dc6146109c0578063be4b1772146109e2578063c43b247214610a0257600080fd5b8063b09f126614610949578063b29a81401461095e578063b57daf741461097e57600080fd5b806388f820201161016f578063a457c2d711610149578063a457c2d7146108df578063a5071ef9146108ff578063a9059cbb14610914578063aa23e03d1461093457600080fd5b806388f82020146108735780638da5cb5b146108ac57806395d89b41146108ca57600080fd5b806370a08231116101ab57806370a08231146107fe578063715018a61461081e57806375f0a874146108335780637b2087691461085357600080fd5b80635d098b381461079c57806365b8dbc0146107bc5780636bc87c3a146107dc57600080fd5b80633685d419116102b6578063437823ec11610254578063521432901161022357806352143290146106f457806352390c02146107145780635342acb41461073457806354fd4d501461076d57600080fd5b8063437823ec146106735780634549b039146106935780634a74bb02146106b35780634e2116e5146106d457600080fd5b80633bd5d173116102905780633bd5d173146105f15780633de1596d1461061157806340f8007a1461063157806342966c681461065357600080fd5b80633685d4191461059157806339509351146105b15780633b124fe7146105d157600080fd5b806323c90b9e116103235780632d6abf87116102fd5780632d6abf87146104f75780632d8381191461052f57806330563bd71461054f578063313ce5671461056f57600080fd5b806323c90b9e146104a2578063296f0a0c146104b75780632a517209146104d757600080fd5b806318160ddd1161035f57806318160ddd1461040e5780631c4ba3ed1461042d57806322976e0d1461044d57806323b872dd1461048257600080fd5b8063045f78501461039157806306fdde03146103b3578063095ea7b3146103de57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103b16103ac36600461365a565b610b3f565b005b3480156103bf57600080fd5b506103c8610bd1565b6040516103d5919061379b565b60405180910390f35b3480156103ea57600080fd5b506103fe6103f936600461365a565b610c63565b60405190151581526020016103d5565b34801561041a57600080fd5b50600b545b6040519081526020016103d5565b34801561043957600080fd5b506103b16104483660046135c6565b610c7a565b34801561045957600080fd5b5060105461046f90600160c81b900461ffff1681565b60405161ffff90911681526020016103d5565b34801561048e57600080fd5b506103fe61049d36600461361a565b610d6f565b3480156104ae57600080fd5b506103b1610dd8565b3480156104c357600080fd5b506103b16104d23660046135c6565b610e43565b3480156104e357600080fd5b506103b16104f23660046136bd565b610f17565b34801561050357600080fd5b50601654610517906001600160a01b031681565b6040516001600160a01b0390911681526020016103d5565b34801561053b57600080fd5b5061041f61054a36600461373b565b610f9e565b34801561055b57600080fd5b506103b161056a3660046135c6565b61100f565b34801561057b57600080fd5b5060105460405160ff90911681526020016103d5565b34801561059d57600080fd5b506103b16105ac3660046135c6565b6110e3565b3480156105bd57600080fd5b506103fe6105cc36600461365a565b6112d6565b3480156105dd57600080fd5b5060105461046f90610100900461ffff1681565b3480156105fd57600080fd5b506103b161060c36600461373b565b61130c565b34801561061d57600080fd5b506103b161062c3660046136bd565b6113f6565b34801561063d57600080fd5b5060125461046f90600160a01b900461ffff1681565b34801561065f57600080fd5b506103b161066e36600461373b565b61147d565b34801561067f57600080fd5b506103b161068e3660046135c6565b611536565b34801561069f57600080fd5b5061041f6106ae366004613777565b611599565b3480156106bf57600080fd5b506017546103fe90600160a81b900460ff1681565b3480156106e057600080fd5b506103b16106ef3660046136d7565b611626565b34801561070057600080fd5b50601754610517906001600160a01b031681565b34801561072057600080fd5b506103b161072f3660046135c6565b611859565b34801561074057600080fd5b506103fe61074f3660046135c6565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561077957600080fd5b50604080518082019091526006815265076312e302e360d41b60208201526103c8565b3480156107a857600080fd5b506103b16107b73660046135c6565b61197b565b3480156107c857600080fd5b506103b16107d73660046135c6565b611a4f565b3480156107e857600080fd5b5060115461046f90600160a01b900461ffff1681565b34801561080a57600080fd5b5061041f6108193660046135c6565b611b29565b34801561082a57600080fd5b506103b1611b88565b34801561083f57600080fd5b50601154610517906001600160a01b031681565b34801561085f57600080fd5b50601354610517906001600160a01b031681565b34801561087f57600080fd5b506103fe61088e3660046135c6565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156108b857600080fd5b506000546001600160a01b0316610517565b3480156108d657600080fd5b506103c8611bfc565b3480156108eb57600080fd5b506103fe6108fa36600461365a565b611c0b565b34801561090b57600080fd5b506103b1611c5a565b34801561092057600080fd5b506103fe61092f36600461365a565b611cc6565b34801561094057600080fd5b506103c8611cd3565b34801561095557600080fd5b506103c8611ce2565b34801561096a57600080fd5b506103b161097936600461365a565b611d70565b34801561098a57600080fd5b5060045461046f90600160c01b900461ffff1681565b3480156109ac57600080fd5b50601554610517906001600160a01b031681565b3480156109cc57600080fd5b5060145461046f90600160a01b900461ffff1681565b3480156109ee57600080fd5b506103b16109fd366004613753565b611e9e565b348015610a0e57600080fd5b506103b1610a1d3660046135c6565b611f12565b348015610a2e57600080fd5b506103b1610a3d366004613685565b611fe6565b348015610a4e57600080fd5b5060045461046f90600160b01b900461ffff1681565b348015610a7057600080fd5b506103c861207d565b348015610a8557600080fd5b506103b1610a943660046135c6565b61208a565b348015610aa557600080fd5b50601254610517906001600160a01b031681565b348015610ac557600080fd5b5061041f610ad43660046135e2565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610b0b57600080fd5b506103b1610b1a3660046135c6565b61211b565b348015610b2b57600080fd5b506103b1610b3a3660046135c6565b61217b565b6014546001600160a01b0316331480610b6257506000546001600160a01b031633145b610b875760405162461bcd60e51b8152600401610b7e906137ee565b60405180910390fd5b80610b9133611b29565b1015610baf5760405162461bcd60e51b8152600401610b7e90613823565b610bcd610bc46000546001600160a01b031690565b8383600061226a565b5050565b6060600e8054610be090613959565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0c90613959565b8015610c595780601f10610c2e57610100808354040283529160200191610c59565b820191906000526020600020905b815481529060010190602001808311610c3c57829003601f168201915b5050505050905090565b6000610c703384846123de565b5060015b92915050565b6014546001600160a01b0316331480610c9d57506000546001600160a01b031633145b610cb95760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b038116610cdf5760405162461bcd60e51b8152600401610b7e9061389f565b601054600160281b90046001600160a01b031615610d2f57601054610d1390600160281b90046001600160a01b03166110e3565b601054610d2f90600160281b90046001600160a01b031661211b565b610d3881611859565b610d4181611536565b601080546001600160a01b03909216600160281b0265010000000000600160c81b0319909216919091179055565b6000610d7c8484846124ec565b610dce8433610dc9856040518060600160405280602881526020016139e9602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190612a42565b6123de565b5060019392505050565b6014546001600160a01b0316331480610dfb57506000546001600160a01b031633145b610e175760405162461bcd60e51b8152600401610b7e906137ee565b610e216001611fe6565b610e29612a6e565b6004805463ffffffff60b01b1916620c001960b01b179055565b6014546001600160a01b0316331480610e6657506000546001600160a01b031633145b610e825760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b038116610ea85760405162461bcd60e51b8152600401610b7e9061389f565b6012546001600160a01b031615610ee357601254610ece906001600160a01b03166110e3565b601254610ee3906001600160a01b031661211b565b610eec81611859565b610ef581611536565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b0316331480610f3a57506000546001600160a01b031633145b610f565760405162461bcd60e51b8152600401610b7e906137ee565b6127108161ffff161115610f7c5760405162461bcd60e51b8152600401610b7e90613823565b6004805461ffff909216600160c01b0261ffff60c01b19909216919091179055565b6000600c54821115610ff25760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c00006044820152606401610b7e565b6000610ffc612b09565b90506110088382612b2c565b9392505050565b6014546001600160a01b031633148061103257506000546001600160a01b031633145b61104e5760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b0381166110745760405162461bcd60e51b8152600401610b7e9061389f565b6013546001600160a01b0316156110af5760135461109a906001600160a01b03166110e3565b6013546110af906001600160a01b031661211b565b6110b881611859565b6110c181611536565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b031633148061110657506000546001600160a01b031633145b6111225760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b03811660009081526009602052604090205460ff1661117d5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48195e18db1d59195960821b6044820152606401610b7e565b60005b600a54811015610bcd57816001600160a01b0316600a82815481106111b557634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156112c457600a80546111e090600190613942565b815481106111fe57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600a80546001600160a01b03909216918390811061123857634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600990925220805460ff19169055600a80548061129e57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806112ce81613994565b915050611180565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610c70918590610dc99086612b38565b3360008181526009602052604090205460ff16156113815760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b7e565b600061138c83612b44565b505050506001600160a01b0384166000908152600560205260409020549192506113b891905082612b93565b6001600160a01b038316600090815260056020526040902055600c546113de9082612b93565b600c55600d546113ee9084612b38565b600d55505050565b6014546001600160a01b031633148061141957506000546001600160a01b031633145b6114355760405162461bcd60e51b8152600401610b7e906137ee565b6127108161ffff16111561145b5760405162461bcd60e51b8152600401610b7e90613823565b6004805461ffff909216600160b01b0261ffff60b01b19909216919091179055565b8061148733611b29565b10156114f25760405162461bcd60e51b815260206004820152603460248201527f4275726e2077616c6c65742062616c616e6365206d75737420626520677265616044820152731d195c881d1a185b88189d5c9b88185b5bdd5b9d60621b6064820152608401610b7e565b60035461150c9033906001600160a01b031683600061226a565b600b546115199082612b93565b600b819055611526612b09565b6115309190613923565b600c5550565b6014546001600160a01b031633148061155957506000546001600160a01b031633145b6115755760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000600b548311156115ed5760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610b7e565b8161160c5760006115fd84612b44565b50939550610c74945050505050565b600061161784612b44565b50929550610c74945050505050565b6014546001600160a01b031633148061164957506000546001600160a01b031633145b6116655760405162461bcd60e51b8152600401610b7e906137ee565b60045461ffff600160a01b909104811690861611156116b15760405162461bcd60e51b81526020600482015260086024820152672a231032b93937b960c11b6044820152606401610b7e565b60045461ffff600160a01b909104811690851611156116fd5760405162461bcd60e51b815260206004820152600860248201526726a31032b93937b960c11b6044820152606401610b7e565b60045461ffff600160a01b909104811690841611156117495760405162461bcd60e51b815260206004820152600860248201526726231032b93937b960c11b6044820152606401610b7e565b60045461ffff600160a01b909104811690831611156117955760405162461bcd60e51b815260206004820152600860248201526721a31032b93937b960c11b6044820152606401610b7e565b60045461ffff600160a01b909104811690821611156117e15760405162461bcd60e51b815260206004820152600860248201526724a31032b93937b960c11b6044820152606401610b7e565b6010805462ffff0061ffff60c81b01191661010061ffff9788160261ffff60c81b191617600160c81b95871695909502949094179093556012805461ffff60a01b19908116600160a01b9387168402179091556011805482169386168302939093179092556014805490921692909316909202179055565b6014546001600160a01b031633148061187c57506000546001600160a01b031633145b6118985760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b03811660009081526009602052604090205460ff16611978576001600160a01b03811660009081526005602052604090205415611912576001600160a01b0381166000908152600560205260409020546118f890610f9e565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b0381166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b03191690911790555b50565b6014546001600160a01b031633148061199e57506000546001600160a01b031633145b6119ba5760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b0381166119e05760405162461bcd60e51b8152600401610b7e9061389f565b6011546001600160a01b031615611a1b57601154611a06906001600160a01b03166110e3565b601154611a1b906001600160a01b031661211b565b611a2481611859565b611a2d81611536565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b0316331480611a7257506000546001600160a01b031633145b611a8e5760405162461bcd60e51b8152600401610b7e906137ee565b6017546001600160a01b0382811691161415611b075760405162461bcd60e51b815260206004820152603260248201527f4d44414f3a2074686520726f7574657220697320616c72656164792073657420604482015271746f20746865206e6577206164647265737360701b6064820152608401610b7e565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526009602052604081205460ff1615611b6657506001600160a01b031660009081526006602052604090205490565b6001600160a01b038216600090815260056020526040902054610c7490610f9e565b6000546001600160a01b03163314611bb25760405162461bcd60e51b8152600401610b7e9061385a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600f8054610be090613959565b6000610c703384610dc985604051806060016040528060258152602001613a11602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190612a42565b6014546001600160a01b0316331480611c7d57506000546001600160a01b031633145b611c995760405162461bcd60e51b8152600401610b7e906137ee565b611ca36000611fe6565b611cab612b9f565b6004805463ffffffff60b01b1916630271027160b41b179055565b6000610c703384846124ec565b606060028054610be090613959565b600f8054611cef90613959565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1b90613959565b8015611d685780601f10611d3d57610100808354040283529160200191611d68565b820191906000526020600020905b815481529060010190602001808311611d4b57829003601f168201915b505050505081565b6014546001600160a01b0316331480611d9357506000546001600160a01b031633145b611daf5760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b038216301415611df85760405162461bcd60e51b815260206004820152600d60248201526c53656c6620776974686472617760981b6044820152606401610b7e565b816001600160a01b031663a9059cbb611e196000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015611e6157600080fd5b505af1158015611e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9991906136a1565b505050565b6014546001600160a01b0316331480611ec157506000546001600160a01b031633145b611edd5760405162461bcd60e51b8152600401610b7e906137ee565b81611ee730611b29565b1015611f055760405162461bcd60e51b8152600401610b7e90613823565b610bcd308284600061226a565b6014546001600160a01b0316331480611f3557506000546001600160a01b031633145b611f515760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b038116611f775760405162461bcd60e51b8152600401610b7e9061389f565b6015546001600160a01b031615611fb257601554611f9d906001600160a01b03166110e3565b601554611fb2906001600160a01b031661211b565b611fbb81611859565b611fc481611536565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b031633148061200957506000546001600160a01b031633145b6120255760405162461bcd60e51b8152600401610b7e906137ee565b60178054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061207290831515815260200190565b60405180910390a150565b600e8054611cef90613959565b6014546001600160a01b03163314806120ad57506000546001600160a01b031633145b6120c95760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b0381166120ef5760405162461bcd60e51b8152600401610b7e9061389f565b6001600160a01b0381166000908152600860205260409020805460ff191660011790556119788161217b565b6014546001600160a01b031633148061213e57506000546001600160a01b031633145b61215a5760405162461bcd60e51b8152600401610b7e906137ee565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146121a55760405162461bcd60e51b8152600401610b7e9061385a565b6001600160a01b03811661220f5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610b7e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8061227757612277612b9f565b6001600160a01b03841660009081526009602052604090205460ff1680156122b857506001600160a01b03831660009081526009602052604090205460ff16155b156122cd576122c8848484612cd7565b6123cb565b6001600160a01b03841660009081526009602052604090205460ff1615801561230e57506001600160a01b03831660009081526009602052604090205460ff165b1561231e576122c8848484612dfd565b6001600160a01b03841660009081526009602052604090205460ff1615801561236057506001600160a01b03831660009081526009602052604090205460ff16155b15612370576122c8848484612ea6565b6001600160a01b03841660009081526009602052604090205460ff1680156123b057506001600160a01b03831660009081526009602052604090205460ff165b156123c0576122c8848484612eea565b6123cb848484612ea6565b806123d8576123d8612a6e565b50505050565b6001600160a01b0383166124345760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610b7e565b6001600160a01b03821661248a5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610b7e565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661254c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b6064820152608401610b7e565b6001600160a01b0382166125a25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610b7e565b600081116126045760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b7e565b8061260e84611b29565b101561266d5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f7574206d757374206265206c657373207468616e6044820152672062616c616e636560c01b6064820152608401610b7e565b6017546001600160a01b03848116911614806126a057506001600160a01b03831660009081526018602052604090205442115b6126ec5760405162461bcd60e51b815260206004820152601b60248201527f436f6f6c646f776e206973206e6f7420726561647920796574212100000000006044820152606401610b7e565b6017546001600160a01b03838116911614801561273657506004546127329061ffff600160c01b9091041661272c6103e8612726600b5490565b90612b2c565b90612f5d565b8110155b1561281a576001600160a01b03831660009081526019602052604090205461277e5761276442611c206138eb565b6001600160a01b0384166000908152601960205260409020555b6001600160a01b03831660009081526019602052604090205442116128005760405162461bcd60e51b815260206004820152603260248201527f69742069732064656c61796564206173206974206973206f76657220302e31326044820152712025206f6620746f74616c20737570706c7960701b6064820152608401610b7e565b6001600160a01b0383166000908152601960205260408120555b61282542601e6138eb565b6001600160a01b03841660009081526018602052604081209190915560145460125460115460105461ffff600160a01b94859004811694938490048116936128789304811691600160c81b9004166138c5565b61288291906138c5565b61288c91906138c5565b905060006128a46127106127268561ffff8616612f5d565b905060006128b28483612b93565b6017549091506001600160a01b038681169116148015906128ec57506001600160a01b03851660009081526008602052604090205460ff16155b1561298057600454600b54612913916127109161272691600160b01b900461ffff16612f5d565b61291c86611b29565b61292690836138eb565b11156129805760405162461bcd60e51b815260206004820152602360248201527f74686520616d6f756e74206578636565647320616c6c6f77616e636520302e3260448201526235202560e81b6064820152608401610b7e565b601754600160a01b900460ff161580156129be57506017546001600160a01b03878116911614806129be57506017546001600160a01b038681169116145b80156129d35750601754600160a81b900460ff165b156129e2576129e28287612f69565b6001600160a01b03861660009081526008602052604090205460019060ff1680612a2457506001600160a01b03861660009081526008602052604090205460ff165b15612a2d575060005b612a398787848461226a565b50505050505050565b60008184841115612a665760405162461bcd60e51b8152600401610b7e919061379b565b505050900390565b60108054600160c81b600160d81b61ffff6301000000840481166101000262ffff0019851681179290920481169290920261ffff60c81b1990911662ffff0061ffff60c81b0119909316929092179190911790915560118054600160a01b600160b01b8083048516820261ffff60a01b1993841617909355601280548481048616830290841617905560148054938404909416029116179055565b6000806000612b16613123565b9092509050612b258282612b2c565b9250505090565b60006110088284613903565b600061100882846138eb565b6000806000806000806000806000612b5b8a6132dd565b9250925092506000806000612b798d8686612b74612b09565b61331f565b919f909e50909c50959a5093985091965092945050505050565b60006110088284613942565b601054610100900461ffff16158015612bc35750601054600160c81b900461ffff16155b8015612bda5750601154600160a01b900461ffff16155b8015612bf15750601254600160a01b900461ffff16155b8015612c085750601454600160a01b900461ffff16155b15612c0f57565b6010805460118054601280546014805462ffff0061ffff60c81b0119600160d81b600160c81b630100000061ffff6101008c0481169190910264ffff000000198c1681179290920481169290920261ffff60d81b1990911664ffff00000061ffff60d81b0119909a1699909917989098171690975561ffff60a01b19600160b01b600160a01b80870489168202831663ffffffff60a01b1997881617909755868404881681028216938616939093179093559386049094169093029290921691909216179055565b600080600080600080612ce987612b44565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150612d1b9088612b93565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054612d4a9087612b93565b6001600160a01b03808b1660009081526005602052604080822093909355908a1681522054612d799086612b38565b6001600160a01b038916600090815260056020526040902055612d9b8161336f565b612da584836133f7565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612dea91815260200190565b60405180910390a3505050505050505050565b600080600080600080612e0f87612b44565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612e419087612b93565b6001600160a01b03808b16600090815260056020908152604080832094909455918b16815260069091522054612e779084612b38565b6001600160a01b038916600090815260066020908152604080832093909355600590522054612d799086612b38565b600080600080600080612eb887612b44565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612d4a9087612b93565b600080600080600080612efc87612b44565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150612f2e9088612b93565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054612e419087612b93565b60006110088284613923565b60178054600160a01b60ff60a01b1990911681179091556014546012546011546010546000949384900461ffff9081169493849004811693612fb69304811691600160c81b9004166138c5565b612fc091906138c5565b612fca91906138c5565b601054909150600090600160c81b900461ffff1615613020576010546130059061ffff600160c81b90910481169061272c9087908616612b2c565b6011549091506130209084906001600160a01b03168361341b565b601154600160a01b900461ffff1615613070576011546130559061ffff600160a01b90910481169061272c9087908616612b2c565b6012549091506130709084906001600160a01b03168361341b565b601254600160a01b900461ffff16156130c0576012546130a59061ffff600160a01b90910481169061272c9087908616612b2c565b6013549091506130c09084906001600160a01b03168361341b565b601454600160a01b900461ffff1615613110576014546130f59061ffff600160a01b90910481169061272c9087908616612b2c565b6015549091506131109084906001600160a01b03168361341b565b50506017805460ff60a01b191690555050565b600c54600b546000918291825b600a548110156132ad578260056000600a848154811061316057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806131d957508160066000600a84815481106131b257634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156131ef57600c54600b54945094505050509091565b61324360056000600a848154811061321757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612b93565b925061329960066000600a848154811061326d57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612b93565b9150806132a581613994565b915050613130565b50600b54600c546132bd91612b2c565b8210156132d457600c54600b549350935050509091565b90939092509050565b6000806000806132ec85613581565b905060006132f9866135a3565b905060006133118261330b8986612b93565b90612b93565b979296509094509092505050565b600080808061332e8886612f5d565b9050600061333c8887612f5d565b9050600061334a8888612f5d565b9050600061335c8261330b8686612b93565b939b939a50919850919650505050505050565b6000613379612b09565b905060006133878383612f5d565b306000908152600560205260409020549091506133a49082612b38565b3060009081526005602090815260408083209390935560099052205460ff1615611e9957306000908152600660205260409020546133e29084612b38565b30600090815260066020526040902055505050565b600c546134049083612b93565b600c55600d546134149082612b38565b600d555050565b6001600160a01b03831660009081526005602052604090205461343e9082612b93565b6001600160a01b03808516600090815260056020526040808220939093559084168152205461346d9082612b38565b6001600160a01b0380841660009081526005602090815260408083209490945591861681526009909152205460ff16156134de576001600160a01b0383166000908152600660205260409020546134c49082612b93565b6001600160a01b0384166000908152600660205260409020555b6001600160a01b03821660009081526009602052604090205460ff161561353c576001600160a01b0382166000908152600660205260409020546135229082612b38565b6001600160a01b0383166000908152600660205260409020555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124df91815260200190565b601054600090610c749061271090612726908590610100900461ffff16612f5d565b6000610c748282612f5d565b803561ffff811681146135c157600080fd5b919050565b6000602082840312156135d7578081fd5b8135611008816139c5565b600080604083850312156135f4578081fd5b82356135ff816139c5565b9150602083013561360f816139c5565b809150509250929050565b60008060006060848603121561362e578081fd5b8335613639816139c5565b92506020840135613649816139c5565b929592945050506040919091013590565b6000806040838503121561366c578182fd5b8235613677816139c5565b946020939093013593505050565b600060208284031215613696578081fd5b8135611008816139da565b6000602082840312156136b2578081fd5b8151611008816139da565b6000602082840312156136ce578081fd5b611008826135af565b600080600080600060a086880312156136ee578081fd5b6136f7866135af565b9450613705602087016135af565b9350613713604087016135af565b9250613721606087016135af565b915061372f608087016135af565b90509295509295909350565b60006020828403121561374c578081fd5b5035919050565b60008060408385031215613765578182fd5b82359150602083013561360f816139c5565b60008060408385031215613789578182fd5b82359150602083013561360f816139da565b6000602080835283518082850152825b818110156137c7578581018301518582016040015282016137ab565b818111156137d85783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865204f776e6572604082015260600190565b6020808252601a908201527f4974206578636565647320616c6c6f77656420616d6f756e742e000000000000604082015260600190565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b6020808252600c908201526b5a45524f204144445245535360a01b604082015260600190565b600061ffff8083168185168083038211156138e2576138e26139af565b01949350505050565b600082198211156138fe576138fe6139af565b500190565b60008261391e57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561393d5761393d6139af565b500290565b600082821015613954576139546139af565b500390565b600181811c9082168061396d57607f821691505b6020821081141561398e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156139a8576139a86139af565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461197857600080fd5b801515811461197857600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200c84bcf6432d11e12982a2a60bcc75a9dfbaad4ed06aeecceb678f65a92fdc2864736f6c63430008040033

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

000000000000000000000000aa600a92bf5c0522770293d600311983b3f8c8620000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000108b2a2c280290940000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : __metacrypt_target (address): 0xaA600a92bF5c0522770293D600311983B3f8c862
Arg [1] : __metacrypt_decimals (uint8): 7
Arg [2] : __metacrypt_initial (uint256): 20000000000000000000000000
Arg [3] : __metacrypt_router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000aa600a92bf5c0522770293d600311983b3f8c862
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [2] : 000000000000000000000000000000000000000000108b2a2c28029094000000
Arg [3] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

16726:26501:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42293:213;;;;;;;;;;-1:-1:-1;42293:213:0;;;;;:::i;:::-;;:::i;:::-;;20485:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21434:166;;;;;;;;;;-1:-1:-1;21434:166:0;;;;;:::i;:::-;;:::i;:::-;;;4843:14:1;;4836:22;4818:41;;4806:2;4791:18;21434:166:0;4773:92:1;20789:95:0;;;;;;;;;;-1:-1:-1;20869:7:0;;20789:95;;;15742:25:1;;;15730:2;15715:18;20789:95:0;15697:76:1;28895:396:0;;;;;;;;;;-1:-1:-1;28895:396:0;;;;;:::i;:::-;;:::i;17910:33::-;;;;;;;;;;-1:-1:-1;17910:33:0;;;;-1:-1:-1;;;17910:33:0;;;;;;;;;15577:6:1;15565:19;;;15547:38;;15535:2;15520:18;17910:33:0;15502:89:1;21608:446:0;;;;;;;;;;-1:-1:-1;21608:446:0;;;;;:::i;:::-;;:::i;42094:191::-;;;;;;;;;;;;;:::i;27519:454::-;;;;;;;;;;-1:-1:-1;27519:454:0;;;;;:::i;:::-;;:::i;41625:247::-;;;;;;;;;;-1:-1:-1;41625:247:0;;;;;:::i;:::-;;:::i;18756:37::-;;;;;;;;;;-1:-1:-1;18756:37:0;;;;-1:-1:-1;;;;;18756:37:0;;;;;;-1:-1:-1;;;;;4131:32:1;;;4113:51;;4101:2;4086:18;18756:37:0;4068:102:1;23736:246:0;;;;;;;;;;-1:-1:-1;23736:246:0;;;;;:::i;:::-;;:::i;27981:434::-;;;;;;;;;;-1:-1:-1;27981:434:0;;;;;:::i;:::-;;:::i;20689:92::-;;;;;;;;;;-1:-1:-1;20764:9:0;;20689:92;;20764:9;;;;15920:36:1;;15908:2;15893:18;20689:92:0;15875:87:1;24329:466:0;;;;;;;;;;-1:-1:-1;24329:466:0;;;;;:::i;:::-;;:::i;22062:273::-;;;;;;;;;;-1:-1:-1;22062:273:0;;;;;:::i;:::-;;:::i;17757:27::-;;;;;;;;;;-1:-1:-1;17757:27:0;;;;;;;;;;;22852:419;;;;;;;;;;-1:-1:-1;22852:419:0;;;;;:::i;:::-;;:::i;41415:202::-;;;;;;;;;;-1:-1:-1;41415:202:0;;;;;:::i;:::-;;:::i;18299:31::-;;;;;;;;;;-1:-1:-1;18299:31:0;;;;-1:-1:-1;;;18299:31:0;;;;;;36559:301;;;;;;;;;;-1:-1:-1;36559:301:0;;;;;:::i;:::-;;:::i;24803:113::-;;;;;;;;;;-1:-1:-1;24803:113:0;;;;;:::i;:::-;;:::i;23279:449::-;;;;;;;;;;-1:-1:-1;23279:449:0;;;;;:::i;:::-;;:::i;18861:40::-;;;;;;;;;;-1:-1:-1;18861:40:0;;;;-1:-1:-1;;;18861:40:0;;;;;;25110:747;;;;;;;;;;-1:-1:-1;25110:747:0;;;;;:::i;:::-;;:::i;18800:24::-;;;;;;;;;;-1:-1:-1;18800:24:0;;;;-1:-1:-1;;;;;18800:24:0;;;23990:331;;;;;;;;;;-1:-1:-1;23990:331:0;;;;;:::i;:::-;;:::i;32669:124::-;;;;;;;;;;-1:-1:-1;32669:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;32758:27:0;32734:4;32758:27;;;:18;:27;;;;;;;;;32669:124;7069:89;;;;;;;;;;-1:-1:-1;7142:8:0;;;;;;;;;;;;-1:-1:-1;;;7142:8:0;;;;7069:89;;27062:449;;;;;;;;;;-1:-1:-1;27062:449:0;;;;;:::i;:::-;;:::i;42737:254::-;;;;;;;;;;-1:-1:-1;42737:254:0;;;;;:::i;:::-;;:::i;18101:33::-;;;;;;;;;;-1:-1:-1;18101:33:0;;;;-1:-1:-1;;;18101:33:0;;;;;;20892:198;;;;;;;;;;-1:-1:-1;20892:198:0;;;;;:::i;:::-;;:::i;9208:148::-;;;;;;;;;;;;;:::i;18036:38::-;;;;;;;;;;-1:-1:-1;18036:38:0;;;;-1:-1:-1;;;;;18036:38:0;;;18417:36;;;;;;;;;;-1:-1:-1;18417:36:0;;;;-1:-1:-1;;;;;18417:36:0;;;22724:120;;;;;;;;;;-1:-1:-1;22724:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;22816:20:0;22792:4;22816:20;;;:11;:20;;;;;;;;;22724:120;8980:87;;;;;;;;;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8980:87;;20585:96;;;;;;;;;;;;;:::i;22343:373::-;;;;;;;;;;-1:-1:-1;22343:373:0;;;;;:::i;:::-;;:::i;41880:202::-;;;;;;;;;;;;;:::i;21098:172::-;;;;;;;;;;-1:-1:-1;21098:172:0;;;;;:::i;:::-;;:::i;7578:99::-;;;;;;;;;;;;;:::i;17678:35::-;;;;;;;;;;;;;:::i;41117:290::-;;;;;;;;;;-1:-1:-1;41117:290:0;;;;;:::i;:::-;;:::i;17096:42::-;;;;;;;;;;-1:-1:-1;17096:42:0;;;;-1:-1:-1;;;17096:42:0;;;;;;18672:39;;;;;;;;;;-1:-1:-1;18672:39:0;;;;-1:-1:-1;;;;;18672:39:0;;;18527:34;;;;;;;;;;-1:-1:-1;18527:34:0;;;;-1:-1:-1;;;18527:34:0;;;;;;42997:227;;;;;;;;;;-1:-1:-1;42997:227:0;;;;;:::i;:::-;;:::i;28423:464::-;;;;;;;;;;-1:-1:-1;28423:464:0;;;;;:::i;:::-;;:::i;26854:173::-;;;;;;;;;;-1:-1:-1;26854:173:0;;;;;:::i;:::-;;:::i;17028:34::-;;;;;;;;;;-1:-1:-1;17028:34:0;;;;-1:-1:-1;;;17028:34:0;;;;;;17638:33;;;;;;;;;;;;;:::i;42512:219::-;;;;;;;;;;-1:-1:-1;42512:219:0;;;;;:::i;:::-;;:::i;18232:38::-;;;;;;;;;;-1:-1:-1;18232:38:0;;;;-1:-1:-1;;;;;18232:38:0;;;21278:148;;;;;;;;;;-1:-1:-1;21278:148:0;;;;;:::i;:::-;-1:-1:-1;;;;;21391:18:0;;;21359:7;21391:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;21278:148;24924:112;;;;;;;;;;-1:-1:-1;24924:112:0;;;;;:::i;:::-;;:::i;9364:249::-;;;;;;;;;;-1:-1:-1;9364:249:0;;;;;:::i;:::-;;:::i;42293:213::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;;;;;;;;;42405:7:::1;42380:21;42390:10;42380:9;:21::i;:::-;:32;;42372:71;;;;-1:-1:-1::0;;;42372:71:0::1;;;;;;;:::i;:::-;42454:44;42469:7;9026::::0;9053:6;-1:-1:-1;;;;;9053:6:0;;8980:87;42469:7:::1;42478:3;42483:7;42492:5;42454:14;:44::i;:::-;42293:213:::0;;:::o;20485:92::-;20531:13;20564:5;20557:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20485:92;:::o;21434:166::-;21509:4;21531:39;8441:10;21554:7;21563:6;21531:8;:39::i;:::-;-1:-1:-1;21588:4:0;21434:166;;;;;:::o;28895:396::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28986:27:0;::::1;28978:52;;;;-1:-1:-1::0;;;28978:52:0::1;;;;;;;:::i;:::-;29045:10;::::0;-1:-1:-1;;;29045:10:0;::::1;-1:-1:-1::0;;;;;29045:10:0::1;:24:::0;29041:123:::1;;29102:10;::::0;29086:27:::1;::::0;-1:-1:-1;;;29102:10:0;::::1;-1:-1:-1::0;;;;;29102:10:0::1;29086:15;:27::i;:::-;29141:10;::::0;29128:24:::1;::::0;-1:-1:-1;;;29141:10:0;::::1;-1:-1:-1::0;;;;;29141:10:0::1;29128:12;:24::i;:::-;29174:32;29192:13;29174:17;:32::i;:::-;29217:29;29232:13;29217:14;:29::i;:::-;29257:10;:26:::0;;-1:-1:-1;;;;;29257:26:0;;::::1;-1:-1:-1::0;;;29257:26:0::1;-1:-1:-1::0;;;;;;29257:26:0;;::::1;::::0;;;::::1;::::0;;28895:396::o;21608:446::-;21740:4;21757:36;21767:6;21775:9;21786:6;21757:9;:36::i;:::-;21804:220;21827:6;8441:10;21875:138;21931:6;21875:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21875:19:0;;;;;;:11;:19;;;;;;;;8441:10;21875:33;;;;;;;;;;:37;:138::i;:::-;21804:8;:220::i;:::-;-1:-1:-1;22042:4:0;21608:446;;;;;:::o;42094:191::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;42150:30:::1;42175:4;42150:24;:30::i;:::-;42191:15;:13;:15::i;:::-;42217;:20:::0;;-1:-1:-1;;;;42248:29:0;-1:-1:-1;;;42248:29:0;;;42094:191::o;27519:454::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27628:32:0;::::1;27620:57;;;;-1:-1:-1::0;;;27620:57:0::1;;;;;;;:::i;:::-;27692:15;::::0;-1:-1:-1;;;;;27692:15:0::1;:29:::0;27688:138:::1;;27754:15;::::0;27738:32:::1;::::0;-1:-1:-1;;;;;27754:15:0::1;27738;:32::i;:::-;27798:15;::::0;27785:29:::1;::::0;-1:-1:-1;;;;;27798:15:0::1;27785:12;:29::i;:::-;27836:37;27854:18;27836:17;:37::i;:::-;27884:34;27899:18;27884:14;:34::i;:::-;27929:15;:36:::0;;-1:-1:-1;;;;;;27929:36:0::1;-1:-1:-1::0;;;;;27929:36:0;;;::::1;::::0;;;::::1;::::0;;27519:454::o;41625:247::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;41765:5:::1;41736:25;:34;;;;41728:73;;;;-1:-1:-1::0;;;41728:73:0::1;;;;;;;:::i;:::-;41812:24;:52:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;41812:52:0::1;-1:-1:-1::0;;;;41812:52:0;;::::1;::::0;;;::::1;::::0;;41625:247::o;23736:246::-;23803:7;23847;;23836;:18;;23828:61;;;;-1:-1:-1;;;23828:61:0;;10281:2:1;23828:61:0;;;10263:21:1;10320:2;10300:18;;;10293:30;10359:32;10339:18;;;10332:60;10409:18;;23828:61:0;10253:180:1;23828:61:0;23900:19;23922:10;:8;:10::i;:::-;23900:32;-1:-1:-1;23950:24:0;:7;23900:32;23950:11;:24::i;:::-;23943:31;23736:246;-1:-1:-1;;;23736:246:0:o;27981:434::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28086:30:0;::::1;28078:55;;;;-1:-1:-1::0;;;28078:55:0::1;;;;;;;:::i;:::-;28148:13;::::0;-1:-1:-1;;;;;28148:13:0::1;:27:::0;28144:132:::1;;28208:13;::::0;28192:30:::1;::::0;-1:-1:-1;;;;;28208:13:0::1;28192:15;:30::i;:::-;28250:13;::::0;28237:27:::1;::::0;-1:-1:-1;;;;;28250:13:0::1;28237:12;:27::i;:::-;28286:35;28304:16;28286:17;:35::i;:::-;28332:32;28347:16;28332:14;:32::i;:::-;28375:13;:32:::0;;-1:-1:-1;;;;;;28375:32:0::1;-1:-1:-1::0;;;;;28375:32:0;;;::::1;::::0;;;::::1;::::0;;27981:434::o;24329:466::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24409:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;24401:49;;;::::0;-1:-1:-1;;;24401:49:0;;9936:2:1;24401:49:0::1;::::0;::::1;9918:21:1::0;9975:2;9955:18;;;9948:30;-1:-1:-1;;;9994:18:1;;;9987:46;10050:18;;24401:49:0::1;9908:166:1::0;24401:49:0::1;24466:9;24461:327;24485:9;:16:::0;24481:20;::::1;24461:327;;;24543:7;-1:-1:-1::0;;;;;24527:23:0::1;:9;24537:1;24527:12;;;;;;-1:-1:-1::0;;;24527:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;24527:12:0::1;:23;24523:254;;;24586:9;24596:16:::0;;:20:::1;::::0;24615:1:::1;::::0;24596:20:::1;:::i;:::-;24586:31;;;;;;-1:-1:-1::0;;;24586:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;24571:9:::1;:12:::0;;-1:-1:-1;;;;;24586:31:0;;::::1;::::0;24581:1;;24571:12;::::1;;;-1:-1:-1::0;;;24571:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;24571:46:0::1;-1:-1:-1::0;;;;;24571:46:0;;::::1;;::::0;;24636:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;24675:11:::1;:20:::0;;;;:28;;-1:-1:-1;;24675:28:0::1;::::0;;24722:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;24722:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;24722:15:0;;;;;-1:-1:-1;;;;;;24722:15:0::1;::::0;;;;;42293:213;;:::o;24523:254::-:1;24503:3:::0;::::1;::::0;::::1;:::i;:::-;;;;24461:327;;22062:273:::0;8441:10;22150:4;22244:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22244:34:0;;;;;;;;;;22150:4;;22172:133;;22222:7;;22244:50;;22283:10;22244:38;:50::i;22852:419::-;8441:10;22904:14;22967:19;;;:11;:19;;;;;;;;22966:20;22944:114;;;;-1:-1:-1;;;22944:114:0;;14831:2:1;22944:114:0;;;14813:21:1;14870:2;14850:18;;;14843:30;14909:34;14889:18;;;14882:62;-1:-1:-1;;;14960:18:1;;;14953:42;15012:19;;22944:114:0;14803:234:1;22944:114:0;23070:15;23099:19;23110:7;23099:10;:19::i;:::-;-1:-1:-1;;;;;;;;;23147:15:0;;;;;;:7;:15;;;;;;23069:49;;-1:-1:-1;23147:28:0;;:15;-1:-1:-1;23069:49:0;23147:19;:28::i;:::-;-1:-1:-1;;;;;23129:15:0;;;;;;:7;:15;;;;;:46;23196:7;;:20;;23208:7;23196:11;:20::i;:::-;23186:7;:30;23240:10;;:23;;23255:7;23240:14;:23::i;:::-;23227:10;:36;-1:-1:-1;;;22852:419:0:o;41415:202::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;41528:5:::1;41508:16;:25;;;;41500:64;;;;-1:-1:-1::0;;;41500:64:0::1;;;;;;;:::i;:::-;41575:15;:34:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;41575:34:0::1;-1:-1:-1::0;;;;41575:34:0;;::::1;::::0;;;::::1;::::0;;41415:202::o;36559:301::-;36648:6;36623:21;36633:10;36623:9;:21::i;:::-;:31;;36615:96;;;;-1:-1:-1;;;36615:96:0;;13319:2:1;36615:96:0;;;13301:21:1;13358:2;13338:18;;;13331:30;13397:34;13377:18;;;13370:62;-1:-1:-1;;;13448:18:1;;;13441:50;13508:19;;36615:96:0;13291:242:1;36615:96:0;36751:4;;36724:47;;36739:10;;-1:-1:-1;;;;;36751:4:0;36757:6;36751:4;36724:14;:47::i;:::-;36792:7;;:19;;36804:6;36792:11;:19::i;:::-;36782:7;:29;;;36832:10;:8;:10::i;:::-;:20;;;;:::i;:::-;36822:7;:30;-1:-1:-1;36559:301:0:o;24803:113::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24874:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;24874:34:0::1;24904:4;24874:34;::::0;;24803:113::o;23279:449::-;23370:7;23414;;23403;:18;;23395:59;;;;-1:-1:-1;;;23395:59:0;;6970:2:1;23395:59:0;;;6952:21:1;7009:2;6989:18;;;6982:30;7048;7028:18;;;7021:58;7096:18;;23395:59:0;6942:178:1;23395:59:0;23470:17;23465:256;;23505:15;23534:19;23545:7;23534:10;:19::i;:::-;-1:-1:-1;23504:49:0;;-1:-1:-1;23568:14:0;;-1:-1:-1;;;;;23568:14:0;23465:256;23618:23;23653:19;23664:7;23653:10;:19::i;:::-;-1:-1:-1;23615:57:0;;-1:-1:-1;23687:22:0;;-1:-1:-1;;;;;23687:22:0;25110:747;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;25351:6:::1;::::0;::::1;-1:-1:-1::0;;;25351:6:0;;::::1;::::0;::::1;25341:16:::0;;::::1;;;25318:52;;;::::0;-1:-1:-1;;;25318:52:0;;14495:2:1;25318:52:0::1;::::0;::::1;14477:21:1::0;14534:1;14514:18;;;14507:29;-1:-1:-1;;;14552:18:1;;;14545:38;14600:18;;25318:52:0::1;14467:157:1::0;25318:52:0::1;25426:6;::::0;::::1;-1:-1:-1::0;;;25426:6:0;;::::1;::::0;::::1;25410:22:::0;;::::1;;;25381:64;;;::::0;-1:-1:-1;;;25381:64:0;;5914:2:1;25381:64:0::1;::::0;::::1;5896:21:1::0;5953:1;5933:18;;;5926:29;-1:-1:-1;;;5971:18:1;;;5964:38;6019:18;;25381:64:0::1;5886:157:1::0;25381:64:0::1;25501:6;::::0;::::1;-1:-1:-1::0;;;25501:6:0;;::::1;::::0;::::1;25485:22:::0;;::::1;;;25456:64;;;::::0;-1:-1:-1;;;25456:64:0;;9600:2:1;25456:64:0::1;::::0;::::1;9582:21:1::0;9639:1;9619:18;;;9612:29;-1:-1:-1;;;9657:18:1;;;9650:38;9705:18;;25456:64:0::1;9572:157:1::0;25456:64:0::1;25572:6;::::0;::::1;-1:-1:-1::0;;;25572:6:0;;::::1;::::0;::::1;25558:20:::0;;::::1;;;25531:60;;;::::0;-1:-1:-1;;;25531:60:0;;14159:2:1;25531:60:0::1;::::0;::::1;14141:21:1::0;14198:1;14178:18;;;14171:29;-1:-1:-1;;;14216:18:1;;;14209:38;14264:18;;25531:60:0::1;14131:157:1::0;25531:60:0::1;25649:6;::::0;::::1;-1:-1:-1::0;;;25649:6:0;;::::1;::::0;::::1;25632:23:::0;;::::1;;;25602:66;;;::::0;-1:-1:-1;;;25602:66:0;;12223:2:1;25602:66:0::1;::::0;::::1;12205:21:1::0;12262:1;12242:18;;;12235:29;-1:-1:-1;;;12280:18:1;;;12273:38;12328:18;;25602:66:0::1;12195:157:1::0;25602:66:0::1;25679:7;:16:::0;;-1:-1:-1;;;;;;25706:28:0;25679:16:::1;;::::0;;::::1;;-1:-1:-1::0;;;;25706:28:0;;-1:-1:-1;;;25706:28:0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;25745:11:::1;:24:::0;;-1:-1:-1;;;;25745:24:0;;::::1;-1:-1:-1::0;;;25745:24:0;;::::1;::::0;::::1;;::::0;;;25780:13:::1;:28:::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;25745:11:::1;25819:30:::0;;;;::::1;::::0;;;::::1;::::0;;::::1;;::::0;;25110:747::o;23990:331::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24069:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;24064:250;;-1:-1:-1::0;;;;;24110:16:0;::::1;24129:1;24110:16:::0;;;:7:::1;:16;::::0;;;;;:20;24106:117:::1;;-1:-1:-1::0;;;;;24190:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;24170:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;24151:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;24106:117:::1;-1:-1:-1::0;;;;;24237:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;24237:27:0::1;24260:4;24237:27:::0;;::::1;::::0;;;24279:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;24279:23:0::1;::::0;;::::1;::::0;;24064:250:::1;23990:331:::0;:::o;27062:449::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27166:32:0;::::1;27158:57;;;;-1:-1:-1::0;;;27158:57:0::1;;;;;;;:::i;:::-;27230:15;::::0;-1:-1:-1;;;;;27230:15:0::1;:29:::0;27226:138:::1;;27292:15;::::0;27276:32:::1;::::0;-1:-1:-1;;;;;27292:15:0::1;27276;:32::i;:::-;27336:15;::::0;27323:29:::1;::::0;-1:-1:-1;;;;;27336:15:0::1;27323:12;:29::i;:::-;27374:37;27392:18;27374:17;:37::i;:::-;27422:34;27437:18;27422:14;:34::i;:::-;27467:15;:36:::0;;-1:-1:-1;;;;;;27467:36:0::1;-1:-1:-1::0;;;;;27467:36:0;;;::::1;::::0;;;::::1;::::0;;27062:449::o;42737:254::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;42862:9:::1;::::0;-1:-1:-1;;;;;42840:32:0;;::::1;42862:9:::0;::::1;42840:32;;42818:132;;;::::0;-1:-1:-1;;;42818:132:0;;13740:2:1;42818:132:0::1;::::0;::::1;13722:21:1::0;13779:2;13759:18;;;13752:30;13818:34;13798:18;;;13791:62;-1:-1:-1;;;13869:18:1;;;13862:48;13927:19;;42818:132:0::1;13712:240:1::0;42818:132:0::1;42961:9;:22:::0;;-1:-1:-1;;;;;;42961:22:0::1;-1:-1:-1::0;;;;;42961:22:0;;;::::1;::::0;;;::::1;::::0;;42737:254::o;20892:198::-;-1:-1:-1;;;;;20982:20:0;;20958:7;20982:20;;;:11;:20;;;;;;;;20978:49;;;-1:-1:-1;;;;;;21011:16:0;;;;;:7;:16;;;;;;;20892:198::o;20978:49::-;-1:-1:-1;;;;;21065:16:0;;;;;;:7;:16;;;;;;21045:37;;:19;:37::i;9208:148::-;9026:7;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;9115:23;9107:73;;;;-1:-1:-1;;;9107:73:0;;;;;;;:::i;:::-;9315:1:::1;9299:6:::0;;9278:40:::1;::::0;-1:-1:-1;;;;;9299:6:0;;::::1;::::0;9278:40:::1;::::0;9315:1;;9278:40:::1;9346:1;9329:19:::0;;-1:-1:-1;;;;;;9329:19:0::1;::::0;;9208:148::o;20585:96::-;20633:13;20666:7;20659:14;;;;;:::i;22343:373::-;22436:4;22458:228;8441:10;22508:7;22530:145;22587:15;22530:145;;;;;;;;;;;;;;;;;8441:10;22530:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22530:34:0;;;;;;;;;;;;:38;:145::i;41880:202::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;41941:31:::1;41966:5;41941:24;:31::i;:::-;41983:14;:12;:14::i;:::-;42008:15;:23:::0;;-1:-1:-1;;;;42042:32:0;-1:-1:-1;;;42042:32:0;;;41880:202::o;21098:172::-;21176:4;21198:42;8441:10;21222:9;21233:6;21198:9;:42::i;7578:99::-;7624:13;7657:12;7650:19;;;;;:::i;17678:35::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;41117:290::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41290:29:0;::::1;41314:4;41290:29;;41282:55;;;::::0;-1:-1:-1;;;41282:55:0;;8898:2:1;41282:55:0::1;::::0;::::1;8880:21:1::0;8937:2;8917:18;;;8910:30;-1:-1:-1;;;8956:18:1;;;8949:43;9009:18;;41282:55:0::1;8870:163:1::0;41282:55:0::1;41355:12;-1:-1:-1::0;;;;;41348:29:0::1;;41378:7;9026::::0;9053:6;-1:-1:-1;;;;;9053:6:0;;8980:87;41378:7:::1;41348:51;::::0;-1:-1:-1;;;;;;41348:51:0::1;::::0;;;;;;-1:-1:-1;;;;;4591:32:1;;;41348:51:0::1;::::0;::::1;4573::1::0;4640:18;;;4633:34;;;4546:18;;41348:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;41117:290:::0;;:::o;42997:227::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;43116:7:::1;43088:24;43106:4;43088:9;:24::i;:::-;:35;;43080:75;;;;-1:-1:-1::0;;;43080:75:0::1;;;;;;;:::i;:::-;43166:50;43189:4;43196:3;43201:7;43210:5;43166:14;:50::i;28423:464::-:0;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28534:33:0;::::1;28526:58;;;;-1:-1:-1::0;;;28526:58:0::1;;;;;;;:::i;:::-;28599:16;::::0;-1:-1:-1;;;;;28599:16:0::1;:30:::0;28595:141:::1;;28662:16;::::0;28646:33:::1;::::0;-1:-1:-1;;;;;28662:16:0::1;28646:15;:33::i;:::-;28707:16;::::0;28694:30:::1;::::0;-1:-1:-1;;;;;28707:16:0::1;28694:12;:30::i;:::-;28746:38;28764:19;28746:17;:38::i;:::-;28795:35;28810:19;28795:14;:35::i;:::-;28841:16;:38:::0;;-1:-1:-1;;;;;;28841:38:0::1;-1:-1:-1::0;;;;;28841:38:0;;;::::1;::::0;;;::::1;::::0;;28423:464::o;26854:173::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;26933:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;26933:32:0::1;-1:-1:-1::0;;;;26933:32:0;;::::1;;::::0;;26981:38:::1;::::0;::::1;::::0;::::1;::::0;26957:8;4843:14:1;4836:22;4818:41;;4806:2;4791:18;;4773:92;26981:38:0::1;;;;;;;;26854:173:::0;:::o;17638:33::-;;;;;;;:::i;42512:219::-;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;42597:23:0;::::1;42589:48;;;;-1:-1:-1::0;;;42589:48:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;42648:29:0;::::1;;::::0;;;:18:::1;:29;::::0;;;;:36;;-1:-1:-1;;42648:36:0::1;42680:4;42648:36;::::0;;42695:28:::1;42667:9:::0;42695:17:::1;:28::i;24924:112::-:0;19352:8;;-1:-1:-1;;;;;19352:8:0;8441:10;19352:24;;:51;;-1:-1:-1;9026:7:0;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;19380:23;19352:51;19344:96;;;;-1:-1:-1;;;19344:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24993:27:0::1;25023:5;24993:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;24993:35:0::1;::::0;;24924:112::o;9364:249::-;9026:7;9053:6;-1:-1:-1;;;;;9053:6:0;8441:10;9115:23;9107:73;;;;-1:-1:-1;;;9107:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9453:22:0;::::1;9445:78;;;::::0;-1:-1:-1;;;9445:78:0;;10640:2:1;9445:78:0::1;::::0;::::1;10622:21:1::0;10679:2;10659:18;;;10652:30;10718:34;10698:18;;;10691:62;-1:-1:-1;;;10769:18:1;;;10762:41;10820:19;;9445:78:0::1;10612:233:1::0;9445:78:0::1;9560:6;::::0;;9539:38:::1;::::0;-1:-1:-1;;;;;9539:38:0;;::::1;::::0;9560:6;::::1;::::0;9539:38:::1;::::0;::::1;9588:6;:17:::0;;-1:-1:-1;;;;;;9588:17:0::1;-1:-1:-1::0;;;;;9588:17:0;;;::::1;::::0;;;::::1;::::0;;9364:249::o;36941:838::-;37097:7;37092:28;;37106:14;:12;:14::i;:::-;-1:-1:-1;;;;;37137:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;37161:22:0;;;;;;:11;:22;;;;;;;;37160:23;37137:46;37133:597;;;37200:48;37222:6;37230:9;37241:6;37200:21;:48::i;:::-;37133:597;;;-1:-1:-1;;;;;37271:19:0;;;;;;:11;:19;;;;;;;;37270:20;:46;;;;-1:-1:-1;;;;;;37294:22:0;;;;;;:11;:22;;;;;;;;37270:46;37266:464;;;37333:46;37353:6;37361:9;37372:6;37333:19;:46::i;37266:464::-;-1:-1:-1;;;;;37402:19:0;;;;;;:11;:19;;;;;;;;37401:20;:47;;;;-1:-1:-1;;;;;;37426:22:0;;;;;;:11;:22;;;;;;;;37425:23;37401:47;37397:333;;;37465:44;37483:6;37491:9;37502:6;37465:17;:44::i;37397:333::-;-1:-1:-1;;;;;37531:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;37554:22:0;;;;;;:11;:22;;;;;;;;37531:45;37527:203;;;37593:48;37615:6;37623:9;37634:6;37593:21;:48::i;37527:203::-;37674:44;37692:6;37700:9;37711:6;37674:17;:44::i;:::-;37747:7;37742:29;;37756:15;:13;:15::i;:::-;36941:838;;;;:::o;32801:363::-;-1:-1:-1;;;;;32928:19:0;;32920:64;;;;-1:-1:-1;;;32920:64:0;;15244:2:1;32920:64:0;;;15226:21:1;;;15263:18;;;15256:30;15322:34;15302:18;;;15295:62;15374:18;;32920:64:0;15216:182:1;32920:64:0;-1:-1:-1;;;;;33003:21:0;;32995:64;;;;-1:-1:-1;;;32995:64:0;;6611:2:1;32995:64:0;;;6593:21:1;6650:2;6630:18;;;6623:30;6689:32;6669:18;;;6662:60;6739:18;;32995:64:0;6583:180:1;32995:64:0;-1:-1:-1;;;;;33072:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;33124:32;;15742:25:1;;;33124:32:0;;15715:18:1;33124:32:0;;;;;;;;32801:363;;;:::o;33170:2022::-;-1:-1:-1;;;;;33292:18:0;;33284:64;;;;-1:-1:-1;;;33284:64:0;;8140:2:1;33284:64:0;;;8122:21:1;8179:2;8159:18;;;8152:30;8218:34;8198:18;;;8191:62;-1:-1:-1;;;8269:18:1;;;8262:31;8310:19;;33284:64:0;8112:223:1;33284:64:0;-1:-1:-1;;;;;33367:16:0;;33359:60;;;;-1:-1:-1;;;33359:60:0;;9240:2:1;33359:60:0;;;9222:21:1;9279:2;9259:18;;;9252:30;9318:33;9298:18;;;9291:61;9369:18;;33359:60:0;9212:181:1;33359:60:0;33447:1;33438:6;:10;33430:64;;;;-1:-1:-1;;;33430:64:0;;11813:2:1;33430:64:0;;;11795:21:1;11852:2;11832:18;;;11825:30;11891:34;11871:18;;;11864:62;-1:-1:-1;;;11942:18:1;;;11935:39;11991:19;;33430:64:0;11785:231:1;33430:64:0;33532:6;33513:15;33523:4;33513:9;:15::i;:::-;:25;;33505:78;;;;-1:-1:-1;;;33505:78:0;;7731:2:1;33505:78:0;;;7713:21:1;7770:2;7750:18;;;7743:30;7809:34;7789:18;;;7782:62;-1:-1:-1;;;7860:18:1;;;7853:38;7908:19;;33505:78:0;7703:230:1;33505:78:0;33610:9;;-1:-1:-1;;;;;33602:17:0;;;33610:9;;33602:17;;:53;;-1:-1:-1;;;;;;33623:14:0;;;;;;:8;:14;;;;;;33640:15;-1:-1:-1;33602:53:0;33594:93;;;;-1:-1:-1;;;33594:93:0;;8542:2:1;33594:93:0;;;8524:21:1;8581:2;8561:18;;;8554:30;8620:29;8600:18;;;8593:57;8667:18;;33594:93:0;8514:177:1;33594:93:0;33707:9;;-1:-1:-1;;;;;33701:15:0;;;33707:9;;33701:15;:82;;;;-1:-1:-1;33758:24:0;;33730:53;;33758:24;-1:-1:-1;;;33758:24:0;;;;33730:23;33748:4;33730:13;20869:7;;;20789:95;33730:13;:17;;:23::i;:::-;:27;;:53::i;:::-;33720:6;:63;;33701:82;33698:347;;;-1:-1:-1;;;;;33802:16:0;;;;;;:10;:16;;;;;;33799:87;;33861:25;:15;33879:7;33861:25;:::i;:::-;-1:-1:-1;;;;;33842:16:0;;;;;;:10;:16;;;;;:44;33799:87;-1:-1:-1;;;;;33909:16:0;;;;;;:10;:16;;;;;;33928:15;-1:-1:-1;33901:97:0;;;;-1:-1:-1;;;33901:97:0;;12559:2:1;33901:97:0;;;12541:21:1;12598:2;12578:18;;;12571:30;12637:34;12617:18;;;12610:62;-1:-1:-1;;;12688:18:1;;;12681:48;12746:19;;33901:97:0;12531:240:1;33901:97:0;-1:-1:-1;;;;;34013:16:0;;34032:1;34013:16;;;:10;:16;;;;;:20;33698:347;34074:28;:15;34092:10;34074:28;:::i;:::-;-1:-1:-1;;;;;34057:14:0;;;;;;:8;:14;;;;;:45;;;;34230:14;;34203:11;;34174:13;;34145;;34230:14;-1:-1:-1;;;34230:14:0;;;;;;;34203:11;;;;;;;34145:42;;34174:13;;;;-1:-1:-1;;;34145:13:0;;;:42;:::i;:::-;:69;;;;:::i;:::-;:99;;;;:::i;:::-;34115:129;-1:-1:-1;34257:28:0;34288:29;34311:5;34288:18;:6;:18;;;:10;:18::i;:29::-;34257:60;-1:-1:-1;34328:15:0;34346:32;:6;34257:60;34346:10;:32::i;:::-;34401:9;;34328:50;;-1:-1:-1;;;;;;34395:15:0;;;34401:9;;34395:15;;;;:42;;-1:-1:-1;;;;;;34415:22:0;;;;;;:18;:22;;;;;;;;34414:23;34395:42;34391:187;;;34499:15;;34487:7;;:39;;34520:5;;34487:28;;-1:-1:-1;;;34499:15:0;;;;34487:11;:28::i;:39::-;34470:13;34480:2;34470:9;:13::i;:::-;34460:23;;:7;:23;:::i;:::-;:66;;34452:114;;;;-1:-1:-1;;;34452:114:0;;7327:2:1;34452:114:0;;;7309:21:1;7366:2;7346:18;;;7339:30;7405:34;7385:18;;;7378:62;-1:-1:-1;;;7456:18:1;;;7449:33;7499:19;;34452:114:0;7299:225:1;34452:114:0;34593:16;;-1:-1:-1;;;34593:16:0;;;;34592:17;:59;;;;-1:-1:-1;34622:9:0;;-1:-1:-1;;;;;34614:17:0;;;34622:9;;34614:17;;:36;;-1:-1:-1;34641:9:0;;-1:-1:-1;;;;;34635:15:0;;;34641:9;;34635:15;34614:36;34592:84;;;;-1:-1:-1;34655:21:0;;-1:-1:-1;;;34655:21:0;;;;34592:84;34588:188;;;34722:42;34737:20;34759:4;34722:14;:42::i;:::-;-1:-1:-1;;;;;34970:24:0;;34849:12;34970:24;;;:18;:24;;;;;;34864:4;;34970:24;;;:50;;-1:-1:-1;;;;;;34998:22:0;;;;;;:18;:22;;;;;;;;34970:50;34966:98;;;-1:-1:-1;35047:5:0;34966:98;35142:42;35157:4;35163:2;35167:7;35176;35142:14;:42::i;:::-;33170:2022;;;;;;;:::o;14759:240::-;14879:7;14940:12;14932:6;;;;14924:29;;;;-1:-1:-1;;;14924:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;14975:5:0;;;14759:240::o;26474:267::-;26528:15;;;-1:-1:-1;;;;;;26528:15:0;;;;;;;26518:25;-1:-1:-1;;26518:25:0;;;;26570:21;;;;;;26554:37;;;;-1:-1:-1;;;;26554:37:0;;;-1:-1:-1;;;;;;26554:37:0;;;;;;;;;;;;;;26618:21;;;-1:-1:-1;;;;;;26618:21:0;;;;;26602:37;;-1:-1:-1;;;;26602:37:0;;;;;;;26664:19;;;;;;;;26650:33;;;;;;;;26602:13;26711:22;;;;;;;;26694:39;;;;;;26474:267::o;31224:164::-;31266:7;31287:15;31304;31323:19;:17;:19::i;:::-;31286:56;;-1:-1:-1;31286:56:0;-1:-1:-1;31360:20:0;31286:56;;31360:11;:20::i;:::-;31353:27;;;;31224:164;:::o;13617:98::-;13675:7;13702:5;13706:1;13702;:5;:::i;12480:98::-;12538:7;12565:5;12569:1;12565;:5;:::i;29628:624::-;29728:7;29750;29772;29794;29816;29838;29874:23;29898:12;29911:18;29933:20;29945:7;29933:11;:20::i;:::-;29873:80;;;;;;29965:15;29982:23;30007:12;30023:47;30035:7;30043:4;30048:10;30059;:8;:10::i;:::-;30023:11;:47::i;:::-;29964:106;;;;-1:-1:-1;29964:106:0;;-1:-1:-1;30174:15:0;;-1:-1:-1;30204:4:0;;-1:-1:-1;30223:10:0;;-1:-1:-1;29628:624:0;;-1:-1:-1;;;;;29628:624:0:o;12861:98::-;12919:7;12946:5;12950:1;12946;:5;:::i;25865:601::-;25926:7;;;;;;;:12;:47;;;;-1:-1:-1;25955:13:0;;-1:-1:-1;;;25955:13:0;;;;:18;25926:47;:82;;;;-1:-1:-1;25990:13:0;;-1:-1:-1;;;25990:13:0;;;;:18;25926:82;:115;;;;-1:-1:-1;26025:11:0;;-1:-1:-1;;;26025:11:0;;;;:16;25926:115;:151;;;;-1:-1:-1;26058:14:0;;-1:-1:-1;;;26058:14:0;;;;:19;25926:151;25908:188;;;25865:601::o;25908:188::-;26126:7;;;26216:13;;;26262:11;;;26216:13;26309:14;;-1:-1:-1;;;;;;;;;;;;26108:25:0;26126:7;;;;;;26108:25;;;;-1:-1:-1;;26108:25:0;;;;26168:13;;;;;;26144:37;;;;-1:-1:-1;;;;26144:37:0;;;-1:-1:-1;;;;;;26144:37:0;;;;;;;;;;;26358:17;;;;-1:-1:-1;;;;;;;;;;26216:13:0;;;;;26192:37;;26386:17;;-1:-1:-1;;;;26386:17:0;;;;;;;26262:11;;;;;26240:33;;26414:15;;;;;;;;;;;;26309:14;;;;;;26284:39;;;26440:18;;;;;;;;;;;25865:601::o;39126:686::-;39277:15;39307:23;39345:12;39372:23;39410:12;39437:18;39469:19;39480:7;39469:10;:19::i;:::-;-1:-1:-1;;;;;39517:15:0;;;;;;:7;:15;;;;;;39262:226;;-1:-1:-1;39262:226:0;;-1:-1:-1;39262:226:0;;-1:-1:-1;39262:226:0;-1:-1:-1;39262:226:0;-1:-1:-1;39262:226:0;-1:-1:-1;39517:28:0;;39537:7;39517:19;:28::i;:::-;-1:-1:-1;;;;;39499:15:0;;;;;;:7;:15;;;;;;;;:46;;;;39574:7;:15;;;;:28;;39594:7;39574:19;:28::i;:::-;-1:-1:-1;;;;;39556:15:0;;;;;;;:7;:15;;;;;;:46;;;;39634:18;;;;;;;:39;;39657:15;39634:22;:39::i;:::-;-1:-1:-1;;;;;39613:18:0;;;;;;:7;:18;;;;;:60;39684:26;39699:10;39684:14;:26::i;:::-;39721:23;39733:4;39739;39721:11;:23::i;:::-;39777:9;-1:-1:-1;;;;;39760:44:0;39769:6;-1:-1:-1;;;;;39760:44:0;;39788:15;39760:44;;;;15742:25:1;;15730:2;15715:18;;15697:76;39760:44:0;;;;;;;;39126:686;;;;;;;;;:::o;38420:698::-;38569:15;38599:23;38637:12;38664:23;38702:12;38729:18;38761:19;38772:7;38761:10;:19::i;:::-;-1:-1:-1;;;;;38809:15:0;;;;;;:7;:15;;;;;;38554:226;;-1:-1:-1;38554:226:0;;-1:-1:-1;38554:226:0;;-1:-1:-1;38554:226:0;-1:-1:-1;38554:226:0;-1:-1:-1;38554:226:0;-1:-1:-1;38809:28:0;;38554:226;38809:19;:28::i;:::-;-1:-1:-1;;;;;38791:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;38869:18;;;;;:7;:18;;;;;:39;;38892:15;38869:22;:39::i;:::-;-1:-1:-1;;;;;38848:18:0;;;;;;:7;:18;;;;;;;;:60;;;;38940:7;:18;;;;:39;;38963:15;38940:22;:39::i;37787:625::-;37934:15;37964:23;38002:12;38029:23;38067:12;38094:18;38126:19;38137:7;38126:10;:19::i;:::-;-1:-1:-1;;;;;38174:15:0;;;;;;:7;:15;;;;;;37919:226;;-1:-1:-1;37919:226:0;;-1:-1:-1;37919:226:0;;-1:-1:-1;37919:226:0;-1:-1:-1;37919:226:0;-1:-1:-1;37919:226:0;-1:-1:-1;38174:28:0;;37919:226;38174:19;:28::i;39820:757::-;39971:15;40001:23;40039:12;40066:23;40104:12;40131:18;40163:19;40174:7;40163:10;:19::i;:::-;-1:-1:-1;;;;;40211:15:0;;;;;;:7;:15;;;;;;39956:226;;-1:-1:-1;39956:226:0;;-1:-1:-1;39956:226:0;;-1:-1:-1;39956:226:0;-1:-1:-1;39956:226:0;-1:-1:-1;39956:226:0;-1:-1:-1;40211:28:0;;40231:7;40211:19;:28::i;:::-;-1:-1:-1;;;;;40193:15:0;;;;;;:7;:15;;;;;;;;:46;;;;40268:7;:15;;;;:28;;40288:7;40268:19;:28::i;13218:98::-;13276:7;13303:5;13307:1;13303;:5;:::i;35200:1241::-;19224:16;:23;;-1:-1:-1;;;;;;;19224:23:0;;;;;;;;:16;35504:14;35477:11:::1;::::0;35448:13:::1;::::0;35419::::1;::::0;-1:-1:-1;;35504:14:0;;;::::1;;::::0;;::::1;::::0;35477:11;;;::::1;::::0;::::1;::::0;35419:42:::1;::::0;35448:13:::1;::::0;::::1;::::0;-1:-1:-1;;;35419:13:0;::::1;;:42;:::i;:::-;:69;;;;:::i;:::-;:99;;;;:::i;:::-;35567:13;::::0;35389:129;;-1:-1:-1;35529:19:0::1;::::0;-1:-1:-1;;;35567:13:0;::::1;;;:18:::0;35563:187:::1;;35653:13;::::0;35616:51:::1;::::0;35653:13:::1;-1:-1:-1::0;;;35653:13:0;;::::1;::::0;::::1;::::0;35616:32:::1;::::0;:20;;:32;::::1;:24;:32::i;:51::-;35709:15;::::0;35602:65;;-1:-1:-1;35682:56:0::1;::::0;35702:5;;-1:-1:-1;;;;;35709:15:0::1;35602:65:::0;35682:19:::1;:56::i;:::-;35764:13;::::0;-1:-1:-1;;;35764:13:0;::::1;;;:18:::0;35760:219:::1;;35868:13;::::0;35813:83:::1;::::0;35868:13:::1;-1:-1:-1::0;;;35868:13:0;;::::1;::::0;::::1;::::0;35813:32:::1;::::0;:20;;:32;::::1;:24;:32::i;:83::-;35938:15;::::0;35799:97;;-1:-1:-1;35911:56:0::1;::::0;35931:5;;-1:-1:-1;;;;;35938:15:0::1;35799:97:::0;35911:19:::1;:56::i;:::-;35993:11;::::0;-1:-1:-1;;;35993:11:0;::::1;;;:16:::0;35989:213:::1;;36095:11;::::0;36040:81:::1;::::0;36095:11:::1;-1:-1:-1::0;;;36095:11:0;;::::1;::::0;::::1;::::0;36040:32:::1;::::0;:20;;:32;::::1;:24;:32::i;:81::-;36163:13;::::0;36026:95;;-1:-1:-1;36136:54:0::1;::::0;36156:5;;-1:-1:-1;;;;;36163:13:0::1;36026:95:::0;36136:19:::1;:54::i;:::-;36216:14;::::0;-1:-1:-1;;;36216:14:0;::::1;;;:19:::0;36212:222:::1;;36321:14;::::0;36266:84:::1;::::0;36321:14:::1;-1:-1:-1::0;;;36321:14:0;;::::1;::::0;::::1;::::0;36266:32:::1;::::0;:20;;:32;::::1;:24;:32::i;:84::-;36392:16;::::0;36252:98;;-1:-1:-1;36365:57:0::1;::::0;36385:5;;-1:-1:-1;;;;;36392:16:0::1;36252:98:::0;36365:19:::1;:57::i;:::-;-1:-1:-1::0;;19270:16:0;:24;;-1:-1:-1;;;;19270:24:0;;;-1:-1:-1;;35200:1241:0:o;31396:605::-;31494:7;;31530;;31447;;;;;31548:338;31572:9;:16;31568:20;;31548:338;;;31656:7;31632;:21;31640:9;31650:1;31640:12;;;;;;-1:-1:-1;;;31640:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31640:12:0;31632:21;;;;;;;;;;;;;:31;;:83;;;31708:7;31684;:21;31692:9;31702:1;31692:12;;;;;;-1:-1:-1;;;31692:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31692:12:0;31684:21;;;;;;;;;;;;;:31;31632:83;31610:146;;;31739:7;;31748;;31731:25;;;;;;;31396:605;;:::o;31610:146::-;31781:34;31793:7;:21;31801:9;31811:1;31801:12;;;;;;-1:-1:-1;;;31801:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31801:12:0;31793:21;;;;;;;;;;;;;31781:7;;:11;:34::i;:::-;31771:44;;31840:34;31852:7;:21;31860:9;31870:1;31860:12;;;;;;-1:-1:-1;;;31860:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31860:12:0;31852:21;;;;;;;;;;;;;31840:7;;:11;:34::i;:::-;31830:44;-1:-1:-1;31590:3:0;;;;:::i;:::-;;;;31548:338;;;-1:-1:-1;31922:7:0;;31910;;:20;;:11;:20::i;:::-;31900:7;:30;31896:61;;;31940:7;;31949;;31932:25;;;;;;31396:605;;:::o;31896:61::-;31976:7;;31985;;-1:-1:-1;31396:605:0;-1:-1:-1;31396:605:0:o;30260:394::-;30343:7;30365;30387;30422:12;30437:24;30453:7;30437:15;:24::i;:::-;30422:39;;30472:18;30493:30;30515:7;30493:21;:30::i;:::-;30472:51;-1:-1:-1;30534:23:0;30560:33;30472:51;30560:17;:7;30572:4;30560:11;:17::i;:::-;:21;;:33::i;:::-;30534:59;30629:4;;-1:-1:-1;30635:10:0;;-1:-1:-1;30260:394:0;;-1:-1:-1;;;30260:394:0:o;30662:554::-;30861:7;;;;30958:24;:7;30970:11;30958;:24::i;:::-;30940:42;-1:-1:-1;30993:12:0;31008:21;:4;31017:11;31008:8;:21::i;:::-;30993:36;-1:-1:-1;31040:18:0;31061:27;:10;31076:11;31061:14;:27::i;:::-;31040:48;-1:-1:-1;31099:23:0;31125:33;31040:48;31125:17;:7;31137:4;31125:11;:17::i;:33::-;31177:7;;;;-1:-1:-1;31203:4:0;;-1:-1:-1;30662:554:0;;-1:-1:-1;;;;;;;30662:554:0:o;32009:355::-;32072:19;32094:10;:8;:10::i;:::-;32072:32;-1:-1:-1;32115:18:0;32136:27;:10;32072:32;32136:14;:27::i;:::-;32215:4;32199:22;;;;:7;:22;;;;;;32115:48;;-1:-1:-1;32199:38:0;;32115:48;32199:26;:38::i;:::-;32190:4;32174:22;;;;:7;:22;;;;;;;;:63;;;;32252:11;:26;;;;;;32248:108;;;32334:4;32318:22;;;;:7;:22;;;;;;:38;;32345:10;32318:26;:38::i;:::-;32309:4;32293:22;;;;:7;:22;;;;;:63;32009:355;;;:::o;29473:147::-;29551:7;;:17;;29563:4;29551:11;:17::i;:::-;29541:7;:27;29592:10;;:20;;29607:4;29592:14;:20::i;:::-;29579:10;:33;-1:-1:-1;;29473:147:0:o;40585:524::-;-1:-1:-1;;;;;40736:15:0;;;;;;:7;:15;;;;;;:27;;40756:6;40736:19;:27::i;:::-;-1:-1:-1;;;;;40718:15:0;;;;;;;:7;:15;;;;;;:45;;;;40795:18;;;;;;;:30;;40818:6;40795:22;:30::i;:::-;-1:-1:-1;;;;;40774:18:0;;;;;;;:7;:18;;;;;;;;:51;;;;40842:19;;;;;:11;:19;;;;;;;40838:97;;;-1:-1:-1;;;;;40896:15:0;;;;;;:7;:15;;;;;;:27;;40916:6;40896:19;:27::i;:::-;-1:-1:-1;;;;;40878:15:0;;;;;;:7;:15;;;;;:45;40838:97;-1:-1:-1;;;;;40949:22:0;;;;;;:11;:22;;;;;;;;40945:106;;;-1:-1:-1;;;;;41009:18:0;;;;;;:7;:18;;;;;;:30;;41032:6;41009:22;:30::i;:::-;-1:-1:-1;;;;;40988:18:0;;;;;;:7;:18;;;;;:51;40945:106;41083:9;-1:-1:-1;;;;;41066:35:0;41075:6;-1:-1:-1;;;;;41066:35:0;;41094:6;41066:35;;;;15742:25:1;;15730:2;15715:18;;15697:76;32372:130:0;32475:7;;32436;;32463:31;;32488:5;;32463:20;;:7;;32475;;;;;32463:11;:20::i;32510:151::-;32607:7;32639:14;:7;32607;32639:11;:14::i;14:159:1:-;81:20;;141:6;130:18;;120:29;;110:2;;163:1;160;153:12;110:2;62:111;;;:::o;178:257::-;237:6;290:2;278:9;269:7;265:23;261:32;258:2;;;311:6;303;296:22;258:2;355:9;342:23;374:31;399:5;374:31;:::i;710:398::-;778:6;786;839:2;827:9;818:7;814:23;810:32;807:2;;;860:6;852;845:22;807:2;904:9;891:23;923:31;948:5;923:31;:::i;:::-;973:5;-1:-1:-1;1030:2:1;1015:18;;1002:32;1043:33;1002:32;1043:33;:::i;:::-;1095:7;1085:17;;;797:311;;;;;:::o;1113:466::-;1190:6;1198;1206;1259:2;1247:9;1238:7;1234:23;1230:32;1227:2;;;1280:6;1272;1265:22;1227:2;1324:9;1311:23;1343:31;1368:5;1343:31;:::i;:::-;1393:5;-1:-1:-1;1450:2:1;1435:18;;1422:32;1463:33;1422:32;1463:33;:::i;:::-;1217:362;;1515:7;;-1:-1:-1;;;1569:2:1;1554:18;;;;1541:32;;1217:362::o;1584:325::-;1652:6;1660;1713:2;1701:9;1692:7;1688:23;1684:32;1681:2;;;1734:6;1726;1719:22;1681:2;1778:9;1765:23;1797:31;1822:5;1797:31;:::i;:::-;1847:5;1899:2;1884:18;;;;1871:32;;-1:-1:-1;;;1671:238:1:o;1914:251::-;1970:6;2023:2;2011:9;2002:7;1998:23;1994:32;1991:2;;;2044:6;2036;2029:22;1991:2;2088:9;2075:23;2107:28;2129:5;2107:28;:::i;2170:255::-;2237:6;2290:2;2278:9;2269:7;2265:23;2261:32;2258:2;;;2311:6;2303;2296:22;2258:2;2348:9;2342:16;2367:28;2389:5;2367:28;:::i;2430:194::-;2488:6;2541:2;2529:9;2520:7;2516:23;2512:32;2509:2;;;2562:6;2554;2547:22;2509:2;2590:28;2608:9;2590:28;:::i;2629:484::-;2719:6;2727;2735;2743;2751;2804:3;2792:9;2783:7;2779:23;2775:33;2772:2;;;2826:6;2818;2811:22;2772:2;2854:28;2872:9;2854:28;:::i;:::-;2844:38;;2901:37;2934:2;2923:9;2919:18;2901:37;:::i;:::-;2891:47;;2957:37;2990:2;2979:9;2975:18;2957:37;:::i;:::-;2947:47;;3013:37;3046:2;3035:9;3031:18;3013:37;:::i;:::-;3003:47;;3069:38;3102:3;3091:9;3087:19;3069:38;:::i;:::-;3059:48;;2762:351;;;;;;;;:::o;3118:190::-;3177:6;3230:2;3218:9;3209:7;3205:23;3201:32;3198:2;;;3251:6;3243;3236:22;3198:2;-1:-1:-1;3279:23:1;;3188:120;-1:-1:-1;3188:120:1:o;3313:325::-;3381:6;3389;3442:2;3430:9;3421:7;3417:23;3413:32;3410:2;;;3463:6;3455;3448:22;3410:2;3504:9;3491:23;3481:33;;3564:2;3553:9;3549:18;3536:32;3577:31;3602:5;3577:31;:::i;3643:319::-;3708:6;3716;3769:2;3757:9;3748:7;3744:23;3740:32;3737:2;;;3790:6;3782;3775:22;3737:2;3831:9;3818:23;3808:33;;3891:2;3880:9;3876:18;3863:32;3904:28;3926:5;3904:28;:::i;5104:603::-;5216:4;5245:2;5274;5263:9;5256:21;5306:6;5300:13;5349:6;5344:2;5333:9;5329:18;5322:34;5374:4;5387:140;5401:6;5398:1;5395:13;5387:140;;;5496:14;;;5492:23;;5486:30;5462:17;;;5481:2;5458:26;5451:66;5416:10;;5387:140;;;5545:6;5542:1;5539:13;5536:2;;;5615:4;5610:2;5601:6;5590:9;5586:22;5582:31;5575:45;5536:2;-1:-1:-1;5691:2:1;5670:15;-1:-1:-1;;5666:29:1;5651:45;;;;5698:2;5647:54;;5225:482;-1:-1:-1;;;5225:482:1:o;6048:356::-;6250:2;6232:21;;;6269:18;;;6262:30;6328:34;6323:2;6308:18;;6301:62;6395:2;6380:18;;6222:182::o;10850:350::-;11052:2;11034:21;;;11091:2;11071:18;;;11064:30;11130:28;11125:2;11110:18;;11103:56;11191:2;11176:18;;11024:176::o;11205:401::-;11407:2;11389:21;;;11446:2;11426:18;;;11419:30;11485:34;11480:2;11465:18;;11458:62;-1:-1:-1;;;11551:2:1;11536:18;;11529:35;11596:3;11581:19;;11379:227::o;12776:336::-;12978:2;12960:21;;;13017:2;12997:18;;;12990:30;-1:-1:-1;;;13051:2:1;13036:18;;13029:42;13103:2;13088:18;;12950:162::o;15967:224::-;16006:3;16034:6;16067:2;16064:1;16060:10;16097:2;16094:1;16090:10;16128:3;16124:2;16120:12;16115:3;16112:21;16109:2;;;16136:18;;:::i;:::-;16172:13;;16014:177;-1:-1:-1;;;;16014:177:1:o;16196:128::-;16236:3;16267:1;16263:6;16260:1;16257:13;16254:2;;;16273:18;;:::i;:::-;-1:-1:-1;16309:9:1;;16244:80::o;16329:217::-;16369:1;16395;16385:2;;-1:-1:-1;;;16420:31:1;;16474:4;16471:1;16464:15;16502:4;16427:1;16492:15;16385:2;-1:-1:-1;16531:9:1;;16375:171::o;16551:168::-;16591:7;16657:1;16653;16649:6;16645:14;16642:1;16639:21;16634:1;16627:9;16620:17;16616:45;16613:2;;;16664:18;;:::i;:::-;-1:-1:-1;16704:9:1;;16603:116::o;16724:125::-;16764:4;16792:1;16789;16786:8;16783:2;;;16797:18;;:::i;:::-;-1:-1:-1;16834:9:1;;16773:76::o;16854:380::-;16933:1;16929:12;;;;16976;;;16997:2;;17051:4;17043:6;17039:17;17029:27;;16997:2;17104;17096:6;17093:14;17073:18;17070:38;17067:2;;;17150:10;17145:3;17141:20;17138:1;17131:31;17185:4;17182:1;17175:15;17213:4;17210:1;17203:15;17067:2;;16909:325;;;:::o;17239:135::-;17278:3;-1:-1:-1;;17299:17:1;;17296:2;;;17319:18;;:::i;:::-;-1:-1:-1;17366:1:1;17355:13;;17286:88::o;17379:127::-;17440:10;17435:3;17431:20;17428:1;17421:31;17471:4;17468:1;17461:15;17495:4;17492:1;17485:15;17511:131;-1:-1:-1;;;;;17586:31:1;;17576:42;;17566:2;;17632:1;17629;17622:12;17647:118;17733:5;17726:13;17719:21;17712:5;17709:32;17699:2;;17755:1;17752;17745:12

Swarm Source

ipfs://0c84bcf6432d11e12982a2a60bcc75a9dfbaad4ed06aeecceb678f65a92fdc28
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.