ETH Price: $2,509.94 (-1.21%)

Token

PikaLoki (PIKI)
 

Overview

Max Total Supply

100,000,000 PIKI

Holders

111

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
403.450108487 PIKI

Value
$0.00
0xf36699e6f15295e1549576aea00986c06996466e
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:
PIKALOKI

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSE
pragma solidity ^0.8.7;

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, 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 sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    function WETH() external pure returns (address);

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

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

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

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

contract PIKALOKI is Context, IERC20, Ownable {
    using Address for address payable;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    mapping(address => bool) public allowedTransfer;
    mapping(address => bool) private _isBlacklisted;

    address[] private _excluded;

    bool public tradingEnabled;
    bool public swapEnabled;
    bool private swapping;

    //Anti Dump
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = true;
    uint256 public coolDownTime = 60 seconds;

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 1e8 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = 250_000 * 10**9;
    uint256 public maxBuyLimit = 1_000_000 * 10**9;
    uint256 public maxSellLimit = 500_000 * 10**9;
    uint256 public maxWalletLimit = 2_000_000 * 10**9;

    uint256 public genesis_block;
    uint256 private deadline;

    address public deadWallet = 0x000000000000000000000000000000000000dEaD;
    address public marketingWallet = 0x965660d44e9659a414c4438865A215951ea859C9;
    address public devWallet = 0xDbd0030445bC0E9D1E9aB764d5172F33E7646E55;

    string private constant _name = "PikaLoki";
    string private constant _symbol = "PIKI";

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
        uint256 dev;
    }

    Taxes private launchtax;
    Taxes public taxes = Taxes(0, 8, 3, 1);
    Taxes public sellTaxes = Taxes(3, 8, 3, 1);

    struct TotFeesPaidStruct {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
        uint256 dev;
    }

    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues {
        uint256 rAmount;
        uint256 rTransferAmount;
        uint256 rRfi;
        uint256 rMarketing;
        uint256 rLiquidity;
        uint256 rDev;
        uint256 tTransferAmount;
        uint256 tRfi;
        uint256 tMarketing;
        uint256 tLiquidity;
        uint256 tDev;
    }

    event FeesChanged();
    event UpdatedRouter(address oldRouter, address newRouter);

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

    constructor(address routerAddress) {
        IRouter _router = IRouter(routerAddress);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;

        excludeFromReward(pair);
        excludeFromReward(deadWallet);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[devWallet] = true;
        _isExcludedFromFee[deadWallet] = true;
        _isExcludedFromFee[0xD152f549545093347A162Dce210e7293f1452150] = true;
        _isExcludedFromFee[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true;

        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[pair] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[devWallet] = true;
        allowedTransfer[0xD152f549545093347A162Dce210e7293f1452150] = true;
        allowedTransfer[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true;

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

    //std ERC20:
    function name() public pure returns (string memory) {
        return _name;
    }

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

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

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true, false, false);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, false, false);
            return s.rTransferAmount;
        }
    }

    function setTradingStatus(
        bool state,
        uint256 _deadline,
        uint256 rfi,
        uint256 marketing,
        uint256 liquidity,
        uint256 dev
    ) external onlyOwner {
        tradingEnabled = state;
        swapEnabled = state;
        deadline = _deadline;
        launchtax = Taxes(rfi, marketing, liquidity, dev);
        if (state == true) genesis_block = block.number;
    }

    function tokenFromReflection(uint256 rAmount) public view returns (uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate = _getRate();
        return rAmount / currentRate;
    }

    //@dev kept original RFI naming -> "reward" as in reflection
    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

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

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

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

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

    function setTaxes(
        uint256 _rfi,
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) public onlyOwner {
        taxes = Taxes(_rfi, _marketing, _liquidity, _dev);
        emit FeesChanged();
    }

    function setSellTaxes(
        uint256 _rfi,
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) public onlyOwner {
        sellTaxes = Taxes(_rfi, _marketing, _liquidity, _dev);
        emit FeesChanged();
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -= rRfi;
        totFeesPaid.rfi += tRfi;
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity += tLiquidity;

        if (_isExcluded[address(this)]) {
            _tOwned[address(this)] += tLiquidity;
        }
        _rOwned[address(this)] += rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing += tMarketing;

        if (_isExcluded[address(this)]) {
            _tOwned[address(this)] += tMarketing;
        }
        _rOwned[address(this)] += rMarketing;
    }

    function _takeDev(uint256 rDev, uint256 tDev) private {
        totFeesPaid.dev += tDev;

        if (_isExcluded[address(this)]) {
            _tOwned[address(this)] += tDev;
        }
        _rOwned[address(this)] += rDev;
    }

    function _getValues(
        uint256 tAmount,
        bool takeFee,
        bool isSell,
        bool useLaunchTax
    ) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSell, useLaunchTax);
        (
            to_return.rAmount,
            to_return.rTransferAmount,
            to_return.rRfi,
            to_return.rMarketing,
            to_return.rLiquidity
        ) = _getRValues1(to_return, tAmount, takeFee, _getRate());
        (to_return.rDev) = _getRValues2(
            to_return,
            takeFee,
            _getRate()
        );

        return to_return;
    }

    function _getTValues(
        uint256 tAmount,
        bool takeFee,
        bool isSell,
        bool useLaunchTax
    ) private view returns (valuesFromGetValues memory s) {
        if (!takeFee) {
            s.tTransferAmount = tAmount;
            return s;
        }
        Taxes memory temp;
        if (isSell && !useLaunchTax) temp = sellTaxes;
        else if (!useLaunchTax) temp = taxes;
        else temp = launchtax;

        s.tRfi = (tAmount * temp.rfi) / 100;
        s.tMarketing = (tAmount * temp.marketing) / 100;
        s.tLiquidity = (tAmount * temp.liquidity) / 100;
        s.tDev = (tAmount * temp.dev) / 100;
        s.tTransferAmount =
            tAmount -
            s.tRfi -
            s.tMarketing -
            s.tLiquidity -
            s.tDev;
        return s;
    }

    function _getRValues1(
        valuesFromGetValues memory s,
        uint256 tAmount,
        bool takeFee,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rRfi,
            uint256 rMarketing,
            uint256 rLiquidity
        )
    {
        rAmount = tAmount * currentRate;

        if (!takeFee) {
            return (rAmount, rAmount, 0, 0, 0);
        }

        rRfi = s.tRfi * currentRate;
        rMarketing = s.tMarketing * currentRate;
        rLiquidity = s.tLiquidity * currentRate;
        uint256 rDev = s.tDev * currentRate;
        rTransferAmount =
            rAmount -
            rRfi -
            rMarketing -
            rLiquidity -
            rDev;
        return (rAmount, rTransferAmount, rRfi, rMarketing, rLiquidity);
    }

    function _getRValues2(
        valuesFromGetValues memory s,
        bool takeFee,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256 rDev
        )
    {
        if (!takeFee) {
            return (0);
        }

        rDev = s.tDev * currentRate;
        return (rDev);
    }

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            amount <= balanceOf(from),
            "You are trying to transfer more than your balance"
        );
        require(!_isBlacklisted[from] && !_isBlacklisted[to], "You are a bot");

        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            require(tradingEnabled, "Trading not active");
        }

        if (from == pair && !_isExcludedFromFee[to] && !swapping) {
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(
                balanceOf(to) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (
            from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping
        ) {
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if (to != pair) {
                require(
                    balanceOf(to) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
            if (coolDownEnabled) {
                uint256 timePassed = block.timestamp - _lastSell[from];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[from] = block.timestamp;
            }
        }

        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if (
            !swapping &&
            swapEnabled &&
            canSwap &&
            from != pair &&
            !_isExcludedFromFee[from] &&
            !_isExcludedFromFee[to]
        ) {
            if (to == pair) swapAndLiquify(swapTokensAtAmount, sellTaxes);
            else swapAndLiquify(swapTokensAtAmount, taxes);
        }
        bool takeFee = true;
        bool isSell = false;
        if (swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false;
        if (to == pair) isSell = true;

        _tokenTransfer(from, to, amount, takeFee, isSell);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee,
        bool isSell
    ) private {
        bool useLaunchTax = !_isExcludedFromFee[sender] &&
            !_isExcludedFromFee[recipient] &&
            block.number <= genesis_block + deadline;

        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell, useLaunchTax);

        if (_isExcluded[sender]) {
            //from excluded
            _tOwned[sender] = _tOwned[sender] - tAmount;
        }
        if (_isExcluded[recipient]) {
            //to excluded
            _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender] - s.rAmount;
        _rOwned[recipient] = _rOwned[recipient] + s.rTransferAmount;

        if (s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if (s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity, s.tLiquidity);
            emit Transfer(
                sender,
                address(this),
                s.tLiquidity + s.tMarketing + s.tDev
            );
        }
        if (s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if (s.rDev > 0 || s.tDev > 0) _takeDev(s.rDev, s.tDev);
        emit Transfer(sender, recipient, s.tTransferAmount);
    }

    function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap {
        uint256 denominator = (temp.liquidity +
            temp.marketing +
            temp.dev) * 2;
        uint256 tokensToAddLiquidityWith = (contractBalance * temp.liquidity) / denominator;
        uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForETH(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance = deltaBalance / (denominator - temp.liquidity);
        uint256 ethToAddLiquidityWith = unitBalance * temp.liquidity;

        if (ethToAddLiquidityWith > 0) {
            // Add liquidity to uniswap
            addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        if (marketingAmt > 0) {
            payable(marketingWallet).sendValue(marketingAmt);
        }
        
        uint256 devAmt = unitBalance * 2 * temp.dev;
        if (devAmt > 0) {
            payable(devWallet).sendValue(devAmt);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function bulkExcludeFee(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = state;
        }
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        devWallet = newWallet;
    }

    function updateCooldown(bool state, uint256 time) external onlyOwner {
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner {
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner {
        swapEnabled = _enabled;
    }

    function updateIsBlacklisted(address account, bool state) external onlyOwner {
        _isBlacklisted[account] = state;
    }

    function bulkIsBlacklisted(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isBlacklisted[accounts[i]] = state;
        }
    }

    function updateAllowedTransfer(address account, bool state) external onlyOwner {
        allowedTransfer[account] = state;
    }

    function bulkupdateAllowedTransfer(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            allowedTransfer[accounts[i]] = state;
        }
    }

    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell) external onlyOwner {
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
    }

    function updateMaxWalletlimit(uint256 amount) external onlyOwner {
        maxWalletLimit = amount * 10**decimals();
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner {
        router = IRouter(newRouter);
        pair = newPair;
    }

    function rescueETH(uint256 weiAmount) external onlyOwner {
        require(address(this).balance >= weiAmount, "insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }

    function rescueAnyERC20Tokens(
        address _tokenAddr,
        address _to,
        uint256 _amount
    ) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesChanged","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":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkupdateAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","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":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"name":"setTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805460ff19166001179055603c600c55620000246009600a62000aa0565b62000034906305f5e10062000b61565b600f819055620000479060001962000bbb565b620000559060001962000b83565b60105565e35fa931a00060115566038d7ea4c680006012556601c6bf5263400060135566071afd498d0000601455601780546001600160a01b031990811661dead1790915560188054821673965660d44e9659a414c4438865a215951ea859c91790556019805490911673dbd0030445bc0e9d1e9ab764d5172f33e7646e551790556040805160808082018352600080835260086020808501829052600385870181905260016060968701819052601e94909455601f8390558082556021849055865194850187528085529084018290529483018590529190920182905260228390556023556024919091556025553480156200015157600080fd5b50604051620043c3380380620043c3833981016040819052620001749162000a15565b6200017f33620005eb565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001c057600080fd5b505afa158015620001d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fb919062000a15565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024457600080fd5b505afa15801562000259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027f919062000a15565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002c857600080fd5b505af1158015620002dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000303919062000a15565b600d80546001600160a01b038086166001600160a01b031992831617909255600e805492841692909116821790559091506200033f906200063b565b60175462000356906001600160a01b03166200063b565b60105460016000620003706000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526004918290528220805460ff1916600190811790915591620003bf6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556018548216815260048452828120805486166001908117909155601954831682528382208054871682179055601754909216815282812080548616831790557f2fc42e7588b4edb66ce07fb3609ffa59834fccc36ebe8aae6c36eab91742a4d080548616831790557f0f9a3868f1631ef1e24492db718b4e768795a0dc96cdfcac3486af5b876fb31e805486168317905530815260069384905291822080549094168117909355620004a76000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e54821681526006909352818320805485166001908117909155601854821684528284208054861682179055601954909116835290822080548416821790557f674b74cc59dfd2d5f1c14ef2fec6dc3b72472a1377ab553121fb7519d31d16b7805484168217905573dba68f07d1b7ca219f78ae8582c213d975c25caf9091527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf98054909216179055620005926000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f54604051620005da91815260200190565b60405180910390a350505062000c14565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031633146200069b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620007065760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640162000692565b6001600160a01b0381166000908152600160205260409020541562000763576001600160a01b0381166000908152600160205260409020546200074990620007c9565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000601054821115620008325760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000692565b60006200083e62000853565b90506200084c818462000a40565b9392505050565b600080806200086162000879565b909250905062000872818362000a40565b9250505090565b601054600f546000918291825b600854811015620009e157826001600060088481548110620008ac57620008ac62000bfe565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200091b5750816002600060088481548110620008f457620008f462000bfe565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200093257601054600f54945094505050509091565b60016000600883815481106200094c576200094c62000bfe565b60009182526020808320909101546001600160a01b031683528201929092526040019020546200097d908462000b83565b9250600260006008838154811062000999576200099962000bfe565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620009ca908362000b83565b915080620009d88162000b9d565b91505062000886565b50600f54601054620009f4919062000a40565b82101562000a0c57601054600f549350935050509091565b90939092509050565b60006020828403121562000a2857600080fd5b81516001600160a01b03811681146200084c57600080fd5b60008262000a525762000a5262000be8565b500490565b600181815b8085111562000a9857816000190482111562000a7c5762000a7c62000bd2565b8085161562000a8a57918102915b93841c939080029062000a5c565b509250929050565b60006200084c60ff84168360008262000abc5750600162000b5b565b8162000acb5750600062000b5b565b816001811462000ae4576002811462000aef5762000b0f565b600191505062000b5b565b60ff84111562000b035762000b0362000bd2565b50506001821b62000b5b565b5060208310610133831016604e8410600b841016171562000b34575081810a62000b5b565b62000b40838362000a57565b806000190482111562000b575762000b5762000bd2565b0290505b92915050565b600081600019048311821515161562000b7e5762000b7e62000bd2565b500290565b60008282101562000b985762000b9862000bd2565b500390565b600060001982141562000bb45762000bb462000bd2565b5060010190565b60008262000bcd5762000bcd62000be8565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b61379f8062000c246000396000f3fe6080604052600436106103855760003560e01c8063728f8eea116101d1578063a9059cbb11610102578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610ade578063f480fec214610afe578063f66895a314610b1e578063f887ea4014610b4157600080fd5b8063e2f4560514610a6e578063e517f2b914610a84578063ea2f0b3714610aa4578063ee36e35914610ac457600080fd5b8063d257b34f116100dc578063d257b34f146109d2578063d2ce0db2146109f2578063d8672e5114610a08578063dd62ed3e14610a2857600080fd5b8063a9059cbb14610972578063aacebbe314610992578063b5c57145146109b257600080fd5b8063924de9b71161016f5780639e252f00116101495780639e252f00146108f2578063a12a7d6114610912578063a457c2d714610932578063a8aa1b311461095257600080fd5b8063924de9b71461088257806395d89b41146108a25780639ba5e4d5146108cf57600080fd5b806388f82020116101ab57806388f82020146107eb5780638da5cb5b146108245780638e2839ff146108425780638ea5220f1461086257600080fd5b8063728f8eea1461075057806375f0a8741461079357806385141a77146107cb57600080fd5b8063437823ec116102b65780635b24ea5e116102545780636aa5b37f116102235780636aa5b37f146106e65780636ddd1713146106fc57806370a082311461071b578063715018a61461073b57600080fd5b80635b24ea5e1461066a57806362695eae1461068a578063652e2f04146106ba57806366a88d96146106d057600080fd5b80634fdaf486116102905780634fdaf486146105d157806352390c02146105f15780635342acb41461061157806359759f611461064a57600080fd5b8063437823ec146105775780634549b039146105975780634ada218b146105b757600080fd5b8063274a533c11610323578063313ce567116102fd578063313ce567146104fb5780633685d41914610517578063395093511461053757806340b28c2f1461055757600080fd5b8063274a533c146104a55780632a3c3f9f146104bb5780632d838119146104db57600080fd5b806313f97a8e1161035f57806313f97a8e1461042657806318160ddd146104465780631816467f1461046557806323b872dd1461048557600080fd5b806306fdde0314610391578063095ea7b3146103d45780630d65df9b1461040457600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b5060408051808201909152600881526750696b614c6f6b6960c01b60208201525b6040516103cb919061347a565b60405180910390f35b3480156103e057600080fd5b506103f46103ef36600461320c565b610b61565b60405190151581526020016103cb565b34801561041057600080fd5b5061042461041f36600461319d565b610b78565b005b34801561043257600080fd5b50610424610441366004613238565b610c33565b34801561045257600080fd5b50600f545b6040519081526020016103cb565b34801561047157600080fd5b5061042461048036600461312a565b610cc9565b34801561049157600080fd5b506103f46104a036600461319d565b610d15565b3480156104b157600080fd5b5061045760155481565b3480156104c757600080fd5b506104246104d636600461336e565b610dc8565b3480156104e757600080fd5b506104576104f63660046133ba565b610e60565b34801561050757600080fd5b50604051600981526020016103cb565b34801561052357600080fd5b5061042461053236600461312a565b610edd565b34801561054357600080fd5b506103f461055236600461320c565b611094565b34801561056357600080fd5b50610424610572366004613164565b6110cb565b34801561058357600080fd5b5061042461059236600461312a565b611123565b3480156105a357600080fd5b506104576105b23660046133d3565b611171565b3480156105c357600080fd5b506009546103f49060ff1681565b3480156105dd57600080fd5b506104246105ec366004613238565b611201565b3480156105fd57600080fd5b5061042461060c36600461312a565b611292565b34801561061d57600080fd5b506103f461062c36600461312a565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561065657600080fd5b506104246106653660046133f8565b6113e5565b34801561067657600080fd5b506104246106853660046131de565b611445565b34801561069657600080fd5b506103f46106a536600461312a565b60066020526000908152604090205460ff1681565b3480156106c657600080fd5b5061045760135481565b3480156106dc57600080fd5b5061045760145481565b3480156106f257600080fd5b5061045760125481565b34801561070857600080fd5b506009546103f490610100900460ff1681565b34801561072757600080fd5b5061045761073636600461312a565b61149a565b34801561074757600080fd5b506104246114f9565b34801561075c57600080fd5b50601e54601f546020546021546107739392919084565b6040805194855260208501939093529183015260608201526080016103cb565b34801561079f57600080fd5b506018546107b3906001600160a01b031681565b6040516001600160a01b0390911681526020016103cb565b3480156107d757600080fd5b506017546107b3906001600160a01b031681565b3480156107f757600080fd5b506103f461080636600461312a565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561083057600080fd5b506000546001600160a01b03166107b3565b34801561084e57600080fd5b5061042461085d366004613238565b61152f565b34801561086e57600080fd5b506019546107b3906001600160a01b031681565b34801561088e57600080fd5b5061042461089d366004613316565b6115c0565b3480156108ae57600080fd5b5060408051808201909152600481526350494b4960e01b60208201526103be565b3480156108db57600080fd5b506026546027546028546029546107739392919084565b3480156108fe57600080fd5b5061042461090d3660046133ba565b611604565b34801561091e57600080fd5b5061042461092d366004613448565b6116ab565b34801561093e57600080fd5b506103f461094d36600461320c565b611737565b34801561095e57600080fd5b50600e546107b3906001600160a01b031681565b34801561097e57600080fd5b506103f461098d36600461320c565b6117d2565b34801561099e57600080fd5b506104246109ad36600461312a565b6117df565b3480156109be57600080fd5b506104246109cd3660046131de565b61182b565b3480156109de57600080fd5b506104246109ed3660046133ba565b611880565b3480156109fe57600080fd5b50610457600c5481565b348015610a1457600080fd5b50610424610a233660046133ba565b6118c6565b348015610a3457600080fd5b50610457610a43366004613164565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a7a57600080fd5b5061045760115481565b348015610a9057600080fd5b50610424610a9f366004613350565b61190c565b348015610ab057600080fd5b50610424610abf36600461312a565b611958565b348015610ad057600080fd5b50600b546103f49060ff1681565b348015610aea57600080fd5b50610424610af936600461312a565b6119a3565b348015610b0a57600080fd5b50610424610b19366004613448565b611a3e565b348015610b2a57600080fd5b506022546023546024546025546107739392919084565b348015610b4d57600080fd5b50600d546107b3906001600160a01b031681565b6000610b6e338484611ac9565b5060015b92915050565b6000546001600160a01b03163314610bab5760405162461bcd60e51b8152600401610ba2906134cf565b60405180910390fd5b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b158015610bf557600080fd5b505af1158015610c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2d9190613333565b50505050565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b8152600401610ba2906134cf565b60005b8251811015610cc4578160076000858481518110610c8057610c8061371a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610cbc816136d3565b915050610c60565b505050565b6000546001600160a01b03163314610cf35760405162461bcd60e51b8152600401610ba2906134cf565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d22848484611bed565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610da75760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ba2565b610dbb8533610db686856136bc565b611ac9565b60019150505b9392505050565b6000546001600160a01b03163314610df25760405162461bcd60e51b8152600401610ba2906134cf565b6009805461ffff191661ff00198815159081169190911761010082021790915560168690556040805160808101825286815260208101869052908101849052606001829052601a859055601b849055601c839055601d82905560011415610e5857436015555b505050505050565b6000601054821115610ec75760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ba2565b6000610ed1612325565b9050610dc1818461358d565b6000546001600160a01b03163314610f075760405162461bcd60e51b8152600401610ba2906134cf565b6001600160a01b03811660009081526005602052604090205460ff16610f6f5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610ba2565b60005b60085481101561109057816001600160a01b031660088281548110610f9957610f9961371a565b6000918252602090912001546001600160a01b0316141561107e5760088054610fc4906001906136bc565b81548110610fd457610fd461371a565b600091825260209091200154600880546001600160a01b0390921691839081106110005761100061371a565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600880548061105857611058613704565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80611088816136d3565b915050610f72565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610b6e918590610db6908690613575565b6000546001600160a01b031633146110f55760405162461bcd60e51b8152600401610ba2906134cf565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000546001600160a01b0316331461114d5760405162461bcd60e51b8152600401610ba2906134cf565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600f548311156111c55760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ba2565b816111e45760006111da846001600080612348565b519150610b729050565b60006111f4846001600080612348565b602001519150610b729050565b6000546001600160a01b0316331461122b5760405162461bcd60e51b8152600401610ba2906134cf565b60005b8251811015610cc457816006600085848151811061124e5761124e61371a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061128a816136d3565b91505061122e565b6000546001600160a01b031633146112bc5760405162461bcd60e51b8152600401610ba2906134cf565b6001600160a01b03811660009081526005602052604090205460ff16156113255760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ba2565b6001600160a01b0381166000908152600160205260409020541561137f576001600160a01b03811660009081526001602052604090205461136590610e60565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b0316331461140f5760405162461bcd60e51b8152600401610ba2906134cf565b61141b6009600a6135f2565b611425908361369d565b6012556114346009600a6135f2565b61143e908261369d565b6013555050565b6000546001600160a01b0316331461146f5760405162461bcd60e51b8152600401610ba2906134cf565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526005602052604081205460ff16156114d757506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610b7290610e60565b6000546001600160a01b031633146115235760405162461bcd60e51b8152600401610ba2906134cf565b61152d60006123a7565b565b6000546001600160a01b031633146115595760405162461bcd60e51b8152600401610ba2906134cf565b60005b8251811015610cc457816004600085848151811061157c5761157c61371a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806115b8816136d3565b91505061155c565b6000546001600160a01b031633146115ea5760405162461bcd60e51b8152600401610ba2906134cf565b600980549115156101000261ff0019909216919091179055565b6000546001600160a01b0316331461162e5760405162461bcd60e51b8152600401610ba2906134cf565b8047101561167e5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610ba2565b604051339082156108fc029083906000818181858888f19350505050158015611090573d6000803e3d6000fd5b6000546001600160a01b031633146116d55760405162461bcd60e51b8152600401610ba2906134cf565b6040805160808101825285815260208082018690528183018590526060909101839052601e869055601f8590558390556021829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156117b95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ba2565b6117c83385610db686856136bc565b5060019392505050565b6000610b6e338484611bed565b6000546001600160a01b031633146118095760405162461bcd60e51b8152600401610ba2906134cf565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118555760405162461bcd60e51b8152600401610ba2906134cf565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118aa5760405162461bcd60e51b8152600401610ba2906134cf565b6118b66009600a6135f2565b6118c0908261369d565b60115550565b6000546001600160a01b031633146118f05760405162461bcd60e51b8152600401610ba2906134cf565b6118fc6009600a6135f2565b611906908261369d565b60145550565b6000546001600160a01b031633146119365760405162461bcd60e51b8152600401610ba2906134cf565b61194181600161369d565b600c5550600b805460ff1916911515919091179055565b6000546001600160a01b031633146119825760405162461bcd60e51b8152600401610ba2906134cf565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146119cd5760405162461bcd60e51b8152600401610ba2906134cf565b6001600160a01b038116611a325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ba2565b611a3b816123a7565b50565b6000546001600160a01b03163314611a685760405162461bcd60e51b8152600401610ba2906134cf565b60408051608081018252858152602081018590528082018490526060018290526022859055602384905560248390556025829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b6001600160a01b038316611b2b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ba2565b6001600160a01b038216611b8c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ba2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c515760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ba2565b6001600160a01b038216611cb35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ba2565b60008111611d155760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ba2565b611d1e8361149a565b811115611d875760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610ba2565b6001600160a01b03831660009081526007602052604090205460ff16158015611dc957506001600160a01b03821660009081526007602052604090205460ff16155b611e055760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610ba2565b6001600160a01b03831660009081526004602052604090205460ff16158015611e4757506001600160a01b03821660009081526004602052604090205460ff16155b15611e935760095460ff16611e935760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610ba2565b600e546001600160a01b038481169116148015611ec957506001600160a01b03821660009081526004602052604090205460ff16155b8015611ede575060095462010000900460ff16155b15611f9a57601254811115611f355760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610ba2565b60145481611f428461149a565b611f4c9190613575565b1115611f9a5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ba2565b600e546001600160a01b03848116911614801590611fd157506001600160a01b03821660009081526004602052604090205460ff16155b8015611ff657506001600160a01b03831660009081526004602052604090205460ff16155b801561200b575060095462010000900460ff16155b1561216e576013548111156120625760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610ba2565b600e546001600160a01b038381169116146120dc57601454816120848461149a565b61208e9190613575565b11156120dc5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ba2565b600b5460ff161561216e576001600160a01b0383166000908152600a602052604081205461210a90426136bc565b9050600c548110156121515760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610ba2565b506001600160a01b0383166000908152600a602052604090204290555b600060115461217c3061149a565b600954911115915062010000900460ff161580156121a15750600954610100900460ff165b80156121aa5750805b80156121c45750600e546001600160a01b03858116911614155b80156121e957506001600160a01b03841660009081526004602052604090205460ff16155b801561220e57506001600160a01b03831660009081526004602052604090205460ff16155b1561229c57600e546001600160a01b038481169116141561226457601154604080516080810182526022548152602354602082015260245491810191909152602554606082015261225f91906123f7565b61229c565b60115460408051608081018252601e548152601f546020808301919091525491810191909152602154606082015261229c91906123f7565b60095460019060009062010000900460ff16806122d157506001600160a01b03861660009081526004602052604090205460ff165b806122f457506001600160a01b03851660009081526004602052604090205460ff165b156122fe57600091505b600e546001600160a01b0386811691161415612318575060015b610e588686868585612551565b600080600061233261287f565b9092509050612341818361358d565b9250505090565b6123506130b5565b61235c85858585612a02565b905061237181868661236c612325565b612bb3565b608086015260608501526040840152602083015281526123998185612394612325565b612c62565b60a08201525b949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805462ff00001916620100001790556060810151602082015160408301516000929161242491613575565b61242e9190613575565b61243990600261369d565b905060008183604001518561244e919061369d565b612458919061358d565b9050600061246682866136bc565b90504761247282612c82565b600061247e82476136bc565b9050600086604001518661249291906136bc565b61249c908361358d565b905060008760400151826124b0919061369d565b905080156124c2576124c28682612de3565b60208801516000906124d584600261369d565b6124df919061369d565b905080156124fd576018546124fd906001600160a01b031682612ec7565b606089015160009061251085600261369d565b61251a919061369d565b9050801561253857601954612538906001600160a01b031682612ec7565b50506009805462ff000019169055505050505050505050565b6001600160a01b03851660009081526004602052604081205460ff1615801561259357506001600160a01b03851660009081526004602052604090205460ff16155b80156125ae57506016546015546125aa9190613575565b4311155b905060006125be85858585612348565b6001600160a01b03881660009081526005602052604090205490915060ff1615612620576001600160a01b0387166000908152600260205260409020546126069086906136bc565b6001600160a01b0388166000908152600260205260409020555b6001600160a01b03861660009081526005602052604090205460ff16156126835760c08101516001600160a01b0387166000908152600260205260409020546126699190613575565b6001600160a01b0387166000908152600260205260409020555b80516001600160a01b0388166000908152600160205260409020546126a891906136bc565b6001600160a01b03808916600090815260016020908152604080832094909455840151918916815291909120546126df9190613575565b6001600160a01b0387166000908152600160205260409081902091909155810151151580612711575060008160e00151115b156127285761272881604001518260e00151612fe0565b60008160800151118061274057506000816101200151115b156127c5576127588160800151826101200151613015565b306001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361014001518461010001518561012001516127a99190613575565b6127b39190613575565b60405190815260200160405180910390a35b6000816060015111806127dd57506000816101000151115b156127f5576127f5816060015182610100015161308b565b60008160a00151118061280d57506000816101400151115b15612825576128258160a001518261014001516130a0565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161286e91815260200190565b60405180910390a350505050505050565b601054600f546000918291825b6008548110156129d1578260016000600884815481106128ae576128ae61371a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061291957508160026000600884815481106128f2576128f261371a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561292f57601054600f54945094505050509091565b60016000600883815481106129465761294661371a565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461297590846136bc565b9250600260006008838154811061298e5761298e61371a565b60009182526020808320909101546001600160a01b031683528201929092526040019020546129bd90836136bc565b9150806129c9816136d3565b91505061288c565b50600f546010546129e2919061358d565b8210156129f957601054600f549350935050509091565b90939092509050565b612a0a6130b5565b83612a1b5760c0810185905261239f565b612a466040518060800160405280600081526020016000815260200160008152602001600081525090565b838015612a51575082155b15612a8557506040805160808101825260225481526023546020820152602454918101919091526025546060820152612ae6565b82612abb575060408051608081018252601e548152601f5460208083019190915254918101919091526021546060820152612ae6565b5060408051608081018252601a548152601b546020820152601c5491810191909152601d5460608201525b8051606490612af5908861369d565b612aff919061358d565b60e08301526020810151606490612b16908861369d565b612b20919061358d565b6101008301526040810151606490612b38908861369d565b612b42919061358d565b6101208301526060810151606490612b5a908861369d565b612b64919061358d565b610140830181905261012083015161010084015160e0850151612b87908a6136bc565b612b9191906136bc565b612b9b91906136bc565b612ba591906136bc565b60c083015250949350505050565b600080808080612bc3868961369d565b945086612bdb57508392506000915081905080612c57565b858960e00151612beb919061369d565b925085896101000151612bfe919061369d565b915085896101200151612c11919061369d565b90506000868a6101400151612c26919061369d565b9050808284612c35878a6136bc565b612c3f91906136bc565b612c4991906136bc565b612c5391906136bc565b9450505b945094509450945094565b600082612c7157506000610dc1565b8184610140015161239f919061369d565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612cb757612cb761371a565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612d0b57600080fd5b505afa158015612d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d439190613147565b81600181518110612d5657612d5661371a565b6001600160a01b039283166020918202929092010152600d54612d7c9130911684611ac9565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612db5908590600090869030904290600401613504565b600060405180830381600087803b158015612dcf57600080fd5b505af1158015610e58573d6000803e3d6000fd5b600d54612dfb9030906001600160a01b031684611ac9565b600d546001600160a01b031663f305d719823085600080612e246000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015612e8757600080fd5b505af1158015612e9b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ec0919061341a565b5050505050565b80471015612f175760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ba2565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612f64576040519150601f19603f3d011682016040523d82523d6000602084013e612f69565b606091505b5050905080610cc45760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610ba2565b8160106000828254612ff291906136bc565b90915550506026805482919060009061300c908490613575565b90915550505050565b806026600201600082825461302a9190613575565b90915550503060009081526005602052604090205460ff161561306c573060009081526002602052604081208054839290613066908490613575565b90915550505b306000908152600160205260408120805484929061300c908490613575565b806026600101600082825461302a9190613575565b806026600301600082825461302a9190613575565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b803561311a81613746565b919050565b803561311a8161375b565b60006020828403121561313c57600080fd5b8135610dc181613746565b60006020828403121561315957600080fd5b8151610dc181613746565b6000806040838503121561317757600080fd5b823561318281613746565b9150602083013561319281613746565b809150509250929050565b6000806000606084860312156131b257600080fd5b83356131bd81613746565b925060208401356131cd81613746565b929592945050506040919091013590565b600080604083850312156131f157600080fd5b82356131fc81613746565b915060208301356131928161375b565b6000806040838503121561321f57600080fd5b823561322a81613746565b946020939093013593505050565b6000806040838503121561324b57600080fd5b823567ffffffffffffffff8082111561326357600080fd5b818501915085601f83011261327757600080fd5b813560208282111561328b5761328b613730565b8160051b604051601f19603f830116810181811086821117156132b0576132b0613730565b604052838152828101945085830182870184018b10156132cf57600080fd5b600096505b848710156132f9576132e58161310f565b8652600196909601959483019483016132d4565b509650613309905087820161311f565b9450505050509250929050565b60006020828403121561332857600080fd5b8135610dc18161375b565b60006020828403121561334557600080fd5b8151610dc18161375b565b6000806040838503121561336357600080fd5b823561322a8161375b565b60008060008060008060c0878903121561338757600080fd5b86356133928161375b565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b6000602082840312156133cc57600080fd5b5035919050565b600080604083850312156133e657600080fd5b8235915060208301356131928161375b565b6000806040838503121561340b57600080fd5b50508035926020909101359150565b60008060006060848603121561342f57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561345e57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b818110156134a75785810183015185820160400152820161348b565b818111156134b9576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156135545784516001600160a01b03168352938301939183019160010161352f565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115613588576135886136ee565b500190565b6000826135aa57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156135ea5781600019048211156135d0576135d06136ee565b808516156135dd57918102915b93841c93908002906135b4565b509250929050565b6000610dc160ff84168360008261360b57506001610b72565b8161361857506000610b72565b816001811461362e576002811461363857613654565b6001915050610b72565b60ff841115613649576136496136ee565b50506001821b610b72565b5060208310610133831016604e8410600b8410161715613677575081810a610b72565b61368183836135af565b8060001904821115613695576136956136ee565b029392505050565b60008160001904831182151516156136b7576136b76136ee565b500290565b6000828210156136ce576136ce6136ee565b500390565b60006000198214156136e7576136e76136ee565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611a3b57600080fd5b8015158114611a3b57600080fdfea264697066735822122000a155e8adf9b6af6526516f12ed7fe0580de4440947aa0c47ca53bf924bfc0064736f6c634300080700330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106103855760003560e01c8063728f8eea116101d1578063a9059cbb11610102578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610ade578063f480fec214610afe578063f66895a314610b1e578063f887ea4014610b4157600080fd5b8063e2f4560514610a6e578063e517f2b914610a84578063ea2f0b3714610aa4578063ee36e35914610ac457600080fd5b8063d257b34f116100dc578063d257b34f146109d2578063d2ce0db2146109f2578063d8672e5114610a08578063dd62ed3e14610a2857600080fd5b8063a9059cbb14610972578063aacebbe314610992578063b5c57145146109b257600080fd5b8063924de9b71161016f5780639e252f00116101495780639e252f00146108f2578063a12a7d6114610912578063a457c2d714610932578063a8aa1b311461095257600080fd5b8063924de9b71461088257806395d89b41146108a25780639ba5e4d5146108cf57600080fd5b806388f82020116101ab57806388f82020146107eb5780638da5cb5b146108245780638e2839ff146108425780638ea5220f1461086257600080fd5b8063728f8eea1461075057806375f0a8741461079357806385141a77146107cb57600080fd5b8063437823ec116102b65780635b24ea5e116102545780636aa5b37f116102235780636aa5b37f146106e65780636ddd1713146106fc57806370a082311461071b578063715018a61461073b57600080fd5b80635b24ea5e1461066a57806362695eae1461068a578063652e2f04146106ba57806366a88d96146106d057600080fd5b80634fdaf486116102905780634fdaf486146105d157806352390c02146105f15780635342acb41461061157806359759f611461064a57600080fd5b8063437823ec146105775780634549b039146105975780634ada218b146105b757600080fd5b8063274a533c11610323578063313ce567116102fd578063313ce567146104fb5780633685d41914610517578063395093511461053757806340b28c2f1461055757600080fd5b8063274a533c146104a55780632a3c3f9f146104bb5780632d838119146104db57600080fd5b806313f97a8e1161035f57806313f97a8e1461042657806318160ddd146104465780631816467f1461046557806323b872dd1461048557600080fd5b806306fdde0314610391578063095ea7b3146103d45780630d65df9b1461040457600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b5060408051808201909152600881526750696b614c6f6b6960c01b60208201525b6040516103cb919061347a565b60405180910390f35b3480156103e057600080fd5b506103f46103ef36600461320c565b610b61565b60405190151581526020016103cb565b34801561041057600080fd5b5061042461041f36600461319d565b610b78565b005b34801561043257600080fd5b50610424610441366004613238565b610c33565b34801561045257600080fd5b50600f545b6040519081526020016103cb565b34801561047157600080fd5b5061042461048036600461312a565b610cc9565b34801561049157600080fd5b506103f46104a036600461319d565b610d15565b3480156104b157600080fd5b5061045760155481565b3480156104c757600080fd5b506104246104d636600461336e565b610dc8565b3480156104e757600080fd5b506104576104f63660046133ba565b610e60565b34801561050757600080fd5b50604051600981526020016103cb565b34801561052357600080fd5b5061042461053236600461312a565b610edd565b34801561054357600080fd5b506103f461055236600461320c565b611094565b34801561056357600080fd5b50610424610572366004613164565b6110cb565b34801561058357600080fd5b5061042461059236600461312a565b611123565b3480156105a357600080fd5b506104576105b23660046133d3565b611171565b3480156105c357600080fd5b506009546103f49060ff1681565b3480156105dd57600080fd5b506104246105ec366004613238565b611201565b3480156105fd57600080fd5b5061042461060c36600461312a565b611292565b34801561061d57600080fd5b506103f461062c36600461312a565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561065657600080fd5b506104246106653660046133f8565b6113e5565b34801561067657600080fd5b506104246106853660046131de565b611445565b34801561069657600080fd5b506103f46106a536600461312a565b60066020526000908152604090205460ff1681565b3480156106c657600080fd5b5061045760135481565b3480156106dc57600080fd5b5061045760145481565b3480156106f257600080fd5b5061045760125481565b34801561070857600080fd5b506009546103f490610100900460ff1681565b34801561072757600080fd5b5061045761073636600461312a565b61149a565b34801561074757600080fd5b506104246114f9565b34801561075c57600080fd5b50601e54601f546020546021546107739392919084565b6040805194855260208501939093529183015260608201526080016103cb565b34801561079f57600080fd5b506018546107b3906001600160a01b031681565b6040516001600160a01b0390911681526020016103cb565b3480156107d757600080fd5b506017546107b3906001600160a01b031681565b3480156107f757600080fd5b506103f461080636600461312a565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561083057600080fd5b506000546001600160a01b03166107b3565b34801561084e57600080fd5b5061042461085d366004613238565b61152f565b34801561086e57600080fd5b506019546107b3906001600160a01b031681565b34801561088e57600080fd5b5061042461089d366004613316565b6115c0565b3480156108ae57600080fd5b5060408051808201909152600481526350494b4960e01b60208201526103be565b3480156108db57600080fd5b506026546027546028546029546107739392919084565b3480156108fe57600080fd5b5061042461090d3660046133ba565b611604565b34801561091e57600080fd5b5061042461092d366004613448565b6116ab565b34801561093e57600080fd5b506103f461094d36600461320c565b611737565b34801561095e57600080fd5b50600e546107b3906001600160a01b031681565b34801561097e57600080fd5b506103f461098d36600461320c565b6117d2565b34801561099e57600080fd5b506104246109ad36600461312a565b6117df565b3480156109be57600080fd5b506104246109cd3660046131de565b61182b565b3480156109de57600080fd5b506104246109ed3660046133ba565b611880565b3480156109fe57600080fd5b50610457600c5481565b348015610a1457600080fd5b50610424610a233660046133ba565b6118c6565b348015610a3457600080fd5b50610457610a43366004613164565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a7a57600080fd5b5061045760115481565b348015610a9057600080fd5b50610424610a9f366004613350565b61190c565b348015610ab057600080fd5b50610424610abf36600461312a565b611958565b348015610ad057600080fd5b50600b546103f49060ff1681565b348015610aea57600080fd5b50610424610af936600461312a565b6119a3565b348015610b0a57600080fd5b50610424610b19366004613448565b611a3e565b348015610b2a57600080fd5b506022546023546024546025546107739392919084565b348015610b4d57600080fd5b50600d546107b3906001600160a01b031681565b6000610b6e338484611ac9565b5060015b92915050565b6000546001600160a01b03163314610bab5760405162461bcd60e51b8152600401610ba2906134cf565b60405180910390fd5b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b158015610bf557600080fd5b505af1158015610c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2d9190613333565b50505050565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b8152600401610ba2906134cf565b60005b8251811015610cc4578160076000858481518110610c8057610c8061371a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610cbc816136d3565b915050610c60565b505050565b6000546001600160a01b03163314610cf35760405162461bcd60e51b8152600401610ba2906134cf565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d22848484611bed565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610da75760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ba2565b610dbb8533610db686856136bc565b611ac9565b60019150505b9392505050565b6000546001600160a01b03163314610df25760405162461bcd60e51b8152600401610ba2906134cf565b6009805461ffff191661ff00198815159081169190911761010082021790915560168690556040805160808101825286815260208101869052908101849052606001829052601a859055601b849055601c839055601d82905560011415610e5857436015555b505050505050565b6000601054821115610ec75760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ba2565b6000610ed1612325565b9050610dc1818461358d565b6000546001600160a01b03163314610f075760405162461bcd60e51b8152600401610ba2906134cf565b6001600160a01b03811660009081526005602052604090205460ff16610f6f5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610ba2565b60005b60085481101561109057816001600160a01b031660088281548110610f9957610f9961371a565b6000918252602090912001546001600160a01b0316141561107e5760088054610fc4906001906136bc565b81548110610fd457610fd461371a565b600091825260209091200154600880546001600160a01b0390921691839081106110005761100061371a565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600880548061105857611058613704565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80611088816136d3565b915050610f72565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610b6e918590610db6908690613575565b6000546001600160a01b031633146110f55760405162461bcd60e51b8152600401610ba2906134cf565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000546001600160a01b0316331461114d5760405162461bcd60e51b8152600401610ba2906134cf565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600f548311156111c55760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ba2565b816111e45760006111da846001600080612348565b519150610b729050565b60006111f4846001600080612348565b602001519150610b729050565b6000546001600160a01b0316331461122b5760405162461bcd60e51b8152600401610ba2906134cf565b60005b8251811015610cc457816006600085848151811061124e5761124e61371a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061128a816136d3565b91505061122e565b6000546001600160a01b031633146112bc5760405162461bcd60e51b8152600401610ba2906134cf565b6001600160a01b03811660009081526005602052604090205460ff16156113255760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ba2565b6001600160a01b0381166000908152600160205260409020541561137f576001600160a01b03811660009081526001602052604090205461136590610e60565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b0316331461140f5760405162461bcd60e51b8152600401610ba2906134cf565b61141b6009600a6135f2565b611425908361369d565b6012556114346009600a6135f2565b61143e908261369d565b6013555050565b6000546001600160a01b0316331461146f5760405162461bcd60e51b8152600401610ba2906134cf565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526005602052604081205460ff16156114d757506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610b7290610e60565b6000546001600160a01b031633146115235760405162461bcd60e51b8152600401610ba2906134cf565b61152d60006123a7565b565b6000546001600160a01b031633146115595760405162461bcd60e51b8152600401610ba2906134cf565b60005b8251811015610cc457816004600085848151811061157c5761157c61371a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806115b8816136d3565b91505061155c565b6000546001600160a01b031633146115ea5760405162461bcd60e51b8152600401610ba2906134cf565b600980549115156101000261ff0019909216919091179055565b6000546001600160a01b0316331461162e5760405162461bcd60e51b8152600401610ba2906134cf565b8047101561167e5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610ba2565b604051339082156108fc029083906000818181858888f19350505050158015611090573d6000803e3d6000fd5b6000546001600160a01b031633146116d55760405162461bcd60e51b8152600401610ba2906134cf565b6040805160808101825285815260208082018690528183018590526060909101839052601e869055601f8590558390556021829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156117b95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ba2565b6117c83385610db686856136bc565b5060019392505050565b6000610b6e338484611bed565b6000546001600160a01b031633146118095760405162461bcd60e51b8152600401610ba2906134cf565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118555760405162461bcd60e51b8152600401610ba2906134cf565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118aa5760405162461bcd60e51b8152600401610ba2906134cf565b6118b66009600a6135f2565b6118c0908261369d565b60115550565b6000546001600160a01b031633146118f05760405162461bcd60e51b8152600401610ba2906134cf565b6118fc6009600a6135f2565b611906908261369d565b60145550565b6000546001600160a01b031633146119365760405162461bcd60e51b8152600401610ba2906134cf565b61194181600161369d565b600c5550600b805460ff1916911515919091179055565b6000546001600160a01b031633146119825760405162461bcd60e51b8152600401610ba2906134cf565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146119cd5760405162461bcd60e51b8152600401610ba2906134cf565b6001600160a01b038116611a325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ba2565b611a3b816123a7565b50565b6000546001600160a01b03163314611a685760405162461bcd60e51b8152600401610ba2906134cf565b60408051608081018252858152602081018590528082018490526060018290526022859055602384905560248390556025829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b6001600160a01b038316611b2b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ba2565b6001600160a01b038216611b8c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ba2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c515760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ba2565b6001600160a01b038216611cb35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ba2565b60008111611d155760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ba2565b611d1e8361149a565b811115611d875760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610ba2565b6001600160a01b03831660009081526007602052604090205460ff16158015611dc957506001600160a01b03821660009081526007602052604090205460ff16155b611e055760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610ba2565b6001600160a01b03831660009081526004602052604090205460ff16158015611e4757506001600160a01b03821660009081526004602052604090205460ff16155b15611e935760095460ff16611e935760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610ba2565b600e546001600160a01b038481169116148015611ec957506001600160a01b03821660009081526004602052604090205460ff16155b8015611ede575060095462010000900460ff16155b15611f9a57601254811115611f355760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610ba2565b60145481611f428461149a565b611f4c9190613575565b1115611f9a5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ba2565b600e546001600160a01b03848116911614801590611fd157506001600160a01b03821660009081526004602052604090205460ff16155b8015611ff657506001600160a01b03831660009081526004602052604090205460ff16155b801561200b575060095462010000900460ff16155b1561216e576013548111156120625760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610ba2565b600e546001600160a01b038381169116146120dc57601454816120848461149a565b61208e9190613575565b11156120dc5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ba2565b600b5460ff161561216e576001600160a01b0383166000908152600a602052604081205461210a90426136bc565b9050600c548110156121515760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610ba2565b506001600160a01b0383166000908152600a602052604090204290555b600060115461217c3061149a565b600954911115915062010000900460ff161580156121a15750600954610100900460ff165b80156121aa5750805b80156121c45750600e546001600160a01b03858116911614155b80156121e957506001600160a01b03841660009081526004602052604090205460ff16155b801561220e57506001600160a01b03831660009081526004602052604090205460ff16155b1561229c57600e546001600160a01b038481169116141561226457601154604080516080810182526022548152602354602082015260245491810191909152602554606082015261225f91906123f7565b61229c565b60115460408051608081018252601e548152601f546020808301919091525491810191909152602154606082015261229c91906123f7565b60095460019060009062010000900460ff16806122d157506001600160a01b03861660009081526004602052604090205460ff165b806122f457506001600160a01b03851660009081526004602052604090205460ff165b156122fe57600091505b600e546001600160a01b0386811691161415612318575060015b610e588686868585612551565b600080600061233261287f565b9092509050612341818361358d565b9250505090565b6123506130b5565b61235c85858585612a02565b905061237181868661236c612325565b612bb3565b608086015260608501526040840152602083015281526123998185612394612325565b612c62565b60a08201525b949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805462ff00001916620100001790556060810151602082015160408301516000929161242491613575565b61242e9190613575565b61243990600261369d565b905060008183604001518561244e919061369d565b612458919061358d565b9050600061246682866136bc565b90504761247282612c82565b600061247e82476136bc565b9050600086604001518661249291906136bc565b61249c908361358d565b905060008760400151826124b0919061369d565b905080156124c2576124c28682612de3565b60208801516000906124d584600261369d565b6124df919061369d565b905080156124fd576018546124fd906001600160a01b031682612ec7565b606089015160009061251085600261369d565b61251a919061369d565b9050801561253857601954612538906001600160a01b031682612ec7565b50506009805462ff000019169055505050505050505050565b6001600160a01b03851660009081526004602052604081205460ff1615801561259357506001600160a01b03851660009081526004602052604090205460ff16155b80156125ae57506016546015546125aa9190613575565b4311155b905060006125be85858585612348565b6001600160a01b03881660009081526005602052604090205490915060ff1615612620576001600160a01b0387166000908152600260205260409020546126069086906136bc565b6001600160a01b0388166000908152600260205260409020555b6001600160a01b03861660009081526005602052604090205460ff16156126835760c08101516001600160a01b0387166000908152600260205260409020546126699190613575565b6001600160a01b0387166000908152600260205260409020555b80516001600160a01b0388166000908152600160205260409020546126a891906136bc565b6001600160a01b03808916600090815260016020908152604080832094909455840151918916815291909120546126df9190613575565b6001600160a01b0387166000908152600160205260409081902091909155810151151580612711575060008160e00151115b156127285761272881604001518260e00151612fe0565b60008160800151118061274057506000816101200151115b156127c5576127588160800151826101200151613015565b306001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361014001518461010001518561012001516127a99190613575565b6127b39190613575565b60405190815260200160405180910390a35b6000816060015111806127dd57506000816101000151115b156127f5576127f5816060015182610100015161308b565b60008160a00151118061280d57506000816101400151115b15612825576128258160a001518261014001516130a0565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161286e91815260200190565b60405180910390a350505050505050565b601054600f546000918291825b6008548110156129d1578260016000600884815481106128ae576128ae61371a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061291957508160026000600884815481106128f2576128f261371a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561292f57601054600f54945094505050509091565b60016000600883815481106129465761294661371a565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461297590846136bc565b9250600260006008838154811061298e5761298e61371a565b60009182526020808320909101546001600160a01b031683528201929092526040019020546129bd90836136bc565b9150806129c9816136d3565b91505061288c565b50600f546010546129e2919061358d565b8210156129f957601054600f549350935050509091565b90939092509050565b612a0a6130b5565b83612a1b5760c0810185905261239f565b612a466040518060800160405280600081526020016000815260200160008152602001600081525090565b838015612a51575082155b15612a8557506040805160808101825260225481526023546020820152602454918101919091526025546060820152612ae6565b82612abb575060408051608081018252601e548152601f5460208083019190915254918101919091526021546060820152612ae6565b5060408051608081018252601a548152601b546020820152601c5491810191909152601d5460608201525b8051606490612af5908861369d565b612aff919061358d565b60e08301526020810151606490612b16908861369d565b612b20919061358d565b6101008301526040810151606490612b38908861369d565b612b42919061358d565b6101208301526060810151606490612b5a908861369d565b612b64919061358d565b610140830181905261012083015161010084015160e0850151612b87908a6136bc565b612b9191906136bc565b612b9b91906136bc565b612ba591906136bc565b60c083015250949350505050565b600080808080612bc3868961369d565b945086612bdb57508392506000915081905080612c57565b858960e00151612beb919061369d565b925085896101000151612bfe919061369d565b915085896101200151612c11919061369d565b90506000868a6101400151612c26919061369d565b9050808284612c35878a6136bc565b612c3f91906136bc565b612c4991906136bc565b612c5391906136bc565b9450505b945094509450945094565b600082612c7157506000610dc1565b8184610140015161239f919061369d565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612cb757612cb761371a565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612d0b57600080fd5b505afa158015612d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d439190613147565b81600181518110612d5657612d5661371a565b6001600160a01b039283166020918202929092010152600d54612d7c9130911684611ac9565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612db5908590600090869030904290600401613504565b600060405180830381600087803b158015612dcf57600080fd5b505af1158015610e58573d6000803e3d6000fd5b600d54612dfb9030906001600160a01b031684611ac9565b600d546001600160a01b031663f305d719823085600080612e246000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015612e8757600080fd5b505af1158015612e9b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ec0919061341a565b5050505050565b80471015612f175760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ba2565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612f64576040519150601f19603f3d011682016040523d82523d6000602084013e612f69565b606091505b5050905080610cc45760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610ba2565b8160106000828254612ff291906136bc565b90915550506026805482919060009061300c908490613575565b90915550505050565b806026600201600082825461302a9190613575565b90915550503060009081526005602052604090205460ff161561306c573060009081526002602052604081208054839290613066908490613575565b90915550505b306000908152600160205260408120805484929061300c908490613575565b806026600101600082825461302a9190613575565b806026600301600082825461302a9190613575565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b803561311a81613746565b919050565b803561311a8161375b565b60006020828403121561313c57600080fd5b8135610dc181613746565b60006020828403121561315957600080fd5b8151610dc181613746565b6000806040838503121561317757600080fd5b823561318281613746565b9150602083013561319281613746565b809150509250929050565b6000806000606084860312156131b257600080fd5b83356131bd81613746565b925060208401356131cd81613746565b929592945050506040919091013590565b600080604083850312156131f157600080fd5b82356131fc81613746565b915060208301356131928161375b565b6000806040838503121561321f57600080fd5b823561322a81613746565b946020939093013593505050565b6000806040838503121561324b57600080fd5b823567ffffffffffffffff8082111561326357600080fd5b818501915085601f83011261327757600080fd5b813560208282111561328b5761328b613730565b8160051b604051601f19603f830116810181811086821117156132b0576132b0613730565b604052838152828101945085830182870184018b10156132cf57600080fd5b600096505b848710156132f9576132e58161310f565b8652600196909601959483019483016132d4565b509650613309905087820161311f565b9450505050509250929050565b60006020828403121561332857600080fd5b8135610dc18161375b565b60006020828403121561334557600080fd5b8151610dc18161375b565b6000806040838503121561336357600080fd5b823561322a8161375b565b60008060008060008060c0878903121561338757600080fd5b86356133928161375b565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b6000602082840312156133cc57600080fd5b5035919050565b600080604083850312156133e657600080fd5b8235915060208301356131928161375b565b6000806040838503121561340b57600080fd5b50508035926020909101359150565b60008060006060848603121561342f57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561345e57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b818110156134a75785810183015185820160400152820161348b565b818111156134b9576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156135545784516001600160a01b03168352938301939183019160010161352f565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115613588576135886136ee565b500190565b6000826135aa57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156135ea5781600019048211156135d0576135d06136ee565b808516156135dd57918102915b93841c93908002906135b4565b509250929050565b6000610dc160ff84168360008261360b57506001610b72565b8161361857506000610b72565b816001811461362e576002811461363857613654565b6001915050610b72565b60ff841115613649576136496136ee565b50506001821b610b72565b5060208310610133831016604e8410600b8410161715613677575081810a610b72565b61368183836135af565b8060001904821115613695576136956136ee565b029392505050565b60008160001904831182151516156136b7576136b76136ee565b500290565b6000828210156136ce576136ce6136ee565b500390565b60006000198214156136e7576136e76136ee565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611a3b57600080fd5b8015158114611a3b57600080fdfea264697066735822122000a155e8adf9b6af6526516f12ed7fe0580de4440947aa0c47ca53bf924bfc0064736f6c63430008070033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

3312:22655:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7176:83;;;;;;;;;;-1:-1:-1;7246:5:0;;;;;;;;;;;;-1:-1:-1;;;7246:5:0;;;;7176:83;;;;;;;:::i;:::-;;;;;;;;7936:161;;;;;;;;;;-1:-1:-1;7936:161:0;;;;;:::i;:::-;;:::i;:::-;;;7888:14:1;;7881:22;7863:41;;7851:2;7836:18;7936:161:0;7723:187:1;25736:191:0;;;;;;;;;;-1:-1:-1;25736:191:0;;;;;:::i;:::-;;:::i;:::-;;24459:211;;;;;;;;;;-1:-1:-1;24459:211:0;;;;;:::i;:::-;;:::i;7476:95::-;;;;;;;;;;-1:-1:-1;7556:7:0;;7476:95;;;17644:25:1;;;17632:2;17617:18;7476:95:0;17498:177:1;23803:103:0;;;;;;;;;;-1:-1:-1;23803:103:0;;;;;:::i;:::-;;:::i;8105:448::-;;;;;;;;;;-1:-1:-1;8105:448:0;;;;;:::i;:::-;;:::i;4569:28::-;;;;;;;;;;;;;;;;10002:421;;;;;;;;;;-1:-1:-1;10002:421:0;;;;;:::i;:::-;;:::i;10431:250::-;;;;;;;;;;-1:-1:-1;10431:250:0;;;;;:::i;:::-;;:::i;7362:83::-;;;;;;;;;;-1:-1:-1;7362:83:0;;4179:1;19203:36:1;;19191:2;19176:18;7362:83:0;19061:184:1;11095:473:0;;;;;;;;;;-1:-1:-1;11095:473:0;;;;;:::i;:::-;;:::i;8561:207::-;;;;;;;;;;-1:-1:-1;8561:207:0;;;;;:::i;:::-;;:::i;25368:155::-;;;;;;;;;;-1:-1:-1;25368:155:0;;;;;:::i;:::-;;:::i;11576:111::-;;;;;;;;;;-1:-1:-1;11576:111:0;;;;;:::i;:::-;;:::i;9477:517::-;;;;;;;;;;-1:-1:-1;9477:517:0;;;;;:::i;:::-;;:::i;3836:26::-;;;;;;;;;;-1:-1:-1;3836:26:0;;;;;;;;24816:220;;;;;;;;;;-1:-1:-1;24816:220:0;;;;;:::i;:::-;;:::i;10755:332::-;;;;;;;;;;-1:-1:-1;10755:332:0;;;;;:::i;:::-;;:::i;11813:124::-;;;;;;;;;;-1:-1:-1;11813:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;11902:27:0;11878:4;11902:27;;;:18;:27;;;;;;;;;11813:124;25044:184;;;;;;;;;;-1:-1:-1;25044:184:0;;;;;:::i;:::-;;:::i;24324:127::-;;;;;;;;;;-1:-1:-1;24324:127:0;;;;;:::i;:::-;;:::i;3690:47::-;;;;;;;;;;-1:-1:-1;3690:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4459:45;;;;;;;;;;;;;;;;4511:49;;;;;;;;;;;;;;;;4406:46;;;;;;;;;;;;;;;;3869:23;;;;;;;;;;-1:-1:-1;3869:23:0;;;;;;;;;;;7579:198;;;;;;;;;;-1:-1:-1;7579:198:0;;;;;:::i;:::-;;:::i;1626:94::-;;;;;;;;;;;;;:::i;5131:38::-;;;;;;;;;;-1:-1:-1;5131:38:0;;;;;;;;;;;;;;;;;;;18896:25:1;;;18952:2;18937:18;;18930:34;;;;18980:18;;;18973:34;19038:2;19023:18;;19016:34;18883:3;18868:19;5131:38:0;18665:391:1;4714:75:0;;;;;;;;;;-1:-1:-1;4714:75:0;;;;-1:-1:-1;;;;;4714:75:0;;;;;;-1:-1:-1;;;;;6788:32:1;;;6770:51;;6758:2;6743:18;4714:75:0;6624:203:1;4637:70:0;;;;;;;;;;-1:-1:-1;4637:70:0;;;;-1:-1:-1;;;;;4637:70:0;;;9349:120;;;;;;;;;;-1:-1:-1;9349:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;9441:20:0;9417:4;9441:20;;;:11;:20;;;;;;;;;9349:120;1403:87;;;;;;;;;;-1:-1:-1;1449:7:0;1476:6;-1:-1:-1;;;;;1476:6:0;1403:87;;23460:212;;;;;;;;;;-1:-1:-1;23460:212:0;;;;;:::i;:::-;;:::i;4796:69::-;;;;;;;;;;-1:-1:-1;4796:69:0;;;;-1:-1:-1;;;;;4796:69:0;;;24214:102;;;;;;;;;;-1:-1:-1;24214:102:0;;;;;:::i;:::-;;:::i;7267:87::-;;;;;;;;;;-1:-1:-1;7339:7:0;;;;;;;;;;;;-1:-1:-1;;;7339:7:0;;;;7267:87;;5368:36;;;;;;;;;;-1:-1:-1;5368:36:0;;;;;;;;;;;;;;;25531:197;;;;;;;;;;-1:-1:-1;25531:197:0;;;;;:::i;:::-;;:::i;11945:243::-;;;;;;;;;;-1:-1:-1;11945:243:0;;;;;:::i;:::-;;:::i;8776:392::-;;;;;;;;;;-1:-1:-1;8776:392:0;;;;;:::i;:::-;;:::i;4116:19::-;;;;;;;;;;-1:-1:-1;4116:19:0;;;;-1:-1:-1;;;;;4116:19:0;;;9176:165;;;;;;;;;;-1:-1:-1;9176:165:0;;;;;:::i;:::-;;:::i;23680:115::-;;;;;;;;;;-1:-1:-1;23680:115:0;;;;;:::i;:::-;;:::i;24678:130::-;;;;;;;;;;-1:-1:-1;24678:130:0;;;;;:::i;:::-;;:::i;24075:131::-;;;;;;;;;;-1:-1:-1;24075:131:0;;;;;:::i;:::-;;:::i;4039:40::-;;;;;;;;;;;;;;;;25236:124;;;;;;;;;;-1:-1:-1;25236:124:0;;;;;:::i;:::-;;:::i;7785:143::-;;;;;;;;;;-1:-1:-1;7785:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7893:18:0;;;7866:7;7893:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7785:143;4348:51;;;;;;;;;;;;;;;;23914:153;;;;;;;;;;-1:-1:-1;23914:153:0;;;;;:::i;:::-;;:::i;11695:110::-;;;;;;;;;;-1:-1:-1;11695:110:0;;;;;:::i;:::-;;:::i;3998:34::-;;;;;;;;;;-1:-1:-1;3998:34:0;;;;;;;;1728:192;;;;;;;;;;-1:-1:-1;1728:192:0;;;;;:::i;:::-;;:::i;12196:251::-;;;;;;;;;;-1:-1:-1;12196:251:0;;;;;:::i;:::-;;:::i;5176:42::-;;;;;;;;;;-1:-1:-1;5176:42:0;;;;;;;;;;;;;;;4088:21;;;;;;;;;;-1:-1:-1;4088:21:0;;;;-1:-1:-1;;;;;4088:21:0;;;7936:161;8011:4;8028:39;904:10;8051:7;8060:6;8028:8;:39::i;:::-;-1:-1:-1;8085:4:0;7936:161;;;;;:::o;25736:191::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;;;;;;;;;25878:41:::1;::::0;-1:-1:-1;;;25878:41:0;;-1:-1:-1;;;;;7024:32:1;;;25878:41:0::1;::::0;::::1;7006:51:1::0;7073:18;;;7066:34;;;25878:27:0;::::1;::::0;::::1;::::0;6979:18:1;;25878:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25736:191:::0;;;:::o;24459:211::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;24560:9:::1;24555:108;24579:8;:15;24575:1;:19;24555:108;;;24646:5;24616:14;:27;24631:8;24640:1;24631:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24616:27:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24616:27:0;:35;;-1:-1:-1;;24616:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24596:3;::::1;::::0;::::1;:::i;:::-;;;;24555:108;;;;24459:211:::0;;:::o;23803:103::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;23877:9:::1;:21:::0;;-1:-1:-1;;;;;;23877:21:0::1;-1:-1:-1::0;;;;;23877:21:0;;;::::1;::::0;;;::::1;::::0;;23803:103::o;8105:448::-;8237:4;8254:36;8264:6;8272:9;8283:6;8254:9;:36::i;:::-;-1:-1:-1;;;;;8330:19:0;;8303:24;8330:19;;;:11;:19;;;;;;;;904:10;8330:33;;;;;;;;8382:26;;;;8374:79;;;;-1:-1:-1;;;8374:79:0;;13904:2:1;8374:79:0;;;13886:21:1;13943:2;13923:18;;;13916:30;13982:34;13962:18;;;13955:62;-1:-1:-1;;;14033:18:1;;;14026:38;14081:19;;8374:79:0;13702:404:1;8374:79:0;8464:57;8473:6;904:10;8495:25;8514:6;8495:16;:25;:::i;:::-;8464:8;:57::i;:::-;8541:4;8534:11;;;8105:448;;;;;;:::o;10002:421::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;10214:14:::1;:22:::0;;-1:-1:-1;;10247:19:0;-1:-1:-1;;10214:22:0;::::1;;10247:19:::0;;;;;;;10214:22:::1;10247:19:::0;::::1;;::::0;;;10277:8:::1;:20:::0;;;10320:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;10308:9:::1;:49:::0;;;;;;;;;;;;;;;-1:-1:-1;10372:13:0::1;10368:47;;;10403:12;10387:13;:28:::0;10368:47:::1;10002:421:::0;;;;;;:::o;10431:250::-;10498:7;10537;;10526;:18;;10518:73;;;;-1:-1:-1;;;10518:73:0;;10469:2:1;10518:73:0;;;10451:21:1;10508:2;10488:18;;;10481:30;10547:34;10527:18;;;10520:62;-1:-1:-1;;;10598:18:1;;;10591:40;10648:19;;10518:73:0;10267:406:1;10518:73:0;10602:19;10624:10;:8;:10::i;:::-;10602:32;-1:-1:-1;10652:21:0;10602:32;10652:7;:21;:::i;11095:473::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11175:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;11167:56;;;::::0;-1:-1:-1;;;11167:56:0;;12834:2:1;11167:56:0::1;::::0;::::1;12816:21:1::0;12873:2;12853:18;;;12846:30;12912:25;12892:18;;;12885:53;12955:18;;11167:56:0::1;12632:347:1::0;11167:56:0::1;11239:9;11234:327;11258:9;:16:::0;11254:20;::::1;11234:327;;;11316:7;-1:-1:-1::0;;;;;11300:23:0::1;:9;11310:1;11300:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;11300:12:0::1;:23;11296:254;;;11359:9;11369:16:::0;;:20:::1;::::0;11388:1:::1;::::0;11369:20:::1;:::i;:::-;11359:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;11344:9:::1;:12:::0;;-1:-1:-1;;;;;11359:31:0;;::::1;::::0;11354:1;;11344:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;11344:46:0::1;-1:-1:-1::0;;;;;11344:46:0;;::::1;;::::0;;11409:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;11448:11:::1;:20:::0;;;;:28;;-1:-1:-1;;11448:28:0::1;::::0;;11495:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;11495:15:0;;;;;-1:-1:-1;;;;;;11495:15:0::1;::::0;;;;;11234:327:::1;11095:473:::0;:::o;11296:254::-:1;11276:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11234:327;;;;11095:473:::0;:::o;8561:207::-;904:10;8641:4;8690:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8690:34:0;;;;;;;;;;8641:4;;8658:80;;8681:7;;8690:47;;8727:10;;8690:47;:::i;25368:155::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;25463:6:::1;:27:::0;;-1:-1:-1;;;;;25463:27:0;;::::1;-1:-1:-1::0;;;;;;25463:27:0;;::::1;;::::0;;;25501:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;25368:155::o;11576:111::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11645:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;11645:34:0::1;11675:4;11645:34;::::0;;11576:111::o;9477:517::-;9595:7;9639;;9628;:18;;9620:62;;;;-1:-1:-1;;;9620:62:0;;13544:2:1;9620:62:0;;;13526:21:1;13583:2;13563:18;;;13556:30;13622:33;13602:18;;;13595:61;13673:18;;9620:62:0;13342:355:1;9620:62:0;9698:17;9693:294;;9732:28;9763:39;9774:7;9783:4;9789:5;9796;9763:10;:39::i;:::-;9824:9;;-1:-1:-1;9817:16:0;;-1:-1:-1;9817:16:0;9693:294;9866:28;9897:39;9908:7;9917:4;9923:5;9930;9897:10;:39::i;:::-;9958:17;;;;-1:-1:-1;9951:24:0;;-1:-1:-1;9951:24:0;24816:220;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;24925:9:::1;24920:109;24944:8;:15;24940:1;:19;24920:109;;;25012:5;24981:15;:28;24997:8;25006:1;24997:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24981:28:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24981:28:0;:36;;-1:-1:-1;;24981:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24961:3;::::1;::::0;::::1;:::i;:::-;;;;24920:109;;10755:332:::0;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10836:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10835:21;10827:61;;;::::0;-1:-1:-1;;;10827:61:0;;11690:2:1;10827:61:0::1;::::0;::::1;11672:21:1::0;11729:2;11709:18;;;11702:30;11768:29;11748:18;;;11741:57;11815:18;;10827:61:0::1;11488:351:1::0;10827:61:0::1;-1:-1:-1::0;;;;;10903:16:0;::::1;10922:1;10903:16:::0;;;:7:::1;:16;::::0;;;;;:20;10899:109:::1;;-1:-1:-1::0;;;;;10979:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;10959:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;10940:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;10899:109:::1;-1:-1:-1::0;;;;;11018:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;11018:27:0::1;11041:4;11018:27:::0;;::::1;::::0;;;11056:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;11056:23:0::1;::::0;;::::1;::::0;;10755:332::o;25044:184::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;25156:14:::1;4179:1:::0;25156:2:::1;:14;:::i;:::-;25147:23;::::0;:6;:23:::1;:::i;:::-;25133:11;:37:::0;25206:14:::1;4179:1:::0;25206:2:::1;:14;:::i;:::-;25196:24;::::0;:7;:24:::1;:::i;:::-;25181:12;:39:::0;-1:-1:-1;;25044:184:0:o;24324:127::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24412:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;24412:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24324:127::o;7579:198::-;-1:-1:-1;;;;;7669:20:0;;7645:7;7669:20;;;:11;:20;;;;;;;;7665:49;;;-1:-1:-1;;;;;;7698:16:0;;;;;:7;:16;;;;;;;7579:198::o;7665:49::-;-1:-1:-1;;;;;7752:16:0;;;;;;:7;:16;;;;;;7732:37;;:19;:37::i;1626:94::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;1691:21:::1;1709:1;1691:9;:21::i;:::-;1626:94::o:0;23460:212::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;23558:9:::1;23553:112;23577:8;:15;23573:1;:19;23553:112;;;23648:5;23614:18;:31;23633:8;23642:1;23633:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23614:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23614:31:0;:39;;-1:-1:-1;;23614:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23594:3;::::1;::::0;::::1;:::i;:::-;;;;23553:112;;24214:102:::0;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;24286:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;24286:22:0;;::::1;::::0;;;::::1;::::0;;24214:102::o;25531:197::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;25632:9:::1;25607:21;:34;;25599:71;;;::::0;-1:-1:-1;;;25599:71:0;;14674:2:1;25599:71:0::1;::::0;::::1;14656:21:1::0;14713:2;14693:18;;;14686:30;14752:26;14732:18;;;14725:54;14796:18;;25599:71:0::1;14472:348:1::0;25599:71:0::1;25681:39;::::0;25689:10:::1;::::0;25681:39;::::1;;;::::0;25710:9;;25681:39:::1;::::0;;;25710:9;25689:10;25681:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;11945:243:::0;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;12110:41:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;12102:5:::1;:49:::0;;;;;;;;;;;;;;12167:13;::::1;::::0;-1:-1:-1;;12167:13:0::1;11945:243:::0;;;;:::o;8776:392::-;904:10;8879:4;8928:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8928:34:0;;;;;;;;;;8981:35;;;;8973:85;;;;-1:-1:-1;;;8973:85:0;;17294:2:1;8973:85:0;;;17276:21:1;17333:2;17313:18;;;17306:30;17372:34;17352:18;;;17345:62;-1:-1:-1;;;17423:18:1;;;17416:35;17468:19;;8973:85:0;17092:401:1;8973:85:0;9069:67;904:10;9092:7;9101:34;9120:15;9101:16;:34;:::i;9069:67::-;-1:-1:-1;9156:4:0;;8776:392;-1:-1:-1;;;8776:392:0:o;9176:165::-;9254:4;9271:40;9281:10;9293:9;9304:6;9271:9;:40::i;23680:115::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;23760:15:::1;:27:::0;;-1:-1:-1;;;;;;23760:27:0::1;-1:-1:-1::0;;;;;23760:27:0;;;::::1;::::0;;;::::1;::::0;;23680:115::o;24678:130::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24768:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;24768:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24678:130::o;24075:131::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;24185:13:::1;4179:1;24185:2;:13;:::i;:::-;24176:22;::::0;:6;:22:::1;:::i;:::-;24155:18;:43:::0;-1:-1:-1;24075:131:0:o;25236:124::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;25338:14:::1;4179:1:::0;25338:2:::1;:14;:::i;:::-;25329:23;::::0;:6;:23:::1;:::i;:::-;25312:14;:40:::0;-1:-1:-1;25236:124:0:o;23914:153::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;24009:16:::1;:4:::0;24016:9:::1;24009:16;:::i;:::-;23994:12;:31:::0;-1:-1:-1;24036:15:0::1;:23:::0;;-1:-1:-1;;24036:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23914:153::o;11695:110::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11762:27:0::1;11792:5;11762:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11762:35:0::1;::::0;;11695:110::o;1728:192::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1817:22:0;::::1;1809:73;;;::::0;-1:-1:-1;;;1809:73:0;;10880:2:1;1809:73:0::1;::::0;::::1;10862:21:1::0;10919:2;10899:18;;;10892:30;10958:34;10938:18;;;10931:62;-1:-1:-1;;;11009:18:1;;;11002:36;11055:19;;1809:73:0::1;10678:402:1::0;1809:73:0::1;1893:19;1903:8;1893:9;:19::i;:::-;1728:192:::0;:::o;12196:251::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;12369:41:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;12357:9:::1;:53:::0;;;;;;;;;;;;;;;12426:13;::::1;::::0;-1:-1:-1;;12426:13:0::1;12196:251:::0;;;;:::o;16941:369::-;-1:-1:-1;;;;;17068:19:0;;17060:68;;;;-1:-1:-1;;;17060:68:0;;16188:2:1;17060:68:0;;;16170:21:1;16227:2;16207:18;;;16200:30;16266:34;16246:18;;;16239:62;-1:-1:-1;;;16317:18:1;;;16310:34;16361:19;;17060:68:0;15986:400:1;17060:68:0;-1:-1:-1;;;;;17147:21:0;;17139:68;;;;-1:-1:-1;;;17139:68:0;;11287:2:1;17139:68:0;;;11269:21:1;11326:2;11306:18;;;11299:30;11365:34;11345:18;;;11338:62;-1:-1:-1;;;11416:18:1;;;11409:32;11458:19;;17139:68:0;11085:398:1;17139:68:0;-1:-1:-1;;;;;17218:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17270:32;;17644:25:1;;;17270:32:0;;17617:18:1;17270:32:0;;;;;;;16941:369;;;:::o;17318:2374::-;-1:-1:-1;;;;;17440:18:0;;17432:68;;;;-1:-1:-1;;;17432:68:0;;15782:2:1;17432:68:0;;;15764:21:1;15821:2;15801:18;;;15794:30;15860:34;15840:18;;;15833:62;-1:-1:-1;;;15911:18:1;;;15904:35;15956:19;;17432:68:0;15580:401:1;17432:68:0;-1:-1:-1;;;;;17519:16:0;;17511:64;;;;-1:-1:-1;;;17511:64:0;;8942:2:1;17511:64:0;;;8924:21:1;8981:2;8961:18;;;8954:30;9020:34;9000:18;;;8993:62;-1:-1:-1;;;9071:18:1;;;9064:33;9114:19;;17511:64:0;8740:399:1;17511:64:0;17603:1;17594:6;:10;17586:64;;;;-1:-1:-1;;;17586:64:0;;15027:2:1;17586:64:0;;;15009:21:1;15066:2;15046:18;;;15039:30;15105:34;15085:18;;;15078:62;-1:-1:-1;;;15156:18:1;;;15149:39;15205:19;;17586:64:0;14825:405:1;17586:64:0;17693:15;17703:4;17693:9;:15::i;:::-;17683:6;:25;;17661:124;;;;-1:-1:-1;;;17661:124:0;;10051:2:1;17661:124:0;;;10033:21:1;10090:2;10070:18;;;10063:30;10129:34;10109:18;;;10102:62;-1:-1:-1;;;10180:18:1;;;10173:47;10237:19;;17661:124:0;9849:413:1;17661:124:0;-1:-1:-1;;;;;17805:20:0;;;;;;:14;:20;;;;;;;;17804:21;:44;;;;-1:-1:-1;;;;;;17830:18:0;;;;;;:14;:18;;;;;;;;17829:19;17804:44;17796:70;;;;-1:-1:-1;;;17796:70:0;;16593:2:1;17796:70:0;;;16575:21:1;16632:2;16612:18;;;16605:30;-1:-1:-1;;;16651:18:1;;;16644:43;16704:18;;17796:70:0;16391:337:1;17796:70:0;-1:-1:-1;;;;;17884:24:0;;;;;;:18;:24;;;;;;;;17883:25;:52;;;;-1:-1:-1;;;;;;17913:22:0;;;;;;:18;:22;;;;;;;;17912:23;17883:52;17879:130;;;17960:14;;;;17952:45;;;;-1:-1:-1;;;17952:45:0;;9704:2:1;17952:45:0;;;9686:21:1;9743:2;9723:18;;;9716:30;-1:-1:-1;;;9762:18:1;;;9755:48;9820:18;;17952:45:0;9502:342:1;17952:45:0;18033:4;;-1:-1:-1;;;;;18025:12:0;;;18033:4;;18025:12;:39;;;;-1:-1:-1;;;;;;18042:22:0;;;;;;:18;:22;;;;;;;;18041:23;18025:39;:52;;;;-1:-1:-1;18069:8:0;;;;;;;18068:9;18025:52;18021:297;;;18112:11;;18102:6;:21;;18094:63;;;;-1:-1:-1;;;18094:63:0;;9346:2:1;18094:63:0;;;9328:21:1;9385:2;9365:18;;;9358:30;9424:31;9404:18;;;9397:59;9473:18;;18094:63:0;9144:353:1;18094:63:0;18224:14;;18214:6;18198:13;18208:2;18198:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18172:134;;;;-1:-1:-1;;;18172:134:0;;12046:2:1;18172:134:0;;;12028:21:1;;;12065:18;;;12058:30;12124:34;12104:18;;;12097:62;12176:18;;18172:134:0;11844:356:1;18172:134:0;18356:4;;-1:-1:-1;;;;;18348:12:0;;;18356:4;;18348:12;;;;:39;;-1:-1:-1;;;;;;18365:22:0;;;;;;:18;:22;;;;;;;;18364:23;18348:39;:68;;;;-1:-1:-1;;;;;;18392:24:0;;;;;;:18;:24;;;;;;;;18391:25;18348:68;:81;;;;-1:-1:-1;18421:8:0;;;;;;;18420:9;18348:81;18330:664;;;18474:12;;18464:6;:22;;18456:65;;;;-1:-1:-1;;;18456:65:0;;16935:2:1;18456:65:0;;;16917:21:1;16974:2;16954:18;;;16947:30;17013:32;16993:18;;;16986:60;17063:18;;18456:65:0;16733:354:1;18456:65:0;18546:4;;-1:-1:-1;;;;;18540:10:0;;;18546:4;;18540:10;18536:197;;18627:14;;18617:6;18601:13;18611:2;18601:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18571:146;;;;-1:-1:-1;;;18571:146:0;;12046:2:1;18571:146:0;;;12028:21:1;;;12065:18;;;12058:30;12124:34;12104:18;;;12097:62;12176:18;;18571:146:0;11844:356:1;18571:146:0;18751:15;;;;18747:236;;;-1:-1:-1;;;;;18826:15:0;;18787:18;18826:15;;;:9;:15;;;;;;18808:33;;:15;:33;:::i;:::-;18787:54;;18882:12;;18868:10;:26;;18860:55;;;;-1:-1:-1;;;18860:55:0;;15437:2:1;18860:55:0;;;15419:21:1;15476:2;15456:18;;;15449:30;-1:-1:-1;;;15495:18:1;;;15488:46;15551:18;;18860:55:0;15235:340:1;18860:55:0;-1:-1:-1;;;;;;18934:15:0;;;;;;:9;:15;;;;;18952;18934:33;;18747:236;19006:12;19049:18;;19021:24;19039:4;19021:9;:24::i;:::-;19097:8;;-1:-1:-1;;19021:46:0;;-1:-1:-1;19097:8:0;;;;;19096:9;:37;;;;-1:-1:-1;19122:11:0;;;;;;;19096:37;:61;;;;;19150:7;19096:61;:90;;;;-1:-1:-1;19182:4:0;;-1:-1:-1;;;;;19174:12:0;;;19182:4;;19174:12;;19096:90;:132;;;;-1:-1:-1;;;;;;19204:24:0;;;;;;:18;:24;;;;;;;;19203:25;19096:132;:172;;;;-1:-1:-1;;;;;;19246:22:0;;;;;;:18;:22;;;;;;;;19245:23;19096:172;19078:351;;;19305:4;;-1:-1:-1;;;;;19299:10:0;;;19305:4;;19299:10;19295:122;;;19326:18;;19311:45;;;;;;;;19346:9;19311:45;;;;;;;;;;;;;;;;;;;;;;;;;;19326:18;19311:14;:45::i;:::-;19295:122;;;19391:18;;19376:41;;;;;;;;19411:5;19376:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19391:18;19376:14;:41::i;:::-;19503:8;;19454:4;;19439:12;;19503:8;;;;;;:36;;-1:-1:-1;;;;;;19515:24:0;;;;;;:18;:24;;;;;;;;19503:36;:62;;;-1:-1:-1;;;;;;19543:22:0;;;;;;:18;:22;;;;;;;;19503:62;19499:83;;;19577:5;19567:15;;19499:83;19603:4;;-1:-1:-1;;;;;19597:10:0;;;19603:4;;19597:10;19593:29;;;-1:-1:-1;19618:4:0;19593:29;19635:49;19650:4;19656:2;19660:6;19668:7;19677:6;19635:14;:49::i;16200:161::-;16242:7;16263:15;16280;16299:19;:17;:19::i;:::-;16262:56;;-1:-1:-1;16262:56:0;-1:-1:-1;16336:17:0;16262:56;;16336:17;:::i;:::-;16329:24;;;;16200:161;:::o;13410:670::-;13558:36;;:::i;:::-;13619:51;13631:7;13640;13649:6;13657:12;13619:11;:51::i;:::-;13607:63;;13866:53;13879:9;13890:7;13899;13908:10;:8;:10::i;:::-;13866:12;:53::i;:::-;13832:20;;;13681:238;13797:20;;;13681:238;13768:14;;;13681:238;13728:25;;;13681:238;;;13949:94;13696:9;14000:7;14022:10;:8;:10::i;:::-;13949:12;:94::i;:::-;13931:14;;;13930:113;13410:670;;;;;;;:::o;1928:173::-;1984:16;2003:6;;-1:-1:-1;;;;;2020:17:0;;;-1:-1:-1;;;;;;2020:17:0;;;;;;2053:40;;2003:6;;;;;;;2053:40;;1984:16;2053:40;1973:128;1928:173;:::o;21191:1186::-;5884:8;:15;;-1:-1:-1;;5884:15:0;;;;;21373:8:::1;::::0;::::1;::::0;21343:14:::1;::::0;::::1;::::0;21313::::1;::::0;::::1;::::0;5884:15;;21373:8;21313:44:::1;::::0;::::1;:::i;:::-;:68;;;;:::i;:::-;21312:74;::::0;21385:1:::1;21312:74;:::i;:::-;21290:96;;21397:32;21469:11;21451:4;:14;;;21433:15;:32;;;;:::i;:::-;21432:48;;;;:::i;:::-;21397:83:::0;-1:-1:-1;21491:14:0::1;21508:42;21397:83:::0;21508:15;:42:::1;:::i;:::-;21491:59:::0;-1:-1:-1;21588:21:0::1;21622:24;21491:59:::0;21622:16:::1;:24::i;:::-;21659:20;21682:38;21706:14:::0;21682:21:::1;:38;:::i;:::-;21659:61;;21731:19;21783:4;:14;;;21769:11;:28;;;;:::i;:::-;21753:45;::::0;:12;:45:::1;:::i;:::-;21731:67;;21809:29;21855:4;:14;;;21841:11;:28;;;;:::i;:::-;21809:60:::0;-1:-1:-1;21886:25:0;;21882:160:::1;;21969:61;21982:24;22008:21;21969:12;:61::i;:::-;22095:14;::::0;::::1;::::0;22054:20:::1;::::0;22077:15:::1;:11:::0;22091:1:::1;22077:15;:::i;:::-;:32;;;;:::i;:::-;22054:55:::0;-1:-1:-1;22124:16:0;;22120:97:::1;;22165:15;::::0;22157:48:::1;::::0;-1:-1:-1;;;;;22165:15:0::1;22192:12:::0;22157:34:::1;:48::i;:::-;22272:8;::::0;::::1;::::0;22237:14:::1;::::0;22254:15:::1;:11:::0;22268:1:::1;22254:15;:::i;:::-;:26;;;;:::i;:::-;22237:43:::0;-1:-1:-1;22295:10:0;;22291:79:::1;;22330:9;::::0;22322:36:::1;::::0;-1:-1:-1;;;;;22330:9:0::1;22351:6:::0;22322:28:::1;:36::i;:::-;-1:-1:-1::0;;5922:8:0;:16;;-1:-1:-1;;5922:16:0;;;-1:-1:-1;;;;;;;;;21191:1186:0:o;19773:1410::-;-1:-1:-1;;;;;19968:26:0;;19947:17;19968:26;;;:18;:26;;;;;;;;19967:27;:74;;;;-1:-1:-1;;;;;;20012:29:0;;;;;;:18;:29;;;;;;;;20011:30;19967:74;:131;;;;;20090:8;;20074:13;;:24;;;;:::i;:::-;20058:12;:40;;19967:131;19947:151;;20111:28;20142:50;20153:7;20162;20171:6;20179:12;20142:10;:50::i;:::-;-1:-1:-1;;;;;20209:19:0;;;;;;:11;:19;;;;;;20111:81;;-1:-1:-1;20209:19:0;;20205:124;;;-1:-1:-1;;;;;20292:15:0;;;;;;:7;:15;;;;;;:25;;20310:7;;20292:25;:::i;:::-;-1:-1:-1;;;;;20274:15:0;;;;;;:7;:15;;;;;:43;20205:124;-1:-1:-1;;;;;20343:22:0;;;;;;:11;:22;;;;;;;;20339:141;;;20451:17;;;;-1:-1:-1;;;;;20430:18:0;;;;;;:7;:18;;;;;;:38;;20451:17;20430:38;:::i;:::-;-1:-1:-1;;;;;20409:18:0;;;;;;:7;:18;;;;;:59;20339:141;20528:9;;-1:-1:-1;;;;;20510:15:0;;20528:9;20510:15;;;:7;:15;;;;;;:27;;20528:9;20510:27;:::i;:::-;-1:-1:-1;;;;;20492:15:0;;;;;;;:7;:15;;;;;;;;:45;;;;20590:17;;;20569:18;;;;;;;;;;:38;;20590:17;20569:38;:::i;:::-;-1:-1:-1;;;;;20548:18:0;;;;;;:7;:18;;;;;;;:59;;;;20624:6;;;:10;;;:24;;;20647:1;20638;:6;;;:10;20624:24;20620:57;;;20650:27;20662:1;:6;;;20670:1;:6;;;20650:11;:27::i;:::-;20707:1;20692;:12;;;:16;:36;;;;20727:1;20712;:12;;;:16;20692:36;20688:266;;;20745:42;20760:1;:12;;;20774:1;:12;;;20745:14;:42::i;:::-;20867:4;-1:-1:-1;;;;;20807:135:0;20834:6;-1:-1:-1;;;;;20807:135:0;;20921:1;:6;;;20906:1;:12;;;20891:1;:12;;;:27;;;;:::i;:::-;:36;;;;:::i;:::-;20807:135;;17644:25:1;;;17632:2;17617:18;20807:135:0;;;;;;;20688:266;20983:1;20968;:12;;;:16;:36;;;;21003:1;20988;:12;;;:16;20968:36;20964:84;;;21006:42;21021:1;:12;;;21035:1;:12;;;21006:14;:42::i;:::-;21072:1;21063;:6;;;:10;:24;;;;21086:1;21077;:6;;;:10;21063:24;21059:54;;;21089:24;21098:1;:6;;;21106:1;:6;;;21089:8;:24::i;:::-;21146:9;-1:-1:-1;;;;;21129:46:0;21138:6;-1:-1:-1;;;;;21129:46:0;;21157:1;:17;;;21129:46;;;;17644:25:1;;17632:2;17617:18;;17498:177;21129:46:0;;;;;;;;19936:1247;;19773:1410;;;;;:::o;16369:564::-;16467:7;;16503;;16420;;;;;16521:300;16545:9;:16;16541:20;;16521:300;;;16611:7;16587;:21;16595:9;16605:1;16595:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16595:12:0;16587:21;;;;;;;;;;;;;:31;;:66;;;16646:7;16622;:21;16630:9;16640:1;16630:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16630:12:0;16622:21;;;;;;;;;;;;;:31;16587:66;16583:114;;;16680:7;;16689;;16672:25;;;;;;;16369:564;;:::o;16583:114::-;16732:7;:21;16740:9;16750:1;16740:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16740:12:0;16732:21;;;;;;;;;;;;;16722:31;;:7;:31;:::i;:::-;16712:41;;16788:7;:21;16796:9;16806:1;16796:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16796:12:0;16788:21;;;;;;;;;;;;;16778:31;;:7;:31;:::i;:::-;16768:41;-1:-1:-1;16563:3:0;;;;:::i;:::-;;;;16521:300;;;;16855:7;;16845;;:17;;;;:::i;:::-;16835:7;:27;16831:58;;;16872:7;;16881;;16864:25;;;;;;16369:564;;:::o;16831:58::-;16908:7;;16917;;-1:-1:-1;16369:564:0;-1:-1:-1;16369:564:0:o;14088:831::-;14237:28;;:::i;:::-;14283:7;14278:91;;14307:17;;;:27;;;14349:8;;14278:91;14379:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14379:17:0;14411:6;:23;;;;;14422:12;14421:13;14411:23;14407:124;;;-1:-1:-1;14436:16:0;;;;;;;;14443:9;14436:16;;;;;;;;;;;;;;;;;;;;;;;;14407:124;;;14473:12;14468:63;;-1:-1:-1;14487:12:0;;;;;;;;14494:5;14487:12;;;;;;;;;;;;;;;;;;;;;;;;;;;14468:63;;;-1:-1:-1;14515:16:0;;;;;;;;14522:9;14515:16;;;;;;;;;;;;;;;;;;;;;;;;14468:63;14564:8;;14576:3;;14554:18;;:7;:18;:::i;:::-;14553:26;;;;:::i;:::-;14544:6;;;:35;14616:14;;;;14634:3;;14606:24;;:7;:24;:::i;:::-;14605:32;;;;:::i;:::-;14590:12;;;:47;14674:14;;;;14692:3;;14664:24;;:7;:24;:::i;:::-;14663:32;;;;:::i;:::-;14648:12;;;:47;14726:8;;;;14738:3;;14716:18;;:7;:18;:::i;:::-;14715:26;;;;:::i;:::-;14706:6;;;:35;;;14858:12;;;;14830;;;;14808:6;;;;14785:29;;:7;:29;:::i;:::-;:57;;;;:::i;:::-;:85;;;;:::i;:::-;:107;;;;:::i;:::-;14752:17;;;:140;-1:-1:-1;14088:831:0;;;;;;:::o;14927:911::-;15137:15;;;;;15321:21;15331:11;15321:7;:21;:::i;:::-;15311:31;;15360:7;15355:75;;-1:-1:-1;15392:7:0;;-1:-1:-1;15410:1:0;;-1:-1:-1;15410:1:0;;-1:-1:-1;15410:1:0;15384:34;;15355:75;15458:11;15449:1;:6;;;:20;;;;:::i;:::-;15442:27;;15508:11;15493:1;:12;;;:26;;;;:::i;:::-;15480:39;;15558:11;15543:1;:12;;;:26;;;;:::i;:::-;15530:39;;15580:12;15604:11;15595:1;:6;;;:20;;;;:::i;:::-;15580:35;-1:-1:-1;15580:35:0;15726:10;15700;15657:27;15680:4;15657:7;:27;:::i;:::-;:53;;;;:::i;:::-;:79;;;;:::i;:::-;:99;;;;:::i;:::-;15626:130;;15767:63;14927:911;;;;;;;;;;:::o;15846:346::-;16030:12;16075:7;16070:51;;-1:-1:-1;16107:1:0;16099:10;;16070:51;16149:11;16140:1;:6;;;:20;;;;:::i;22890:562::-;23040:16;;;23054:1;23040:16;;;;;;;;23016:21;;23040:16;;;;;;;;;;-1:-1:-1;23040:16:0;23016:40;;23085:4;23067;23072:1;23067:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23067:23:0;;;:7;;;;;;;;;;:23;;;;23111:6;;:13;;;-1:-1:-1;;;23111:13:0;;;;:6;;;;;:11;;:13;;;;;23067:7;;23111:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23101:4;23106:1;23101:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23101:23:0;;;:7;;;;;;;;;:23;23169:6;;23137:53;;23154:4;;23169:6;23178:11;23137:8;:53::i;:::-;23229:6;;:215;;-1:-1:-1;;;23229:215:0;;-1:-1:-1;;;;;23229:6:0;;;;:57;;:215;;23301:11;;23229:6;;23371:4;;23398;;23418:15;;23229:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22385:497;22565:6;;22533:53;;22550:4;;-1:-1:-1;;;;;22565:6:0;22574:11;22533:8;:53::i;:::-;22629:6;;-1:-1:-1;;;;;22629:6:0;:22;22660:9;22694:4;22714:11;22629:6;;22826:7;1449;1476:6;-1:-1:-1;;;;;1476:6:0;;1403:87;22826:7;22629:245;;;;;;-1:-1:-1;;;;;;22629:245:0;;;-1:-1:-1;;;;;7470:15:1;;;22629:245:0;;;7452:34:1;7502:18;;;7495:34;;;;7545:18;;;7538:34;;;;7588:18;;;7581:34;7652:15;;;7631:19;;;7624:44;22848:15:0;7684:19:1;;;7677:35;7386:19;;22629:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22385:497;;:::o;2986:319::-;3101:6;3076:21;:31;;3068:73;;;;-1:-1:-1;;;3068:73:0;;13186:2:1;3068:73:0;;;13168:21:1;13225:2;13205:18;;;13198:30;13264:31;13244:18;;;13237:59;13313:18;;3068:73:0;12984:353:1;3068:73:0;3155:12;3173:9;-1:-1:-1;;;;;3173:14:0;3196:6;3173:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3154:54;;;3227:7;3219:78;;;;-1:-1:-1;;;3219:78:0;;12407:2:1;3219:78:0;;;12389:21:1;12446:2;12426:18;;;12419:30;12485:34;12465:18;;;12458:62;12556:28;12536:18;;;12529:56;12602:19;;3219:78:0;12205:422:1;12455:125:0;12534:4;12523:7;;:15;;;;;;;:::i;:::-;;;;-1:-1:-1;;12549:11:0;:23;;12568:4;;12549:11;:15;;:23;;12568:4;;12549:23;:::i;:::-;;;;-1:-1:-1;;;;12455:125:0:o;12588:280::-;12696:10;12671:11;:21;;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;12743:4:0;12723:26;;;;:11;:26;;;;;;;;12719:95;;;12782:4;12766:22;;;;:7;:22;;;;;:36;;12792:10;;12766:22;:36;;12792:10;;12766:36;:::i;:::-;;;;-1:-1:-1;;12719:95:0;12840:4;12824:22;;;;:7;:22;;;;;:36;;12850:10;;12824:22;:36;;12850:10;;12824:36;:::i;12876:280::-;12984:10;12959:11;:21;;;:35;;;;;;;:::i;13164:238::-;13248:4;13229:11;:15;;;:23;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:128::-;218:20;;247:28;218:20;247:28;:::i;286:247::-;345:6;398:2;386:9;377:7;373:23;369:32;366:52;;;414:1;411;404:12;366:52;453:9;440:23;472:31;497:5;472:31;:::i;538:251::-;608:6;661:2;649:9;640:7;636:23;632:32;629:52;;;677:1;674;667:12;629:52;709:9;703:16;728:31;753:5;728:31;:::i;794:388::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;978:9;965:23;997:31;1022:5;997:31;:::i;:::-;1047:5;-1:-1:-1;1104:2:1;1089:18;;1076:32;1117:33;1076:32;1117:33;:::i;:::-;1169:7;1159:17;;;794:388;;;;;:::o;1187:456::-;1264:6;1272;1280;1333:2;1321:9;1312:7;1308:23;1304:32;1301:52;;;1349:1;1346;1339:12;1301:52;1388:9;1375:23;1407:31;1432:5;1407:31;:::i;:::-;1457:5;-1:-1:-1;1514:2:1;1499:18;;1486:32;1527:33;1486:32;1527:33;:::i;:::-;1187:456;;1579:7;;-1:-1:-1;;;1633:2:1;1618:18;;;;1605:32;;1187:456::o;1648:382::-;1713:6;1721;1774:2;1762:9;1753:7;1749:23;1745:32;1742:52;;;1790:1;1787;1780:12;1742:52;1829:9;1816:23;1848:31;1873:5;1848:31;:::i;:::-;1898:5;-1:-1:-1;1955:2:1;1940:18;;1927:32;1968:30;1927:32;1968:30;:::i;2035:315::-;2103:6;2111;2164:2;2152:9;2143:7;2139:23;2135:32;2132:52;;;2180:1;2177;2170:12;2132:52;2219:9;2206:23;2238:31;2263:5;2238:31;:::i;:::-;2288:5;2340:2;2325:18;;;;2312:32;;-1:-1:-1;;;2035:315:1:o;2355:1202::-;2445:6;2453;2506:2;2494:9;2485:7;2481:23;2477:32;2474:52;;;2522:1;2519;2512:12;2474:52;2562:9;2549:23;2591:18;2632:2;2624:6;2621:14;2618:34;;;2648:1;2645;2638:12;2618:34;2686:6;2675:9;2671:22;2661:32;;2731:7;2724:4;2720:2;2716:13;2712:27;2702:55;;2753:1;2750;2743:12;2702:55;2789:2;2776:16;2811:4;2834:2;2830;2827:10;2824:36;;;2840:18;;:::i;:::-;2886:2;2883:1;2879:10;2918:2;2912:9;2981:2;2977:7;2972:2;2968;2964:11;2960:25;2952:6;2948:38;3036:6;3024:10;3021:22;3016:2;3004:10;3001:18;2998:46;2995:72;;;3047:18;;:::i;:::-;3083:2;3076:22;3133:18;;;3167:15;;;;-1:-1:-1;3202:11:1;;;3232;;;3228:20;;3225:33;-1:-1:-1;3222:53:1;;;3271:1;3268;3261:12;3222:53;3293:1;3284:10;;3303:169;3317:2;3314:1;3311:9;3303:169;;;3374:23;3393:3;3374:23;:::i;:::-;3362:36;;3335:1;3328:9;;;;;3418:12;;;;3450;;3303:169;;;-1:-1:-1;3491:6:1;-1:-1:-1;3516:35:1;;-1:-1:-1;3532:18:1;;;3516:35;:::i;:::-;3506:45;;;;;;2355:1202;;;;;:::o;3562:241::-;3618:6;3671:2;3659:9;3650:7;3646:23;3642:32;3639:52;;;3687:1;3684;3677:12;3639:52;3726:9;3713:23;3745:28;3767:5;3745:28;:::i;3808:245::-;3875:6;3928:2;3916:9;3907:7;3903:23;3899:32;3896:52;;;3944:1;3941;3934:12;3896:52;3976:9;3970:16;3995:28;4017:5;3995:28;:::i;4058:309::-;4123:6;4131;4184:2;4172:9;4163:7;4159:23;4155:32;4152:52;;;4200:1;4197;4190:12;4152:52;4239:9;4226:23;4258:28;4280:5;4258:28;:::i;4372:584::-;4473:6;4481;4489;4497;4505;4513;4566:3;4554:9;4545:7;4541:23;4537:33;4534:53;;;4583:1;4580;4573:12;4534:53;4622:9;4609:23;4641:28;4663:5;4641:28;:::i;:::-;4688:5;4740:2;4725:18;;4712:32;;-1:-1:-1;4791:2:1;4776:18;;4763:32;;4842:2;4827:18;;4814:32;;-1:-1:-1;4893:3:1;4878:19;;4865:33;;-1:-1:-1;4945:3:1;4930:19;4917:33;;-1:-1:-1;4372:584:1;-1:-1:-1;;;4372:584:1:o;4961:180::-;5020:6;5073:2;5061:9;5052:7;5048:23;5044:32;5041:52;;;5089:1;5086;5079:12;5041:52;-1:-1:-1;5112:23:1;;4961:180;-1:-1:-1;4961:180:1:o;5146:309::-;5211:6;5219;5272:2;5260:9;5251:7;5247:23;5243:32;5240:52;;;5288:1;5285;5278:12;5240:52;5324:9;5311:23;5301:33;;5384:2;5373:9;5369:18;5356:32;5397:28;5419:5;5397:28;:::i;5460:248::-;5528:6;5536;5589:2;5577:9;5568:7;5564:23;5560:32;5557:52;;;5605:1;5602;5595:12;5557:52;-1:-1:-1;;5628:23:1;;;5698:2;5683:18;;;5670:32;;-1:-1:-1;5460:248:1:o;5713:306::-;5801:6;5809;5817;5870:2;5858:9;5849:7;5845:23;5841:32;5838:52;;;5886:1;5883;5876:12;5838:52;5915:9;5909:16;5899:26;;5965:2;5954:9;5950:18;5944:25;5934:35;;6009:2;5998:9;5994:18;5988:25;5978:35;;5713:306;;;;;:::o;6024:385::-;6110:6;6118;6126;6134;6187:3;6175:9;6166:7;6162:23;6158:33;6155:53;;;6204:1;6201;6194:12;6155:53;-1:-1:-1;;6227:23:1;;;6297:2;6282:18;;6269:32;;-1:-1:-1;6348:2:1;6333:18;;6320:32;;6399:2;6384:18;6371:32;;-1:-1:-1;6024:385:1;-1:-1:-1;6024:385:1:o;8138:597::-;8250:4;8279:2;8308;8297:9;8290:21;8340:6;8334:13;8383:6;8378:2;8367:9;8363:18;8356:34;8408:1;8418:140;8432:6;8429:1;8426:13;8418:140;;;8527:14;;;8523:23;;8517:30;8493:17;;;8512:2;8489:26;8482:66;8447:10;;8418:140;;;8576:6;8573:1;8570:13;8567:91;;;8646:1;8641:2;8632:6;8621:9;8617:22;8613:31;8606:42;8567:91;-1:-1:-1;8719:2:1;8698:15;-1:-1:-1;;8694:29:1;8679:45;;;;8726:2;8675:54;;8138:597;-1:-1:-1;;;8138:597:1:o;14111:356::-;14313:2;14295:21;;;14332:18;;;14325:30;14391:34;14386:2;14371:18;;14364:62;14458:2;14443:18;;14111:356::o;17680:980::-;17942:4;17990:3;17979:9;17975:19;18021:6;18010:9;18003:25;18047:2;18085:6;18080:2;18069:9;18065:18;18058:34;18128:3;18123:2;18112:9;18108:18;18101:31;18152:6;18187;18181:13;18218:6;18210;18203:22;18256:3;18245:9;18241:19;18234:26;;18295:2;18287:6;18283:15;18269:29;;18316:1;18326:195;18340:6;18337:1;18334:13;18326:195;;;18405:13;;-1:-1:-1;;;;;18401:39:1;18389:52;;18496:15;;;;18461:12;;;;18437:1;18355:9;18326:195;;;-1:-1:-1;;;;;;;18577:32:1;;;;18572:2;18557:18;;18550:60;-1:-1:-1;;;18641:3:1;18626:19;18619:35;18538:3;17680:980;-1:-1:-1;;;17680:980:1:o;19250:128::-;19290:3;19321:1;19317:6;19314:1;19311:13;19308:39;;;19327:18;;:::i;:::-;-1:-1:-1;19363:9:1;;19250:128::o;19383:217::-;19423:1;19449;19439:132;;19493:10;19488:3;19484:20;19481:1;19474:31;19528:4;19525:1;19518:15;19556:4;19553:1;19546:15;19439:132;-1:-1:-1;19585:9:1;;19383:217::o;19605:422::-;19694:1;19737:5;19694:1;19751:270;19772:7;19762:8;19759:21;19751:270;;;19831:4;19827:1;19823:6;19819:17;19813:4;19810:27;19807:53;;;19840:18;;:::i;:::-;19890:7;19880:8;19876:22;19873:55;;;19910:16;;;;19873:55;19989:22;;;;19949:15;;;;19751:270;;;19755:3;19605:422;;;;;:::o;20032:140::-;20090:5;20119:47;20160:4;20150:8;20146:19;20140:4;20226:5;20256:8;20246:80;;-1:-1:-1;20297:1:1;20311:5;;20246:80;20345:4;20335:76;;-1:-1:-1;20382:1:1;20396:5;;20335:76;20427:4;20445:1;20440:59;;;;20513:1;20508:130;;;;20420:218;;20440:59;20470:1;20461:10;;20484:5;;;20508:130;20545:3;20535:8;20532:17;20529:43;;;20552:18;;:::i;:::-;-1:-1:-1;;20608:1:1;20594:16;;20623:5;;20420:218;;20722:2;20712:8;20709:16;20703:3;20697:4;20694:13;20690:36;20684:2;20674:8;20671:16;20666:2;20660:4;20657:12;20653:35;20650:77;20647:159;;;-1:-1:-1;20759:19:1;;;20791:5;;20647:159;20838:34;20863:8;20857:4;20838:34;:::i;:::-;20908:6;20904:1;20900:6;20896:19;20887:7;20884:32;20881:58;;;20919:18;;:::i;:::-;20957:20;;20177:806;-1:-1:-1;;;20177:806:1:o;20988:168::-;21028:7;21094:1;21090;21086:6;21082:14;21079:1;21076:21;21071:1;21064:9;21057:17;21053:45;21050:71;;;21101:18;;:::i;:::-;-1:-1:-1;21141:9:1;;20988:168::o;21161:125::-;21201:4;21229:1;21226;21223:8;21220:34;;;21234:18;;:::i;:::-;-1:-1:-1;21271:9:1;;21161:125::o;21291:135::-;21330:3;-1:-1:-1;;21351:17:1;;21348:43;;;21371:18;;:::i;:::-;-1:-1:-1;21418:1:1;21407:13;;21291:135::o;21431:127::-;21492:10;21487:3;21483:20;21480:1;21473:31;21523:4;21520:1;21513:15;21547:4;21544:1;21537:15;21563:127;21624:10;21619:3;21615:20;21612:1;21605:31;21655:4;21652:1;21645:15;21679:4;21676:1;21669:15;21695:127;21756:10;21751:3;21747:20;21744:1;21737:31;21787:4;21784:1;21777:15;21811:4;21808:1;21801:15;21827:127;21888:10;21883:3;21879:20;21876:1;21869:31;21919:4;21916:1;21909:15;21943:4;21940:1;21933:15;21959:131;-1:-1:-1;;;;;22034:31:1;;22024:42;;22014:70;;22080:1;22077;22070:12;22095:118;22181:5;22174:13;22167:21;22160:5;22157:32;22147:60;;22203:1;22200;22193:12

Swarm Source

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