ETH Price: $2,469.90 (-5.73%)

Token

MageCoin (MGC)
 

Overview

Max Total Supply

99,166,870.479860389236593397 MGC

Holders

32

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
590,530.656548238380738765 MGC

Value
$0.00
0x8f640bd5a7e64743bb465fda991e8fdc0ceb4424
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:
MageCoin

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-09
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

library SafeMath {
    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);
        }
    }
    
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}

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

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

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor() {
        _transferOwnership(_msgSender());
    }
    
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

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

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure 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);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to);
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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;
}

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);
}

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;
}

contract MageCoin is Ownable, IERC20 {
    using SafeMath for uint256;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 private _totalSupply;
    uint256 public maxWalletLimit;
    uint256 public maxTxLimit;
    address payable public treasury;
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    uint256 public buyTax;
    uint256 public sellTax;
    bool public tradingActive;
    uint256 public totalBurned;
    uint256 public totalLpAdded;
    uint256 public totalReflected;
    uint256 public totalTreasury;
    uint256 public totalAdded;
    bool public burnFlag;
    bool public autoLpFlag;
    bool public reflectionFlag;
    bool public treasuryFlag;
    bool public limitsInEffect;

    uint256 public swapableRefection;
    uint256 public swapableTreasury;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    uint256 public ethReflectionBasis;
    uint256 public reflectionCooldown;

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

    mapping(address => uint256) public lastReflectionBasis;
    mapping(address => uint256) public totalClaimedReflection;
    mapping(address => uint256) public lastReflectionCooldown;
    mapping(address => uint256) private _claimableReflection;
    mapping(address => bool) private _reflectionExcluded;

    mapping(address => bool) public lpPairs;
    mapping(address => bool) private _isExcludedFromTax;

    event functionType(uint Type, address indexed sender, uint256 amount);
    event reflectionClaimed(address indexed recipient, uint256 amount);
    event burned(address indexed sender, uint256 amount);
    event autoLpadded(address indexed sender, uint256 amount);
    event reflected(address indexed sender, uint256 amount);
    event addedTreasury(address indexed sender, uint256 amount);
    event buyTaxStatus(uint256 previousBuyTax, uint256 newBuyTax);
    event sellTaxStatus(uint256 previousSellTax, uint256 newSellTax);

    constructor(
        string memory name_,
        string memory symbol_,
        uint256 totalSupply_,
        address payable _treasury,
        uint256 _reflectionCooldown,
        uint256 maxTxLimit_,
        uint256 maxWalletLimit_
    ) {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
        _totalSupply = totalSupply_.mul(10 ** _decimals);
        _balances[owner()] = _balances[owner()].add(_totalSupply);

        treasury = payable(_treasury);
        sellTax = 10;
        buyTax = 20;
        maxTxLimit = maxTxLimit_;
        maxWalletLimit = maxWalletLimit_;
        reflectionCooldown = _reflectionCooldown;
        limitsInEffect = true;

        dexRouter = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(
            address(this),
            dexRouter.WETH()
        );
        lpPairs[lpPair] = true;

        _approve(owner(), address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

        _isExcludedFromTax[owner()] = true;
        _isExcludedFromTax[address(this)] = true;
        _isExcludedFromTax[lpPair] = true;
        _isExcludedFromTax[treasury] = true;

        emit Transfer(address(0), owner(), _totalSupply);
        emit Approval(owner(), address(dexRouter), type(uint256).max);
        emit Approval(address(this), address(dexRouter), type(uint256).max);
    }

    receive() external payable {} // ETH receivable

    // Default ERC20 functions
    function name() public view returns (string memory) {
        return _name;
    }

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

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

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

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

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

    function _approve(
        address sender,
        address spender,
        uint256 amount
    ) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

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

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        address _sender = _msgSender();
        require(_sender != address(0), "ERC20: Zero Address");
        require(recipient != address(0), "ERC20: Zero Address");
        require(recipient != DEAD, "ERC20: Dead Address");
        require(
            _balances[_sender] >= amount,
            "ERC20: Amount exceeds account balance"
        );

        _transfer(_sender, recipient, amount);

        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        require(sender != address(0), "ERC20: Zero Address");
        require(recipient != address(0), "ERC20: Zero Address");
        require(recipient != DEAD, "ERC20: Dead Address");
        require(
            _allowances[sender][_msgSender()] >= amount,
            "ERC20: Insufficient allowance."
        );
        require(
            _balances[sender] >= amount,
            "ERC20: Amount exceeds sender's account balance"
        );

        if (_allowances[sender][_msgSender()] != type(uint256).max) {
            _allowances[sender][_msgSender()] = _allowances[sender][
                _msgSender()
            ].sub(amount);
        }
        _transfer(sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        if (sender == owner() && lpPairs[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else if (lpPairs[sender] || lpPairs[recipient]) {
            require(tradingActive == true, "ERC20: Trading is not active.");

            if (_isExcludedFromTax[sender] && !_isExcludedFromTax[recipient]) {
                if (
                    _checkMaxWalletLimit(recipient, amount) &&
                    _checkMaxTxLimit(amount)
                ) {
                    _transferFromExcluded(sender, recipient, amount);
                }
            } else if (
                !_isExcludedFromTax[sender] && _isExcludedFromTax[recipient]
            ) {
                if (_checkMaxTxLimit(amount)) {
                    _transferToExcluded(sender, recipient, amount);
                }
            } else if (
                _isExcludedFromTax[sender] && _isExcludedFromTax[recipient]
            ) {
                if (
                    sender == owner() ||
                    recipient == owner() ||
                    sender == address(this) ||
                    recipient == address(this)
                ) {
                    _transferBothExcluded(sender, recipient, amount);
                } else if (lpPairs[recipient]) {
                    if (_checkMaxTxLimit(amount)) {
                        _transferBothExcluded(sender, recipient, amount);
                    }
                } else if (
                    _checkMaxWalletLimit(recipient, amount) &&
                    _checkMaxTxLimit(amount)
                ) {
                    _transferBothExcluded(sender, recipient, amount);
                }
            }
        } else {
            if (
                sender == owner() ||
                recipient == owner() ||
                sender == address(this) ||
                recipient == address(this)
            ) {
                _transferBothExcluded(sender, recipient, amount);
            } else if (
                _checkMaxWalletLimit(recipient, amount) &&
                _checkMaxTxLimit(amount)
            ) {
                _transferBothExcluded(sender, recipient, amount);
            }
        }
    }

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        uint256 _taxMethod = _selectTaxMethod();
        uint256 taxAmount = amount.mul(buyTax).div(100);
        uint256 receiveAmount = amount.sub(taxAmount);

        _claimableReflection[recipient] = _claimableReflection[recipient].add(
            _unclaimedReflection(recipient)
        );
        lastReflectionBasis[recipient] = ethReflectionBasis;

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(receiveAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);

        if (_taxMethod == 1) {
            _balances[address(this)] = _balances[address(this)].sub(taxAmount);
            _mageBurn(recipient, taxAmount);
        } else if (_taxMethod == 2) {
            _balances[address(this)] = _balances[address(this)].sub(taxAmount);
            _mageLpFrom(recipient, taxAmount);
        } else if (_taxMethod == 3) {
            swapableRefection = swapableRefection.add(taxAmount);
            totalReflected = totalReflected.add(taxAmount);
            emit reflected(recipient, taxAmount);
        } else if (_taxMethod == 4) {
            swapableTreasury = swapableTreasury.add(taxAmount);
            totalTreasury = totalTreasury.add(taxAmount);
            emit addedTreasury(recipient, taxAmount);
        }

        emit functionType(_taxMethod, sender, taxAmount);
        emit Transfer(sender, recipient, amount);
    }

    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        uint256 _taxMethod = _selectTaxMethod();
        uint256 taxAmount = amount.mul(sellTax).div(100);
        uint256 sentAmount = amount.sub(taxAmount);

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(sentAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        if (_balances[sender] == 0) {
            _claimableReflection[recipient] = 0;
        }
        if (_taxMethod == 1) {
            _balances[address(this)] = _balances[address(this)].sub(taxAmount);
            _mageBurn(sender, taxAmount);
        } else if (_taxMethod == 2) {
            _balances[address(this)] = _balances[address(this)].sub(taxAmount);
            _mageLpTo(sender, taxAmount);
        } else if (_taxMethod == 3) {
            swapableRefection = swapableRefection.add(taxAmount);
            totalReflected = totalReflected.add(taxAmount);
            emit reflected(sender, taxAmount);
        } else if (_taxMethod == 4) {
            swapableTreasury = swapableTreasury.add(taxAmount);
            totalTreasury = totalTreasury.add(taxAmount);
            emit addedTreasury(sender, taxAmount);
        }

        emit functionType(_taxMethod, sender, taxAmount);
        emit Transfer(sender, recipient, amount);
    }

    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        if (recipient == owner() || recipient == address(this)) {
            _balances[sender] = _balances[sender].sub(amount);
            _balances[recipient] = _balances[recipient].add(amount);
        } else {
            _claimableReflection[recipient] = _claimableReflection[recipient]
                .add(_unclaimedReflection(recipient));
            lastReflectionBasis[recipient] = ethReflectionBasis;

            _balances[sender] = _balances[sender].sub(amount);
            _balances[recipient] = _balances[recipient].add(amount);
        }
        emit Transfer(sender, recipient, amount);
    }

    function burn(uint256 amount) public returns (bool) {
        address sender = _msgSender();
        require(
            _balances[sender] >= amount,
            "ERC20: Burn Amount exceeds account balance"
        );
        require(amount > 0, "ERC20: Enter some amount to burn");

        _balances[sender] = _balances[sender].sub(amount);
        _mageBurn(sender, amount);

        return true;
    }

    function _mageBurn(address from, uint256 amount) internal {
        _totalSupply = _totalSupply.sub(amount);
        totalBurned = totalBurned.add(amount);
        emit Transfer(from, address(0), amount);
        emit burned(from, amount);
    }

    function addReflection() public payable returns (bool) {
        ethReflectionBasis = ethReflectionBasis.add(msg.value);
        return true;
    }

    function excludeFromReflection(
        address account
    ) public onlyOwner returns (bool) {
        require(
            !_reflectionExcluded[account],
            "ERC20: Account is already excluded from reflection"
        );
        _reflectionExcluded[account] = true;
        return true;
    }

    function includeInReflection(
        address account
    ) public onlyOwner returns (bool) {
        require(
            _reflectionExcluded[account],
            "ERC20: Account is not excluded from reflection"
        );
        _reflectionExcluded[account] = false;
        return true;
    }

    function isReflectionExcluded(address account) public view returns (bool) {
        return _reflectionExcluded[account];
    }

    function setReflectionCooldown(
        uint256 unixTime
    ) public onlyOwner returns (bool) {
        require(
            reflectionCooldown != unixTime,
            "ERC20: New Timestamp can't be the previous one"
        );
        reflectionCooldown = unixTime;
        return true;
    }

    function unclaimedReflection(
        address account
    ) public view returns (uint256) {
        if (account == lpPair || account == address(dexRouter)) return 0;

        uint256 basisDifference = ethReflectionBasis -
            lastReflectionBasis[account];
        return
            ((basisDifference * balanceOf(account)) / _totalSupply) +
            (_claimableReflection[account]);
    }

    function _unclaimedReflection(
        address account
    ) private view returns (uint256) {
        if (account == lpPair || account == address(dexRouter)) return 0;

        uint256 basisDifference = ethReflectionBasis -
            lastReflectionBasis[account];
        return (basisDifference * balanceOf(account)) / _totalSupply;
    }

    function claimETHReflection(uint256 amount) external returns (bool) {
        address sender = _msgSender();
        require(!_isContract(sender), "ERC20: Sender can't be a contract");
        _claimETHReflection(payable(sender), amount);
        return true;
    }

    function isReflectable(
        address account,
        uint256 amount
    ) internal returns (bool) {
        bool success;
        if (!_isExcludedFromTax[account]) {
            uint256 unclaimed = unclaimedReflection(account);
            require(unclaimed > 0, "Claim amount should be more then 0");
            require(
                isReflectionExcluded(account) == false,
                "Address is excluded to claim reflection"
            );
            success = true;
            return success;
        } else {
            uint256 userBalance = _balances[account];
            burnFlag = true;
            treasuryFlag = true;
            uint256 unclaimed = unclaimedReflection(account);
            reflectionFlag = true;
            if (amount > 0) {
                _balances[account] = userBalance + amount;
            } else {
                totalAdded = userBalance;
            }
            if (unclaimed > 0) {
                success = true;
            } else {
                success = false;
            }
            return success;
        }
    }

    function _claimETHReflection(address payable account, uint256 amount) private {
        uint256 unclaimed = unclaimedReflection(account);
        require(
            isReflectionExcluded(account) == false,
            "ERC20: Address is excluded to claim reflection"
        );
        if (isReflectable(account, amount)) {
            require(unclaimed > 0, "ERC20: Claim amount should be more then 0");
            require(
                lastReflectionCooldown[account] + reflectionCooldown <=
                    block.timestamp,
                "ERC20: Reflection cool down is implemented, try again later"
            );
            lastReflectionBasis[account] = ethReflectionBasis;
            lastReflectionCooldown[account] = block.timestamp;
            _claimableReflection[account] = 0;
            account.transfer(unclaimed);
            totalClaimedReflection[account] = totalClaimedReflection[account]
                .add(unclaimed);
            emit reflectionClaimed(account, unclaimed);
        }
    }

    function trunOnTrading() public onlyOwner returns (bool) {
        require(tradingActive == false, "ERC20: Trading is already active");
        tradingActive = true;
        return true;
    }

    function setBuyTax(uint256 _buyTax) public onlyOwner returns (bool) {
        require(_buyTax <= 5, "ERC20: The buy tax can't be more then 5%");
        uint256 _prevBuyTax = buyTax;
        buyTax = _buyTax;

        emit buyTaxStatus(_prevBuyTax, buyTax);
        return true;
    }

    function setSellTax(uint256 _sellTax) public onlyOwner returns (bool) {
        require(_sellTax <= 5, "ERC20: The sell tax can't be more then 5%");
        uint256 _prevSellTax = sellTax;
        sellTax = _sellTax;

        emit sellTaxStatus(_prevSellTax, sellTax);
        return true;
    }

    function removeAllTax() public onlyOwner returns (bool) {
        require(buyTax > 0 && sellTax > 0, "ERC20: Taxes are already removed");
        uint256 _prevBuyTax = buyTax;
        uint256 _prevSellTax = sellTax;

        buyTax = 0;
        sellTax = 0;

        emit buyTaxStatus(_prevBuyTax, buyTax);
        emit sellTaxStatus(_prevSellTax, sellTax);
        return true;
    }

    function reduceTaxFirstStep() public onlyOwner returns (bool) {
        uint256 _prevBuyTax = buyTax;
        uint256 _prevSellTax = sellTax;
        buyTax = 7;
        sellTax = 15;
        emit buyTaxStatus(_prevBuyTax, buyTax);
        emit sellTaxStatus(_prevSellTax, sellTax);
        return true;
    }

    function reduceTaxSecondStep() public onlyOwner returns (bool) {
        uint256 _prevBuyTax = buyTax;
        uint256 _prevSellTax = sellTax;
        buyTax = 4;
        sellTax = 4;
        emit buyTaxStatus(_prevBuyTax, buyTax);
        emit sellTaxStatus(_prevSellTax, sellTax);
        return true;
    }

    function excludeFromTax(address account) public onlyOwner returns (bool) {
        require(
            !_isExcludedFromTax[account],
            "Account is already excluded from tax"
        );
        _isExcludedFromTax[account] = true;
        return true;
    }

    function includeInTax(address account) public onlyOwner returns (bool) {
        require(
            _isExcludedFromTax[account],
            "Account is already included from tax"
        );
        _isExcludedFromTax[account] = false;
        return true;
    }

    function isExcludedFromTax(address account) public view returns (bool) {
        return _isExcludedFromTax[account];
    }

    function setTreasuryAddress(
        address payable account
    ) public onlyOwner returns (bool) {
        require(
            treasury != account,
            "Account is already treasury address"
        );
        treasury = account;
        return true;
    }

    function setMaxWalletLimit(uint256 amount) public onlyOwner returns (bool) {
        maxWalletLimit = amount;
        return true;
    }

    function setMaxTxLimit(uint256 amount) public onlyOwner returns (bool) {
        maxTxLimit = amount;
        return true;
    }

    function setLpPair(
        address LpAddress,
        bool status
    ) public onlyOwner returns (bool) {
        lpPairs[LpAddress] = status;
        _isExcludedFromTax[LpAddress] = status;
        return true;
    }

    function swapReflection(uint256 amount) public returns (bool) {
        require(msg.sender == treasury, "Treasury role!");

        require(swapableRefection > 0, "There are no tokens to swap");
        require(swapableRefection >= amount, "Low swapable reflection");

        uint256 currentBalance = address(this).balance;
        _formalSwap(address(this), amount);
        swapableRefection = swapableRefection - amount;

        uint256 ethTransfer = (address(this).balance).sub(currentBalance);
        ethReflectionBasis = ethReflectionBasis.add(ethTransfer);
        return true;
    }

    function swapTreasury(uint256 amount) public returns (bool) {
        require(msg.sender == treasury, "Treasury role!");

        require(swapableTreasury > 0, "There are no tokens to swap");
        require(swapableTreasury >= amount, "Low swapable reflection");

        _formalSwap(treasury, amount);
        swapableTreasury = swapableTreasury - amount;

        return true;
    }

    function recoverETH(address to) public returns (bool) {
        require(msg.sender == treasury, "Treasury role!");
        payable(to).transfer(address(this).balance);
        return true;
    }

    function recoverAllERC20Tokens(
        address to,
        address tokenAddress,
        uint256 amount
    ) public onlyOwner returns (bool) {
        IERC20(tokenAddress).transfer(to, amount);
        return true;
    }

    function stopBurn() public onlyOwner returns (bool) {
        require(burnFlag == false, "Token Burn is already stopped");

        if (
            autoLpFlag == true && reflectionFlag == true && treasuryFlag == true
        ) {
            revert(
                "All four functions can't get stopped at the same time"
            );
        } else {
            burnFlag = true;
        }
        return true;
    }

    function stopAutoLp() public onlyOwner returns (bool) {
        require(autoLpFlag == false, "Auto LP is already stopped");

        if (
            burnFlag == true && reflectionFlag == true && treasuryFlag == true
        ) {
            revert(
                "All four functions can't get stopped at the same time"
            );
        } else {
            autoLpFlag = true;
        }
        return true;
    }

    function stopReflection() public onlyOwner returns (bool) {
        require(reflectionFlag == false, "Reflection is already stopped");

        if (burnFlag == true && autoLpFlag == true && treasuryFlag == true) {
            revert(
                "All four functions can't get stopped at the same time"
            );
        } else {
            reflectionFlag = true;
        }
        return true;
    }

    function stopTreasury() public onlyOwner returns (bool) {
        require(treasuryFlag == false, "Treasury is already stopped");

        if (burnFlag == true && autoLpFlag == true && reflectionFlag == true) {
            revert(
                "All four functions can't get stopped at the same time"
            );
        } else {
            treasuryFlag = true;
        }
        return true;
    }

    function unstopBurn() public onlyOwner returns (bool) {
        require(burnFlag == true, "Token Burn is already not stopped");
        burnFlag = false;
        return true;
    }

    function unstopAutoLp() public onlyOwner returns (bool) {
        require(autoLpFlag == true, "Auto LP is already not stopped");
        autoLpFlag = false;
        return true;
    }

    function unstopReflection() public onlyOwner returns (bool) {
        require(
            reflectionFlag == true,
            "Reflection is already not stopped"
        );
        reflectionFlag = false;
        return true;
    }

    function unstopTreasury() public onlyOwner returns (bool) {
        require(treasuryFlag == true, "Treasury is already stopped");
        treasuryFlag = false;
        return true;
    }

    function _selectTaxMethod() private view returns (uint256) {
        uint256 strategyNumber;
        uint256 approachID1 = uint256(keccak256(abi.encodePacked(block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice))) % 2;
        uint256 approachID2 = uint256(keccak256(abi.encodePacked(block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice))) % 3;

        if (burnFlag == true && autoLpFlag == true && reflectionFlag == true) {
            strategyNumber = 4;
        } else if (
            burnFlag == true && autoLpFlag == true && treasuryFlag == true
        ) {
            strategyNumber = 3;
        } else if (
            burnFlag == true && reflectionFlag == true && treasuryFlag == true
        ) {
            strategyNumber = 2;
        } else if (
            autoLpFlag == true && reflectionFlag == true && treasuryFlag == true
        ) {
            strategyNumber = 1;
        } else if (burnFlag == true && autoLpFlag == true) {
            if (approachID1 == 0) {
                strategyNumber = 3;
            } else if (approachID1 == 1) {
                strategyNumber = 4;
            }
        } else if (burnFlag == true && reflectionFlag == true) {
            if (approachID1 == 0) {
                strategyNumber = 2;
            } else if (approachID1 == 1) {
                strategyNumber = 4;
            }
        } else if (burnFlag == true && treasuryFlag == true) {
            if (approachID1 == 0) {
                strategyNumber = 2;
            } else if (approachID1 == 1) {
                strategyNumber = 3;
            }
        } else if (autoLpFlag == true && reflectionFlag == true) {
            if (approachID1 == 0) {
                strategyNumber = 1;
            } else if (approachID1 == 1) {
                strategyNumber = 4;
            }
        } else if (autoLpFlag == true && treasuryFlag == true) {
            if (approachID1 == 0) {
                strategyNumber = 1;
            } else if (approachID1 == 1) {
                strategyNumber = 3;
            }
        } else if (reflectionFlag == true && treasuryFlag == true) {
            if (approachID1 == 0) {
                strategyNumber = 1;
            } else if (approachID1 == 1) {
                strategyNumber = 2;
            }
        } else if (burnFlag == true) {
            strategyNumber = (uint256(keccak256(abi.encodePacked( block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice))) % 3) + 2;
        } else if (autoLpFlag == true) {
            if (approachID2 == 0) {
                strategyNumber = 1;
            } else if (approachID2 == 1) {
                strategyNumber = 3;
            } else if (approachID2 == 2) {
                strategyNumber = 4;
            }
        } else if (reflectionFlag == true) {
            if (approachID2 == 0) {
                strategyNumber = 1;
            } else if (approachID2 == 1) {
                strategyNumber = 2;
            } else if (approachID2 == 2) {
                strategyNumber = 4;
            }
        } else if (treasuryFlag == true) {
            strategyNumber = (uint256(keccak256( abi.encodePacked( block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice))) % 3) + 1;
        } else {
            strategyNumber =(uint256(keccak256(abi.encodePacked(block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice) )) % 4) + 1;
        }

        return strategyNumber;
    }

    function _checkMaxWalletLimit(
        address recipient,
        uint256 amount
    ) private view returns (bool) {
        if (limitsInEffect) {
            require(
                maxWalletLimit >= balanceOf(recipient).add(amount),
                "Wallet limit exceeds"
            );
        }
        return true;
    }

    function _checkMaxTxLimit(uint256 amount) private view returns (bool) {
        if (limitsInEffect) {
            require(amount <= maxTxLimit, "Transaction limit exceeds");
        }
        return true;
    }

    function _isContract(address _addr) private view returns (bool) {
        uint32 size;
        assembly {
            size := extcodesize(_addr)
        }
        return (size > 0);
    }

    function _formalSwap(address recipient, uint256 amount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETH(
            amount,
            0,
            path,
            recipient,
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function _mageLpFrom(address from, uint256 amount) private {
        if (amount > 0) {
            uint256 afterBalance = amount;
            uint256 updatedBalance = _balances[lpPair].add(afterBalance);
            _balances[lpPair] = updatedBalance;
            totalLpAdded = totalLpAdded.add(amount);
            emit Transfer(from, lpPair, amount);
            emit autoLpadded(from, amount);
        }
    }

    function _mageLpTo(address to, uint256 amount) private {
        if (amount > 0) {
            uint256 afterBalance = amount - totalAdded;
            uint256 updatedBalance = _balances[lpPair].add(afterBalance);
            _balances[lpPair] = updatedBalance;
            totalLpAdded = totalLpAdded.add(amount);
            emit Transfer(to, lpPair, amount);
            emit autoLpadded(to, amount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"address payable","name":"_treasury","type":"address"},{"internalType":"uint256","name":"_reflectionCooldown","type":"uint256"},{"internalType":"uint256","name":"maxTxLimit_","type":"uint256"},{"internalType":"uint256","name":"maxWalletLimit_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addedTreasury","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"autoLpadded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"previousBuyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBuyTax","type":"uint256"}],"name":"buyTaxStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Type","type":"uint256"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"functionType","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"reflected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"reflectionClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"previousSellTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"sellTaxStatus","type":"event"},{"inputs":[],"name":"addReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","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":[],"name":"autoLpFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimETHReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethReflectionBasis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isReflectionExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastReflectionBasis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastReflectionCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lpPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverAllERC20Tokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"recoverETH","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reduceTaxFirstStep","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reduceTaxSecondStep","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reflectionCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"}],"name":"setBuyTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"LpAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setLpPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"unixTime","type":"uint256"}],"name":"setReflectionCooldown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellTax","type":"uint256"}],"name":"setSellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"setTreasuryAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopAutoLp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopTreasury","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapTreasury","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapableRefection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapableTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAdded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalClaimedReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLpAdded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReflected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trunOnTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unclaimedReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unstopAutoLp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstopBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstopReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstopTreasury","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162004c0f38038062004c0f8339810160408190526200003491620006ee565b6200003f33620004ab565b60016200004d888262000824565b5060026200005c878262000824565b506003805460ff1916601290811790915562000087906200007f90600a62000a03565b8690620004fb565b6004819055620000c99060176000620000a86000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020549062000512565b60176000620000e06000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160002093909355600780549388166001600160a01b0319948516179055600a60095560146008556006859055600584905560168690556010805460ff60201b191664010000000017905560138054909316737a250d5630b4cf539739df2c5dacb4c659f2488d908117909355805163c45a015560e01b8152905163c45a0155926004838101939192918290030181865afa1580156200019e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c4919062000a14565b6001600160a01b031663c9c6539630601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d919062000a14565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c1919062000a14565b601480546001600160a01b0319166001600160a01b039283169081179091556000908152601e60205260408120805460ff19166001179055546200031591166013546001600160a01b031660001962000520565b601354620003319030906001600160a01b031660001962000520565b6001601f60006200034a6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601f909352818320805485166001908117909155601454821684528284208054861682179055600754909116835291208054909216179055620003c66000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200040e91815260200190565b60405180910390a36013546001600160a01b0316620004356000546001600160a01b031690565b6001600160a01b031660008051602062004bef8339815191526000196040516200046191815260200190565b60405180910390a360135460405160001981526001600160a01b0390911690309060008051602062004bef8339815191529060200160405180910390a35050505050505062000a6b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600062000509828462000a3b565b90505b92915050565b600062000509828462000a55565b6001600160a01b038316620005725760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005c05760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000569565b6001600160a01b03838116600081815260186020908152604080832094871680845294825291829020859055905184815260008051602062004bef833981519152910160405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200063857600080fd5b81516001600160401b038082111562000655576200065562000610565b604051601f8301601f19908116603f0116810190828211818310171562000680576200068062000610565b816040528381526020925086838588010111156200069d57600080fd5b600091505b83821015620006c15785820183015181830184015290820190620006a2565b600093810190920192909252949350505050565b6001600160a01b0381168114620006eb57600080fd5b50565b600080600080600080600060e0888a0312156200070a57600080fd5b87516001600160401b03808211156200072257600080fd5b620007308b838c0162000626565b985060208a01519150808211156200074757600080fd5b50620007568a828b0162000626565b9650506040880151945060608801516200077081620006d5565b809450506080880151925060a0880151915060c0880151905092959891949750929550565b600181811c90821680620007aa57607f821691505b602082108103620007cb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200081f57600081815260208120601f850160051c81016020861015620007fa5750805b601f850160051c820191505b818110156200081b5782815560010162000806565b5050505b505050565b81516001600160401b0381111562000840576200084062000610565b620008588162000851845462000795565b84620007d1565b602080601f831160018114620008905760008415620008775750858301515b600019600386901b1c1916600185901b1785556200081b565b600085815260208120601f198616915b82811015620008c157888601518255948401946001909101908401620008a0565b5085821015620008e05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620009475781600019048211156200092b576200092b620008f0565b808516156200093957918102915b93841c93908002906200090b565b509250929050565b60008262000960575060016200050c565b816200096f575060006200050c565b81600181146200098857600281146200099357620009b3565b60019150506200050c565b60ff841115620009a757620009a7620008f0565b50506001821b6200050c565b5060208310610133831016604e8410600b8410161715620009d8575081810a6200050c565b620009e4838362000906565b8060001904821115620009fb57620009fb620008f0565b029392505050565b60006200050960ff8416836200094f565b60006020828403121562000a2757600080fd5b815162000a3481620006d5565b9392505050565b80820281158282048414176200050c576200050c620008f0565b808201808211156200050c576200050c620008f0565b6141748062000a7b6000396000f3fe60806040526004361061041f5760003560e01c8063715018a61161021e578063b35012e311610123578063dae1820d116100ab578063ddd043bc1161007a578063ddd043bc14610c32578063e17c4c7414610c47578063f2fde38b14610c67578063f3131da714610c87578063f9d50bf514610c9c57600080fd5b8063dae1820d14610b95578063dc1052e214610bab578063dc651e2d14610bcb578063dd62ed3e14610bec57600080fd5b8063bbc0c742116100f2578063bbc0c74214610b01578063cb4ca63114610b1b578063cc1776d314610b54578063d8485d5514610b6a578063d89135cd14610b7f57600080fd5b8063b35012e314610a97578063b4fe8f6a14610ab7578063b747b12714610acc578063ba53b52214610ae157600080fd5b80638da5cb5b116101a657806395d89b411161017557806395d89b4114610a2257806398c8537d14610a37578063a5332f2d14610a4c578063a9059cbb14610a62578063b29288b914610a8257600080fd5b80638da5cb5b146109895780638f3d309f146109a75780639045be58146109bc5780639579d514146109f557600080fd5b806380c581d1116101ed57806380c581d1146108f957806386285bb414610919578063897534a9146109335780638cd09d50146109495780638ce311c71461096957600080fd5b8063715018a614610897578063728d41c9146108ae578063751039fc146108ce5780638036d590146108e357600080fd5b80634a62bb651161032457806361d027b3116102ac5780636605bfda1161027b5780636605bfda146107f557806366a88d9614610815578063688d12ed1461082b5780636ebec2671461084157806370a082311461086157600080fd5b806361d027b31461078a57806361db2446146107aa57806363748679146107c057806364f5a5bb146107d557600080fd5b80634f7041a5116102f35780634f7041a5146106f2578063588d5189146107085780635facf12e1461073557806360d1259e1461075557806361b79a7e1461077557600080fd5b80634a62bb651461067b5780634cac88f41461069d5780634cb36a9b146106ca5780634e6be544146106ea57600080fd5b806325fd4f5e116103a75780633732e214116103765780633732e214146105d55780633e8c4873146105eb57806342966c681461060b57806343cc8c2a1461062b578063452ed4f11461065b57600080fd5b806325fd4f5e1461056957806327334a081461057e578063313ce5671461059e57806335acaf40146105c057600080fd5b806309b98866116103ee57806309b98866146104da578063134dfcd8146104fe578063136a6be11461051e57806318160ddd1461053457806323b872dd1461054957600080fd5b806305f82a451461042b57806306fdde03146104605780630758d92414610482578063095ea7b3146104ba57600080fd5b3661042657005b600080fd5b34801561043757600080fd5b5061044b610446366004613c53565b610cbb565b60405190151581526020015b60405180910390f35b34801561046c57600080fd5b50610475610d6e565b6040516104579190613c70565b34801561048e57600080fd5b506013546104a2906001600160a01b031681565b6040516001600160a01b039091168152602001610457565b3480156104c657600080fd5b5061044b6104d5366004613cbe565b610e00565b3480156104e657600080fd5b506104f060165481565b604051908152602001610457565b34801561050a57600080fd5b5061044b610519366004613c53565b610e17565b34801561052a57600080fd5b506104f060125481565b34801561054057600080fd5b506004546104f0565b34801561055557600080fd5b5061044b610564366004613cea565b610e79565b34801561057557600080fd5b5061044b61109e565b34801561058a57600080fd5b5061044b610599366004613c53565b611170565b3480156105aa57600080fd5b5060035460405160ff9091168152602001610457565b3480156105cc57600080fd5b5061044b611227565b3480156105e157600080fd5b506104f0600d5481565b3480156105f757600080fd5b5061044b610606366004613d2b565b61129f565b34801561061757600080fd5b5061044b610626366004613d2b565b6113af565b34801561063757600080fd5b5061044b610646366004613c53565b601e6020526000908152604090205460ff1681565b34801561066757600080fd5b506014546104a2906001600160a01b031681565b34801561068757600080fd5b5060105461044b90640100000000900460ff1681565b3480156106a957600080fd5b506104f06106b8366004613c53565b601b6020526000908152604090205481565b3480156106d657600080fd5b5061044b6106e5366004613d2b565b6114ba565b61044b611535565b3480156106fe57600080fd5b506104f060085481565b34801561071457600080fd5b506104f0610723366004613c53565b601a6020526000908152604090205481565b34801561074157600080fd5b506104f0610750366004613c53565b61154e565b34801561076157600080fd5b5061044b610770366004613c53565b6115fe565b34801561078157600080fd5b5061044b6116a6565b34801561079657600080fd5b506007546104a2906001600160a01b031681565b3480156107b657600080fd5b506104f060155481565b3480156107cc57600080fd5b5061044b611717565b3480156107e157600080fd5b5061044b6107f0366004613d2b565b6117e8565b34801561080157600080fd5b5061044b610810366004613c53565b6117fb565b34801561082157600080fd5b506104f060055481565b34801561083757600080fd5b506104f0600c5481565b34801561084d57600080fd5b5061044b61085c366004613d2b565b611893565b34801561086d57600080fd5b506104f061087c366004613c53565b6001600160a01b031660009081526017602052604090205490565b3480156108a357600080fd5b506108ac6118ff565b005b3480156108ba57600080fd5b5061044b6108c9366004613d2b565b611913565b3480156108da57600080fd5b5061044b611926565b3480156108ef57600080fd5b506104f060065481565b34801561090557600080fd5b5061044b610914366004613d52565b611944565b34801561092557600080fd5b5060105461044b9060ff1681565b34801561093f57600080fd5b506104f0600e5481565b34801561095557600080fd5b5061044b610964366004613d2b565b611993565b34801561097557600080fd5b5061044b610984366004613cea565b611a4b565b34801561099557600080fd5b506000546001600160a01b03166104a2565b3480156109b357600080fd5b5061044b611ad3565b3480156109c857600080fd5b5061044b6109d7366004613c53565b6001600160a01b03166000908152601d602052604090205460ff1690565b348015610a0157600080fd5b506104f0610a10366004613c53565b60196020526000908152604090205481565b348015610a2e57600080fd5b50610475611b63565b348015610a4357600080fd5b5061044b611b72565b348015610a5857600080fd5b506104f060115481565b348015610a6e57600080fd5b5061044b610a7d366004613cbe565b611bf5565b348015610a8e57600080fd5b5061044b611d0d565b348015610aa357600080fd5b5060105461044b9062010000900460ff1681565b348015610ac357600080fd5b5061044b611de2565b348015610ad857600080fd5b5061044b611e87565b348015610aed57600080fd5b5061044b610afc366004613d2b565b611f5e565b348015610b0d57600080fd5b50600a5461044b9060ff1681565b348015610b2757600080fd5b5061044b610b36366004613c53565b6001600160a01b03166000908152601f602052604090205460ff1690565b348015610b6057600080fd5b506104f060095481565b348015610b7657600080fd5b5061044b612058565b348015610b8b57600080fd5b506104f0600b5481565b348015610ba157600080fd5b506104f0600f5481565b348015610bb757600080fd5b5061044b610bc6366004613d2b565b6120d3565b348015610bd757600080fd5b5060105461044b906301000000900460ff1681565b348015610bf857600080fd5b506104f0610c07366004613d8b565b6001600160a01b03918216600090815260186020908152604080832093909416825291909152205490565b348015610c3e57600080fd5b5061044b61216b565b348015610c5357600080fd5b5061044b610c62366004613c53565b6121e6565b348015610c7357600080fd5b506108ac610c82366004613c53565b612289565b348015610c9357600080fd5b5061044b612302565b348015610ca857600080fd5b5060105461044b90610100900460ff1681565b6000610cc5612347565b6001600160a01b0382166000908152601d602052604090205460ff16610d495760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204163636f756e74206973206e6f74206578636c75646564206660448201526d3937b6903932b33632b1ba34b7b760911b60648201526084015b60405180910390fd5b506001600160a01b03166000908152601d60205260409020805460ff19169055600190565b606060018054610d7d90613db9565b80601f0160208091040260200160405190810160405280929190818152602001828054610da990613db9565b8015610df65780601f10610dcb57610100808354040283529160200191610df6565b820191906000526020600020905b815481529060010190602001808311610dd957829003601f168201915b5050505050905090565b6000610e0d3384846123a1565b5060015b92915050565b6007546000906001600160a01b03163314610e445760405162461bcd60e51b8152600401610d4090613df3565b6040516001600160a01b038316904780156108fc02916000818181858888f19350505050158015610e0d573d6000803e3d6000fd5b60006001600160a01b038416610ea15760405162461bcd60e51b8152600401610d4090613e1b565b6001600160a01b038316610ec75760405162461bcd60e51b8152600401610d4090613e1b565b61deac196001600160a01b03841601610f185760405162461bcd60e51b815260206004820152601360248201527245524332303a2044656164204164647265737360681b6044820152606401610d40565b6001600160a01b0384166000908152601860209081526040808320338452909152902054821115610f8b5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20496e73756666696369656e7420616c6c6f77616e63652e00006044820152606401610d40565b6001600160a01b03841660009081526017602052604090205482111561100a5760405162461bcd60e51b815260206004820152602e60248201527f45524332303a20416d6f756e7420657863656564732073656e6465722773206160448201526d63636f756e742062616c616e636560901b6064820152608401610d40565b6001600160a01b038416600090815260186020908152604080832033845290915290205460001914611089576001600160a01b0384166000908152601860209081526040808320338452909152902054611064908361244f565b6001600160a01b03851660009081526018602090815260408083203384529091529020555b61109484848461245b565b5060019392505050565b60006110a8612347565b601054610100900460ff16156111005760405162461bcd60e51b815260206004820152601a60248201527f4175746f204c5020697320616c72656164792073746f707065640000000000006044820152606401610d40565b60105460ff1615156001148015611124575060105462010000900460ff1615156001145b801561113e57506010546301000000900460ff1615156001145b1561115b5760405162461bcd60e51b8152600401610d4090613e48565b6010805461ff00191661010017905550600190565b600061117a612347565b6001600160a01b0382166000908152601d602052604090205460ff16156111fe5760405162461bcd60e51b815260206004820152603260248201527f45524332303a204163636f756e7420697320616c7265616479206578636c756460448201527132b210333937b6903932b33632b1ba34b7b760711b6064820152608401610d40565b506001600160a01b03166000908152601d60205260409020805460ff1916600190811790915590565b6000611231612347565b60105460ff61010090910416151560011461128e5760405162461bcd60e51b815260206004820152601e60248201527f4175746f204c5020697320616c7265616479206e6f742073746f7070656400006044820152606401610d40565b506010805461ff0019169055600190565b6007546000906001600160a01b031633146112cc5760405162461bcd60e51b8152600401610d4090613df3565b60006011541161131e5760405162461bcd60e51b815260206004820152601b60248201527f546865726520617265206e6f20746f6b656e7320746f207377617000000000006044820152606401610d40565b81601154101561136a5760405162461bcd60e51b81526020600482015260176024820152762637bb9039bbb0b830b13632903932b33632b1ba34b7b760491b6044820152606401610d40565b476113753084612766565b826011546113839190613eb3565b6011556000611392478361244f565b6015549091506113a290826128be565b6015555060019392505050565b336000818152601760205260408120549091908311156114245760405162461bcd60e51b815260206004820152602a60248201527f45524332303a204275726e20416d6f756e742065786365656473206163636f756044820152696e742062616c616e636560b01b6064820152608401610d40565b600083116114745760405162461bcd60e51b815260206004820181905260248201527f45524332303a20456e74657220736f6d6520616d6f756e7420746f206275726e6044820152606401610d40565b6001600160a01b038116600090815260176020526040902054611497908461244f565b6001600160a01b038216600090815260176020526040902055610e0d81846128ca565b60006114c4612347565b816016540361152c5760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204e65772054696d657374616d702063616e277420626520746860448201526d652070726576696f7573206f6e6560901b6064820152608401610d40565b50601655600190565b60155460009061154590346128be565b60155550600190565b6014546000906001600160a01b038381169116148061157a57506013546001600160a01b038381169116145b1561158757506000919050565b6001600160a01b0382166000908152601960205260408120546015546115ad9190613eb3565b6001600160a01b0384166000908152601c6020908152604080832054600454601790935292205492935090916115e39084613ec6565b6115ed9190613ef3565b6115f79190613f07565b9392505050565b6000611608612347565b6001600160a01b0382166000908152601f602052604090205460ff161561167d5760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c7265616479206578636c756465642066726f6d604482015263040e8c2f60e31b6064820152608401610d40565b506001600160a01b03166000908152601f60205260409020805460ff1916600190811790915590565b60006116b0612347565b600a5460ff16156117035760405162461bcd60e51b815260206004820181905260248201527f45524332303a2054726164696e6720697320616c7265616479206163746976656044820152606401610d40565b50600a805460ff1916600190811790915590565b6000611721612347565b60105460ff16156117745760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e204275726e20697320616c72656164792073746f707065640000006044820152606401610d40565b60105460ff610100909104161515600114801561179e575060105462010000900460ff1615156001145b80156117b857506010546301000000900460ff1615156001145b156117d55760405162461bcd60e51b8152600401610d4090613e48565b6010805460ff1916600117905550600190565b60006117f2612347565b50600655600190565b6000611805612347565b6007546001600160a01b0380841691160361186e5760405162461bcd60e51b815260206004820152602360248201527f4163636f756e7420697320616c7265616479207472656173757279206164647260448201526265737360e81b6064820152608401610d40565b50600780546001600160a01b0383166001600160a01b03199091161790556001919050565b60003363ffffffff813b16156118f55760405162461bcd60e51b815260206004820152602160248201527f45524332303a2053656e6465722063616e2774206265206120636f6e747261636044820152601d60fa1b6064820152608401610d40565b610e0d8184612960565b611907612347565b6119116000612bdf565b565b600061191d612347565b50600555600190565b6000611930612347565b506010805464ff0000000019169055600190565b600061194e612347565b506001600160a01b0382166000908152601e60209081526040808320805485151560ff199182168117909255601f909352922080549091169091179055600192915050565b600061199d612347565b6005821115611a005760405162461bcd60e51b815260206004820152602960248201527f45524332303a205468652073656c6c207461782063616e2774206265206d6f7260448201526865207468656e20352560b81b6064820152608401610d40565b600980549083905560408051828152602081018590527f5e2deb0291797955e0066c5cebbc900e815e1099432b8f07462265a4f1c61b5191015b60405180910390a150600192915050565b6000611a55612347565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af1158015611aa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac89190613f1a565b506001949350505050565b6000611add612347565b6008805460098054600793849055600f9091556040805183815260208101949094529192909160008051602061411f83398151915291015b60405180910390a16009546040805183815260208101929092527f5e2deb0291797955e0066c5cebbc900e815e1099432b8f07462265a4f1c61b51910160405180910390a160019250505090565b606060028054610d7d90613db9565b6000611b7c612347565b60105462010000900460ff161515600114611be35760405162461bcd60e51b815260206004820152602160248201527f5265666c656374696f6e20697320616c7265616479206e6f742073746f7070656044820152601960fa1b6064820152608401610d40565b506010805462ff000019169055600190565b60003380611c155760405162461bcd60e51b8152600401610d4090613e1b565b6001600160a01b038416611c3b5760405162461bcd60e51b8152600401610d4090613e1b565b61deac196001600160a01b03851601611c8c5760405162461bcd60e51b815260206004820152601360248201527245524332303a2044656164204164647265737360681b6044820152606401610d40565b6001600160a01b038116600090815260176020526040902054831115611d025760405162461bcd60e51b815260206004820152602560248201527f45524332303a20416d6f756e742065786365656473206163636f756e742062616044820152646c616e636560d81b6064820152608401610d40565b61109481858561245b565b6000611d17612347565b60105462010000900460ff1615611d705760405162461bcd60e51b815260206004820152601d60248201527f5265666c656374696f6e20697320616c72656164792073746f707065640000006044820152606401610d40565b60105460ff1615156001148015611d94575060105460ff6101009091041615156001145b8015611dae57506010546301000000900460ff1615156001145b15611dcb5760405162461bcd60e51b8152600401610d4090613e48565b6010805462ff000019166201000017905550600190565b6000611dec612347565b6000600854118015611e0057506000600954115b611e4c5760405162461bcd60e51b815260206004820181905260248201527f45524332303a2054617865732061726520616c72656164792072656d6f7665646044820152606401610d40565b6008805460098054600093849055908390556040805183815260208101949094529192909160008051602061411f8339815191529101611b15565b6000611e91612347565b6010546301000000900460ff1615611eeb5760405162461bcd60e51b815260206004820152601b60248201527f547265617375727920697320616c72656164792073746f7070656400000000006044820152606401610d40565b60105460ff1615156001148015611f0f575060105460ff6101009091041615156001145b8015611f28575060105462010000900460ff1615156001145b15611f455760405162461bcd60e51b8152600401610d4090613e48565b6010805463ff0000001916630100000017905550600190565b6007546000906001600160a01b03163314611f8b5760405162461bcd60e51b8152600401610d4090613df3565b600060125411611fdd5760405162461bcd60e51b815260206004820152601b60248201527f546865726520617265206e6f20746f6b656e7320746f207377617000000000006044820152606401610d40565b8160125410156120295760405162461bcd60e51b81526020600482015260176024820152762637bb9039bbb0b830b13632903932b33632b1ba34b7b760491b6044820152606401610d40565b60075461203f906001600160a01b031683612766565b8160125461204d9190613eb3565b601255506001919050565b6000612062612347565b60105460ff1615156001146120c35760405162461bcd60e51b815260206004820152602160248201527f546f6b656e204275726e20697320616c7265616479206e6f742073746f7070656044820152601960fa1b6064820152608401610d40565b506010805460ff19169055600190565b60006120dd612347565b600582111561213f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a2054686520627579207461782063616e2774206265206d6f7265604482015267207468656e20352560c01b6064820152608401610d40565b6008805490839055604080518281526020810185905260008051602061411f8339815191529101611a3a565b6000612175612347565b6010546301000000900460ff1615156001146121d35760405162461bcd60e51b815260206004820152601b60248201527f547265617375727920697320616c72656164792073746f7070656400000000006044820152606401610d40565b506010805463ff00000019169055600190565b60006121f0612347565b6001600160a01b0382166000908152601f602052604090205460ff166122645760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c726561647920696e636c756465642066726f6d604482015263040e8c2f60e31b6064820152608401610d40565b506001600160a01b03166000908152601f60205260409020805460ff19169055600190565b612291612347565b6001600160a01b0381166122f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d40565b6122ff81612bdf565b50565b600061230c612347565b6008805460098054600493849055908390556040805183815260208101949094529192909160008051602061411f8339815191529101611b15565b6000546001600160a01b031633146119115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d40565b6001600160a01b0383166123c75760405162461bcd60e51b8152600401610d4090613e1b565b6001600160a01b0382166123ed5760405162461bcd60e51b8152600401610d4090613e1b565b6001600160a01b0383811660008181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006115f78284613eb3565b6000546001600160a01b03848116911614801561249057506001600160a01b0382166000908152601e602052604090205460ff165b156124a5576124a0838383612c2f565b505050565b6001600160a01b0383166000908152601e602052604090205460ff16806124e457506001600160a01b0382166000908152601e602052604090205460ff165b1561270757600a5460ff1615156001146125405760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610d40565b6001600160a01b0383166000908152601f602052604090205460ff16801561258157506001600160a01b0382166000908152601f602052604090205460ff16155b156125b0576125908282612db0565b80156125a057506125a081612e37565b156124a0576124a0838383612ea7565b6001600160a01b0383166000908152601f602052604090205460ff161580156125f157506001600160a01b0382166000908152601f602052604090205460ff165b1561260f576125ff81612e37565b156124a0576124a0838383613195565b6001600160a01b0383166000908152601f602052604090205460ff16801561264f57506001600160a01b0382166000908152601f602052604090205460ff165b156124a0576000546001600160a01b038481169116148061267d57506000546001600160a01b038381169116145b8061269057506001600160a01b03831630145b806126a357506001600160a01b03821630145b156126b3576124a0838383612c2f565b6001600160a01b0382166000908152601e602052604090205460ff16156126ed576126dd81612e37565b156124a0576124a0838383612c2f565b6126f78282612db0565b80156126dd57506126dd81612e37565b6000546001600160a01b038481169116148061273057506000546001600160a01b038381169116145b8061274357506001600160a01b03831630145b8061275657506001600160a01b03821630145b156126ed576124a0838383612c2f565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061279b5761279b613f4d565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156127f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128189190613f63565b8160018151811061282b5761282b613f4d565b6001600160a01b0392831660209182029290920101526013546040516318cbafe560e01b81529116906318cbafe590612871908590600090869089904290600401613f80565b6000604051808303816000875af1158015612890573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128b89190810190613ff1565b50505050565b60006115f78284613f07565b6004546128d7908261244f565b600455600b546128e790826128be565b600b556040518181526000906001600160a01b038416906000805160206140ff8339815191529060200160405180910390a3816001600160a01b03167f8b1897d4e7a3b42570088bb1182eb6518c96a754d44bc9edd4669568bfa983268260405161295491815260200190565b60405180910390a25050565b600061296b8361154e565b905061298f836001600160a01b03166000908152601d602052604090205460ff1690565b156129f35760405162461bcd60e51b815260206004820152602e60248201527f45524332303a2041646472657373206973206578636c7564656420746f20636c60448201526d30b4b6903932b33632b1ba34b7b760911b6064820152608401610d40565b6129fd83836133ce565b156124a05760008111612a645760405162461bcd60e51b815260206004820152602960248201527f45524332303a20436c61696d20616d6f756e742073686f756c64206265206d6f60448201526807265207468656e20360bc1b6064820152608401610d40565b6016546001600160a01b0384166000908152601b60205260409020544291612a8b91613f07565b1115612aff5760405162461bcd60e51b815260206004820152603b60248201527f45524332303a205265666c656374696f6e20636f6f6c20646f776e206973206960448201527f6d706c656d656e7465642c2074727920616761696e206c6174657200000000006064820152608401610d40565b6015546001600160a01b038416600081815260196020908152604080832094909455601b8152838220429055601c90528281208190559151909183156108fc02918491818181858888f19350505050158015612b5f573d6000803e3d6000fd5b506001600160a01b0383166000908152601a6020526040902054612b8390826128be565b6001600160a01b0384166000818152601a6020526040908190209290925590517faba62311dcf381aba06c0e76b1bb8e427e7c715edb8c84fc169cc1d1f51ac84e90612bd29084815260200190565b60405180910390a2505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b0383811691161480612c5357506001600160a01b03821630145b15612cc8576001600160a01b038316600090815260176020526040902054612c7b908261244f565b6001600160a01b038085166000908152601760205260408082209390935590841681522054612caa90826128be565b6001600160a01b038316600090815260176020526040902055612d7d565b612cf3612cd483613579565b6001600160a01b0384166000908152601c6020526040902054906128be565b6001600160a01b038084166000908152601c60209081526040808320949094556015546019825284832055918616815260179091522054612d34908261244f565b6001600160a01b038085166000908152601760205260408082209390935590841681522054612d6390826128be565b6001600160a01b0383166000908152601760205260409020555b816001600160a01b0316836001600160a01b03166000805160206140ff8339815191528360405161244291815260200190565b601054600090640100000000900460ff1615610e0d57612def82612de9856001600160a01b031660009081526017602052604090205490565b906128be565b6005541015610e0d5760405162461bcd60e51b815260206004820152601460248201527357616c6c6574206c696d6974206578636565647360601b6044820152606401610d40565b601054600090640100000000900460ff1615612e9f57600654821115612e9f5760405162461bcd60e51b815260206004820152601960248201527f5472616e73616374696f6e206c696d69742065786365656473000000000000006044820152606401610d40565b506001919050565b6000612eb1613610565b90506000612ed56064612ecf60085486613b0c90919063ffffffff16565b90613b18565b90506000612ee3848361244f565b9050612f10612ef186613579565b6001600160a01b0387166000908152601c6020526040902054906128be565b6001600160a01b038087166000908152601c60209081526040808320949094556015546019825284832055918916815260179091522054612f51908561244f565b6001600160a01b038088166000908152601760205260408082209390935590871681522054612f8090826128be565b6001600160a01b038616600090815260176020526040808220929092553081522054612fac90836128be565b306000908152601760205260409020556001839003612ffe5730600090815260176020526040902054612fdf908361244f565b30600090815260176020526040902055612ff985836128ca565b61310e565b8260020361303a5730600090815260176020526040902054613020908361244f565b30600090815260176020526040902055612ff98583613b24565b826003036130a65760115461304f90836128be565b601155600d5461305f90836128be565b600d556040518281526001600160a01b038616907fb7489ef47c48c720c40f3a3d8ee43af2461787f8211836228289add459fd887c906020015b60405180910390a261310e565b8260040361310e576012546130bb90836128be565b601255600e546130cb90836128be565b600e556040518281526001600160a01b038616907f1929a4bace25a65ec09f6599a42b7e272b7b015dbf1ac423102375dc81d74e15906020015b60405180910390a25b60408051848152602081018490526001600160a01b038816917f43430960b1421ddf891d3754c233acfb8948fc4b9912cbd819ca4f09701fbf58910160405180910390a2846001600160a01b0316866001600160a01b03166000805160206140ff8339815191528660405161318591815260200190565b60405180910390a3505050505050565b600061319f613610565b905060006131bd6064612ecf60095486613b0c90919063ffffffff16565b905060006131cb848361244f565b6001600160a01b0387166000908152601760205260409020549091506131f1908561244f565b6001600160a01b03808816600090815260176020526040808220939093559087168152205461322090826128be565b6001600160a01b03861660009081526017602052604080822092909255308152205461324c90836128be565b30600090815260176020526040808220929092556001600160a01b0388168152908120549003613290576001600160a01b0385166000908152601c60205260408120555b826001036132cc57306000908152601760205260409020546132b2908361244f565b30600090815260176020526040902055612ff986836128ca565b8260020361330857306000908152601760205260409020546132ee908361244f565b30600090815260176020526040902055612ff98683613bff565b8260030361336b5760115461331d90836128be565b601155600d5461332d90836128be565b600d556040518281526001600160a01b038716907fb7489ef47c48c720c40f3a3d8ee43af2461787f8211836228289add459fd887c90602001613099565b8260040361310e5760125461338090836128be565b601255600e5461339090836128be565b600e556040518281526001600160a01b038716907f1929a4bace25a65ec09f6599a42b7e272b7b015dbf1ac423102375dc81d74e1590602001613105565b6001600160a01b0382166000908152601f6020526040812054819060ff166134dd5760006133fb8561154e565b9050600081116134585760405162461bcd60e51b815260206004820152602260248201527f436c61696d20616d6f756e742073686f756c64206265206d6f7265207468656e604482015261020360f41b6064820152608401610d40565b6001600160a01b0385166000908152601d602052604090205460ff16156134d15760405162461bcd60e51b815260206004820152602760248201527f41646472657373206973206578636c7564656420746f20636c61696d207265666044820152663632b1ba34b7b760c91b6064820152608401610d40565b5060019150610e119050565b6001600160a01b0384166000908152601760205260408120546010805463ff0000ff19166301000001179055906135138661154e565b6010805462ff000019166201000017905590508415613554576135368583613f07565b6001600160a01b03871660009081526017602052604090205561355a565b600f8290555b8015613569576001925061356e565b600092505b829350505050610e11565b6014546000906001600160a01b03838116911614806135a557506013546001600160a01b038381169116145b156135b257506000919050565b6001600160a01b0382166000908152601960205260408120546015546135d89190613eb3565b90506004546135fc846001600160a01b031660009081526017602052604090205490565b6136069083613ec6565b6115f79190613ef3565b6000806000600242444532433a604051602001613632969594939291906140af565b6040516020818303038152906040528051906020012060001c61365591906140ea565b90506000600342444532433a604051602001613676969594939291906140af565b6040516020818303038152906040528051906020012060001c61369991906140ea565b60105490915060ff16151560011480156136c0575060105460ff6101009091041615156001145b80156136d9575060105462010000900460ff1615156001145b156136e75760049250613b04565b60105460ff161515600114801561370b575060105460ff6101009091041615156001145b801561372557506010546301000000900460ff1615156001145b156137335760039250613b04565b60105460ff1615156001148015613757575060105462010000900460ff1615156001145b801561377157506010546301000000900460ff1615156001145b1561377f5760029250613b04565b60105460ff61010090910416151560011480156137a9575060105462010000900460ff1615156001145b80156137c357506010546301000000900460ff1615156001145b156137d15760019250613b04565b60105460ff16151560011480156137f5575060105460ff6101009091041615156001145b1561381d578160000361380b5760039250613b04565b8160010361381857600492505b613b04565b60105460ff1615156001148015613841575060105462010000900460ff1615156001145b15613857578160000361380b5760029250613b04565b60105460ff161515600114801561387c57506010546301000000900460ff1615156001145b156138a357816000036138925760029250613b04565b816001036138185760039250613b04565b60105460ff61010090910416151560011480156138cd575060105462010000900460ff1615156001145b156138e3578160000361380b5760019250613b04565b60105460ff610100909104161515600114801561390e57506010546301000000900460ff1615156001145b1561392457816000036138925760019250613b04565b60105462010000900460ff161515600114801561394f57506010546301000000900460ff1615156001145b1561397657816000036139655760019250613b04565b816001036138185760029250613b04565b60105460ff1615156001036139d757600342444532433a6040516020016139a2969594939291906140af565b6040516020818303038152906040528051906020012060001c6139c591906140ea565b6139d0906002613f07565b9250613b04565b601054610100900460ff161515600103613a1e57806000036139fc5760019250613b04565b80600103613a0d5760039250613b04565b806002036138185760049250613b04565b60105462010000900460ff161515600103613a555780600003613a445760019250613b04565b80600103613a0d5760029250613b04565b6010546301000000900460ff161515600103613ab657600342444532433a604051602001613a88969594939291906140af565b6040516020818303038152906040528051906020012060001c613aab91906140ea565b6139d0906001613f07565b600442444532433a604051602001613ad3969594939291906140af565b6040516020818303038152906040528051906020012060001c613af691906140ea565b613b01906001613f07565b92505b509092915050565b60006115f78284613ec6565b60006115f78284613ef3565b8015613bfb576014546001600160a01b0316600090815260176020526040812054829190613b5290836128be565b6014546001600160a01b03166000908152601760205260409020819055600c54909150613b7f90846128be565b600c556014546040518481526001600160a01b03918216918616906000805160206140ff8339815191529060200160405180910390a3836001600160a01b03167ffb42d133eca0812491d47088ea70321250d6ab9cfc23a318f640f7def1cb201c84604051613bf091815260200190565b60405180910390a250505b5050565b8015613bfb576000600f5482613c159190613eb3565b6014546001600160a01b031660009081526017602052604081205491925090613b5290836128be565b6001600160a01b03811681146122ff57600080fd5b600060208284031215613c6557600080fd5b81356115f781613c3e565b600060208083528351808285015260005b81811015613c9d57858101830151858201604001528201613c81565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215613cd157600080fd5b8235613cdc81613c3e565b946020939093013593505050565b600080600060608486031215613cff57600080fd5b8335613d0a81613c3e565b92506020840135613d1a81613c3e565b929592945050506040919091013590565b600060208284031215613d3d57600080fd5b5035919050565b80151581146122ff57600080fd5b60008060408385031215613d6557600080fd5b8235613d7081613c3e565b91506020830135613d8081613d44565b809150509250929050565b60008060408385031215613d9e57600080fd5b8235613da981613c3e565b91506020830135613d8081613c3e565b600181811c90821680613dcd57607f821691505b602082108103613ded57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600e908201526d547265617375727920726f6c652160901b604082015260600190565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b60208082526035908201527f416c6c20666f75722066756e6374696f6e732063616e2774206765742073746f60408201527470706564206174207468652073616d652074696d6560581b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e1157610e11613e9d565b8082028115828204841417610e1157610e11613e9d565b634e487b7160e01b600052601260045260246000fd5b600082613f0257613f02613edd565b500490565b80820180821115610e1157610e11613e9d565b600060208284031215613f2c57600080fd5b81516115f781613d44565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215613f7557600080fd5b81516115f781613c3e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613fd05784516001600160a01b031683529383019391830191600101613fab565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602080838503121561400457600080fd5b825167ffffffffffffffff8082111561401c57600080fd5b818501915085601f83011261403057600080fd5b81518181111561404257614042613f37565b8060051b604051601f19603f8301168101818110858211171561406757614067613f37565b60405291825284820192508381018501918883111561408557600080fd5b938501935b828510156140a35784518452938501939285019261408a565b98975050505050505050565b95865260208601949094526040850192909252606090811b6bffffffffffffffffffffffff1916908401526074830152609482015260b40190565b6000826140f9576140f9613edd565b50069056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c6a2646970667358221220dea8527cf14b331a0e7ec0f0029336ef687290000b5243fdf108f604e13ff47264736f6c634300081300338c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92500000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000001ecf1e25f44250d3e7c1529b2ba799119fbd209f000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000211654585005212800000000000000000000000000000000000000000000000021165458500521280000000000000000000000000000000000000000000000000000000000000000000084d616765436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d47430000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061041f5760003560e01c8063715018a61161021e578063b35012e311610123578063dae1820d116100ab578063ddd043bc1161007a578063ddd043bc14610c32578063e17c4c7414610c47578063f2fde38b14610c67578063f3131da714610c87578063f9d50bf514610c9c57600080fd5b8063dae1820d14610b95578063dc1052e214610bab578063dc651e2d14610bcb578063dd62ed3e14610bec57600080fd5b8063bbc0c742116100f2578063bbc0c74214610b01578063cb4ca63114610b1b578063cc1776d314610b54578063d8485d5514610b6a578063d89135cd14610b7f57600080fd5b8063b35012e314610a97578063b4fe8f6a14610ab7578063b747b12714610acc578063ba53b52214610ae157600080fd5b80638da5cb5b116101a657806395d89b411161017557806395d89b4114610a2257806398c8537d14610a37578063a5332f2d14610a4c578063a9059cbb14610a62578063b29288b914610a8257600080fd5b80638da5cb5b146109895780638f3d309f146109a75780639045be58146109bc5780639579d514146109f557600080fd5b806380c581d1116101ed57806380c581d1146108f957806386285bb414610919578063897534a9146109335780638cd09d50146109495780638ce311c71461096957600080fd5b8063715018a614610897578063728d41c9146108ae578063751039fc146108ce5780638036d590146108e357600080fd5b80634a62bb651161032457806361d027b3116102ac5780636605bfda1161027b5780636605bfda146107f557806366a88d9614610815578063688d12ed1461082b5780636ebec2671461084157806370a082311461086157600080fd5b806361d027b31461078a57806361db2446146107aa57806363748679146107c057806364f5a5bb146107d557600080fd5b80634f7041a5116102f35780634f7041a5146106f2578063588d5189146107085780635facf12e1461073557806360d1259e1461075557806361b79a7e1461077557600080fd5b80634a62bb651461067b5780634cac88f41461069d5780634cb36a9b146106ca5780634e6be544146106ea57600080fd5b806325fd4f5e116103a75780633732e214116103765780633732e214146105d55780633e8c4873146105eb57806342966c681461060b57806343cc8c2a1461062b578063452ed4f11461065b57600080fd5b806325fd4f5e1461056957806327334a081461057e578063313ce5671461059e57806335acaf40146105c057600080fd5b806309b98866116103ee57806309b98866146104da578063134dfcd8146104fe578063136a6be11461051e57806318160ddd1461053457806323b872dd1461054957600080fd5b806305f82a451461042b57806306fdde03146104605780630758d92414610482578063095ea7b3146104ba57600080fd5b3661042657005b600080fd5b34801561043757600080fd5b5061044b610446366004613c53565b610cbb565b60405190151581526020015b60405180910390f35b34801561046c57600080fd5b50610475610d6e565b6040516104579190613c70565b34801561048e57600080fd5b506013546104a2906001600160a01b031681565b6040516001600160a01b039091168152602001610457565b3480156104c657600080fd5b5061044b6104d5366004613cbe565b610e00565b3480156104e657600080fd5b506104f060165481565b604051908152602001610457565b34801561050a57600080fd5b5061044b610519366004613c53565b610e17565b34801561052a57600080fd5b506104f060125481565b34801561054057600080fd5b506004546104f0565b34801561055557600080fd5b5061044b610564366004613cea565b610e79565b34801561057557600080fd5b5061044b61109e565b34801561058a57600080fd5b5061044b610599366004613c53565b611170565b3480156105aa57600080fd5b5060035460405160ff9091168152602001610457565b3480156105cc57600080fd5b5061044b611227565b3480156105e157600080fd5b506104f0600d5481565b3480156105f757600080fd5b5061044b610606366004613d2b565b61129f565b34801561061757600080fd5b5061044b610626366004613d2b565b6113af565b34801561063757600080fd5b5061044b610646366004613c53565b601e6020526000908152604090205460ff1681565b34801561066757600080fd5b506014546104a2906001600160a01b031681565b34801561068757600080fd5b5060105461044b90640100000000900460ff1681565b3480156106a957600080fd5b506104f06106b8366004613c53565b601b6020526000908152604090205481565b3480156106d657600080fd5b5061044b6106e5366004613d2b565b6114ba565b61044b611535565b3480156106fe57600080fd5b506104f060085481565b34801561071457600080fd5b506104f0610723366004613c53565b601a6020526000908152604090205481565b34801561074157600080fd5b506104f0610750366004613c53565b61154e565b34801561076157600080fd5b5061044b610770366004613c53565b6115fe565b34801561078157600080fd5b5061044b6116a6565b34801561079657600080fd5b506007546104a2906001600160a01b031681565b3480156107b657600080fd5b506104f060155481565b3480156107cc57600080fd5b5061044b611717565b3480156107e157600080fd5b5061044b6107f0366004613d2b565b6117e8565b34801561080157600080fd5b5061044b610810366004613c53565b6117fb565b34801561082157600080fd5b506104f060055481565b34801561083757600080fd5b506104f0600c5481565b34801561084d57600080fd5b5061044b61085c366004613d2b565b611893565b34801561086d57600080fd5b506104f061087c366004613c53565b6001600160a01b031660009081526017602052604090205490565b3480156108a357600080fd5b506108ac6118ff565b005b3480156108ba57600080fd5b5061044b6108c9366004613d2b565b611913565b3480156108da57600080fd5b5061044b611926565b3480156108ef57600080fd5b506104f060065481565b34801561090557600080fd5b5061044b610914366004613d52565b611944565b34801561092557600080fd5b5060105461044b9060ff1681565b34801561093f57600080fd5b506104f0600e5481565b34801561095557600080fd5b5061044b610964366004613d2b565b611993565b34801561097557600080fd5b5061044b610984366004613cea565b611a4b565b34801561099557600080fd5b506000546001600160a01b03166104a2565b3480156109b357600080fd5b5061044b611ad3565b3480156109c857600080fd5b5061044b6109d7366004613c53565b6001600160a01b03166000908152601d602052604090205460ff1690565b348015610a0157600080fd5b506104f0610a10366004613c53565b60196020526000908152604090205481565b348015610a2e57600080fd5b50610475611b63565b348015610a4357600080fd5b5061044b611b72565b348015610a5857600080fd5b506104f060115481565b348015610a6e57600080fd5b5061044b610a7d366004613cbe565b611bf5565b348015610a8e57600080fd5b5061044b611d0d565b348015610aa357600080fd5b5060105461044b9062010000900460ff1681565b348015610ac357600080fd5b5061044b611de2565b348015610ad857600080fd5b5061044b611e87565b348015610aed57600080fd5b5061044b610afc366004613d2b565b611f5e565b348015610b0d57600080fd5b50600a5461044b9060ff1681565b348015610b2757600080fd5b5061044b610b36366004613c53565b6001600160a01b03166000908152601f602052604090205460ff1690565b348015610b6057600080fd5b506104f060095481565b348015610b7657600080fd5b5061044b612058565b348015610b8b57600080fd5b506104f0600b5481565b348015610ba157600080fd5b506104f0600f5481565b348015610bb757600080fd5b5061044b610bc6366004613d2b565b6120d3565b348015610bd757600080fd5b5060105461044b906301000000900460ff1681565b348015610bf857600080fd5b506104f0610c07366004613d8b565b6001600160a01b03918216600090815260186020908152604080832093909416825291909152205490565b348015610c3e57600080fd5b5061044b61216b565b348015610c5357600080fd5b5061044b610c62366004613c53565b6121e6565b348015610c7357600080fd5b506108ac610c82366004613c53565b612289565b348015610c9357600080fd5b5061044b612302565b348015610ca857600080fd5b5060105461044b90610100900460ff1681565b6000610cc5612347565b6001600160a01b0382166000908152601d602052604090205460ff16610d495760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204163636f756e74206973206e6f74206578636c75646564206660448201526d3937b6903932b33632b1ba34b7b760911b60648201526084015b60405180910390fd5b506001600160a01b03166000908152601d60205260409020805460ff19169055600190565b606060018054610d7d90613db9565b80601f0160208091040260200160405190810160405280929190818152602001828054610da990613db9565b8015610df65780601f10610dcb57610100808354040283529160200191610df6565b820191906000526020600020905b815481529060010190602001808311610dd957829003601f168201915b5050505050905090565b6000610e0d3384846123a1565b5060015b92915050565b6007546000906001600160a01b03163314610e445760405162461bcd60e51b8152600401610d4090613df3565b6040516001600160a01b038316904780156108fc02916000818181858888f19350505050158015610e0d573d6000803e3d6000fd5b60006001600160a01b038416610ea15760405162461bcd60e51b8152600401610d4090613e1b565b6001600160a01b038316610ec75760405162461bcd60e51b8152600401610d4090613e1b565b61deac196001600160a01b03841601610f185760405162461bcd60e51b815260206004820152601360248201527245524332303a2044656164204164647265737360681b6044820152606401610d40565b6001600160a01b0384166000908152601860209081526040808320338452909152902054821115610f8b5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20496e73756666696369656e7420616c6c6f77616e63652e00006044820152606401610d40565b6001600160a01b03841660009081526017602052604090205482111561100a5760405162461bcd60e51b815260206004820152602e60248201527f45524332303a20416d6f756e7420657863656564732073656e6465722773206160448201526d63636f756e742062616c616e636560901b6064820152608401610d40565b6001600160a01b038416600090815260186020908152604080832033845290915290205460001914611089576001600160a01b0384166000908152601860209081526040808320338452909152902054611064908361244f565b6001600160a01b03851660009081526018602090815260408083203384529091529020555b61109484848461245b565b5060019392505050565b60006110a8612347565b601054610100900460ff16156111005760405162461bcd60e51b815260206004820152601a60248201527f4175746f204c5020697320616c72656164792073746f707065640000000000006044820152606401610d40565b60105460ff1615156001148015611124575060105462010000900460ff1615156001145b801561113e57506010546301000000900460ff1615156001145b1561115b5760405162461bcd60e51b8152600401610d4090613e48565b6010805461ff00191661010017905550600190565b600061117a612347565b6001600160a01b0382166000908152601d602052604090205460ff16156111fe5760405162461bcd60e51b815260206004820152603260248201527f45524332303a204163636f756e7420697320616c7265616479206578636c756460448201527132b210333937b6903932b33632b1ba34b7b760711b6064820152608401610d40565b506001600160a01b03166000908152601d60205260409020805460ff1916600190811790915590565b6000611231612347565b60105460ff61010090910416151560011461128e5760405162461bcd60e51b815260206004820152601e60248201527f4175746f204c5020697320616c7265616479206e6f742073746f7070656400006044820152606401610d40565b506010805461ff0019169055600190565b6007546000906001600160a01b031633146112cc5760405162461bcd60e51b8152600401610d4090613df3565b60006011541161131e5760405162461bcd60e51b815260206004820152601b60248201527f546865726520617265206e6f20746f6b656e7320746f207377617000000000006044820152606401610d40565b81601154101561136a5760405162461bcd60e51b81526020600482015260176024820152762637bb9039bbb0b830b13632903932b33632b1ba34b7b760491b6044820152606401610d40565b476113753084612766565b826011546113839190613eb3565b6011556000611392478361244f565b6015549091506113a290826128be565b6015555060019392505050565b336000818152601760205260408120549091908311156114245760405162461bcd60e51b815260206004820152602a60248201527f45524332303a204275726e20416d6f756e742065786365656473206163636f756044820152696e742062616c616e636560b01b6064820152608401610d40565b600083116114745760405162461bcd60e51b815260206004820181905260248201527f45524332303a20456e74657220736f6d6520616d6f756e7420746f206275726e6044820152606401610d40565b6001600160a01b038116600090815260176020526040902054611497908461244f565b6001600160a01b038216600090815260176020526040902055610e0d81846128ca565b60006114c4612347565b816016540361152c5760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204e65772054696d657374616d702063616e277420626520746860448201526d652070726576696f7573206f6e6560901b6064820152608401610d40565b50601655600190565b60155460009061154590346128be565b60155550600190565b6014546000906001600160a01b038381169116148061157a57506013546001600160a01b038381169116145b1561158757506000919050565b6001600160a01b0382166000908152601960205260408120546015546115ad9190613eb3565b6001600160a01b0384166000908152601c6020908152604080832054600454601790935292205492935090916115e39084613ec6565b6115ed9190613ef3565b6115f79190613f07565b9392505050565b6000611608612347565b6001600160a01b0382166000908152601f602052604090205460ff161561167d5760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c7265616479206578636c756465642066726f6d604482015263040e8c2f60e31b6064820152608401610d40565b506001600160a01b03166000908152601f60205260409020805460ff1916600190811790915590565b60006116b0612347565b600a5460ff16156117035760405162461bcd60e51b815260206004820181905260248201527f45524332303a2054726164696e6720697320616c7265616479206163746976656044820152606401610d40565b50600a805460ff1916600190811790915590565b6000611721612347565b60105460ff16156117745760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e204275726e20697320616c72656164792073746f707065640000006044820152606401610d40565b60105460ff610100909104161515600114801561179e575060105462010000900460ff1615156001145b80156117b857506010546301000000900460ff1615156001145b156117d55760405162461bcd60e51b8152600401610d4090613e48565b6010805460ff1916600117905550600190565b60006117f2612347565b50600655600190565b6000611805612347565b6007546001600160a01b0380841691160361186e5760405162461bcd60e51b815260206004820152602360248201527f4163636f756e7420697320616c7265616479207472656173757279206164647260448201526265737360e81b6064820152608401610d40565b50600780546001600160a01b0383166001600160a01b03199091161790556001919050565b60003363ffffffff813b16156118f55760405162461bcd60e51b815260206004820152602160248201527f45524332303a2053656e6465722063616e2774206265206120636f6e747261636044820152601d60fa1b6064820152608401610d40565b610e0d8184612960565b611907612347565b6119116000612bdf565b565b600061191d612347565b50600555600190565b6000611930612347565b506010805464ff0000000019169055600190565b600061194e612347565b506001600160a01b0382166000908152601e60209081526040808320805485151560ff199182168117909255601f909352922080549091169091179055600192915050565b600061199d612347565b6005821115611a005760405162461bcd60e51b815260206004820152602960248201527f45524332303a205468652073656c6c207461782063616e2774206265206d6f7260448201526865207468656e20352560b81b6064820152608401610d40565b600980549083905560408051828152602081018590527f5e2deb0291797955e0066c5cebbc900e815e1099432b8f07462265a4f1c61b5191015b60405180910390a150600192915050565b6000611a55612347565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af1158015611aa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac89190613f1a565b506001949350505050565b6000611add612347565b6008805460098054600793849055600f9091556040805183815260208101949094529192909160008051602061411f83398151915291015b60405180910390a16009546040805183815260208101929092527f5e2deb0291797955e0066c5cebbc900e815e1099432b8f07462265a4f1c61b51910160405180910390a160019250505090565b606060028054610d7d90613db9565b6000611b7c612347565b60105462010000900460ff161515600114611be35760405162461bcd60e51b815260206004820152602160248201527f5265666c656374696f6e20697320616c7265616479206e6f742073746f7070656044820152601960fa1b6064820152608401610d40565b506010805462ff000019169055600190565b60003380611c155760405162461bcd60e51b8152600401610d4090613e1b565b6001600160a01b038416611c3b5760405162461bcd60e51b8152600401610d4090613e1b565b61deac196001600160a01b03851601611c8c5760405162461bcd60e51b815260206004820152601360248201527245524332303a2044656164204164647265737360681b6044820152606401610d40565b6001600160a01b038116600090815260176020526040902054831115611d025760405162461bcd60e51b815260206004820152602560248201527f45524332303a20416d6f756e742065786365656473206163636f756e742062616044820152646c616e636560d81b6064820152608401610d40565b61109481858561245b565b6000611d17612347565b60105462010000900460ff1615611d705760405162461bcd60e51b815260206004820152601d60248201527f5265666c656374696f6e20697320616c72656164792073746f707065640000006044820152606401610d40565b60105460ff1615156001148015611d94575060105460ff6101009091041615156001145b8015611dae57506010546301000000900460ff1615156001145b15611dcb5760405162461bcd60e51b8152600401610d4090613e48565b6010805462ff000019166201000017905550600190565b6000611dec612347565b6000600854118015611e0057506000600954115b611e4c5760405162461bcd60e51b815260206004820181905260248201527f45524332303a2054617865732061726520616c72656164792072656d6f7665646044820152606401610d40565b6008805460098054600093849055908390556040805183815260208101949094529192909160008051602061411f8339815191529101611b15565b6000611e91612347565b6010546301000000900460ff1615611eeb5760405162461bcd60e51b815260206004820152601b60248201527f547265617375727920697320616c72656164792073746f7070656400000000006044820152606401610d40565b60105460ff1615156001148015611f0f575060105460ff6101009091041615156001145b8015611f28575060105462010000900460ff1615156001145b15611f455760405162461bcd60e51b8152600401610d4090613e48565b6010805463ff0000001916630100000017905550600190565b6007546000906001600160a01b03163314611f8b5760405162461bcd60e51b8152600401610d4090613df3565b600060125411611fdd5760405162461bcd60e51b815260206004820152601b60248201527f546865726520617265206e6f20746f6b656e7320746f207377617000000000006044820152606401610d40565b8160125410156120295760405162461bcd60e51b81526020600482015260176024820152762637bb9039bbb0b830b13632903932b33632b1ba34b7b760491b6044820152606401610d40565b60075461203f906001600160a01b031683612766565b8160125461204d9190613eb3565b601255506001919050565b6000612062612347565b60105460ff1615156001146120c35760405162461bcd60e51b815260206004820152602160248201527f546f6b656e204275726e20697320616c7265616479206e6f742073746f7070656044820152601960fa1b6064820152608401610d40565b506010805460ff19169055600190565b60006120dd612347565b600582111561213f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a2054686520627579207461782063616e2774206265206d6f7265604482015267207468656e20352560c01b6064820152608401610d40565b6008805490839055604080518281526020810185905260008051602061411f8339815191529101611a3a565b6000612175612347565b6010546301000000900460ff1615156001146121d35760405162461bcd60e51b815260206004820152601b60248201527f547265617375727920697320616c72656164792073746f7070656400000000006044820152606401610d40565b506010805463ff00000019169055600190565b60006121f0612347565b6001600160a01b0382166000908152601f602052604090205460ff166122645760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c726561647920696e636c756465642066726f6d604482015263040e8c2f60e31b6064820152608401610d40565b506001600160a01b03166000908152601f60205260409020805460ff19169055600190565b612291612347565b6001600160a01b0381166122f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d40565b6122ff81612bdf565b50565b600061230c612347565b6008805460098054600493849055908390556040805183815260208101949094529192909160008051602061411f8339815191529101611b15565b6000546001600160a01b031633146119115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d40565b6001600160a01b0383166123c75760405162461bcd60e51b8152600401610d4090613e1b565b6001600160a01b0382166123ed5760405162461bcd60e51b8152600401610d4090613e1b565b6001600160a01b0383811660008181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006115f78284613eb3565b6000546001600160a01b03848116911614801561249057506001600160a01b0382166000908152601e602052604090205460ff165b156124a5576124a0838383612c2f565b505050565b6001600160a01b0383166000908152601e602052604090205460ff16806124e457506001600160a01b0382166000908152601e602052604090205460ff165b1561270757600a5460ff1615156001146125405760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610d40565b6001600160a01b0383166000908152601f602052604090205460ff16801561258157506001600160a01b0382166000908152601f602052604090205460ff16155b156125b0576125908282612db0565b80156125a057506125a081612e37565b156124a0576124a0838383612ea7565b6001600160a01b0383166000908152601f602052604090205460ff161580156125f157506001600160a01b0382166000908152601f602052604090205460ff165b1561260f576125ff81612e37565b156124a0576124a0838383613195565b6001600160a01b0383166000908152601f602052604090205460ff16801561264f57506001600160a01b0382166000908152601f602052604090205460ff165b156124a0576000546001600160a01b038481169116148061267d57506000546001600160a01b038381169116145b8061269057506001600160a01b03831630145b806126a357506001600160a01b03821630145b156126b3576124a0838383612c2f565b6001600160a01b0382166000908152601e602052604090205460ff16156126ed576126dd81612e37565b156124a0576124a0838383612c2f565b6126f78282612db0565b80156126dd57506126dd81612e37565b6000546001600160a01b038481169116148061273057506000546001600160a01b038381169116145b8061274357506001600160a01b03831630145b8061275657506001600160a01b03821630145b156126ed576124a0838383612c2f565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061279b5761279b613f4d565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156127f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128189190613f63565b8160018151811061282b5761282b613f4d565b6001600160a01b0392831660209182029290920101526013546040516318cbafe560e01b81529116906318cbafe590612871908590600090869089904290600401613f80565b6000604051808303816000875af1158015612890573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128b89190810190613ff1565b50505050565b60006115f78284613f07565b6004546128d7908261244f565b600455600b546128e790826128be565b600b556040518181526000906001600160a01b038416906000805160206140ff8339815191529060200160405180910390a3816001600160a01b03167f8b1897d4e7a3b42570088bb1182eb6518c96a754d44bc9edd4669568bfa983268260405161295491815260200190565b60405180910390a25050565b600061296b8361154e565b905061298f836001600160a01b03166000908152601d602052604090205460ff1690565b156129f35760405162461bcd60e51b815260206004820152602e60248201527f45524332303a2041646472657373206973206578636c7564656420746f20636c60448201526d30b4b6903932b33632b1ba34b7b760911b6064820152608401610d40565b6129fd83836133ce565b156124a05760008111612a645760405162461bcd60e51b815260206004820152602960248201527f45524332303a20436c61696d20616d6f756e742073686f756c64206265206d6f60448201526807265207468656e20360bc1b6064820152608401610d40565b6016546001600160a01b0384166000908152601b60205260409020544291612a8b91613f07565b1115612aff5760405162461bcd60e51b815260206004820152603b60248201527f45524332303a205265666c656374696f6e20636f6f6c20646f776e206973206960448201527f6d706c656d656e7465642c2074727920616761696e206c6174657200000000006064820152608401610d40565b6015546001600160a01b038416600081815260196020908152604080832094909455601b8152838220429055601c90528281208190559151909183156108fc02918491818181858888f19350505050158015612b5f573d6000803e3d6000fd5b506001600160a01b0383166000908152601a6020526040902054612b8390826128be565b6001600160a01b0384166000818152601a6020526040908190209290925590517faba62311dcf381aba06c0e76b1bb8e427e7c715edb8c84fc169cc1d1f51ac84e90612bd29084815260200190565b60405180910390a2505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b0383811691161480612c5357506001600160a01b03821630145b15612cc8576001600160a01b038316600090815260176020526040902054612c7b908261244f565b6001600160a01b038085166000908152601760205260408082209390935590841681522054612caa90826128be565b6001600160a01b038316600090815260176020526040902055612d7d565b612cf3612cd483613579565b6001600160a01b0384166000908152601c6020526040902054906128be565b6001600160a01b038084166000908152601c60209081526040808320949094556015546019825284832055918616815260179091522054612d34908261244f565b6001600160a01b038085166000908152601760205260408082209390935590841681522054612d6390826128be565b6001600160a01b0383166000908152601760205260409020555b816001600160a01b0316836001600160a01b03166000805160206140ff8339815191528360405161244291815260200190565b601054600090640100000000900460ff1615610e0d57612def82612de9856001600160a01b031660009081526017602052604090205490565b906128be565b6005541015610e0d5760405162461bcd60e51b815260206004820152601460248201527357616c6c6574206c696d6974206578636565647360601b6044820152606401610d40565b601054600090640100000000900460ff1615612e9f57600654821115612e9f5760405162461bcd60e51b815260206004820152601960248201527f5472616e73616374696f6e206c696d69742065786365656473000000000000006044820152606401610d40565b506001919050565b6000612eb1613610565b90506000612ed56064612ecf60085486613b0c90919063ffffffff16565b90613b18565b90506000612ee3848361244f565b9050612f10612ef186613579565b6001600160a01b0387166000908152601c6020526040902054906128be565b6001600160a01b038087166000908152601c60209081526040808320949094556015546019825284832055918916815260179091522054612f51908561244f565b6001600160a01b038088166000908152601760205260408082209390935590871681522054612f8090826128be565b6001600160a01b038616600090815260176020526040808220929092553081522054612fac90836128be565b306000908152601760205260409020556001839003612ffe5730600090815260176020526040902054612fdf908361244f565b30600090815260176020526040902055612ff985836128ca565b61310e565b8260020361303a5730600090815260176020526040902054613020908361244f565b30600090815260176020526040902055612ff98583613b24565b826003036130a65760115461304f90836128be565b601155600d5461305f90836128be565b600d556040518281526001600160a01b038616907fb7489ef47c48c720c40f3a3d8ee43af2461787f8211836228289add459fd887c906020015b60405180910390a261310e565b8260040361310e576012546130bb90836128be565b601255600e546130cb90836128be565b600e556040518281526001600160a01b038616907f1929a4bace25a65ec09f6599a42b7e272b7b015dbf1ac423102375dc81d74e15906020015b60405180910390a25b60408051848152602081018490526001600160a01b038816917f43430960b1421ddf891d3754c233acfb8948fc4b9912cbd819ca4f09701fbf58910160405180910390a2846001600160a01b0316866001600160a01b03166000805160206140ff8339815191528660405161318591815260200190565b60405180910390a3505050505050565b600061319f613610565b905060006131bd6064612ecf60095486613b0c90919063ffffffff16565b905060006131cb848361244f565b6001600160a01b0387166000908152601760205260409020549091506131f1908561244f565b6001600160a01b03808816600090815260176020526040808220939093559087168152205461322090826128be565b6001600160a01b03861660009081526017602052604080822092909255308152205461324c90836128be565b30600090815260176020526040808220929092556001600160a01b0388168152908120549003613290576001600160a01b0385166000908152601c60205260408120555b826001036132cc57306000908152601760205260409020546132b2908361244f565b30600090815260176020526040902055612ff986836128ca565b8260020361330857306000908152601760205260409020546132ee908361244f565b30600090815260176020526040902055612ff98683613bff565b8260030361336b5760115461331d90836128be565b601155600d5461332d90836128be565b600d556040518281526001600160a01b038716907fb7489ef47c48c720c40f3a3d8ee43af2461787f8211836228289add459fd887c90602001613099565b8260040361310e5760125461338090836128be565b601255600e5461339090836128be565b600e556040518281526001600160a01b038716907f1929a4bace25a65ec09f6599a42b7e272b7b015dbf1ac423102375dc81d74e1590602001613105565b6001600160a01b0382166000908152601f6020526040812054819060ff166134dd5760006133fb8561154e565b9050600081116134585760405162461bcd60e51b815260206004820152602260248201527f436c61696d20616d6f756e742073686f756c64206265206d6f7265207468656e604482015261020360f41b6064820152608401610d40565b6001600160a01b0385166000908152601d602052604090205460ff16156134d15760405162461bcd60e51b815260206004820152602760248201527f41646472657373206973206578636c7564656420746f20636c61696d207265666044820152663632b1ba34b7b760c91b6064820152608401610d40565b5060019150610e119050565b6001600160a01b0384166000908152601760205260408120546010805463ff0000ff19166301000001179055906135138661154e565b6010805462ff000019166201000017905590508415613554576135368583613f07565b6001600160a01b03871660009081526017602052604090205561355a565b600f8290555b8015613569576001925061356e565b600092505b829350505050610e11565b6014546000906001600160a01b03838116911614806135a557506013546001600160a01b038381169116145b156135b257506000919050565b6001600160a01b0382166000908152601960205260408120546015546135d89190613eb3565b90506004546135fc846001600160a01b031660009081526017602052604090205490565b6136069083613ec6565b6115f79190613ef3565b6000806000600242444532433a604051602001613632969594939291906140af565b6040516020818303038152906040528051906020012060001c61365591906140ea565b90506000600342444532433a604051602001613676969594939291906140af565b6040516020818303038152906040528051906020012060001c61369991906140ea565b60105490915060ff16151560011480156136c0575060105460ff6101009091041615156001145b80156136d9575060105462010000900460ff1615156001145b156136e75760049250613b04565b60105460ff161515600114801561370b575060105460ff6101009091041615156001145b801561372557506010546301000000900460ff1615156001145b156137335760039250613b04565b60105460ff1615156001148015613757575060105462010000900460ff1615156001145b801561377157506010546301000000900460ff1615156001145b1561377f5760029250613b04565b60105460ff61010090910416151560011480156137a9575060105462010000900460ff1615156001145b80156137c357506010546301000000900460ff1615156001145b156137d15760019250613b04565b60105460ff16151560011480156137f5575060105460ff6101009091041615156001145b1561381d578160000361380b5760039250613b04565b8160010361381857600492505b613b04565b60105460ff1615156001148015613841575060105462010000900460ff1615156001145b15613857578160000361380b5760029250613b04565b60105460ff161515600114801561387c57506010546301000000900460ff1615156001145b156138a357816000036138925760029250613b04565b816001036138185760039250613b04565b60105460ff61010090910416151560011480156138cd575060105462010000900460ff1615156001145b156138e3578160000361380b5760019250613b04565b60105460ff610100909104161515600114801561390e57506010546301000000900460ff1615156001145b1561392457816000036138925760019250613b04565b60105462010000900460ff161515600114801561394f57506010546301000000900460ff1615156001145b1561397657816000036139655760019250613b04565b816001036138185760029250613b04565b60105460ff1615156001036139d757600342444532433a6040516020016139a2969594939291906140af565b6040516020818303038152906040528051906020012060001c6139c591906140ea565b6139d0906002613f07565b9250613b04565b601054610100900460ff161515600103613a1e57806000036139fc5760019250613b04565b80600103613a0d5760039250613b04565b806002036138185760049250613b04565b60105462010000900460ff161515600103613a555780600003613a445760019250613b04565b80600103613a0d5760029250613b04565b6010546301000000900460ff161515600103613ab657600342444532433a604051602001613a88969594939291906140af565b6040516020818303038152906040528051906020012060001c613aab91906140ea565b6139d0906001613f07565b600442444532433a604051602001613ad3969594939291906140af565b6040516020818303038152906040528051906020012060001c613af691906140ea565b613b01906001613f07565b92505b509092915050565b60006115f78284613ec6565b60006115f78284613ef3565b8015613bfb576014546001600160a01b0316600090815260176020526040812054829190613b5290836128be565b6014546001600160a01b03166000908152601760205260409020819055600c54909150613b7f90846128be565b600c556014546040518481526001600160a01b03918216918616906000805160206140ff8339815191529060200160405180910390a3836001600160a01b03167ffb42d133eca0812491d47088ea70321250d6ab9cfc23a318f640f7def1cb201c84604051613bf091815260200190565b60405180910390a250505b5050565b8015613bfb576000600f5482613c159190613eb3565b6014546001600160a01b031660009081526017602052604081205491925090613b5290836128be565b6001600160a01b03811681146122ff57600080fd5b600060208284031215613c6557600080fd5b81356115f781613c3e565b600060208083528351808285015260005b81811015613c9d57858101830151858201604001528201613c81565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215613cd157600080fd5b8235613cdc81613c3e565b946020939093013593505050565b600080600060608486031215613cff57600080fd5b8335613d0a81613c3e565b92506020840135613d1a81613c3e565b929592945050506040919091013590565b600060208284031215613d3d57600080fd5b5035919050565b80151581146122ff57600080fd5b60008060408385031215613d6557600080fd5b8235613d7081613c3e565b91506020830135613d8081613d44565b809150509250929050565b60008060408385031215613d9e57600080fd5b8235613da981613c3e565b91506020830135613d8081613c3e565b600181811c90821680613dcd57607f821691505b602082108103613ded57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600e908201526d547265617375727920726f6c652160901b604082015260600190565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b60208082526035908201527f416c6c20666f75722066756e6374696f6e732063616e2774206765742073746f60408201527470706564206174207468652073616d652074696d6560581b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e1157610e11613e9d565b8082028115828204841417610e1157610e11613e9d565b634e487b7160e01b600052601260045260246000fd5b600082613f0257613f02613edd565b500490565b80820180821115610e1157610e11613e9d565b600060208284031215613f2c57600080fd5b81516115f781613d44565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215613f7557600080fd5b81516115f781613c3e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613fd05784516001600160a01b031683529383019391830191600101613fab565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602080838503121561400457600080fd5b825167ffffffffffffffff8082111561401c57600080fd5b818501915085601f83011261403057600080fd5b81518181111561404257614042613f37565b8060051b604051601f19603f8301168101818110858211171561406757614067613f37565b60405291825284820192508381018501918883111561408557600080fd5b938501935b828510156140a35784518452938501939285019261408a565b98975050505050505050565b95865260208601949094526040850192909252606090811b6bffffffffffffffffffffffff1916908401526074830152609482015260b40190565b6000826140f9576140f9613edd565b50069056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c6a2646970667358221220dea8527cf14b331a0e7ec0f0029336ef687290000b5243fdf108f604e13ff47264736f6c63430008130033

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

00000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000001ecf1e25f44250d3e7c1529b2ba799119fbd209f000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000211654585005212800000000000000000000000000000000000000000000000021165458500521280000000000000000000000000000000000000000000000000000000000000000000084d616765436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d47430000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): MageCoin
Arg [1] : symbol_ (string): MGC
Arg [2] : totalSupply_ (uint256): 100000000
Arg [3] : _treasury (address): 0x1ECf1E25F44250d3E7c1529b2ba799119fBD209F
Arg [4] : _reflectionCooldown (uint256): 60
Arg [5] : maxTxLimit_ (uint256): 2500000000000000000000000
Arg [6] : maxWalletLimit_ (uint256): 2500000000000000000000000

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [2] : 0000000000000000000000000000000000000000000000000000000005f5e100
Arg [3] : 0000000000000000000000001ecf1e25f44250d3e7c1529b2ba799119fbd209f
Arg [4] : 000000000000000000000000000000000000000000000000000000000000003c
Arg [5] : 0000000000000000000000000000000000000000000211654585005212800000
Arg [6] : 0000000000000000000000000000000000000000000211654585005212800000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [8] : 4d616765436f696e000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [10] : 4d47430000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

12125:30961:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25942:306;;;;;;;;;;-1:-1:-1;25942:306:0;;;;;:::i;:::-;;:::i;:::-;;;567:14:1;;560:22;542:41;;530:2;515:18;25942:306:0;;;;;;;;15876:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13005:35::-;;;;;;;;;;-1:-1:-1;13005:35:0;;;;-1:-1:-1;;;;;13005:35:0;;;;;;-1:-1:-1;;;;;1338:32:1;;;1320:51;;1308:2;1293:18;13005:35:0;1147:230:1;16388:186:0;;;;;;;;;;-1:-1:-1;16388:186:0;;;;;:::i;:::-;;:::i;13117:33::-;;;;;;;;;;;;;;;;;;;1848:25:1;;;1836:2;1821:18;13117:33:0;1702:177:1;34311:198:0;;;;;;;;;;-1:-1:-1;34311:198:0;;;;;:::i;:::-;;:::i;12965:31::-;;;;;;;;;;;;;;;;16153:100;;;;;;;;;;-1:-1:-1;16233:12:0;;16153:100;;17668:884;;;;;;;;;;-1:-1:-1;17668:884:0;;;;;:::i;:::-;;:::i;35194:433::-;;;;;;;;;;;;;:::i;25622:312::-;;;;;;;;;;-1:-1:-1;25622:312:0;;;;;:::i;:::-;;:::i;16062:83::-;;;;;;;;;;-1:-1:-1;16128:9:0;;16062:83;;16128:9;;;;2487:36:1;;2475:2;2460:18;16062:83:0;2345:184:1;36677:187:0;;;;;;;;;;;;;:::i;12668:29::-;;;;;;;;;;;;;;;;33294:606;;;;;;;;;;-1:-1:-1;33294:606:0;;;;;:::i;:::-;;:::i;24780:418::-;;;;;;;;;;-1:-1:-1;24780:418:0;;;;;:::i;:::-;;:::i;13600:39::-;;;;;;;;;;-1:-1:-1;13600:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13047:21;;;;;;;;;;-1:-1:-1;13047:21:0;;;;-1:-1:-1;;;;;13047:21:0;;;12891:26;;;;;;;;;;-1:-1:-1;12891:26:0;;;;;;;;;;;13412:57;;;;;;;;;;-1:-1:-1;13412:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;26392:304;;;;;;;;;;-1:-1:-1;26392:304:0;;;;;:::i;:::-;;:::i;25464:150::-;;;:::i;12512:21::-;;;;;;;;;;;;;;;;13348:57;;;;;;;;;;-1:-1:-1;13348:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;26704:409;;;;;;;;;;-1:-1:-1;26704:409:0;;;;;:::i;:::-;;:::i;31800:273::-;;;;;;;;;;-1:-1:-1;31800:273:0;;;;;:::i;:::-;;:::i;29934:196::-;;;;;;;;;;;;;:::i;12393:31::-;;;;;;;;;;-1:-1:-1;12393:31:0;;;;-1:-1:-1;;;;;12393:31:0;;;13077:33;;;;;;;;;;;;;;;;34754:432;;;;;;;;;;;;;:::i;32922:131::-;;;;;;;;;;-1:-1:-1;32922:131:0;;;;;:::i;:::-;;:::i;32492:275::-;;;;;;;;;;-1:-1:-1;32492:275:0;;;;;:::i;:::-;;:::i;12325:29::-;;;;;;;;;;;;;;;;12634:27;;;;;;;;;;;;;;;;27478:270;;;;;;;;;;-1:-1:-1;27478:270:0;;;;;:::i;:::-;;:::i;16261:119::-;;;;;;;;;;-1:-1:-1;16261:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;16354:18:0;16327:7;16354:18;;;:9;:18;;;;;;;16261:119;3840:103;;;;;;;;;;;;;:::i;:::-;;32775:139;;;;;;;;;;-1:-1:-1;32775:139:0;;;;;:::i;:::-;;:::i;42097:121::-;;;;;;;;;;;;;:::i;12361:25::-;;;;;;;;;;;;;;;;33061:225;;;;;;;;;;-1:-1:-1;33061:225:0;;;;;:::i;:::-;;:::i;12771:20::-;;;;;;;;;;-1:-1:-1;12771:20:0;;;;;;;;12704:28;;;;;;;;;;;;;;;;30437:302;;;;;;;;;;-1:-1:-1;30437:302:0;;;;;:::i;:::-;;:::i;34517:229::-;;;;;;;;;;-1:-1:-1;34517:229:0;;;;;:::i;:::-;;:::i;3605:87::-;;;;;;;;;;-1:-1:-1;3651:7:0;3678:6;-1:-1:-1;;;;;3678:6:0;3605:87;;31150:317;;;;;;;;;;;;;:::i;26256:128::-;;;;;;;;;;-1:-1:-1;26256:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;26348:28:0;26324:4;26348:28;;;:19;:28;;;;;;;;;26256:128;13287:54;;;;;;;;;;-1:-1:-1;13287:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;15967:87;;;;;;;;;;;;;:::i;36872:239::-;;;;;;;;;;;;;:::i;12926:32::-;;;;;;;;;;;;;;;;17112:548;;;;;;;;;;-1:-1:-1;17112:548:0;;;;;:::i;:::-;;:::i;35635:420::-;;;;;;;;;;;;;:::i;12827:26::-;;;;;;;;;;-1:-1:-1;12827:26:0;;;;;;;;;;;30747:395;;;;;;;;;;;;;:::i;36063:414::-;;;;;;;;;;;;;:::i;33908:395::-;;;;;;;;;;-1:-1:-1;33908:395:0;;;;;:::i;:::-;;:::i;12569:25::-;;;;;;;;;;-1:-1:-1;12569:25:0;;;;;;;;32360:124;;;;;;;;;;-1:-1:-1;32360:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;32449:27:0;32425:4;32449:27;;;:18;:27;;;;;;;;;32360:124;12540:22;;;;;;;;;;;;;;;;36485:184;;;;;;;;;;;;;:::i;12601:26::-;;;;;;;;;;;;;;;;12739:25;;;;;;;;;;;;;;;;30138:291;;;;;;;;;;-1:-1:-1;30138:291:0;;;;;:::i;:::-;;:::i;12860:24::-;;;;;;;;;;-1:-1:-1;12860:24:0;;;;;;;;;;;16934:170;;;;;;;;;;-1:-1:-1;16934:170:0;;;;;:::i;:::-;-1:-1:-1;;;;;17068:19:0;;;17041:7;17068:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16934:170;37119:190;;;;;;;;;;;;;:::i;32081:271::-;;;;;;;;;;-1:-1:-1;32081:271:0;;;;;:::i;:::-;;:::i;3951:201::-;;;;;;;;;;-1:-1:-1;3951:201:0;;;;;:::i;:::-;;:::i;31475:317::-;;;;;;;;;;;;;:::i;12798:22::-;;;;;;;;;;-1:-1:-1;12798:22:0;;;;;;;;;;;25942:306;26030:4;3564:13;:11;:13::i;:::-;-1:-1:-1;;;;;26069:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;26047:124;;;::::0;-1:-1:-1;;;26047:124:0;;4516:2:1;26047:124:0::1;::::0;::::1;4498:21:1::0;4555:2;4535:18;;;4528:30;4594:34;4574:18;;;4567:62;-1:-1:-1;;;4645:18:1;;;4638:44;4699:19;;26047:124:0::1;;;;;;;;;-1:-1:-1::0;;;;;;26182:28:0::1;26213:5;26182:28:::0;;;:19:::1;:28;::::0;;;;:36;;-1:-1:-1;;26182:36:0::1;::::0;;-1:-1:-1;;25942:306:0:o;15876:83::-;15913:13;15946:5;15939:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15876:83;:::o;16388:186::-;16488:4;16505:39;3150:10;16528:7;16537:6;16505:8;:39::i;:::-;-1:-1:-1;16562:4:0;16388:186;;;;;:::o;34311:198::-;34398:8;;34359:4;;-1:-1:-1;;;;;34398:8:0;34384:10;:22;34376:49;;;;-1:-1:-1;;;34376:49:0;;;;;;;:::i;:::-;34436:43;;-1:-1:-1;;;;;34436:20:0;;;34457:21;34436:43;;;;;;;;;34457:21;34436:20;:43;;;;;;;;;;;;;;;;;;;17668:884;17800:4;-1:-1:-1;;;;;17825:20:0;;17817:52;;;;-1:-1:-1;;;17817:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17888:23:0;;17880:55;;;;-1:-1:-1;;;17880:55:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;17954:17:0;;;17946:49;;;;-1:-1:-1;;;17946:49:0;;6007:2:1;17946:49:0;;;5989:21:1;6046:2;6026:18;;;6019:30;-1:-1:-1;;;6065:18:1;;;6058:49;6124:18;;17946:49:0;5805:343:1;17946:49:0;-1:-1:-1;;;;;18028:19:0;;;;;;:11;:19;;;;;;;;3150:10;18028:33;;;;;;;;:43;-1:-1:-1;18028:43:0;18006:123;;;;-1:-1:-1;;;18006:123:0;;6355:2:1;18006:123:0;;;6337:21:1;6394:2;6374:18;;;6367:30;6433:32;6413:18;;;6406:60;6483:18;;18006:123:0;6153:354:1;18006:123:0;-1:-1:-1;;;;;18162:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;18162:27:0;18140:123;;;;-1:-1:-1;;;18140:123:0;;6714:2:1;18140:123:0;;;6696:21:1;6753:2;6733:18;;;6726:30;6792:34;6772:18;;;6765:62;-1:-1:-1;;;6843:18:1;;;6836:44;6897:19;;18140:123:0;6512:410:1;18140:123:0;-1:-1:-1;;;;;18280:19:0;;;;;;:11;:19;;;;;;;;3150:10;18280:33;;;;;;;;-1:-1:-1;;18280:54:0;18276:200;;-1:-1:-1;;;;;18387:19:0;;;;;;:11;:19;;;;;;;;3150:10;18387:65;;;;;;;;:77;;18457:6;18387:69;:77::i;:::-;-1:-1:-1;;;;;18351:19:0;;;;;;:11;:19;;;;;;;;3150:10;18351:33;;;;;;;:113;18276:200;18486:36;18496:6;18504:9;18515:6;18486:9;:36::i;:::-;-1:-1:-1;18540:4:0;17668:884;;;;;:::o;35194:433::-;35242:4;3564:13;:11;:13::i;:::-;35267:10:::1;::::0;::::1;::::0;::::1;;;:19;35259:58;;;::::0;-1:-1:-1;;;35259:58:0;;7129:2:1;35259:58:0::1;::::0;::::1;7111:21:1::0;7168:2;7148:18;;;7141:30;7207:28;7187:18;;;7180:56;7253:18;;35259:58:0::1;6927:350:1::0;35259:58:0::1;35348:8;::::0;::::1;;:16;;:8:::0;:16:::1;:42:::0;::::1;;;-1:-1:-1::0;35368:14:0::1;::::0;;;::::1;;;:22;;35386:4;35368:22;35348:42;:66;;;;-1:-1:-1::0;35394:12:0::1;::::0;;;::::1;;;:20;;35410:4;35394:20;35348:66;35330:268;;;35441:95;;-1:-1:-1::0;;;35441:95:0::1;;;;;;;:::i;35330:268::-;35569:10;:17:::0;;-1:-1:-1;;35569:17:0::1;;;::::0;;-1:-1:-1;35615:4:0::1;35194:433:::0;:::o;25622:312::-;25712:4;3564:13;:11;:13::i;:::-;-1:-1:-1;;;;;25752:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;25751:29;25729:129;;;::::0;-1:-1:-1;;;25729:129:0;;7906:2:1;25729:129:0::1;::::0;::::1;7888:21:1::0;7945:2;7925:18;;;7918:30;7984:34;7964:18;;;7957:62;-1:-1:-1;;;8035:18:1;;;8028:48;8093:19;;25729:129:0::1;7704:414:1::0;25729:129:0::1;-1:-1:-1::0;;;;;;25869:28:0::1;;::::0;;;:19:::1;:28;::::0;;;;:35;;-1:-1:-1;;25869:35:0::1;25900:4;25869:35:::0;;::::1;::::0;;;25900:4;25622:312::o;36677:187::-;36727:4;3564:13;:11;:13::i;:::-;36752:10:::1;::::0;::::1;;::::0;;::::1;;:18;;:10;:18;36744:61;;;::::0;-1:-1:-1;;;36744:61:0;;8325:2:1;36744:61:0::1;::::0;::::1;8307:21:1::0;8364:2;8344:18;;;8337:30;8403:32;8383:18;;;8376:60;8453:18;;36744:61:0::1;8123:354:1::0;36744:61:0::1;-1:-1:-1::0;36816:10:0::1;:18:::0;;-1:-1:-1;;36816:18:0::1;::::0;;:10:::1;36677:187:::0;:::o;33294:606::-;33389:8;;33350:4;;-1:-1:-1;;;;;33389:8:0;33375:10;:22;33367:49;;;;-1:-1:-1;;;33367:49:0;;;;;;;:::i;:::-;33457:1;33437:17;;:21;33429:61;;;;-1:-1:-1;;;33429:61:0;;8684:2:1;33429:61:0;;;8666:21:1;8723:2;8703:18;;;8696:30;8762:29;8742:18;;;8735:57;8809:18;;33429:61:0;8482:351:1;33429:61:0;33530:6;33509:17;;:27;;33501:63;;;;-1:-1:-1;;;33501:63:0;;9040:2:1;33501:63:0;;;9022:21:1;9079:2;9059:18;;;9052:30;-1:-1:-1;;;9098:18:1;;;9091:53;9161:18;;33501:63:0;8838:347:1;33501:63:0;33602:21;33634:34;33654:4;33661:6;33634:11;:34::i;:::-;33719:6;33699:17;;:26;;;;:::i;:::-;33679:17;:46;33738:19;33760:43;33761:21;33788:14;33760:27;:43::i;:::-;33835:18;;33738:65;;-1:-1:-1;33835:35:0;;33738:65;33835:22;:35::i;:::-;33814:18;:56;-1:-1:-1;33888:4:0;;33294:606;-1:-1:-1;;;33294:606:0:o;24780:418::-;3150:10;24826:4;24905:17;;;:9;:17;;;;;;24826:4;;3150:10;-1:-1:-1;;24905:27:0;24883:119;;;;-1:-1:-1;;;24883:119:0;;9657:2:1;24883:119:0;;;9639:21:1;9696:2;9676:18;;;9669:30;9735:34;9715:18;;;9708:62;-1:-1:-1;;;9786:18:1;;;9779:40;9836:19;;24883:119:0;9455:406:1;24883:119:0;25030:1;25021:6;:10;25013:55;;;;-1:-1:-1;;;25013:55:0;;10068:2:1;25013:55:0;;;10050:21:1;;;10087:18;;;10080:30;10146:34;10126:18;;;10119:62;10198:18;;25013:55:0;9866:356:1;25013:55:0;-1:-1:-1;;;;;25101:17:0;;;;;;:9;:17;;;;;;:29;;25123:6;25101:21;:29::i;:::-;-1:-1:-1;;;;;25081:17:0;;;;;;:9;:17;;;;;:49;25141:25;25091:6;25159;25141:9;:25::i;26392:304::-;26483:4;3564:13;:11;:13::i;:::-;26544:8:::1;26522:18;;:30:::0;26500:126:::1;;;::::0;-1:-1:-1;;;26500:126:0;;10429:2:1;26500:126:0::1;::::0;::::1;10411:21:1::0;10468:2;10448:18;;;10441:30;10507:34;10487:18;;;10480:62;-1:-1:-1;;;10558:18:1;;;10551:44;10612:19;;26500:126:0::1;10227:410:1::0;26500:126:0::1;-1:-1:-1::0;26637:18:0::1;:29:::0;26684:4:::1;::::0;26392:304::o;25464:150::-;25551:18;;25513:4;;25551:33;;25574:9;25551:22;:33::i;:::-;25530:18;:54;-1:-1:-1;25602:4:0;;25464:150::o;26704:409::-;26822:6;;26787:7;;-1:-1:-1;;;;;26811:17:0;;;26822:6;;26811:17;;:50;;-1:-1:-1;26851:9:0;;-1:-1:-1;;;;;26832:29:0;;;26851:9;;26832:29;26811:50;26807:64;;;-1:-1:-1;26870:1:0;;26704:409;-1:-1:-1;26704:409:0:o;26807:64::-;-1:-1:-1;;;;;26944:28:0;;26884:23;26944:28;;;:19;:28;;;;;;26910:18;;:62;;26944:28;26910:62;:::i;:::-;-1:-1:-1;;;;;27075:29:0;;;;;;:20;:29;;;;;;;;;27045:12;;16354:9;:18;;;;;;26884:88;;-1:-1:-1;27075:29:0;;27005:36;;:15;:36;:::i;:::-;27004:53;;;;:::i;:::-;27003:102;;;;:::i;:::-;26983:122;26704:409;-1:-1:-1;;;26704:409:0:o;31800:273::-;31867:4;3564:13;:11;:13::i;:::-;-1:-1:-1;;;;;31907:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;31906:28;31884:114;;;::::0;-1:-1:-1;;;31884:114:0;;11404:2:1;31884:114:0::1;::::0;::::1;11386:21:1::0;11443:2;11423:18;;;11416:30;11482:34;11462:18;;;11455:62;-1:-1:-1;;;11533:18:1;;;11526:34;11577:19;;31884:114:0::1;11202:400:1::0;31884:114:0::1;-1:-1:-1::0;;;;;;32009:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;32009:34:0::1;32039:4;32009:34:::0;;::::1;::::0;;;32039:4;31800:273::o;29934:196::-;29985:4;3564:13;:11;:13::i;:::-;30010::::1;::::0;::::1;;:22;30002:67;;;::::0;-1:-1:-1;;;30002:67:0;;11809:2:1;30002:67:0::1;::::0;::::1;11791:21:1::0;;;11828:18;;;11821:30;11887:34;11867:18;;;11860:62;11939:18;;30002:67:0::1;11607:356:1::0;30002:67:0::1;-1:-1:-1::0;30080:13:0::1;:20:::0;;-1:-1:-1;;30080:20:0::1;30096:4;30080:20:::0;;::::1;::::0;;;29934:196;:::o;34754:432::-;34800:4;3564:13;:11;:13::i;:::-;34825:8:::1;::::0;::::1;;:17;34817:59;;;::::0;-1:-1:-1;;;34817:59:0;;12170:2:1;34817:59:0::1;::::0;::::1;12152:21:1::0;12209:2;12189:18;;;12182:30;12248:31;12228:18;;;12221:59;12297:18;;34817:59:0::1;11968:353:1::0;34817:59:0::1;34907:10;::::0;::::1;;::::0;;::::1;;:18;;:10;:18;:44:::0;::::1;;;-1:-1:-1::0;34929:14:0::1;::::0;;;::::1;;;:22;;34947:4;34929:22;34907:44;:68;;;;-1:-1:-1::0;34955:12:0::1;::::0;;;::::1;;;:20;;34971:4;34955:20;34907:68;34889:268;;;35002:95;;-1:-1:-1::0;;;35002:95:0::1;;;;;;;:::i;34889:268::-;35130:8;:15:::0;;-1:-1:-1;;35130:15:0::1;35141:4;35130:15;::::0;;-1:-1:-1;35174:4:0::1;34754:432:::0;:::o;32922:131::-;32987:4;3564:13;:11;:13::i;:::-;-1:-1:-1;33004:10:0::1;:19:::0;33041:4:::1;::::0;32922:131::o;32492:275::-;32587:4;3564:13;:11;:13::i;:::-;32626:8:::1;::::0;-1:-1:-1;;;;;32626:19:0;;::::1;:8:::0;::::1;:19:::0;32604:104:::1;;;::::0;-1:-1:-1;;;32604:104:0;;12528:2:1;32604:104:0::1;::::0;::::1;12510:21:1::0;12567:2;12547:18;;;12540:30;12606:34;12586:18;;;12579:62;-1:-1:-1;;;12657:18:1;;;12650:33;12700:19;;32604:104:0::1;12326:399:1::0;32604:104:0::1;-1:-1:-1::0;32719:8:0::1;:18:::0;;-1:-1:-1;;;;;32719:18:0;::::1;-1:-1:-1::0;;;;;;32719:18:0;;::::1;;::::0;;;32492:275;;;:::o;27478:270::-;27540:4;3150:10;41705:8;41658:18;;41705:8;;27597:66;;;;-1:-1:-1;;;27597:66:0;;12932:2:1;27597:66:0;;;12914:21:1;12971:2;12951:18;;;12944:30;13010:34;12990:18;;;12983:62;-1:-1:-1;;;13061:18:1;;;13054:31;13102:19;;27597:66:0;12730:397:1;27597:66:0;27674:44;27702:6;27711;27674:19;:44::i;3840:103::-;3564:13;:11;:13::i;:::-;3905:30:::1;3932:1;3905:18;:30::i;:::-;3840:103::o:0;32775:139::-;32844:4;3564:13;:11;:13::i;:::-;-1:-1:-1;32861:14:0::1;:23:::0;32902:4:::1;::::0;32775:139::o;42097:121::-;42149:4;3564:13;:11;:13::i;:::-;-1:-1:-1;42166:14:0::1;:22:::0;;-1:-1:-1;;42166:22:0::1;::::0;;;42097:121;:::o;33061:225::-;33163:4;3564:13;:11;:13::i;:::-;-1:-1:-1;;;;;;33180:18:0;::::1;;::::0;;;:7:::1;:18;::::0;;;;;;;:27;;;::::1;;-1:-1:-1::0;;33180:27:0;;::::1;::::0;::::1;::::0;;;33218:18:::1;:29:::0;;;;;:38;;;;::::1;::::0;;::::1;::::0;;33180:27;33061:225;;;;:::o;30437:302::-;30501:4;3564:13;:11;:13::i;:::-;30538:1:::1;30526:8;:13;;30518:67;;;::::0;-1:-1:-1;;;30518:67:0;;13334:2:1;30518:67:0::1;::::0;::::1;13316:21:1::0;13373:2;13353:18;;;13346:30;13412:34;13392:18;;;13385:62;-1:-1:-1;;;13463:18:1;;;13456:39;13512:19;;30518:67:0::1;13132:405:1::0;30518:67:0::1;30619:7;::::0;;30637:18;;;;30673:36:::1;::::0;;13716:25:1;;;13772:2;13757:18;;13750:34;;;30673:36:0::1;::::0;13689:18:1;30673:36:0::1;;;;;;;;-1:-1:-1::0;30727:4:0::1;::::0;30437:302;-1:-1:-1;;30437:302:0:o;34517:229::-;34658:4;3564:13;:11;:13::i;:::-;34675:41:::1;::::0;-1:-1:-1;;;34675:41:0;;-1:-1:-1;;;;;13987:32:1;;;34675:41:0::1;::::0;::::1;13969:51:1::0;14036:18;;;14029:34;;;34675:29:0;::::1;::::0;::::1;::::0;13942:18:1;;34675:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;34734:4:0::1;::::0;34517:229;-1:-1:-1;;;;34517:229:0:o;31150:317::-;31206:4;3564:13;:11;:13::i;:::-;31245:6:::1;::::0;;31285:7:::1;::::0;;31312:1:::1;31303:10:::0;;;;31334:2:::1;31324:12:::0;;;31352:33:::1;::::0;;13716:25:1;;;13772:2;13757:18;;13750:34;;;;31245:6:0;;31285:7;;-1:-1:-1;;;;;;;;;;;31352:33:0;13689:18:1;31352:33:0::1;;;;;;;;31429:7;::::0;31401:36:::1;::::0;;13716:25:1;;;13772:2;13757:18;;13750:34;;;;31401:36:0::1;::::0;13689:18:1;31401:36:0::1;;;;;;;31455:4;31448:11;;;;31150:317:::0;:::o;15967:87::-;16006:13;16039:7;16032:14;;;;;:::i;36872:239::-;36926:4;3564:13;:11;:13::i;:::-;36965:14:::1;::::0;;;::::1;;;:22;;36983:4;36965:22;36943:105;;;::::0;-1:-1:-1;;;36943:105:0;;14526:2:1;36943:105:0::1;::::0;::::1;14508:21:1::0;14565:2;14545:18;;;14538:30;14604:34;14584:18;;;14577:62;-1:-1:-1;;;14655:18:1;;;14648:31;14696:19;;36943:105:0::1;14324:397:1::0;36943:105:0::1;-1:-1:-1::0;37059:14:0::1;:22:::0;;-1:-1:-1;;37059:22:0::1;::::0;;;36872:239;:::o;17112:548::-;17215:4;3150:10;;17273:53;;;;-1:-1:-1;;;17273:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17345:23:0;;17337:55;;;;-1:-1:-1;;;17337:55:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;17411:17:0;;;17403:49;;;;-1:-1:-1;;;17403:49:0;;6007:2:1;17403:49:0;;;5989:21:1;6046:2;6026:18;;;6019:30;-1:-1:-1;;;6065:18:1;;;6058:49;6124:18;;17403:49:0;5805:343:1;17403:49:0;-1:-1:-1;;;;;17485:18:0;;;;;;:9;:18;;;;;;:28;-1:-1:-1;17485:28:0;17463:115;;;;-1:-1:-1;;;17463:115:0;;14928:2:1;17463:115:0;;;14910:21:1;14967:2;14947:18;;;14940:30;15006:34;14986:18;;;14979:62;-1:-1:-1;;;15057:18:1;;;15050:35;15102:19;;17463:115:0;14726:401:1;17463:115:0;17591:37;17601:7;17610:9;17621:6;17591:9;:37::i;35635:420::-;35687:4;3564:13;:11;:13::i;:::-;35712:14:::1;::::0;;;::::1;;;:23;35704:65;;;::::0;-1:-1:-1;;;35704:65:0;;15334:2:1;35704:65:0::1;::::0;::::1;15316:21:1::0;15373:2;15353:18;;;15346:30;15412:31;15392:18;;;15385:59;15461:18;;35704:65:0::1;15132:353:1::0;35704:65:0::1;35786:8;::::0;::::1;;:16;;:8:::0;:16:::1;:38:::0;::::1;;;-1:-1:-1::0;35806:10:0::1;::::0;::::1;;::::0;;::::1;;:18;;:10;:18;35786:38;:62;;;;-1:-1:-1::0;35828:12:0::1;::::0;;;::::1;;;:20;;35844:4;35828:20;35786:62;35782:244;;;35865:95;;-1:-1:-1::0;;;35865:95:0::1;;;;;;;:::i;35782:244::-;35993:14;:21:::0;;-1:-1:-1;;35993:21:0::1;::::0;::::1;::::0;;-1:-1:-1;36043:4:0::1;35635:420:::0;:::o;30747:395::-;30797:4;3564:13;:11;:13::i;:::-;30831:1:::1;30822:6;;:10;:25;;;;;30846:1;30836:7;;:11;30822:25;30814:70;;;::::0;-1:-1:-1;;;30814:70:0;;15692:2:1;30814:70:0::1;::::0;::::1;15674:21:1::0;;;15711:18;;;15704:30;15770:34;15750:18;;;15743:62;15822:18;;30814:70:0::1;15490:356:1::0;30814:70:0::1;30917:6;::::0;;30957:7:::1;::::0;;30895:19:::1;30977:10:::0;;;;30998:11;;;;31027:33:::1;::::0;;13716:25:1;;;13772:2;13757:18;;13750:34;;;;30917:6:0;;30957:7;;-1:-1:-1;;;;;;;;;;;31027:33:0;13689:18:1;31027:33:0::1;13542:248:1::0;36063:414:0;36113:4;3564:13;:11;:13::i;:::-;36138:12:::1;::::0;;;::::1;;;:21;36130:61;;;::::0;-1:-1:-1;;;36130:61:0;;16053:2:1;36130:61:0::1;::::0;::::1;16035:21:1::0;16092:2;16072:18;;;16065:30;16131:29;16111:18;;;16104:57;16178:18;;36130:61:0::1;15851:351:1::0;36130:61:0::1;36208:8;::::0;::::1;;:16;;:8:::0;:16:::1;:38:::0;::::1;;;-1:-1:-1::0;36228:10:0::1;::::0;::::1;;::::0;;::::1;;:18;;:10;:18;36208:38;:64;;;;-1:-1:-1::0;36250:14:0::1;::::0;;;::::1;;;:22;;36268:4;36250:22;36208:64;36204:244;;;36289:95;;-1:-1:-1::0;;;36289:95:0::1;;;;;;;:::i;36204:244::-;36417:12;:19:::0;;-1:-1:-1;;36417:19:0::1;::::0;::::1;::::0;;-1:-1:-1;36465:4:0::1;36063:414:::0;:::o;33908:395::-;34001:8;;33962:4;;-1:-1:-1;;;;;34001:8:0;33987:10;:22;33979:49;;;;-1:-1:-1;;;33979:49:0;;;;;;;:::i;:::-;34068:1;34049:16;;:20;34041:60;;;;-1:-1:-1;;;34041:60:0;;8684:2:1;34041:60:0;;;8666:21:1;8723:2;8703:18;;;8696:30;8762:29;8742:18;;;8735:57;8809:18;;34041:60:0;8482:351:1;34041:60:0;34140:6;34120:16;;:26;;34112:62;;;;-1:-1:-1;;;34112:62:0;;9040:2:1;34112:62:0;;;9022:21:1;9079:2;9059:18;;;9052:30;-1:-1:-1;;;9098:18:1;;;9091:53;9161:18;;34112:62:0;8838:347:1;34112:62:0;34199:8;;34187:29;;-1:-1:-1;;;;;34199:8:0;34209:6;34187:11;:29::i;:::-;34265:6;34246:16;;:25;;;;:::i;:::-;34227:16;:44;-1:-1:-1;34291:4:0;;33908:395;-1:-1:-1;33908:395:0:o;36485:184::-;36533:4;3564:13;:11;:13::i;:::-;36558:8:::1;::::0;::::1;;:16;;:8:::0;:16:::1;36550:62;;;::::0;-1:-1:-1;;;36550:62:0;;16409:2:1;36550:62:0::1;::::0;::::1;16391:21:1::0;16448:2;16428:18;;;16421:30;16487:34;16467:18;;;16460:62;-1:-1:-1;;;16538:18:1;;;16531:31;16579:19;;36550:62:0::1;16207:397:1::0;36550:62:0::1;-1:-1:-1::0;36623:8:0::1;:16:::0;;-1:-1:-1;;36623:16:0::1;::::0;;;36485:184;:::o;30138:291::-;30200:4;3564:13;:11;:13::i;:::-;30236:1:::1;30225:7;:12;;30217:65;;;::::0;-1:-1:-1;;;30217:65:0;;16811:2:1;30217:65:0::1;::::0;::::1;16793:21:1::0;16850:2;16830:18;;;16823:30;16889:34;16869:18;;;16862:62;-1:-1:-1;;;16940:18:1;;;16933:38;16988:19;;30217:65:0::1;16609:404:1::0;30217:65:0::1;30315:6;::::0;;30332:16;;;;30366:33:::1;::::0;;13716:25:1;;;13772:2;13757:18;;13750:34;;;-1:-1:-1;;;;;;;;;;;30366:33:0;13689:18:1;30366:33:0::1;13542:248:1::0;37119:190:0;37171:4;3564:13;:11;:13::i;:::-;37196:12:::1;::::0;;;::::1;;;:20;;37212:4;37196:20;37188:60;;;::::0;-1:-1:-1;;;37188:60:0;;16053:2:1;37188:60:0::1;::::0;::::1;16035:21:1::0;16092:2;16072:18;;;16065:30;16131:29;16111:18;;;16104:57;16178:18;;37188:60:0::1;15851:351:1::0;37188:60:0::1;-1:-1:-1::0;37259:12:0::1;:20:::0;;-1:-1:-1;;37259:20:0::1;::::0;;;37119:190;:::o;32081:271::-;32146:4;3564:13;:11;:13::i;:::-;-1:-1:-1;;;;;32185:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;32163:113;;;::::0;-1:-1:-1;;;32163:113:0;;17220:2:1;32163:113:0::1;::::0;::::1;17202:21:1::0;17259:2;17239:18;;;17232:30;17298:34;17278:18;;;17271:62;-1:-1:-1;;;17349:18:1;;;17342:34;17393:19;;32163:113:0::1;17018:400:1::0;32163:113:0::1;-1:-1:-1::0;;;;;;32287:27:0::1;32317:5;32287:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;32287:35:0::1;::::0;;-1:-1:-1;;32081:271:0:o;3951:201::-;3564:13;:11;:13::i;:::-;-1:-1:-1;;;;;4040:22:0;::::1;4032:73;;;::::0;-1:-1:-1;;;4032:73:0;;17625:2:1;4032:73:0::1;::::0;::::1;17607:21:1::0;17664:2;17644:18;;;17637:30;17703:34;17683:18;;;17676:62;-1:-1:-1;;;17754:18:1;;;17747:36;17800:19;;4032:73:0::1;17423:402:1::0;4032:73:0::1;4116:28;4135:8;4116:18;:28::i;:::-;3951:201:::0;:::o;31475:317::-;31532:4;3564:13;:11;:13::i;:::-;31571:6:::1;::::0;;31611:7:::1;::::0;;31638:1:::1;31629:10:::0;;;;31650:11;;;;31677:33:::1;::::0;;13716:25:1;;;13772:2;13757:18;;13750:34;;;;31571:6:0;;31611:7;;-1:-1:-1;;;;;;;;;;;31677:33:0;13689:18:1;31677:33:0::1;13542:248:1::0;3700:132:0;3651:7;3678:6;-1:-1:-1;;;;;3678:6:0;3150:10;3764:23;3756:68;;;;-1:-1:-1;;;3756:68:0;;18032:2:1;3756:68:0;;;18014:21:1;;;18051:18;;;18044:30;18110:34;18090:18;;;18083:62;18162:18;;3756:68:0;17830:356:1;16582:344:0;-1:-1:-1;;;;;16711:20:0;;16703:52;;;;-1:-1:-1;;;16703:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16774:21:0;;16766:53;;;;-1:-1:-1;;;16766:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16832:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;16885:33;;1848:25:1;;;16885:33:0;;1821:18:1;16885:33:0;;;;;;;;16582:344;;;:::o;1311:98::-;1369:7;1396:5;1400:1;1396;:5;:::i;18560:2368::-;3651:7;3678:6;-1:-1:-1;;;;;18688:17:0;;;3678:6;;18688:17;:39;;;;-1:-1:-1;;;;;;18709:18:0;;;;;;:7;:18;;;;;;;;18688:39;18684:2237;;;18744:48;18766:6;18774:9;18785:6;18744:21;:48::i;:::-;18560:2368;;;:::o;18684:2237::-;-1:-1:-1;;;;;18814:15:0;;;;;;:7;:15;;;;;;;;;:37;;-1:-1:-1;;;;;;18833:18:0;;;;;;:7;:18;;;;;;;;18814:37;18810:2111;;;18876:13;;;;:21;;:13;:21;18868:63;;;;-1:-1:-1;;;18868:63:0;;18393:2:1;18868:63:0;;;18375:21:1;18432:2;18412:18;;;18405:30;18471:31;18451:18;;;18444:59;18520:18;;18868:63:0;18191:353:1;18868:63:0;-1:-1:-1;;;;;18952:26:0;;;;;;:18;:26;;;;;;;;:60;;;;-1:-1:-1;;;;;;18983:29:0;;;;;;:18;:29;;;;;;;;18982:30;18952:60;18948:1449;;;19059:39;19080:9;19091:6;19059:20;:39::i;:::-;:88;;;;;19123:24;19140:6;19123:16;:24::i;:::-;19033:225;;;19190:48;19212:6;19220:9;19231:6;19190:21;:48::i;18948:1449::-;-1:-1:-1;;;;;19302:26:0;;;;;;:18;:26;;;;;;;;19301:27;:60;;;;-1:-1:-1;;;;;;19332:29:0;;;;;;:18;:29;;;;;;;;19301:60;19279:1118;;;19400:24;19417:6;19400:16;:24::i;:::-;19396:119;;;19449:46;19469:6;19477:9;19488:6;19449:19;:46::i;19279:1118::-;-1:-1:-1;;;;;19558:26:0;;;;;;:18;:26;;;;;;;;:59;;;;-1:-1:-1;;;;;;19588:29:0;;;;;;:18;:29;;;;;;;;19558:59;19536:861;;;3651:7;3678:6;-1:-1:-1;;;;;19678:17:0;;;3678:6;;19678:17;;:62;;-1:-1:-1;3651:7:0;3678:6;-1:-1:-1;;;;;19720:20:0;;;3678:6;;19720:20;19678:62;:110;;;-1:-1:-1;;;;;;19765:23:0;;19783:4;19765:23;19678:110;:161;;;-1:-1:-1;;;;;;19813:26:0;;19834:4;19813:26;19678:161;19652:730;;;19882:48;19904:6;19912:9;19923:6;19882:21;:48::i;19652:730::-;-1:-1:-1;;;;;19960:18:0;;;;;;:7;:18;;;;;;;;19956:426;;;20007:24;20024:6;20007:16;:24::i;:::-;20003:129;;;20060:48;20082:6;20090:9;20101:6;20060:21;:48::i;19956:426::-;20183:39;20204:9;20215:6;20183:20;:39::i;:::-;:88;;;;;20247:24;20264:6;20247:16;:24::i;18810:2111::-;3651:7;3678:6;-1:-1:-1;;;;;20451:17:0;;;3678:6;;20451:17;;:58;;-1:-1:-1;3651:7:0;3678:6;-1:-1:-1;;;;;20489:20:0;;;3678:6;;20489:20;20451:58;:102;;;-1:-1:-1;;;;;;20530:23:0;;20548:4;20530:23;20451:102;:149;;;-1:-1:-1;;;;;;20574:26:0;;20595:4;20574:26;20451:149;20429:481;;;20635:48;20657:6;20665:9;20676:6;20635:21;:48::i;41730:359::-;41829:16;;;41843:1;41829:16;;;;;;;;41805:21;;41829:16;;;;;;;;;;-1:-1:-1;41829:16:0;41805:40;;41874:4;41856;41861:1;41856:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;41856:23:0;;;:7;;;;;;;;;;:23;;;;41900:9;;:16;;;-1:-1:-1;;;41900:16:0;;;;:9;;;;;:14;;:16;;;;;41856:7;;41900:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41890:4;41895:1;41890:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;41890:26:0;;;:7;;;;;;;;;:26;41929:9;;:152;;-1:-1:-1;;;41929:152:0;;:9;;;:31;;:152;;41975:6;;41929:9;;42012:4;;42031:9;;42055:15;;41929:152;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;41929:152:0;;;;;;;;;;;;:::i;:::-;;41794:295;41730:359;;:::o;1205:98::-;1263:7;1290:5;1294:1;1290;:5;:::i;25206:250::-;25290:12;;:24;;25307:6;25290:16;:24::i;:::-;25275:12;:39;25339:11;;:23;;25355:6;25339:15;:23::i;:::-;25325:11;:37;25378:34;;1848:25:1;;;25401:1:0;;-1:-1:-1;;;;;25378:34:0;;;-1:-1:-1;;;;;;;;;;;25378:34:0;1836:2:1;1821:18;25378:34:0;;;;;;;25435:4;-1:-1:-1;;;;;25428:20:0;;25441:6;25428:20;;;;1848:25:1;;1836:2;1821:18;;1702:177;25428:20:0;;;;;;;;25206:250;;:::o;28880:1046::-;28969:17;28989:28;29009:7;28989:19;:28::i;:::-;28969:48;;29050:29;29071:7;-1:-1:-1;;;;;26348:28:0;26324:4;26348:28;;;:19;:28;;;;;;;;;26256:128;29050:29;:38;29028:134;;;;-1:-1:-1;;;29028:134:0;;21366:2:1;29028:134:0;;;21348:21:1;21405:2;21385:18;;;21378:30;21444:34;21424:18;;;21417:62;-1:-1:-1;;;21495:18:1;;;21488:44;21549:19;;29028:134:0;21164:410:1;29028:134:0;29177:30;29191:7;29200:6;29177:13;:30::i;:::-;29173:746;;;29244:1;29232:9;:13;29224:67;;;;-1:-1:-1;;;29224:67:0;;21781:2:1;29224:67:0;;;21763:21:1;21820:2;21800:18;;;21793:30;21859:34;21839:18;;;21832:62;-1:-1:-1;;;21910:18:1;;;21903:39;21959:19;;29224:67:0;21579:405:1;29224:67:0;29366:18;;-1:-1:-1;;;;;29332:31:0;;;;;;:22;:31;;;;;;29409:15;;29332:52;;;:::i;:::-;:92;;29306:213;;;;-1:-1:-1;;;29306:213:0;;22191:2:1;29306:213:0;;;22173:21:1;22230:2;22210:18;;;22203:30;22269:34;22249:18;;;22242:62;22340:29;22320:18;;;22313:57;22387:19;;29306:213:0;21989:423:1;29306:213:0;29565:18;;-1:-1:-1;;;;;29534:28:0;;;;;;:19;:28;;;;;;;;:49;;;;29598:22;:31;;;;;29632:15;29598:49;;29662:20;:29;;;;;:33;;;29710:27;;29534:28;;29710:27;;;;;29727:9;;29710:27;29534:28;29710:27;29727:9;29534:28;29710:27;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29786:31:0;;;;;;:22;:31;;;;;;:64;;29840:9;29786:53;:64::i;:::-;-1:-1:-1;;;;;29752:31:0;;;;;;:22;:31;;;;;;;:98;;;;29870:37;;;;;;29897:9;1848:25:1;;1836:2;1821:18;;1702:177;29870:37:0;;;;;;;;28958:968;28880:1046;;:::o;4160:191::-;4234:16;4253:6;;-1:-1:-1;;;;;4270:17:0;;;-1:-1:-1;;;;;;4270:17:0;;;;;;4303:40;;4253:6;;;;;;;4303:40;;4234:16;4303:40;4223:128;4160:191;:::o;24022:750::-;3651:7;3678:6;-1:-1:-1;;;;;24161:20:0;;;3678:6;;24161:20;;:50;;-1:-1:-1;;;;;;24185:26:0;;24206:4;24185:26;24161:50;24157:557;;;-1:-1:-1;;;;;24248:17:0;;;;;;:9;:17;;;;;;:29;;24270:6;24248:21;:29::i;:::-;-1:-1:-1;;;;;24228:17:0;;;;;;;:9;:17;;;;;;:49;;;;24315:20;;;;;;;:32;;24340:6;24315:24;:32::i;:::-;-1:-1:-1;;;;;24292:20:0;;;;;;:9;:20;;;;;:55;24157:557;;;24414:86;24468:31;24489:9;24468:20;:31::i;:::-;-1:-1:-1;;;;;24414:31:0;;;;;;:20;:31;;;;;;;:53;:86::i;:::-;-1:-1:-1;;;;;24380:31:0;;;;;;;:20;:31;;;;;;;;:120;;;;24548:18;;24515:19;:30;;;;;:51;24603:17;;;;;:9;:17;;;;;:29;;24625:6;24603:21;:29::i;:::-;-1:-1:-1;;;;;24583:17:0;;;;;;;:9;:17;;;;;;:49;;;;24670:20;;;;;;;:32;;24695:6;24670:24;:32::i;:::-;-1:-1:-1;;;;;24647:20:0;;;;;;:9;:20;;;;;:55;24157:557;24746:9;-1:-1:-1;;;;;24729:35:0;24738:6;-1:-1:-1;;;;;24729:35:0;-1:-1:-1;;;;;;;;;;;24757:6:0;24729:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;40961:337:0;41094:14;;41073:4;;41094:14;;;;;41090:179;;;41169:32;41194:6;41169:20;41179:9;-1:-1:-1;;;;;16354:18:0;16327:7;16354:18;;;:9;:18;;;;;;;16261:119;41169:20;:24;;:32::i;:::-;41151:14;;:50;;41125:132;;;;-1:-1:-1;;;41125:132:0;;22619:2:1;41125:132:0;;;22601:21:1;22658:2;22638:18;;;22631:30;-1:-1:-1;;;22677:18:1;;;22670:50;22737:18;;41125:132:0;22417:344:1;41306:215:0;41391:14;;41370:4;;41391:14;;;;;41387:105;;;41440:10;;41430:6;:20;;41422:58;;;;-1:-1:-1;;;41422:58:0;;22968:2:1;41422:58:0;;;22950:21:1;23007:2;22987:18;;;22980:30;23046:27;23026:18;;;23019:55;23091:18;;41422:58:0;22766:349:1;41422:58:0;-1:-1:-1;41509:4:0;;41306:215;-1:-1:-1;41306:215:0:o;20936:1597::-;21071:18;21092;:16;:18::i;:::-;21071:39;;21121:17;21141:27;21164:3;21141:18;21152:6;;21141;:10;;:18;;;;:::i;:::-;:22;;:27::i;:::-;21121:47;-1:-1:-1;21179:21:0;21203;:6;21121:47;21203:10;:21::i;:::-;21179:45;;21271:92;21321:31;21342:9;21321:20;:31::i;:::-;-1:-1:-1;;;;;21271:31:0;;;;;;:20;:31;;;;;;;:35;:92::i;:::-;-1:-1:-1;;;;;21237:31:0;;;;;;;:20;:31;;;;;;;;:126;;;;21407:18;;21374:19;:30;;;;;:51;21458:17;;;;;:9;:17;;;;;:29;;21480:6;21458:21;:29::i;:::-;-1:-1:-1;;;;;21438:17:0;;;;;;;:9;:17;;;;;;:49;;;;21521:20;;;;;;;:39;;21546:13;21521:24;:39::i;:::-;-1:-1:-1;;;;;21498:20:0;;;;;;:9;:20;;;;;;:62;;;;21616:4;21598:24;;;;:39;;21627:9;21598:28;:39::i;:::-;21589:4;21571:24;;;;:9;:24;;;;;:66;21668:1;21654:15;;;21650:764;;21731:4;21713:24;;;;:9;:24;;;;;;:39;;21742:9;21713:28;:39::i;:::-;21704:4;21686:24;;;;:9;:24;;;;;:66;21767:31;21777:9;21788;21767;:31::i;:::-;21650:764;;;21820:10;21834:1;21820:15;21816:598;;21897:4;21879:24;;;;:9;:24;;;;;;:39;;21908:9;21879:28;:39::i;:::-;21870:4;21852:24;;;;:9;:24;;;;;:66;21933:33;21945:9;21956;21933:11;:33::i;21816:598::-;21988:10;22002:1;21988:15;21984:430;;22040:17;;:32;;22062:9;22040:21;:32::i;:::-;22020:17;:52;22104:14;;:29;;22123:9;22104:18;:29::i;:::-;22087:14;:46;22153:31;;1848:25:1;;;-1:-1:-1;;;;;22153:31:0;;;;;1836:2:1;1821:18;22153:31:0;;;;;;;;21984:430;;;22206:10;22220:1;22206:15;22202:212;;22257:16;;:31;;22278:9;22257:20;:31::i;:::-;22238:16;:50;22319:13;;:28;;22337:9;22319:17;:28::i;:::-;22303:13;:44;22367:35;;1848:25:1;;;-1:-1:-1;;;;;22367:35:0;;;;;1836:2:1;1821:18;22367:35:0;;;;;;;;22202:212;22431:43;;;13716:25:1;;;13772:2;13757:18;;13750:34;;;-1:-1:-1;;;;;22431:43:0;;;;;13689:18:1;22431:43:0;;;;;;;22507:9;-1:-1:-1;;;;;22490:35:0;22499:6;-1:-1:-1;;;;;22490:35:0;-1:-1:-1;;;;;;;;;;;22518:6:0;22490:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;22490:35:0;;;;;;;;21060:1473;;;20936:1597;;;:::o;22541:1473::-;22674:18;22695;:16;:18::i;:::-;22674:39;;22724:17;22744:28;22768:3;22744:19;22755:7;;22744:6;:10;;:19;;;;:::i;:28::-;22724:48;-1:-1:-1;22783:18:0;22804:21;:6;22724:48;22804:10;:21::i;:::-;-1:-1:-1;;;;;22858:17:0;;;;;;:9;:17;;;;;;22783:42;;-1:-1:-1;22858:29:0;;22880:6;22858:21;:29::i;:::-;-1:-1:-1;;;;;22838:17:0;;;;;;;:9;:17;;;;;;:49;;;;22921:20;;;;;;;:36;;22946:10;22921:24;:36::i;:::-;-1:-1:-1;;;;;22898:20:0;;;;;;:9;:20;;;;;;:59;;;;23013:4;22995:24;;;;:39;;23024:9;22995:28;:39::i;:::-;22986:4;22968:24;;;;:9;:24;;;;;;:66;;;;-1:-1:-1;;;;;23049:17:0;;;;;;;;:22;;23045:90;;-1:-1:-1;;;;;23088:31:0;;23122:1;23088:31;;;:20;:31;;;;;:35;23045:90;23149:10;23163:1;23149:15;23145:750;;23226:4;23208:24;;;;:9;:24;;;;;;:39;;23237:9;23208:28;:39::i;:::-;23199:4;23181:24;;;;:9;:24;;;;;:66;23262:28;23272:6;23280:9;23262;:28::i;23145:750::-;23312:10;23326:1;23312:15;23308:587;;23389:4;23371:24;;;;:9;:24;;;;;;:39;;23400:9;23371:28;:39::i;:::-;23362:4;23344:24;;;;:9;:24;;;;;:66;23425:28;23435:6;23443:9;23425;:28::i;23308:587::-;23475:10;23489:1;23475:15;23471:424;;23527:17;;:32;;23549:9;23527:21;:32::i;:::-;23507:17;:52;23591:14;;:29;;23610:9;23591:18;:29::i;:::-;23574:14;:46;23640:28;;1848:25:1;;;-1:-1:-1;;;;;23640:28:0;;;;;1836:2:1;1821:18;23640:28:0;1702:177:1;23471:424:0;23690:10;23704:1;23690:15;23686:209;;23741:16;;:31;;23762:9;23741:20;:31::i;:::-;23722:16;:50;23803:13;;:28;;23821:9;23803:17;:28::i;:::-;23787:13;:44;23851:32;;1848:25:1;;;-1:-1:-1;;;;;23851:32:0;;;;;1836:2:1;1821:18;23851:32:0;1702:177:1;27756:1116:0;-1:-1:-1;;;;;27900:27:0;;27855:4;27900:27;;;:18;:27;;;;;;27855:4;;27900:27;;27895:970;;27944:17;27964:28;27984:7;27964:19;:28::i;:::-;27944:48;;28027:1;28015:9;:13;28007:60;;;;-1:-1:-1;;;28007:60:0;;23322:2:1;28007:60:0;;;23304:21:1;23361:2;23341:18;;;23334:30;23400:34;23380:18;;;23373:62;-1:-1:-1;;;23451:18:1;;;23444:32;23493:19;;28007:60:0;23120:398:1;28007:60:0;-1:-1:-1;;;;;26348:28:0;;26324:4;26348:28;;;:19;:28;;;;;;;;28108:38;28082:139;;;;-1:-1:-1;;;28082:139:0;;23725:2:1;28082:139:0;;;23707:21:1;23764:2;23744:18;;;23737:30;23803:34;23783:18;;;23776:62;-1:-1:-1;;;23854:18:1;;;23847:37;23901:19;;28082:139:0;23523:403:1;28082:139:0;-1:-1:-1;28246:4:0;;-1:-1:-1;28265:14:0;;-1:-1:-1;28265:14:0;27895:970;-1:-1:-1;;;;;28334:18:0;;28312:19;28334:18;;;:9;:18;;;;;;28367:8;:15;;-1:-1:-1;;28397:19:0;;;;;28334:18;28451:28;28334:18;28451:19;:28::i;:::-;28494:14;:21;;-1:-1:-1;;28494:21:0;;;;;28431:48;-1:-1:-1;28534:10:0;;28530:157;;28586:20;28600:6;28586:11;:20;:::i;:::-;-1:-1:-1;;;;;28565:18:0;;;;;;:9;:18;;;;;:41;28530:157;;;28647:10;:24;;;28530:157;28705:13;;28701:124;;28749:4;28739:14;;28701:124;;;28804:5;28794:15;;28701:124;28846:7;28839:14;;;;;;;27121:349;27241:6;;27206:7;;-1:-1:-1;;;;;27230:17:0;;;27241:6;;27230:17;;:50;;-1:-1:-1;27270:9:0;;-1:-1:-1;;;;;27251:29:0;;;27270:9;;27251:29;27230:50;27226:64;;;-1:-1:-1;27289:1:0;;27121:349;-1:-1:-1;27121:349:0:o;27226:64::-;-1:-1:-1;;;;;27363:28:0;;27303:23;27363:28;;;:19;:28;;;;;;27329:18;;:62;;27363:28;27329:62;:::i;:::-;27303:88;;27450:12;;27428:18;27438:7;-1:-1:-1;;;;;16354:18:0;16327:7;16354:18;;;:9;:18;;;;;;;16261:119;27428:18;27410:36;;:15;:36;:::i;:::-;27409:53;;;;:::i;37317:3636::-;37367:7;37387:22;37420:19;37570:1;37477:15;37494:16;37512:14;37528:9;37539:12;37553:11;37460:105;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;37450:116;;;;;;37442:125;;:129;;;;:::i;:::-;37420:151;;37582:19;37732:1;37639:15;37656:16;37674:14;37690:9;37701:12;37715:11;37622:105;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;37612:116;;;;;;37604:125;;:129;;;;:::i;:::-;37750:8;;37582:151;;-1:-1:-1;37750:8:0;;:16;;:8;:16;:38;;;;-1:-1:-1;37770:10:0;;;;;;;;:18;;:10;:18;37750:38;:64;;;;-1:-1:-1;37792:14:0;;;;;;;:22;;37810:4;37792:22;37750:64;37746:3166;;;37848:1;37831:18;;37746:3166;;;37885:8;;;;:16;;:8;:16;:38;;;;-1:-1:-1;37905:10:0;;;;;;;;:18;;:10;:18;37885:38;:62;;;;-1:-1:-1;37927:12:0;;;;;;;:20;;37943:4;37927:20;37885:62;37867:3045;;;37991:1;37974:18;;37867:3045;;;38028:8;;;;:16;;:8;:16;:42;;;;-1:-1:-1;38048:14:0;;;;;;;:22;;38066:4;38048:22;38028:42;:66;;;;-1:-1:-1;38074:12:0;;;;;;;:20;;38090:4;38074:20;38028:66;38010:2902;;;38138:1;38121:18;;38010:2902;;;38175:10;;;;;;;;:18;;:10;:18;:44;;;;-1:-1:-1;38197:14:0;;;;;;;:22;;38215:4;38197:22;38175:44;:68;;;;-1:-1:-1;38223:12:0;;;;;;;:20;;38239:4;38223:20;38175:68;38157:2755;;;38287:1;38270:18;;38157:2755;;;38310:8;;;;:16;;:8;:16;:38;;;;-1:-1:-1;38330:10:0;;;;;;;;:18;;:10;:18;38310:38;38306:2606;;;38369:11;38384:1;38369:16;38365:156;;38423:1;38406:18;;38306:2606;;38365:156;38450:11;38465:1;38450:16;38446:75;;38504:1;38487:18;;38446:75;38306:2606;;;38542:8;;;;:16;;:8;:16;:42;;;;-1:-1:-1;38562:14:0;;;;;;;:22;;38580:4;38562:22;38542:42;38538:2374;;;38605:11;38620:1;38605:16;38601:156;;38659:1;38642:18;;38538:2374;;;38778:8;;;;:16;;:8;:16;:40;;;;-1:-1:-1;38798:12:0;;;;;;;:20;;38814:4;38798:20;38778:40;38774:2138;;;38839:11;38854:1;38839:16;38835:156;;38893:1;38876:18;;38774:2138;;38835:156;38920:11;38935:1;38920:16;38916:75;;38974:1;38957:18;;38774:2138;;;39012:10;;;;;;;;:18;;:10;:18;:44;;;;-1:-1:-1;39034:14:0;;;;;;;:22;;39052:4;39034:22;39012:44;39008:1904;;;39077:11;39092:1;39077:16;39073:156;;39131:1;39114:18;;39008:1904;;;39250:10;;;;;;;;:18;;:10;:18;:42;;;;-1:-1:-1;39272:12:0;;;;;;;:20;;39288:4;39272:20;39250:42;39246:1666;;;39313:11;39328:1;39313:16;39309:156;;39367:1;39350:18;;39246:1666;;;39486:14;;;;;;;:22;;39504:4;39486:22;:46;;;;-1:-1:-1;39512:12:0;;;;;;;:20;;39528:4;39512:20;39486:46;39482:1430;;;39553:11;39568:1;39553:16;39549:156;;39607:1;39590:18;;39482:1430;;39549:156;39634:11;39649:1;39634:16;39630:75;;39688:1;39671:18;;39482:1430;;;39726:8;;;;:16;;:8;:16;39722:1190;;39906:1;39813:15;39830:16;39848:14;39864:9;39875:12;39889:11;39795:106;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;39785:117;;;;;;39777:126;;:130;;;;:::i;:::-;39776:136;;39911:1;39776:136;:::i;:::-;39759:153;;39722:1190;;;39934:10;;;;;;;:18;;:10;:18;39930:982;;39973:11;39988:1;39973:16;39969:237;;40027:1;40010:18;;39930:982;;39969:237;40054:11;40069:1;40054:16;40050:156;;40108:1;40091:18;;38306:2606;;40050:156;40135:11;40150:1;40135:16;40131:75;;40189:1;40172:18;;39930:982;;;40227:14;;;;;;;:22;;40245:4;40227:22;40223:689;;40270:11;40285:1;40270:16;40266:237;;40324:1;40307:18;;40223:689;;40266:237;40351:11;40366:1;40351:16;40347:156;;40405:1;40388:18;;38306:2606;;40223:689;40524:12;;;;;;;:20;;40540:4;40524:20;40520:392;;40709:1;40616:15;40633:16;40651:14;40667:9;40678:12;40692:11;40598:106;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;40587:118;;;;;;40579:127;;:131;;;;:::i;:::-;40578:137;;40714:1;40578:137;:::i;40520:392::-;40894:1;40800:15;40817:16;40835:14;40851:9;40862:12;40876:11;40783:105;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;40773:117;;;;;;40765:126;;:130;;;;:::i;:::-;40764:136;;40899:1;40764:136;:::i;:::-;40748:152;;40520:392;-1:-1:-1;40931:14:0;;37317:3636;-1:-1:-1;;37317:3636:0:o;1417:98::-;1475:7;1502:5;1506:1;1502;:5;:::i;1523:98::-;1581:7;1608:5;1612:1;1608;:5;:::i;42226:422::-;42300:10;;42296:345;;42406:6;;-1:-1:-1;;;;;42406:6:0;42327:20;42396:17;;;:9;:17;;;;;;42350:6;;42327:20;42396:35;;42350:6;42396:21;:35::i;:::-;42456:6;;-1:-1:-1;;;;;42456:6:0;42446:17;;;;:9;:17;;;;;:34;;;42510:12;;42371:60;;-1:-1:-1;42510:24:0;;42527:6;42510:16;:24::i;:::-;42495:12;:39;42569:6;;42554:30;;1848:25:1;;;-1:-1:-1;;;;;42569:6:0;;;;42554:30;;;-1:-1:-1;;;;;;;;;;;42554:30:0;1836:2:1;1821:18;42554:30:0;;;;;;;42616:4;-1:-1:-1;;;;;42604:25:0;;42622:6;42604:25;;;;1848::1;;1836:2;1821:18;;1702:177;42604:25:0;;;;;;;;42312:329;;42296:345;42226:422;;:::o;42656:427::-;42726:10;;42722:354;;42753:20;42785:10;;42776:6;:19;;;;:::i;:::-;42845:6;;-1:-1:-1;;;;;42845:6:0;42810:22;42835:17;;;:9;:17;;;;;;42753:42;;-1:-1:-1;42810:22:0;42835:35;;42753:42;42835:21;:35::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;594:548::-;706:4;735:2;764;753:9;746:21;796:6;790:13;839:6;834:2;823:9;819:18;812:34;864:1;874:140;888:6;885:1;882:13;874:140;;;983:14;;;979:23;;973:30;949:17;;;968:2;945:26;938:66;903:10;;874:140;;;878:3;1063:1;1058:2;1049:6;1038:9;1034:22;1030:31;1023:42;1133:2;1126;1122:7;1117:2;1109:6;1105:15;1101:29;1090:9;1086:45;1082:54;1074:62;;;;594:548;;;;:::o;1382:315::-;1450:6;1458;1511:2;1499:9;1490:7;1486:23;1482:32;1479:52;;;1527:1;1524;1517:12;1479:52;1566:9;1553:23;1585:31;1610:5;1585:31;:::i;:::-;1635:5;1687:2;1672:18;;;;1659:32;;-1:-1:-1;;;1382:315:1:o;1884:456::-;1961:6;1969;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;2085:9;2072:23;2104:31;2129:5;2104:31;:::i;:::-;2154:5;-1:-1:-1;2211:2:1;2196:18;;2183:32;2224:33;2183:32;2224:33;:::i;:::-;1884:456;;2276:7;;-1:-1:-1;;;2330:2:1;2315:18;;;;2302:32;;1884:456::o;2534:180::-;2593:6;2646:2;2634:9;2625:7;2621:23;2617:32;2614:52;;;2662:1;2659;2652:12;2614:52;-1:-1:-1;2685:23:1;;2534:180;-1:-1:-1;2534:180:1:o;3411:118::-;3497:5;3490:13;3483:21;3476:5;3473:32;3463:60;;3519:1;3516;3509:12;3534:382;3599:6;3607;3660:2;3648:9;3639:7;3635:23;3631:32;3628:52;;;3676:1;3673;3666:12;3628:52;3715:9;3702:23;3734:31;3759:5;3734:31;:::i;:::-;3784:5;-1:-1:-1;3841:2:1;3826:18;;3813:32;3854:30;3813:32;3854:30;:::i;:::-;3903:7;3893:17;;;3534:382;;;;;:::o;3921:388::-;3989:6;3997;4050:2;4038:9;4029:7;4025:23;4021:32;4018:52;;;4066:1;4063;4056:12;4018:52;4105:9;4092:23;4124:31;4149:5;4124:31;:::i;:::-;4174:5;-1:-1:-1;4231:2:1;4216:18;;4203:32;4244:33;4203:32;4244:33;:::i;4729:380::-;4808:1;4804:12;;;;4851;;;4872:61;;4926:4;4918:6;4914:17;4904:27;;4872:61;4979:2;4971:6;4968:14;4948:18;4945:38;4942:161;;5025:10;5020:3;5016:20;5013:1;5006:31;5060:4;5057:1;5050:15;5088:4;5085:1;5078:15;4942:161;;4729:380;;;:::o;5114:338::-;5316:2;5298:21;;;5355:2;5335:18;;;5328:30;-1:-1:-1;;;5389:2:1;5374:18;;5367:44;5443:2;5428:18;;5114:338::o;5457:343::-;5659:2;5641:21;;;5698:2;5678:18;;;5671:30;-1:-1:-1;;;5732:2:1;5717:18;;5710:49;5791:2;5776:18;;5457:343::o;7282:417::-;7484:2;7466:21;;;7523:2;7503:18;;;7496:30;7562:34;7557:2;7542:18;;7535:62;-1:-1:-1;;;7628:2:1;7613:18;;7606:51;7689:3;7674:19;;7282:417::o;9190:127::-;9251:10;9246:3;9242:20;9239:1;9232:31;9282:4;9279:1;9272:15;9306:4;9303:1;9296:15;9322:128;9389:9;;;9410:11;;;9407:37;;;9424:18;;:::i;10642:168::-;10715:9;;;10746;;10763:15;;;10757:22;;10743:37;10733:71;;10784:18;;:::i;10815:127::-;10876:10;10871:3;10867:20;10864:1;10857:31;10907:4;10904:1;10897:15;10931:4;10928:1;10921:15;10947:120;10987:1;11013;11003:35;;11018:18;;:::i;:::-;-1:-1:-1;11052:9:1;;10947:120::o;11072:125::-;11137:9;;;11158:10;;;11155:36;;;11171:18;;:::i;14074:245::-;14141:6;14194:2;14182:9;14173:7;14169:23;14165:32;14162:52;;;14210:1;14207;14200:12;14162:52;14242:9;14236:16;14261:28;14283:5;14261:28;:::i;18549:127::-;18610:10;18605:3;18601:20;18598:1;18591:31;18641:4;18638:1;18631:15;18665:4;18662:1;18655:15;18681:127;18742:10;18737:3;18733:20;18730:1;18723:31;18773:4;18770:1;18763:15;18797:4;18794:1;18787:15;18813:251;18883:6;18936:2;18924:9;18915:7;18911:23;18907:32;18904:52;;;18952:1;18949;18942:12;18904:52;18984:9;18978:16;19003:31;19028:5;19003:31;:::i;19069:980::-;19331:4;19379:3;19368:9;19364:19;19410:6;19399:9;19392:25;19436:2;19474:6;19469:2;19458:9;19454:18;19447:34;19517:3;19512:2;19501:9;19497:18;19490:31;19541:6;19576;19570:13;19607:6;19599;19592:22;19645:3;19634:9;19630:19;19623:26;;19684:2;19676:6;19672:15;19658:29;;19705:1;19715:195;19729:6;19726:1;19723:13;19715:195;;;19794:13;;-1:-1:-1;;;;;19790:39:1;19778:52;;19885:15;;;;19850:12;;;;19826:1;19744:9;19715:195;;;-1:-1:-1;;;;;;;19966:32:1;;;;19961:2;19946:18;;19939:60;-1:-1:-1;;;20030:3:1;20015:19;20008:35;19927:3;19069:980;-1:-1:-1;;;19069:980:1:o;20054:1105::-;20149:6;20180:2;20223;20211:9;20202:7;20198:23;20194:32;20191:52;;;20239:1;20236;20229:12;20191:52;20272:9;20266:16;20301:18;20342:2;20334:6;20331:14;20328:34;;;20358:1;20355;20348:12;20328:34;20396:6;20385:9;20381:22;20371:32;;20441:7;20434:4;20430:2;20426:13;20422:27;20412:55;;20463:1;20460;20453:12;20412:55;20492:2;20486:9;20514:2;20510;20507:10;20504:36;;;20520:18;;:::i;:::-;20566:2;20563:1;20559:10;20598:2;20592:9;20661:2;20657:7;20652:2;20648;20644:11;20640:25;20632:6;20628:38;20716:6;20704:10;20701:22;20696:2;20684:10;20681:18;20678:46;20675:72;;;20727:18;;:::i;:::-;20763:2;20756:22;20813:18;;;20847:15;;;;-1:-1:-1;20889:11:1;;;20885:20;;;20917:19;;;20914:39;;;20949:1;20946;20939:12;20914:39;20973:11;;;;20993:135;21009:6;21004:3;21001:15;20993:135;;;21075:10;;21063:23;;21026:12;;;;21106;;;;20993:135;;;21147:6;20054:1105;-1:-1:-1;;;;;;;;20054:1105:1:o;23931:557::-;24200:19;;;24244:2;24235:12;;24228:28;;;;24281:2;24272:12;;24265:28;;;;24331:2;24327:15;;;-1:-1:-1;;24323:53:1;24309:12;;;24302:75;24402:3;24393:13;;24386:29;24440:3;24431:13;;24424:29;24478:3;24469:13;;23931:557::o;24493:112::-;24525:1;24551;24541:35;;24556:18;;:::i;:::-;-1:-1:-1;24590:9:1;;24493:112::o

Swarm Source

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