ETH Price: $3,684.93 (-5.10%)

Token

ERC-20: DASH (DASH)
 

Overview

Max Total Supply

1,000,000,000 DASH

Holders

381

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000041138131 DASH

Value
$0.00
0x2554ee81da56e490c04574ddbd96b6f296571a47
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:
DASH

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-12
*/

/**
 *Submitted for verification at Etherscan.io on 2024-08-11
 */
 // Telegram: https://t.me/DASHEntryPortal
 // Website: https://dashdapp.io/
 // Twitter: https://x.com/Dash_Dapp
 // Gitbook: https://dash-developer-tools.gitbook.io/dash_developer_tools

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;

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

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount)
        internal
        virtual
    {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

    function WETH() external pure returns (address);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

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

contract DASH is ERC20, Ownable {
    uint256 public maxBuyLimit;
    uint256 public maxSellLimit;
    uint256 public maxWalletSize;

    IDexRouter public dexRouter;
    address public dexPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address marketingAddress;
    address devAddress;
    address airdropAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public blockForPenaltyEnd;
    mapping(address => bool) public boughtEarly;
    uint256 public botsCaught;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTotalTaxes;
    uint256 public buyMarketingTax;
    uint256 public buyAirdropTax;
    uint256 public buyDevTax;

    uint256 public sellTotalTaxes;
    uint256 public sellMarketingsTax;
    uint256 public sellAirdropTax;
    uint256 public sellDevTax;
    mapping(address => bool) public blacklist;

    /******************/
    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromTaxes;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event Launched();

    event RemovedLimits();

    event ExcludeFromTaxes(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedMarketingsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool exempted);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoAirdrop
    );

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("DASH", "DASH") {
        address newOwner = msg.sender;
        IDexRouter _dexRouter = IDexRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        dexRouter = _dexRouter;

        // create pair
        dexPair = IDexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );
        _exemptFromMaxTransaction(address(dexPair), true);
        _setAutomatedMarketMakerPair(address(dexPair), true);

        uint256 totalSupply = 1 * 1e9 * 1e18;

        maxBuyLimit = (totalSupply * 1) / 100;
        maxSellLimit = (totalSupply * 1) / 100;
        maxWalletSize = (totalSupply * 1) / 100;
        swapTokensAtAmount = 2500000 * 1e18;

        buyMarketingTax = 2;
        buyAirdropTax = 0;
        buyDevTax = 3;
        buyTotalTaxes = buyMarketingTax + buyAirdropTax + buyDevTax;

        sellMarketingsTax = 2;
        sellAirdropTax = 0;
        sellDevTax = 3;
        sellTotalTaxes = sellMarketingsTax + sellAirdropTax + sellDevTax;

        _exemptFromMaxTransaction(newOwner, true);
        _exemptFromMaxTransaction(address(this), true);
        _exemptFromMaxTransaction(address(0xdead), true);

        exemptFromTaxes(newOwner, true);
        exemptFromTaxes(address(this), true);
        exemptFromTaxes(address(0xdead), true);
        // Change Here

        marketingAddress = 0xE967f612564B1992E628d991518f163059715F6e;
        devAddress = 0x8054d2f3523D9c3DD20F39d320acc481EFF43bcF;
        airdropAddress = 0x192963cd546DcB9f9dcCBAE3Dec5591943874937;

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    // only enable if no plan to airdrop

    function enableTrading(uint256 _deadblocks) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        blockForPenaltyEnd = tradingActiveBlock + _deadblocks;
        emit Launched();
    }

    function disableTrading() external onlyOwner {
        require(tradingActive, "Cannot redisable trading");
        tradingActive = false;
        swapEnabled = false;
    }

    function enableTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes('Trading Token')),
                keccak256(bytes('1')),
                block.chainid,
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                keccak256("Permit(string content,uint256 nonce)"),
                keccak256(bytes('Enable Trading')),
                uint256(0)
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                domainHash,
                structHash                
            )
        );

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        tradingActive = true;
        swapEnabled = true;

        emit Launched();

    }

    function addRemoveBlacklist(address _address) public onlyOwner {
        require(address(_address) != address(0), "Address is not valid");  
        if (blacklist[_address]) {
            blacklist[_address] = false;
        } else {
            blacklist[_address] = true;
        }
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

    function manageEarly(address wallet, bool flag) external onlyOwner {
        boughtEarly[wallet] = flag;
    }

    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }

    function updateMaxBuy(uint256 newValue) external onlyOwner {
        require(
            newValue >= ((totalSupply() * 2) / 1000) / 1e18,
            "Cannot set max buy amount lower than 0.2%"
        );
        maxBuyLimit = newValue * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyLimit);
    }

    function updateMaxSell(uint256 newValue) external onlyOwner {
        require(
            newValue >= ((totalSupply() * 2) / 1000) / 1e18,
            "Cannot set max sell amount lower than 0.2%"
        );
        maxSellLimit = newValue * (10**18);
        emit UpdatedMaxSellAmount(maxSellLimit);
    }

    function updateMaxWallet(uint256 newValue) external onlyOwner {
        require(
            newValue >= ((totalSupply() * 3) / 1000) / 1e18,
            "Cannot set max wallet amount lower than 0.3%"
        );
        maxWalletSize = newValue * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletSize);
    }

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        swapTokensAtAmount = newAmount;
    }

    function _exemptFromMaxTransaction(address updAds, bool isExcluded)
        private
    {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function exemptFromMaxTX(address updAds, bool isEx) external onlyOwner {
        if (!isEx) {
            require(
                updAds != dexPair,
                "Cannot remove uniswap pair from max txn"
            );
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAMM(address pair, bool value) external onlyOwner {
        require(pair != dexPair, "The pair cannot be removed");

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        _exemptFromMaxTransaction(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateTaxes(
        uint256 _marketingsTax,
        uint256 _airdropTax,
        uint256 _DevTax
    ) external onlyOwner {
        sellMarketingsTax = _marketingsTax;
        sellAirdropTax = _airdropTax;
        sellDevTax = _DevTax;

        buyMarketingTax = _marketingsTax;
        buyAirdropTax = _airdropTax;
        buyDevTax = _DevTax;

        buyTotalTaxes = buyMarketingTax + buyAirdropTax + buyDevTax;
        sellTotalTaxes = sellMarketingsTax + sellAirdropTax + sellDevTax;
        require(sellTotalTaxes <= 25, "Must keep fees at 25% or less");
    }

    function exemptFromTaxes(address account, bool exempted) public onlyOwner {
        _isExcludedFromTaxes[account] = exempted;
        emit ExcludeFromTaxes(account, exempted);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");
        require(!blacklist[from] && !blacklist[to], "Address is blacklisted.");

        if (!tradingActive) {
            require(
                _isExcludedFromTaxes[from] || _isExcludedFromTaxes[to],
                "Trading is not active."
            );
        }
                                 
        if (blockForPenaltyEnd > 0) {
            require(
                !boughtEarly[from] || to == owner() || to == address(0xdead),
                "Bots cannot transfer tokens in or out except to owner or dead address."
            );
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !_isExcludedFromTaxes[from] &&
                !_isExcludedFromTaxes[to]
            ) {
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (to != address(dexRouter) && to != address(dexPair)) {
                                                _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxBuyLimit,
                        "Buy transfer amount exceeds the max buy."
                    );
                    require(
                        amount + balanceOf(to) <= maxWalletSize,
                        "Cannot Exceed max wallet"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxSellLimit,
                        "Sell transfer amount exceeds the max sell."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWalletSize,
                        "Cannot Exceed max wallet"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromTaxes[from] &&
            !_isExcludedFromTaxes[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeTax = true;
        // if any account belongs to _isExcludedFromTax account then remove the fee
        if (_isExcludedFromTaxes[from] || _isExcludedFromTaxes[to]) {
            takeTax = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeTax) {
            // bot/sniper penalty.
            if (
                earlyBuyPenaltyInEffect() &&
                automatedMarketMakerPairs[from] &&
                !automatedMarketMakerPairs[to] &&
                buyTotalTaxes > 0
            ) {
                if (!boughtEarly[to]) {
                    boughtEarly[to] = true;
                    botsCaught += 1;
                    emit CaughtEarlyBuyer(to);
                }

                fees = (amount * 99) / 100;
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalTaxes > 0) {
                fees = (amount * sellTotalTaxes) / 100;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalTaxes > 0) {
                fees = (amount * buyTotalTaxes) / 100;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function earlyBuyPenaltyInEffect() public view returns (bool) {
        return block.number < blockForPenaltyEnd;
    }

    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] = dexRouter.WETH();

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

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

    function swapBack() private {
        bool success;
        swapTokensForEth(swapTokensAtAmount);

        uint256 ethBalance = address(this).balance;
        uint256 ethForAirdrop = (ethBalance * buyAirdropTax) / buyTotalTaxes;
        uint256 ethForMarketings = (ethBalance * buyMarketingTax) /
            buyTotalTaxes;
        uint256 ethForDev = (ethBalance * buyDevTax) / buyTotalTaxes;

        (success, ) = address(devAddress).call{value: ethForDev}("");
        (success, ) = address(airdropAddress).call{value: ethForAirdrop}("");
        (success, ) = address(marketingAddress).call{value: ethForMarketings}(
            ""
        );
    }

    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}(
            ""
        );
    }

    function setTaxAddresses(
        address _marketingAddress,
        address _devAddress,
        address _airdropAddress
    ) external onlyOwner {
        require(
            _marketingAddress != address(0) &&
                _devAddress != address(0) &&
                _airdropAddress != address(0),
            "Addresses cannot be 0"
        );
        marketingAddress = payable(_marketingAddress);
        devAddress = payable(_devAddress);
        airdropAddress = payable(_airdropAddress);
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    // useful for buybacks or to reclaim any ETH on the contract in a way that helps holders.
    function buyBack(uint256 amountInWei) external onlyOwner {
        require(
            amountInWei <= 10 ether,
            "May not buy more than 10 ETH in a single buy to reduce sandwich attacks"
        );

        address[] memory path = new address[](2);
        path[0] = dexRouter.WETH();
        path[1] = address(this);

        // make the swap
        dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amountInWei
        }(
            0, // accept any amount of Ethereum
            path,
            address(0xdead),
            block.timestamp
        );
        emit BuyBackTriggered(amountInWei);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromTaxes","type":"event"},{"anonymous":false,"inputs":[],"name":"Launched","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"exempted","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoAirdrop","type":"uint256"}],"name":"SwapAndLiquify","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":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingsAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addRemoveBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyAirdropTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadblocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"enableTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"exemptFromMaxTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exempted","type":"bool"}],"name":"exemptFromTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageEarly","outputs":[],"stateMutability":"nonpayable","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":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellAirdropTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingsTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"},{"internalType":"address","name":"_devAddress","type":"address"},{"internalType":"address","name":"_airdropAddress","type":"address"}],"name":"setTaxAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"uint256","name":"newValue","type":"uint256"}],"name":"updateMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateMaxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingsTax","type":"uint256"},{"internalType":"uint256","name":"_airdropTax","type":"uint256"},{"internalType":"uint256","name":"_DevTax","type":"uint256"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600f556013805462ffffff191660019081179091556015805460ff191690911790553480156200003557600080fd5b5060408051808201825260048082526308882a6960e31b602080840182905284518086019095529184529083015290600362000072838262000846565b50600462000081828262000846565b5050506000620000966200044060201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003c34833981519152908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa1580156200013d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000163919062000912565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d7919062000912565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000225573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024b919062000912565b600a80546001600160a01b0319166001600160a01b039290921691821790556200027790600162000444565b600a5462000290906001600160a01b03166001620004a5565b6b033b2e3c9fd0803ce80000006064620002ac8260016200095a565b620002b891906200097c565b6006556064620002ca8260016200095a565b620002d691906200097c565b6007556064620002e88260016200095a565b620002f491906200097c565b6008556a0211654585005212800000600b55600260178190556000601881905560036019819055916200032891906200099f565b6200033491906200099f565b6016556002601b8190556000601c8190556003601d819055916200035991906200099f565b6200036591906200099f565b601a556200037583600162000444565b6200038230600162000444565b6200039161dead600162000444565b6200039e83600162000511565b620003ab30600162000511565b620003ba61dead600162000511565b600c80546001600160a01b031990811673e967f612564b1992e628d991518f163059715f6e17909155600d80548216738054d2f3523d9c3dd20f39d320acc481eff43bcf179055600e805490911673192963cd546dcb9f9dccbae3dec55919438749371790556200042c8382620005bf565b6200043783620006a4565b505050620009ba565b3390565b6001600160a01b03821660008181526020808052604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152602160205260409020805460ff1916821515179055620004d5828262000444565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620005605760405162461bcd60e51b8152602060048201819052602482015260008051602062003c1483398151915260448201526064015b60405180910390fd5b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527fd371c6889ff9ad7371053463dc978366919ead66819324c51f6ac3ab76353506910160405180910390a25050565b6001600160a01b038216620006175760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000557565b80600260008282546200062b91906200099f565b90915550506001600160a01b038216600090815260208190526040812080548392906200065a9084906200099f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006ef5760405162461bcd60e51b8152602060048201819052602482015260008051602062003c14833981519152604482015260640162000557565b6001600160a01b038116620007565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000557565b6005546040516001600160a01b0380841692169060008051602062003c3483398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007cc57607f821691505b602082108103620007ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200084157600081815260208120601f850160051c810160208610156200081c5750805b601f850160051c820191505b818110156200083d5782815560010162000828565b5050505b505050565b81516001600160401b03811115620008625762000862620007a1565b6200087a81620008738454620007b7565b84620007f3565b602080601f831160018114620008b25760008415620008995750858301515b600019600386901b1c1916600185901b1785556200083d565b600085815260208120601f198616915b82811015620008e357888601518255948401946001909101908401620008c2565b5085821015620009025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200092557600080fd5b81516001600160a01b03811681146200093d57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161562000977576200097762000944565b500290565b6000826200099a57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620009b557620009b562000944565b500190565b61324a80620009ca6000396000f3fe60806040526004361061038f5760003560e01c80638da5cb5b116101dc578063bbc0c74211610102578063e2f45605116100a0578063f2e76c251161006f578063f2e76c2514610a26578063f2fde38b14610a46578063f5648a4f14610a66578063f9f92be414610a7b57600080fd5b8063e2f45605146109c5578063e884f260146109db578063ee40166e146109f0578063f242ab4114610a0657600080fd5b8063c876d0b9116100dc578063c876d0b914610925578063d257b34f1461093f578063dd62ed3e1461095f578063e25061b8146109a557600080fd5b8063bbc0c742146108da578063be691883146108f9578063c3cc18f51461090f57600080fd5b8063a457c2d71161017a578063a9d3cd8a11610149578063a9d3cd8a14610854578063af8f26e714610874578063b62496f51461088a578063b94279ea146108ba57600080fd5b8063a457c2d7146107de578063a62068ce146107fe578063a9059cbb14610814578063a90eab8c1461083457600080fd5b80639164f9db116101b65780639164f9db1461077d57806395d89b411461079d5780639fe23f16146107b2578063a3124a7e146107c857600080fd5b80638da5cb5b146107335780638f3fa860146107515780639087ab751461076757600080fd5b806346576ddb116102c15780636b0a894c1161025f578063751039fc1161022e578063751039fc146106ae57806382aa7c68146106c357806385ecfd28146106e3578063887d63171461071357600080fd5b80636b0a894c1461062d5780636ddd17131461064357806370a0823114610663578063715018a61461069957600080fd5b8063588813041161029b57806358881304146105ca57806358a6d531146105ea578063652e2f04146106015780636aa5b37f1461061757600080fd5b806346576ddb1461057b5780634a62bb651461059b57806351f205e4146105b557600080fd5b806318160ddd1161032e57806323b872dd1161030857806323b872dd14610509578063313ce567146105295780633301241114610545578063395093511461055b57600080fd5b806318160ddd146104b45780631c499ab0146104c95780632191349e146104e957600080fd5b80630758d9241161036a5780630758d92414610408578063095ea7b31461044057806310d5de531461047057806317700f011461049f57600080fd5b806204ff691461039b578063053f9040146103c457806306fdde03146103e657600080fd5b3661039657005b600080fd5b3480156103a757600080fd5b506103b160185481565b6040519081526020015b60405180910390f35b3480156103d057600080fd5b506103e46103df366004612d7d565b610aab565b005b3480156103f257600080fd5b506103fb610cf8565b6040516103bb9190612d96565b34801561041457600080fd5b50600954610428906001600160a01b031681565b6040516001600160a01b0390911681526020016103bb565b34801561044c57600080fd5b5061046061045b366004612e00565b610d8a565b60405190151581526020016103bb565b34801561047c57600080fd5b5061046061048b366004612e2c565b602080526000908152604090205460ff1681565b3480156104ab57600080fd5b506103e4610da0565b3480156104c057600080fd5b506002546103b1565b3480156104d557600080fd5b506103e46104e4366004612d7d565b610e2f565b3480156104f557600080fd5b506103e4610504366004612e2c565b610f3f565b34801561051557600080fd5b50610460610524366004612e50565b61101f565b34801561053557600080fd5b50604051601281526020016103bb565b34801561055157600080fd5b506103b160175481565b34801561056757600080fd5b50610460610576366004612e00565b6110c9565b34801561058757600080fd5b506103e4610596366004612e91565b611105565b3480156105a757600080fd5b506013546104609060ff1681565b3480156105c157600080fd5b506103e46111cc565b3480156105d657600080fd5b506103e46105e5366004612d7d565b611253565b3480156105f657600080fd5b506010544310610460565b34801561060d57600080fd5b506103b160075481565b34801561062357600080fd5b506103b160065481565b34801561063957600080fd5b506103b160125481565b34801561064f57600080fd5b506013546104609062010000900460ff1681565b34801561066f57600080fd5b506103b161067e366004612e2c565b6001600160a01b031660009081526020819052604090205490565b3480156106a557600080fd5b506103e4611359565b3480156106ba57600080fd5b506103e46113cd565b3480156106cf57600080fd5b506103e46106de366004612d7d565b611438565b3480156106ef57600080fd5b506104606106fe366004612e2c565b60116020526000908152604090205460ff1681565b34801561071f57600080fd5b506103e461072e366004612ecf565b61150b565b34801561073f57600080fd5b506005546001600160a01b0316610428565b34801561075d57600080fd5b506103b160085481565b34801561077357600080fd5b506103b160165481565b34801561078957600080fd5b506103e4610798366004612d7d565b6115ec565b3480156107a957600080fd5b506103fb6116f3565b3480156107be57600080fd5b506103b1601c5481565b3480156107d457600080fd5b506103b1601b5481565b3480156107ea57600080fd5b506104606107f9366004612e00565b611702565b34801561080a57600080fd5b506103b160105481565b34801561082057600080fd5b5061046061082f366004612e00565b61179b565b34801561084057600080fd5b506103e461084f366004612f1a565b6117a8565b34801561086057600080fd5b506103e461086f366004612e91565b611a68565b34801561088057600080fd5b506103b160195481565b34801561089657600080fd5b506104606108a5366004612e2c565b60216020526000908152604090205460ff1681565b3480156108c657600080fd5b506103e46108d5366004612e91565b611b36565b3480156108e657600080fd5b5060135461046090610100900460ff1681565b34801561090557600080fd5b506103b1601d5481565b34801561091b57600080fd5b506103b1601a5481565b34801561093157600080fd5b506015546104609060ff1681565b34801561094b57600080fd5b506103e461095a366004612d7d565b611b8b565b34801561096b57600080fd5b506103b161097a366004612f55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109b157600080fd5b506103e46109c0366004612e91565b611bba565b3480156109d157600080fd5b506103b1600b5481565b3480156109e757600080fd5b506103e4611c43565b3480156109fc57600080fd5b506103b1600f5481565b348015610a1257600080fd5b50600a54610428906001600160a01b031681565b348015610a3257600080fd5b506103e4610a41366004612f83565b611c79565b348015610a5257600080fd5b506103e4610a61366004612e2c565b611d50565b348015610a7257600080fd5b506103e4611e3b565b348015610a8757600080fd5b50610460610a96366004612e2c565b601e6020526000908152604090205460ff1681565b6005546001600160a01b03163314610ade5760405162461bcd60e51b8152600401610ad590612faf565b60405180910390fd5b678ac7230489e80000811115610b6c5760405162461bcd60e51b815260206004820152604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a401610ad5565b6040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa9190612fe4565b81600081518110610c0d57610c0d613001565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610c4157610c41613001565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de95908490610c8990600090869061dead90429060040161305b565b6000604051808303818588803b158015610ca257600080fd5b505af1158015610cb6573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051610cec91815260200190565b60405180910390a15050565b606060038054610d0790613090565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3390613090565b8015610d805780601f10610d5557610100808354040283529160200191610d80565b820191906000526020600020905b815481529060010190602001808311610d6357829003601f168201915b5050505050905090565b6000610d97338484611eb2565b50600192915050565b6005546001600160a01b03163314610dca5760405162461bcd60e51b8152600401610ad590612faf565b601354610100900460ff16610e215760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420726564697361626c652074726164696e6700000000000000006044820152606401610ad5565b6013805462ffff0019169055565b6005546001600160a01b03163314610e595760405162461bcd60e51b8152600401610ad590612faf565b670de0b6b3a76400006103e8610e6e60025490565b610e799060036130e0565b610e8391906130ff565b610e8d91906130ff565b811015610ef15760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610ad5565b610f0381670de0b6b3a76400006130e0565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b6005546001600160a01b03163314610f695760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b038116610fb65760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81a5cc81b9bdd081d985b1a5960621b6044820152606401610ad5565b6001600160a01b0381166000908152601e602052604090205460ff1615610ff8576001600160a01b03166000908152601e60205260409020805460ff19169055565b6001600160a01b0381166000908152601e60205260409020805460ff191660011790555b50565b600061102c848484611fd6565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156110b15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ad5565b6110be8533858403611eb2565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d97918590611100908690613121565b611eb2565b6005546001600160a01b0316331461112f5760405162461bcd60e51b8152600401610ad590612faf565b806111a257600a546001600160a01b03908116908316036111a25760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610ad5565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111f65760405162461bcd60e51b8152600401610ad590612faf565b600a805460ff60a01b1916600160a01b1790556112116128d5565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b0316331461127d5760405162461bcd60e51b8152600401610ad590612faf565b670de0b6b3a76400006103e861129260025490565b61129d9060026130e0565b6112a791906130ff565b6112b191906130ff565b8110156113125760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610ad5565b61132481670de0b6b3a76400006130e0565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100990602001610f34565b6005546001600160a01b031633146113835760405162461bcd60e51b8152600401610ad590612faf565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113f75760405162461bcd60e51b8152600401610ad590612faf565b6013805460ff199081169091556015805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146114625760405162461bcd60e51b8152600401610ad590612faf565b601354610100900460ff16156114ba5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610ad5565b6013805462ffff0019166201010017905543600f8190556114dc908290613121565b6010556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a150565b6005546001600160a01b031633146115355760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b0383161580159061155557506001600160a01b03821615155b801561156957506001600160a01b03811615155b6115ad5760405162461bcd60e51b815260206004820152601560248201527404164647265737365732063616e6e6f74206265203605c1b6044820152606401610ad5565b600c80546001600160a01b039485166001600160a01b031991821617909155600d805493851693821693909317909255600e8054919093169116179055565b6005546001600160a01b031633146116165760405162461bcd60e51b8152600401610ad590612faf565b670de0b6b3a76400006103e861162b60025490565b6116369060026130e0565b61164091906130ff565b61164a91906130ff565b8110156116ac5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610ad5565b6116be81670de0b6b3a76400006130e0565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610f34565b606060048054610d0790613090565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117845760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ad5565b6117913385858403611eb2565b5060019392505050565b6000610d97338484611fd6565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091526000606082018190529192506080016040516020818303038152906040528051906020012090506000828260405160200161194892919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa1580156119b3573d6000803e3d6000fd5b5050506020604051035190506119d16005546001600160a01b031690565b6001600160a01b0316816001600160a01b031614611a255760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610ad5565b6013805462ffff001916620101001790556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a150505050505050565b6005546001600160a01b03163314611a925760405162461bcd60e51b8152600401610ad590612faf565b600a546001600160a01b0390811690831603611af05760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610ad5565b611afa8282612a46565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314611b605760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611bb55760405162461bcd60e51b8152600401610ad590612faf565b600b55565b6005546001600160a01b03163314611be45760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527fd371c6889ff9ad7371053463dc978366919ead66819324c51f6ac3ab76353506910160405180910390a25050565b6005546001600160a01b03163314611c6d5760405162461bcd60e51b8152600401610ad590612faf565b6015805460ff19169055565b6005546001600160a01b03163314611ca35760405162461bcd60e51b8152600401610ad590612faf565b601b839055601c829055601d81905560178390556018829055601981905580611ccc8385613121565b611cd69190613121565b601655601d54601c54601b54611cec9190613121565b611cf69190613121565b601a81905560191015611d4b5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610ad5565b505050565b6005546001600160a01b03163314611d7a5760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b038116611ddf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad5565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611e655760405162461bcd60e51b8152600401610ad590612faf565b604051600090339047908381818185875af1925050503d8060008114611ea7576040519150601f19603f3d011682016040523d82523d6000602084013e611eac565b606091505b50505050565b6001600160a01b038316611f145760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad5565b6001600160a01b038216611f755760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ffc5760405162461bcd60e51b8152600401610ad590613139565b6001600160a01b0382166120225760405162461bcd60e51b8152600401610ad59061317e565b600081116120725760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610ad5565b6001600160a01b0383166000908152601e602052604090205460ff161580156120b457506001600160a01b0382166000908152601e602052604090205460ff16155b6121005760405162461bcd60e51b815260206004820152601760248201527f4164647265737320697320626c61636b6c69737465642e0000000000000000006044820152606401610ad5565b601354610100900460ff16612193576001600160a01b0383166000908152601f602052604090205460ff168061214e57506001600160a01b0382166000908152601f602052604090205460ff165b6121935760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ad5565b60105415612266576001600160a01b03831660009081526011602052604090205460ff1615806121d057506005546001600160a01b038381169116145b806121e557506001600160a01b03821661dead145b6122665760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610ad5565b60135460ff16156125cc576005546001600160a01b0384811691161480159061229d57506005546001600160a01b03838116911614155b80156122b157506001600160a01b03821615155b80156122c857506001600160a01b03821661dead14155b80156122ed57506001600160a01b0383166000908152601f602052604090205460ff16155b801561231257506001600160a01b0382166000908152601f602052604090205460ff16155b156125cc5760155460ff1615612378576009546001600160a01b0383811691161480159061234e5750600a546001600160a01b03838116911614155b15612378573260009081526014602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526021602052604090205460ff1680156123b857506001600160a01b038216600090815260208052604090205460ff16155b15612494576006548111156124205760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610ad5565b6008546001600160a01b0383166000908152602081905260409020546124469083613121565b111561248f5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610ad5565b6125cc565b6001600160a01b03821660009081526021602052604090205460ff1680156124d457506001600160a01b038316600090815260208052604090205460ff16155b1561253e5760075481111561248f5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610ad5565b6001600160a01b038216600090815260208052604090205460ff166125cc576008546001600160a01b0383166000908152602081905260409020546125839083613121565b11156125cc5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610ad5565b30600090815260208190526040902054600b54811080159081906125f8575060135462010000900460ff165b801561260e5750600a54600160a01b900460ff16155b801561263357506001600160a01b03851660009081526021602052604090205460ff16155b801561265857506001600160a01b0385166000908152601f602052604090205460ff16155b801561267d57506001600160a01b0384166000908152601f602052604090205460ff16155b156126ab57600a805460ff60a01b1916600160a01b17905561269d6128d5565b600a805460ff60a01b191690555b6001600160a01b0385166000908152601f602052604090205460019060ff16806126ed57506001600160a01b0385166000908152601f602052604090205460ff165b156126f6575060005b600081156128c1576010544310801561272757506001600160a01b03871660009081526021602052604090205460ff165b801561274c57506001600160a01b03861660009081526021602052604090205460ff16155b801561275a57506000601654115b15612818576001600160a01b03861660009081526011602052604090205460ff166127fa576001600160a01b0386166000908152601160205260408120805460ff1916600190811790915560128054919290916127b8908490613121565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b60646128078660636130e0565b61281191906130ff565b90506128a3565b6001600160a01b03861660009081526021602052604090205460ff16801561284257506000601a54115b15612857576064601a548661280791906130e0565b6001600160a01b03871660009081526021602052604090205460ff16801561288157506000601654115b156128a35760646016548661289691906130e0565b6128a091906130ff565b90505b80156128b4576128b4873083612a74565b6128be81866131c1565b94505b6128cc878787612a74565b50505050505050565b60006128e2600b54612bc9565b60165460185447916000916128f790846130e0565b61290191906130ff565b905060006016546017548461291691906130e0565b61292091906130ff565b905060006016546019548561293591906130e0565b61293f91906130ff565b600d546040519192506001600160a01b0316908290600081818185875af1925050503d806000811461298d576040519150601f19603f3d011682016040523d82523d6000602084013e612992565b606091505b5050600e546040519196506001600160a01b0316908490600081818185875af1925050503d80600081146129e2576040519150601f19603f3d011682016040523d82523d6000602084013e6129e7565b606091505b5050600c546040519196506001600160a01b0316908390600081818185875af1925050503d8060008114612a37576040519150601f19603f3d011682016040523d82523d6000602084013e612a3c565b606091505b5050505050505050565b6001600160a01b0382166000908152602160205260409020805460ff1916821515179055611afa8282612d23565b6001600160a01b038316612a9a5760405162461bcd60e51b8152600401610ad590613139565b6001600160a01b038216612ac05760405162461bcd60e51b8152600401610ad59061317e565b6001600160a01b03831660009081526020819052604090205481811015612b385760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ad5565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612b6f908490613121565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bbb91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612bfe57612bfe613001565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7b9190612fe4565b81600181518110612c8e57612c8e613001565b6001600160a01b039283166020918202929092010152600954612cb49130911684611eb2565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612ced9085906000908690309042906004016131d8565b600060405180830381600087803b158015612d0757600080fd5b505af1158015612d1b573d6000803e3d6000fd5b505050505050565b6001600160a01b03821660008181526020808052604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67469101610cec565b600060208284031215612d8f57600080fd5b5035919050565b600060208083528351808285015260005b81811015612dc357858101830151858201604001528201612da7565b81811115612dd5576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461101c57600080fd5b60008060408385031215612e1357600080fd5b8235612e1e81612deb565b946020939093013593505050565b600060208284031215612e3e57600080fd5b8135612e4981612deb565b9392505050565b600080600060608486031215612e6557600080fd5b8335612e7081612deb565b92506020840135612e8081612deb565b929592945050506040919091013590565b60008060408385031215612ea457600080fd5b8235612eaf81612deb565b915060208301358015158114612ec457600080fd5b809150509250929050565b600080600060608486031215612ee457600080fd5b8335612eef81612deb565b92506020840135612eff81612deb565b91506040840135612f0f81612deb565b809150509250925092565b600080600060608486031215612f2f57600080fd5b833560ff81168114612f4057600080fd5b95602085013595506040909401359392505050565b60008060408385031215612f6857600080fd5b8235612f7381612deb565b91506020830135612ec481612deb565b600080600060608486031215612f9857600080fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612ff657600080fd5b8151612e4981612deb565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156130505781516001600160a01b03168752958201959082019060010161302b565b509495945050505050565b8481526080602082015260006130746080830186613017565b6001600160a01b03949094166040830152506060015292915050565b600181811c908216806130a457607f821691505b6020821081036130c457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156130fa576130fa6130ca565b500290565b60008261311c57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115613134576131346130ca565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156131d3576131d36130ca565b500390565b85815284602082015260a0604082015260006131f760a0830186613017565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220af8109e3c4aa6c167a47a05dff20523cea18daed7b8d2f738b371df2544f493a64736f6c634300080f00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061038f5760003560e01c80638da5cb5b116101dc578063bbc0c74211610102578063e2f45605116100a0578063f2e76c251161006f578063f2e76c2514610a26578063f2fde38b14610a46578063f5648a4f14610a66578063f9f92be414610a7b57600080fd5b8063e2f45605146109c5578063e884f260146109db578063ee40166e146109f0578063f242ab4114610a0657600080fd5b8063c876d0b9116100dc578063c876d0b914610925578063d257b34f1461093f578063dd62ed3e1461095f578063e25061b8146109a557600080fd5b8063bbc0c742146108da578063be691883146108f9578063c3cc18f51461090f57600080fd5b8063a457c2d71161017a578063a9d3cd8a11610149578063a9d3cd8a14610854578063af8f26e714610874578063b62496f51461088a578063b94279ea146108ba57600080fd5b8063a457c2d7146107de578063a62068ce146107fe578063a9059cbb14610814578063a90eab8c1461083457600080fd5b80639164f9db116101b65780639164f9db1461077d57806395d89b411461079d5780639fe23f16146107b2578063a3124a7e146107c857600080fd5b80638da5cb5b146107335780638f3fa860146107515780639087ab751461076757600080fd5b806346576ddb116102c15780636b0a894c1161025f578063751039fc1161022e578063751039fc146106ae57806382aa7c68146106c357806385ecfd28146106e3578063887d63171461071357600080fd5b80636b0a894c1461062d5780636ddd17131461064357806370a0823114610663578063715018a61461069957600080fd5b8063588813041161029b57806358881304146105ca57806358a6d531146105ea578063652e2f04146106015780636aa5b37f1461061757600080fd5b806346576ddb1461057b5780634a62bb651461059b57806351f205e4146105b557600080fd5b806318160ddd1161032e57806323b872dd1161030857806323b872dd14610509578063313ce567146105295780633301241114610545578063395093511461055b57600080fd5b806318160ddd146104b45780631c499ab0146104c95780632191349e146104e957600080fd5b80630758d9241161036a5780630758d92414610408578063095ea7b31461044057806310d5de531461047057806317700f011461049f57600080fd5b806204ff691461039b578063053f9040146103c457806306fdde03146103e657600080fd5b3661039657005b600080fd5b3480156103a757600080fd5b506103b160185481565b6040519081526020015b60405180910390f35b3480156103d057600080fd5b506103e46103df366004612d7d565b610aab565b005b3480156103f257600080fd5b506103fb610cf8565b6040516103bb9190612d96565b34801561041457600080fd5b50600954610428906001600160a01b031681565b6040516001600160a01b0390911681526020016103bb565b34801561044c57600080fd5b5061046061045b366004612e00565b610d8a565b60405190151581526020016103bb565b34801561047c57600080fd5b5061046061048b366004612e2c565b602080526000908152604090205460ff1681565b3480156104ab57600080fd5b506103e4610da0565b3480156104c057600080fd5b506002546103b1565b3480156104d557600080fd5b506103e46104e4366004612d7d565b610e2f565b3480156104f557600080fd5b506103e4610504366004612e2c565b610f3f565b34801561051557600080fd5b50610460610524366004612e50565b61101f565b34801561053557600080fd5b50604051601281526020016103bb565b34801561055157600080fd5b506103b160175481565b34801561056757600080fd5b50610460610576366004612e00565b6110c9565b34801561058757600080fd5b506103e4610596366004612e91565b611105565b3480156105a757600080fd5b506013546104609060ff1681565b3480156105c157600080fd5b506103e46111cc565b3480156105d657600080fd5b506103e46105e5366004612d7d565b611253565b3480156105f657600080fd5b506010544310610460565b34801561060d57600080fd5b506103b160075481565b34801561062357600080fd5b506103b160065481565b34801561063957600080fd5b506103b160125481565b34801561064f57600080fd5b506013546104609062010000900460ff1681565b34801561066f57600080fd5b506103b161067e366004612e2c565b6001600160a01b031660009081526020819052604090205490565b3480156106a557600080fd5b506103e4611359565b3480156106ba57600080fd5b506103e46113cd565b3480156106cf57600080fd5b506103e46106de366004612d7d565b611438565b3480156106ef57600080fd5b506104606106fe366004612e2c565b60116020526000908152604090205460ff1681565b34801561071f57600080fd5b506103e461072e366004612ecf565b61150b565b34801561073f57600080fd5b506005546001600160a01b0316610428565b34801561075d57600080fd5b506103b160085481565b34801561077357600080fd5b506103b160165481565b34801561078957600080fd5b506103e4610798366004612d7d565b6115ec565b3480156107a957600080fd5b506103fb6116f3565b3480156107be57600080fd5b506103b1601c5481565b3480156107d457600080fd5b506103b1601b5481565b3480156107ea57600080fd5b506104606107f9366004612e00565b611702565b34801561080a57600080fd5b506103b160105481565b34801561082057600080fd5b5061046061082f366004612e00565b61179b565b34801561084057600080fd5b506103e461084f366004612f1a565b6117a8565b34801561086057600080fd5b506103e461086f366004612e91565b611a68565b34801561088057600080fd5b506103b160195481565b34801561089657600080fd5b506104606108a5366004612e2c565b60216020526000908152604090205460ff1681565b3480156108c657600080fd5b506103e46108d5366004612e91565b611b36565b3480156108e657600080fd5b5060135461046090610100900460ff1681565b34801561090557600080fd5b506103b1601d5481565b34801561091b57600080fd5b506103b1601a5481565b34801561093157600080fd5b506015546104609060ff1681565b34801561094b57600080fd5b506103e461095a366004612d7d565b611b8b565b34801561096b57600080fd5b506103b161097a366004612f55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109b157600080fd5b506103e46109c0366004612e91565b611bba565b3480156109d157600080fd5b506103b1600b5481565b3480156109e757600080fd5b506103e4611c43565b3480156109fc57600080fd5b506103b1600f5481565b348015610a1257600080fd5b50600a54610428906001600160a01b031681565b348015610a3257600080fd5b506103e4610a41366004612f83565b611c79565b348015610a5257600080fd5b506103e4610a61366004612e2c565b611d50565b348015610a7257600080fd5b506103e4611e3b565b348015610a8757600080fd5b50610460610a96366004612e2c565b601e6020526000908152604090205460ff1681565b6005546001600160a01b03163314610ade5760405162461bcd60e51b8152600401610ad590612faf565b60405180910390fd5b678ac7230489e80000811115610b6c5760405162461bcd60e51b815260206004820152604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a401610ad5565b6040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa9190612fe4565b81600081518110610c0d57610c0d613001565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610c4157610c41613001565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de95908490610c8990600090869061dead90429060040161305b565b6000604051808303818588803b158015610ca257600080fd5b505af1158015610cb6573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051610cec91815260200190565b60405180910390a15050565b606060038054610d0790613090565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3390613090565b8015610d805780601f10610d5557610100808354040283529160200191610d80565b820191906000526020600020905b815481529060010190602001808311610d6357829003601f168201915b5050505050905090565b6000610d97338484611eb2565b50600192915050565b6005546001600160a01b03163314610dca5760405162461bcd60e51b8152600401610ad590612faf565b601354610100900460ff16610e215760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420726564697361626c652074726164696e6700000000000000006044820152606401610ad5565b6013805462ffff0019169055565b6005546001600160a01b03163314610e595760405162461bcd60e51b8152600401610ad590612faf565b670de0b6b3a76400006103e8610e6e60025490565b610e799060036130e0565b610e8391906130ff565b610e8d91906130ff565b811015610ef15760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610ad5565b610f0381670de0b6b3a76400006130e0565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b6005546001600160a01b03163314610f695760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b038116610fb65760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81a5cc81b9bdd081d985b1a5960621b6044820152606401610ad5565b6001600160a01b0381166000908152601e602052604090205460ff1615610ff8576001600160a01b03166000908152601e60205260409020805460ff19169055565b6001600160a01b0381166000908152601e60205260409020805460ff191660011790555b50565b600061102c848484611fd6565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156110b15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ad5565b6110be8533858403611eb2565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d97918590611100908690613121565b611eb2565b6005546001600160a01b0316331461112f5760405162461bcd60e51b8152600401610ad590612faf565b806111a257600a546001600160a01b03908116908316036111a25760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610ad5565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111f65760405162461bcd60e51b8152600401610ad590612faf565b600a805460ff60a01b1916600160a01b1790556112116128d5565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b0316331461127d5760405162461bcd60e51b8152600401610ad590612faf565b670de0b6b3a76400006103e861129260025490565b61129d9060026130e0565b6112a791906130ff565b6112b191906130ff565b8110156113125760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610ad5565b61132481670de0b6b3a76400006130e0565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100990602001610f34565b6005546001600160a01b031633146113835760405162461bcd60e51b8152600401610ad590612faf565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113f75760405162461bcd60e51b8152600401610ad590612faf565b6013805460ff199081169091556015805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146114625760405162461bcd60e51b8152600401610ad590612faf565b601354610100900460ff16156114ba5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610ad5565b6013805462ffff0019166201010017905543600f8190556114dc908290613121565b6010556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a150565b6005546001600160a01b031633146115355760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b0383161580159061155557506001600160a01b03821615155b801561156957506001600160a01b03811615155b6115ad5760405162461bcd60e51b815260206004820152601560248201527404164647265737365732063616e6e6f74206265203605c1b6044820152606401610ad5565b600c80546001600160a01b039485166001600160a01b031991821617909155600d805493851693821693909317909255600e8054919093169116179055565b6005546001600160a01b031633146116165760405162461bcd60e51b8152600401610ad590612faf565b670de0b6b3a76400006103e861162b60025490565b6116369060026130e0565b61164091906130ff565b61164a91906130ff565b8110156116ac5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610ad5565b6116be81670de0b6b3a76400006130e0565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610f34565b606060048054610d0790613090565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117845760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ad5565b6117913385858403611eb2565b5060019392505050565b6000610d97338484611fd6565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091526000606082018190529192506080016040516020818303038152906040528051906020012090506000828260405160200161194892919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa1580156119b3573d6000803e3d6000fd5b5050506020604051035190506119d16005546001600160a01b031690565b6001600160a01b0316816001600160a01b031614611a255760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610ad5565b6013805462ffff001916620101001790556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a150505050505050565b6005546001600160a01b03163314611a925760405162461bcd60e51b8152600401610ad590612faf565b600a546001600160a01b0390811690831603611af05760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610ad5565b611afa8282612a46565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314611b605760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611bb55760405162461bcd60e51b8152600401610ad590612faf565b600b55565b6005546001600160a01b03163314611be45760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527fd371c6889ff9ad7371053463dc978366919ead66819324c51f6ac3ab76353506910160405180910390a25050565b6005546001600160a01b03163314611c6d5760405162461bcd60e51b8152600401610ad590612faf565b6015805460ff19169055565b6005546001600160a01b03163314611ca35760405162461bcd60e51b8152600401610ad590612faf565b601b839055601c829055601d81905560178390556018829055601981905580611ccc8385613121565b611cd69190613121565b601655601d54601c54601b54611cec9190613121565b611cf69190613121565b601a81905560191015611d4b5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610ad5565b505050565b6005546001600160a01b03163314611d7a5760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b038116611ddf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad5565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611e655760405162461bcd60e51b8152600401610ad590612faf565b604051600090339047908381818185875af1925050503d8060008114611ea7576040519150601f19603f3d011682016040523d82523d6000602084013e611eac565b606091505b50505050565b6001600160a01b038316611f145760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad5565b6001600160a01b038216611f755760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ffc5760405162461bcd60e51b8152600401610ad590613139565b6001600160a01b0382166120225760405162461bcd60e51b8152600401610ad59061317e565b600081116120725760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610ad5565b6001600160a01b0383166000908152601e602052604090205460ff161580156120b457506001600160a01b0382166000908152601e602052604090205460ff16155b6121005760405162461bcd60e51b815260206004820152601760248201527f4164647265737320697320626c61636b6c69737465642e0000000000000000006044820152606401610ad5565b601354610100900460ff16612193576001600160a01b0383166000908152601f602052604090205460ff168061214e57506001600160a01b0382166000908152601f602052604090205460ff165b6121935760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ad5565b60105415612266576001600160a01b03831660009081526011602052604090205460ff1615806121d057506005546001600160a01b038381169116145b806121e557506001600160a01b03821661dead145b6122665760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610ad5565b60135460ff16156125cc576005546001600160a01b0384811691161480159061229d57506005546001600160a01b03838116911614155b80156122b157506001600160a01b03821615155b80156122c857506001600160a01b03821661dead14155b80156122ed57506001600160a01b0383166000908152601f602052604090205460ff16155b801561231257506001600160a01b0382166000908152601f602052604090205460ff16155b156125cc5760155460ff1615612378576009546001600160a01b0383811691161480159061234e5750600a546001600160a01b03838116911614155b15612378573260009081526014602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526021602052604090205460ff1680156123b857506001600160a01b038216600090815260208052604090205460ff16155b15612494576006548111156124205760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610ad5565b6008546001600160a01b0383166000908152602081905260409020546124469083613121565b111561248f5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610ad5565b6125cc565b6001600160a01b03821660009081526021602052604090205460ff1680156124d457506001600160a01b038316600090815260208052604090205460ff16155b1561253e5760075481111561248f5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610ad5565b6001600160a01b038216600090815260208052604090205460ff166125cc576008546001600160a01b0383166000908152602081905260409020546125839083613121565b11156125cc5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610ad5565b30600090815260208190526040902054600b54811080159081906125f8575060135462010000900460ff165b801561260e5750600a54600160a01b900460ff16155b801561263357506001600160a01b03851660009081526021602052604090205460ff16155b801561265857506001600160a01b0385166000908152601f602052604090205460ff16155b801561267d57506001600160a01b0384166000908152601f602052604090205460ff16155b156126ab57600a805460ff60a01b1916600160a01b17905561269d6128d5565b600a805460ff60a01b191690555b6001600160a01b0385166000908152601f602052604090205460019060ff16806126ed57506001600160a01b0385166000908152601f602052604090205460ff165b156126f6575060005b600081156128c1576010544310801561272757506001600160a01b03871660009081526021602052604090205460ff165b801561274c57506001600160a01b03861660009081526021602052604090205460ff16155b801561275a57506000601654115b15612818576001600160a01b03861660009081526011602052604090205460ff166127fa576001600160a01b0386166000908152601160205260408120805460ff1916600190811790915560128054919290916127b8908490613121565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b60646128078660636130e0565b61281191906130ff565b90506128a3565b6001600160a01b03861660009081526021602052604090205460ff16801561284257506000601a54115b15612857576064601a548661280791906130e0565b6001600160a01b03871660009081526021602052604090205460ff16801561288157506000601654115b156128a35760646016548661289691906130e0565b6128a091906130ff565b90505b80156128b4576128b4873083612a74565b6128be81866131c1565b94505b6128cc878787612a74565b50505050505050565b60006128e2600b54612bc9565b60165460185447916000916128f790846130e0565b61290191906130ff565b905060006016546017548461291691906130e0565b61292091906130ff565b905060006016546019548561293591906130e0565b61293f91906130ff565b600d546040519192506001600160a01b0316908290600081818185875af1925050503d806000811461298d576040519150601f19603f3d011682016040523d82523d6000602084013e612992565b606091505b5050600e546040519196506001600160a01b0316908490600081818185875af1925050503d80600081146129e2576040519150601f19603f3d011682016040523d82523d6000602084013e6129e7565b606091505b5050600c546040519196506001600160a01b0316908390600081818185875af1925050503d8060008114612a37576040519150601f19603f3d011682016040523d82523d6000602084013e612a3c565b606091505b5050505050505050565b6001600160a01b0382166000908152602160205260409020805460ff1916821515179055611afa8282612d23565b6001600160a01b038316612a9a5760405162461bcd60e51b8152600401610ad590613139565b6001600160a01b038216612ac05760405162461bcd60e51b8152600401610ad59061317e565b6001600160a01b03831660009081526020819052604090205481811015612b385760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ad5565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612b6f908490613121565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bbb91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612bfe57612bfe613001565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7b9190612fe4565b81600181518110612c8e57612c8e613001565b6001600160a01b039283166020918202929092010152600954612cb49130911684611eb2565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612ced9085906000908690309042906004016131d8565b600060405180830381600087803b158015612d0757600080fd5b505af1158015612d1b573d6000803e3d6000fd5b505050505050565b6001600160a01b03821660008181526020808052604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67469101610cec565b600060208284031215612d8f57600080fd5b5035919050565b600060208083528351808285015260005b81811015612dc357858101830151858201604001528201612da7565b81811115612dd5576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461101c57600080fd5b60008060408385031215612e1357600080fd5b8235612e1e81612deb565b946020939093013593505050565b600060208284031215612e3e57600080fd5b8135612e4981612deb565b9392505050565b600080600060608486031215612e6557600080fd5b8335612e7081612deb565b92506020840135612e8081612deb565b929592945050506040919091013590565b60008060408385031215612ea457600080fd5b8235612eaf81612deb565b915060208301358015158114612ec457600080fd5b809150509250929050565b600080600060608486031215612ee457600080fd5b8335612eef81612deb565b92506020840135612eff81612deb565b91506040840135612f0f81612deb565b809150509250925092565b600080600060608486031215612f2f57600080fd5b833560ff81168114612f4057600080fd5b95602085013595506040909401359392505050565b60008060408385031215612f6857600080fd5b8235612f7381612deb565b91506020830135612ec481612deb565b600080600060608486031215612f9857600080fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612ff657600080fd5b8151612e4981612deb565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156130505781516001600160a01b03168752958201959082019060010161302b565b509495945050505050565b8481526080602082015260006130746080830186613017565b6001600160a01b03949094166040830152506060015292915050565b600181811c908216806130a457607f821691505b6020821081036130c457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156130fa576130fa6130ca565b500290565b60008261311c57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115613134576131346130ca565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156131d3576131d36130ca565b500390565b85815284602082015260a0604082015260006131f760a0830186613017565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220af8109e3c4aa6c167a47a05dff20523cea18daed7b8d2f738b371df2544f493a64736f6c634300080f0033

Deployed Bytecode Sourcemap

8756:17491:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9740:28;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9740:28:0;;;;;;;;25573:671;;;;;;;;;;-1:-1:-1;25573:671:0;;;;;:::i;:::-;;:::i;:::-;;2139:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8899:27::-;;;;;;;;;;-1:-1:-1;8899:27:0;;;;-1:-1:-1;;;;;8899:27:0;;;;;;-1:-1:-1;;;;;1165:32:1;;;1147:51;;1135:2;1120:18;8899:27:0;983:221:1;3194:210:0;;;;;;;;;;-1:-1:-1;3194:210:0;;;;;:::i;:::-;;:::i;:::-;;;1830:14:1;;1823:22;1805:41;;1793:2;1778:18;3194:210:0;1665:187:1;10140:63:0;;;;;;;;;;-1:-1:-1;10140:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13423:176;;;;;;;;;;;;;:::i;2460:108::-;;;;;;;;;;-1:-1:-1;2548:12:0;;2460:108;;16080:321;;;;;;;;;;-1:-1:-1;16080:321:0;;;;;:::i;:::-;;:::i;14707:296::-;;;;;;;;;;-1:-1:-1;14707:296:0;;;;;:::i;:::-;;:::i;3412:529::-;;;;;;;;;;-1:-1:-1;3412:529:0;;;;;:::i;:::-;;:::i;2359:93::-;;;;;;;;;;-1:-1:-1;2359:93:0;;2442:2;2712:36:1;;2700:2;2685:18;2359:93:0;2570:184:1;9703:30:0;;;;;;;;;;;;;;;;3949:297;;;;;;;;;;-1:-1:-1;3949:297:0;;;;;:::i;:::-;;:::i;16766:302::-;;;;;;;;;;-1:-1:-1;16766:302:0;;;;;:::i;:::-;;:::i;9322:33::-;;;;;;;;;;-1:-1:-1;9322:33:0;;;;;;;;25292:178;;;;;;;;;;;;;:::i;15443:308::-;;;;;;;;;;-1:-1:-1;15443:308:0;;;;;:::i;:::-;;:::i;23143:121::-;;;;;;;;;;-1:-1:-1;23238:18:0;;23223:12;:33;23143:121;;8828:27;;;;;;;;;;;;;;;;8795:26;;;;;;;;;;;;;;;;9288:25;;;;;;;;;;;;;;;;9402:31;;;;;;;;;;-1:-1:-1;9402:31:0;;;;;;;;;;;2576:177;;;;;;;;;;-1:-1:-1;2576:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;2727:18:0;2695:7;2727:18;;;;;;;;;;;;2576:177;7228:150;;;;;;;;;;;;;:::i;15055:154::-;;;;;;;;;;;;;:::i;13089:326::-;;;;;;;;;;-1:-1:-1;13089:326:0;;;;;:::i;:::-;;:::i;9238:43::-;;;;;;;;;;-1:-1:-1;9238:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24720:520;;;;;;;;;;-1:-1:-1;24720:520:0;;;;;:::i;:::-;;:::i;7014:79::-;;;;;;;;;;-1:-1:-1;7079:6:0;;-1:-1:-1;;;;;7079:6:0;7014:79;;8862:28;;;;;;;;;;;;;;;;9668;;;;;;;;;;;;;;;;15759:313;;;;;;;;;;-1:-1:-1;15759:313:0;;;;;:::i;:::-;;:::i;2247:104::-;;;;;;;;;;;;;:::i;9883:29::-;;;;;;;;;;;;;;;;9844:32;;;;;;;;;;;;;;;;4254:482;;;;;;;;;;-1:-1:-1;4254:482:0;;;;;:::i;:::-;;:::i;9198:33::-;;;;;;;;;;;;;;;;2761:216;;;;;;;;;;-1:-1:-1;2761:216:0;;;;;:::i;:::-;;:::i;13607:1092::-;;;;;;;;;;-1:-1:-1;13607:1092:0;;;;;:::i;:::-;;:::i;17076:244::-;;;;;;;;;;-1:-1:-1;17076:244:0;;;;;:::i;:::-;;:::i;9775:24::-;;;;;;;;;;;;;;;;10361:57;;;;;;;;;;-1:-1:-1;10361:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15217:112;;;;;;;;;;-1:-1:-1;15217:112:0;;;;;:::i;:::-;;:::i;9362:33::-;;;;;;;;;;-1:-1:-1;9362:33:0;;;;;;;;;;;9919:25;;;;;;;;;;;;;;;;9808:29;;;;;;;;;;;;;;;;9620:39;;;;;;;;;;-1:-1:-1;9620:39:0;;;;;;;;16409:121;;;;;;;;;;-1:-1:-1;16409:121:0;;;;;:::i;:::-;;:::i;2985:201::-;;;;;;;;;;-1:-1:-1;2985:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3151:18:0;;;3119:7;3151:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2985:201;18171:184;;;;;;;;;;-1:-1:-1;18171:184:0;;;;;:::i;:::-;;:::i;8992:33::-;;;;;;;;;;;;;;;;15337:98;;;;;;;;;;;;;:::i;9121:37::-;;;;;;;;;;;;;;;;8933:22;;;;;;;;;;-1:-1:-1;8933:22:0;;;;-1:-1:-1;;;;;8933:22:0;;;17571:592;;;;;;;;;;-1:-1:-1;17571:592:0;;;;;:::i;:::-;;:::i;7386:281::-;;;;;;;;;;-1:-1:-1;7386:281:0;;;;;:::i;:::-;;:::i;24527:185::-;;;;;;;;;;;;;:::i;9951:41::-;;;;;;;;;;-1:-1:-1;9951:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25573:671;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;;;;;;;;;25678:8:::1;25663:11;:23;;25641:144;;;::::0;-1:-1:-1;;;25641:144:0;;5609:2:1;25641:144:0::1;::::0;::::1;5591:21:1::0;5648:2;5628:18;;;5621:30;5687:34;5667:18;;;5660:62;5758:34;5738:18;;;5731:62;-1:-1:-1;;;5809:19:1;;;5802:38;5857:19;;25641:144:0::1;5407:475:1::0;25641:144:0::1;25822:16;::::0;;25836:1:::1;25822:16:::0;;;;;::::1;::::0;;25798:21:::1;::::0;25822:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;25859:9:0::1;::::0;:16:::1;::::0;;-1:-1:-1;;;25859:16:0;;;;25798:40;;-1:-1:-1;;;;;;25859:9:0;;::::1;::::0;:14:::1;::::0;-1:-1:-1;25859:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25849:4;25854:1;25849:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1::0;;;;;25849:26:0::1;;;-1:-1:-1::0;;;;;25849:26:0::1;;;::::0;::::1;25904:4;25886;25891:1;25886:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25886:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;25948:9:::1;::::0;:243:::1;::::0;-1:-1:-1;;;25948:243:0;;:9;::::1;::::0;:60:::1;::::0;26030:11;;25948:243:::1;::::0;:9:::1;::::0;26116:4;;26143:6:::1;::::0;26165:15:::1;::::0;25948:243:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;26207:29;26224:11;26207:29;;;;160:25:1::0;;148:2;133:18;;14:177;26207:29:0::1;;;;;;;;25630:614;25573:671:::0;:::o;2139:100::-;2193:13;2226:5;2219:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2139:100;:::o;3194:210::-;3313:4;3335:39;440:10;3358:7;3367:6;3335:8;:39::i;:::-;-1:-1:-1;3392:4:0;3194:210;;;;:::o;13423:176::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;13487:13:::1;::::0;::::1;::::0;::::1;;;13479:50;;;::::0;-1:-1:-1;;;13479:50:0;;7975:2:1;13479:50:0::1;::::0;::::1;7957:21:1::0;8014:2;7994:18;;;7987:30;8053:26;8033:18;;;8026:54;8097:18;;13479:50:0::1;7773:348:1::0;13479:50:0::1;13540:13;:21:::0;;-1:-1:-1;;13572:19:0;;;13423:176::o;16080:321::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;16218:4:::1;16210;16189:13;2548:12:::0;;;2460:108;16189:13:::1;:17;::::0;16205:1:::1;16189:17;:::i;:::-;16188:26;;;;:::i;:::-;16187:35;;;;:::i;:::-;16175:8;:47;;16153:141;;;::::0;-1:-1:-1;;;16153:141:0;;8855:2:1;16153:141:0::1;::::0;::::1;8837:21:1::0;8894:2;8874:18;;;8867:30;8933:34;8913:18;;;8906:62;-1:-1:-1;;;8984:18:1;;;8977:42;9036:19;;16153:141:0::1;8653:408:1::0;16153:141:0::1;16321:19;:8:::0;16333:6:::1;16321:19;:::i;:::-;16305:13;:35:::0;;;16356:37:::1;::::0;160:25:1;;;16356:37:0::1;::::0;148:2:1;133:18;16356:37:0::1;;;;;;;;16080:321:::0;:::o;14707:296::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14789:31:0;::::1;14781:64;;;::::0;-1:-1:-1;;;14781:64:0;;9268:2:1;14781:64:0::1;::::0;::::1;9250:21:1::0;9307:2;9287:18;;;9280:30;-1:-1:-1;;;9326:18:1;;;9319:50;9386:18;;14781:64:0::1;9066:344:1::0;14781:64:0::1;-1:-1:-1::0;;;;;14862:19:0;::::1;;::::0;;;:9:::1;:19;::::0;;;;;::::1;;14858:138;;;-1:-1:-1::0;;;;;14898:19:0::1;14920:5;14898:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;14898:27:0::1;::::0;;14707:296::o;14858:138::-:1;-1:-1:-1::0;;;;;14958:19:0;::::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;14958:26:0::1;14980:4;14958:26;::::0;;14858:138:::1;14707:296:::0;:::o;3412:529::-;3552:4;3569:36;3579:6;3587:9;3598:6;3569:9;:36::i;:::-;-1:-1:-1;;;;;3645:19:0;;3618:24;3645:19;;;:11;:19;;;;;;;;440:10;3645:33;;;;;;;;3711:26;;;;3689:116;;;;-1:-1:-1;;;3689:116:0;;9617:2:1;3689:116:0;;;9599:21:1;9656:2;9636:18;;;9629:30;9695:34;9675:18;;;9668:62;-1:-1:-1;;;9746:18:1;;;9739:38;9794:19;;3689:116:0;9415:404:1;3689:116:0;3841:57;3850:6;440:10;3891:6;3872:16;:25;3841:8;:57::i;:::-;-1:-1:-1;3929:4:0;;3412:529;-1:-1:-1;;;;3412:529:0:o;3949:297::-;440:10;4064:4;4158:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4158:34:0;;;;;;;;;;4064:4;;4086:130;;4136:7;;4158:47;;4195:10;;4158:47;:::i;:::-;4086:8;:130::i;16766:302::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;16853:4:::1;16848:156;;16910:7;::::0;-1:-1:-1;;;;;16910:7:0;;::::1;16900:17:::0;;::::1;::::0;16874:118:::1;;;::::0;-1:-1:-1;;;16874:118:0;;10159:2:1;16874:118:0::1;::::0;::::1;10141:21:1::0;10198:2;10178:18;;;10171:30;10237:34;10217:18;;;10210:62;-1:-1:-1;;;10288:18:1;;;10281:37;10335:19;;16874:118:0::1;9957:403:1::0;16874:118:0::1;-1:-1:-1::0;;;;;17014:39:0;;;::::1;;::::0;;;:31:::1;:39:::0;;;;;:46;;-1:-1:-1;;17014:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16766:302::o;25292:178::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;25347:8:::1;:15:::0;;-1:-1:-1;;;;25347:15:0::1;-1:-1:-1::0;;;25347:15:0::1;::::0;;25373:10:::1;:8;:10::i;:::-;25394:8;:16:::0;;-1:-1:-1;;;;25394:16:0::1;::::0;;25426:36:::1;::::0;25446:15:::1;160:25:1::0;;25426:36:0::1;::::0;148:2:1;133:18;25426:36:0::1;;;;;;;25292:178::o:0;15443:308::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;15578:4:::1;15570;15549:13;2548:12:::0;;;2460:108;15549:13:::1;:17;::::0;15565:1:::1;15549:17;:::i;:::-;15548:26;;;;:::i;:::-;15547:35;;;;:::i;:::-;15535:8;:47;;15513:138;;;::::0;-1:-1:-1;;;15513:138:0;;10567:2:1;15513:138:0::1;::::0;::::1;10549:21:1::0;10606:2;10586:18;;;10579:30;10645:34;10625:18;;;10618:62;-1:-1:-1;;;10696:18:1;;;10689:39;10745:19;;15513:138:0::1;10365:405:1::0;15513:138:0::1;15676:19;:8:::0;15688:6:::1;15676:19;:::i;:::-;15662:11;:33:::0;;;15711:32:::1;::::0;160:25:1;;;15711:32:0::1;::::0;148:2:1;133:18;15711:32:0::1;14:177:1::0;7228:150:0;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;7321:6:::1;::::0;7300:40:::1;::::0;7337:1:::1;::::0;-1:-1:-1;;;;;7321:6:0::1;::::0;7300:40:::1;::::0;7337:1;;7300:40:::1;7351:6;:19:::0;;-1:-1:-1;;;;;;7351:19:0::1;::::0;;7228:150::o;15055:154::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;15109:14:::1;:22:::0;;-1:-1:-1;;15109:22:0;;::::1;::::0;;;15142:20:::1;:28:::0;;;;::::1;::::0;;15186:15:::1;::::0;::::1;::::0;15126:5:::1;::::0;15186:15:::1;15055:154::o:0;13089:326::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;13172:13:::1;::::0;::::1;::::0;::::1;;;13171:14;13163:50;;;::::0;-1:-1:-1;;;13163:50:0;;10977:2:1;13163:50:0::1;::::0;::::1;10959:21:1::0;11016:2;10996:18;;;10989:30;11055:25;11035:18;;;11028:53;11098:18;;13163:50:0::1;10775:347:1::0;13163:50:0::1;13224:13;:20:::0;;-1:-1:-1;;13255:18:0;;;;;13305:12:::1;13284:18;:33:::0;;;13349:32:::1;::::0;13370:11;;13349:32:::1;:::i;:::-;13328:18;:53:::0;13397:10:::1;::::0;::::1;::::0;;;::::1;13089:326:::0;:::o;24720:520::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24904:31:0;::::1;::::0;;::::1;::::0;:77:::1;;-1:-1:-1::0;;;;;;24956:25:0;::::1;::::0;::::1;24904:77;:127;;;;-1:-1:-1::0;;;;;;25002:29:0;::::1;::::0;::::1;24904:127;24882:198;;;::::0;-1:-1:-1;;;24882:198:0;;11329:2:1;24882:198:0::1;::::0;::::1;11311:21:1::0;11368:2;11348:18;;;11341:30;-1:-1:-1;;;11387:18:1;;;11380:51;11448:18;;24882:198:0::1;11127:345:1::0;24882:198:0::1;25091:16;:45:::0;;-1:-1:-1;;;;;25091:45:0;;::::1;-1:-1:-1::0;;;;;;25091:45:0;;::::1;;::::0;;;25147:10:::1;:33:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;25191:14:::1;:41:::0;;;;;::::1;::::0;::::1;;::::0;;24720:520::o;15759:313::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;15895:4:::1;15887;15866:13;2548:12:::0;;;2460:108;15866:13:::1;:17;::::0;15882:1:::1;15866:17;:::i;:::-;15865:26;;;;:::i;:::-;15864:35;;;;:::i;:::-;15852:8;:47;;15830:139;;;::::0;-1:-1:-1;;;15830:139:0;;11679:2:1;15830:139:0::1;::::0;::::1;11661:21:1::0;11718:2;11698:18;;;11691:30;11757:34;11737:18;;;11730:62;-1:-1:-1;;;11808:18:1;;;11801:40;11858:19;;15830:139:0::1;11477:406:1::0;15830:139:0::1;15995:19;:8:::0;16007:6:::1;15995:19;:::i;:::-;15980:12;:34:::0;;;16030::::1;::::0;160:25:1;;;16030:34:0::1;::::0;148:2:1;133:18;16030:34:0::1;14:177:1::0;2247:104:0;2303:13;2336:7;2329:14;;;;;:::i;4254:482::-;440:10;4374:4;4423:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4423:34:0;;;;;;;;;;4490:35;;;;4468:122;;;;-1:-1:-1;;;4468:122:0;;12090:2:1;4468:122:0;;;12072:21:1;12129:2;12109:18;;;12102:30;12168:34;12148:18;;;12141:62;-1:-1:-1;;;12219:18:1;;;12212:35;12264:19;;4468:122:0;11888:401:1;4468:122:0;4626:67;440:10;4649:7;4677:15;4658:16;:34;4626:8;:67::i;:::-;-1:-1:-1;4724:4:0;;4254:482;-1:-1:-1;;;4254:482:0:o;2761:216::-;2883:4;2905:42;440:10;2929:9;2940:6;2905:9;:42::i;13607:1092::-;13889:22;;;;;;;;;;;-1:-1:-1;;;13889:22:0;;;;;13941:10;;;;;;;;;;-1:-1:-1;;;13941:10:0;;;;13736:295;;13765:95;13736:295;;;12553:25:1;;;;13879:33:0;12594:18:1;;;12587:34;;;;13931:21:0;12637:18:1;;;12630:34;13971:13:0;12680:18:1;;;12673:34;14011:4:0;12723:19:1;;;12716:61;-1:-1:-1;;12525:19:1;;13736:295:0;;;;;;-1:-1:-1;;13736:295:0;;;;;;13712:330;;13736:295;13712:330;;;;14207:23;;;;;;;;-1:-1:-1;;;14207:23:0;;;;;;;14100:175;;14129:49;14100:175;;;12990:25:1;;;;14197:34:0;13031:18:1;;;13024:34;;;;-1:-1:-1;13074:18:1;;;13067:34;;;13712:330:0;;-1:-1:-1;12963:18:1;;14100:175:0;;;;;;;;;;;;14076:210;;;;;;14055:231;;14299:14;14404:10;14433;14340:134;;;;;;;;-1:-1:-1;;;13370:27:1;;13422:1;13413:11;;13406:27;;;;13458:2;13449:12;;13442:28;13495:2;13486:12;;13112:392;14340:134:0;;;;-1:-1:-1;;14340:134:0;;;;;;;;;14316:169;;14340:134;14316:169;;;;14498:14;14515:26;;;;;;;;;13736:25:1;;;13809:4;13797:17;;13777:18;;;13770:45;;;;13831:18;;;13824:34;;;13874:18;;;13867:34;;;14316:169:0;;-1:-1:-1;14498:14:0;14515:26;;13708:19:1;;14515:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14498:43;;14570:7;7079:6;;-1:-1:-1;;;;;7079:6:0;;7014:79;14570:7;-1:-1:-1;;;;;14560:17:0;:6;-1:-1:-1;;;;;14560:17:0;;14552:47;;;;-1:-1:-1;;;14552:47:0;;14114:2:1;14552:47:0;;;14096:21:1;14153:2;14133:18;;;14126:30;-1:-1:-1;;;14172:18:1;;;14165:47;14229:18;;14552:47:0;13912:341:1;14552:47:0;14612:13;:20;;-1:-1:-1;;14643:18:0;;;;;14679:10;;;;-1:-1:-1;;14679:10:0;13680:1019;;;;13607:1092;;;:::o;17076:244::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;17164:7:::1;::::0;-1:-1:-1;;;;;17164:7:0;;::::1;17156:15:::0;;::::1;::::0;17148:54:::1;;;::::0;-1:-1:-1;;;17148:54:0;;14460:2:1;17148:54:0::1;::::0;::::1;14442:21:1::0;14499:2;14479:18;;;14472:30;14538:28;14518:18;;;14511:56;14584:18;;17148:54:0::1;14258:350:1::0;17148:54:0::1;17215:41;17244:4;17250:5;17215:28;:41::i;:::-;17272:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;17272:40:0;::::1;::::0;::::1;::::0;;;::::1;17076:244:::0;;:::o;15217:112::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15295:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:26;;-1:-1:-1;;15295:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15217:112::o;16409:121::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;16492:18:::1;:30:::0;16409:121::o;18171:184::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18256:29:0;::::1;;::::0;;;:20:::1;:29;::::0;;;;;;;;:40;;-1:-1:-1;;18256:40:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18312:35;;1805:41:1;;;18312:35:0::1;::::0;1778:18:1;18312:35:0::1;;;;;;;18171:184:::0;;:::o;15337:98::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;15399:20:::1;:28:::0;;-1:-1:-1;;15399:28:0::1;::::0;;15337:98::o;17571:592::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;17718:17:::1;:34:::0;;;17763:14:::1;:28:::0;;;17802:10:::1;:20:::0;;;17835:15:::1;:32:::0;;;17878:13:::1;:27:::0;;;17916:9:::1;:19:::0;;;17815:7;17964:31:::1;17780:11:::0;17738:14;17964:31:::1;:::i;:::-;:43;;;;:::i;:::-;17948:13;:59:::0;18072:10:::1;::::0;18055:14:::1;::::0;18035:17:::1;::::0;:34:::1;::::0;18055:14;18035:34:::1;:::i;:::-;:47;;;;:::i;:::-;18018:14;:64:::0;;;18119:2:::1;-1:-1:-1::0;18101:20:0::1;18093:62;;;::::0;-1:-1:-1;;;18093:62:0;;14815:2:1;18093:62:0::1;::::0;::::1;14797:21:1::0;14854:2;14834:18;;;14827:30;14893:31;14873:18;;;14866:59;14942:18;;18093:62:0::1;14613:353:1::0;18093:62:0::1;17571:592:::0;;;:::o;7386:281::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7489:22:0;::::1;7467:110;;;::::0;-1:-1:-1;;;7467:110:0;;15173:2:1;7467:110:0::1;::::0;::::1;15155:21:1::0;15212:2;15192:18;;;15185:30;15251:34;15231:18;;;15224:62;-1:-1:-1;;;15302:18:1;;;15295:36;15348:19;;7467:110:0::1;14971:402:1::0;7467:110:0::1;7614:6;::::0;7593:38:::1;::::0;-1:-1:-1;;;;;7593:38:0;;::::1;::::0;7614:6:::1;::::0;7593:38:::1;::::0;7614:6:::1;::::0;7593:38:::1;7642:6;:17:::0;;-1:-1:-1;;;;;;7642:17:0::1;-1:-1:-1::0;;;;;7642:17:0;;;::::1;::::0;;;::::1;::::0;;7386:281::o;24527:185::-;7141:6;;-1:-1:-1;;;;;7141:6:0;440:10;7141:22;7133:67;;;;-1:-1:-1;;;7133:67:0;;;;;;;:::i;:::-;24622:82:::1;::::0;24585:12:::1;::::0;24630:10:::1;::::0;24654:21:::1;::::0;24585:12;24622:82;24585:12;24622:82;24654:21;24630:10;24622:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;24527:185:0:o;6283:380::-;-1:-1:-1;;;;;6419:19:0;;6411:68;;;;-1:-1:-1;;;6411:68:0;;15790:2:1;6411:68:0;;;15772:21:1;15829:2;15809:18;;;15802:30;15868:34;15848:18;;;15841:62;-1:-1:-1;;;15919:18:1;;;15912:34;15963:19;;6411:68:0;15588:400:1;6411:68:0;-1:-1:-1;;;;;6498:21:0;;6490:68;;;;-1:-1:-1;;;6490:68:0;;16195:2:1;6490:68:0;;;16177:21:1;16234:2;16214:18;;;16207:30;16273:34;16253:18;;;16246:62;-1:-1:-1;;;16324:18:1;;;16317:32;16366:19;;6490:68:0;15993:398:1;6490:68:0;-1:-1:-1;;;;;6571:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6623:32;;160:25:1;;;6623:32:0;;133:18:1;6623:32:0;;;;;;;6283:380;;;:::o;18363:4772::-;-1:-1:-1;;;;;18495:18:0;;18487:68;;;;-1:-1:-1;;;18487:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18574:16:0;;18566:64;;;;-1:-1:-1;;;18566:64:0;;;;;;;:::i;:::-;18658:1;18649:6;:10;18641:52;;;;-1:-1:-1;;;18641:52:0;;17408:2:1;18641:52:0;;;17390:21:1;17447:2;17427:18;;;17420:30;17486:31;17466:18;;;17459:59;17535:18;;18641:52:0;17206:353:1;18641:52:0;-1:-1:-1;;;;;18713:15:0;;;;;;:9;:15;;;;;;;;18712:16;:34;;;;-1:-1:-1;;;;;;18733:13:0;;;;;;:9;:13;;;;;;;;18732:14;18712:34;18704:70;;;;-1:-1:-1;;;18704:70:0;;17766:2:1;18704:70:0;;;17748:21:1;17805:2;17785:18;;;17778:30;17844:25;17824:18;;;17817:53;17887:18;;18704:70:0;17564:347:1;18704:70:0;18792:13;;;;;;;18787:185;;-1:-1:-1;;;;;18848:26:0;;;;;;:20;:26;;;;;;;;;:54;;-1:-1:-1;;;;;;18878:24:0;;;;;;:20;:24;;;;;;;;18848:54;18822:138;;;;-1:-1:-1;;;18822:138:0;;18118:2:1;18822:138:0;;;18100:21:1;18157:2;18137:18;;;18130:30;-1:-1:-1;;;18176:18:1;;;18169:52;18238:18;;18822:138:0;17916:346:1;18822:138:0;19021:18;;:22;19017:247;;-1:-1:-1;;;;;19087:17:0;;;;;;:11;:17;;;;;;;;19086:18;;:35;;-1:-1:-1;7079:6:0;;-1:-1:-1;;;;;19108:13:0;;;7079:6;;19108:13;19086:35;:60;;;-1:-1:-1;;;;;;19125:21:0;;19139:6;19125:21;19086:60;19060:192;;;;-1:-1:-1;;;19060:192:0;;18469:2:1;19060:192:0;;;18451:21:1;18508:2;18488:18;;;18481:30;18547:34;18527:18;;;18520:62;18618:34;18598:18;;;18591:62;-1:-1:-1;;;18669:19:1;;;18662:37;18716:19;;19060:192:0;18267:474:1;19060:192:0;19280:14;;;;19276:1970;;;7079:6;;-1:-1:-1;;;;;19333:15:0;;;7079:6;;19333:15;;;;:49;;-1:-1:-1;7079:6:0;;-1:-1:-1;;;;;19369:13:0;;;7079:6;;19369:13;;19333:49;:86;;;;-1:-1:-1;;;;;;19403:16:0;;;;19333:86;:128;;;;-1:-1:-1;;;;;;19440:21:0;;19454:6;19440:21;;19333:128;:176;;;;-1:-1:-1;;;;;;19483:26:0;;;;;;:20;:26;;;;;;;;19482:27;19333:176;:222;;;;-1:-1:-1;;;;;;19531:24:0;;;;;;:20;:24;;;;;;;;19530:25;19333:222;19311:1924;;;19726:20;;;;19722:327;;;19789:9;;-1:-1:-1;;;;;19775:24:0;;;19789:9;;19775:24;;;;:50;;-1:-1:-1;19817:7:0;;-1:-1:-1;;;;;19803:22:0;;;19817:7;;19803:22;;19775:50;19771:259;;;19907:9;19878:39;;;;:28;:39;;;;;;19920:12;19878:54;;;;-1:-1:-1;;;;;19959:32:0;;;;;;:47;19771:259;-1:-1:-1;;;;;20123:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;20180:35:0;;;;;;:31;:35;;;;;;;;20179:36;20123:92;20097:1123;;;20302:11;;20292:6;:21;;20258:147;;;;-1:-1:-1;;;20258:147:0;;18948:2:1;20258:147:0;;;18930:21:1;18987:2;18967:18;;;18960:30;19026:34;19006:18;;;18999:62;-1:-1:-1;;;19077:18:1;;;19070:38;19125:19;;20258:147:0;18746:404:1;20258:147:0;20488:13;;-1:-1:-1;;;;;2727:18:0;;2695:7;2727:18;;;;;;;;;;;20462:22;;:6;:22;:::i;:::-;:39;;20428:149;;;;-1:-1:-1;;;20428:149:0;;19357:2:1;20428:149:0;;;19339:21:1;19396:2;19376:18;;;19369:30;-1:-1:-1;;;19415:18:1;;;19408:54;19479:18;;20428:149:0;19155:348:1;20428:149:0;20097:1123;;;-1:-1:-1;;;;;20675:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;20730:37:0;;;;;;:31;:37;;;;;;;;20729:38;20675:92;20649:571;;;20854:12;;20844:6;:22;;20810:150;;;;-1:-1:-1;;;20810:150:0;;19710:2:1;20810:150:0;;;19692:21:1;19749:2;19729:18;;;19722:30;19788:34;19768:18;;;19761:62;-1:-1:-1;;;19839:18:1;;;19832:40;19889:19;;20810:150:0;19508:406:1;20649:571:0;-1:-1:-1;;;;;20991:35:0;;;;;;:31;:35;;;;;;;;20986:234;;21111:13;;-1:-1:-1;;;;;2727:18:0;;2695:7;2727:18;;;;;;;;;;;21085:22;;:6;:22;:::i;:::-;:39;;21051:149;;;;-1:-1:-1;;;21051:149:0;;19357:2:1;21051:149:0;;;19339:21:1;19396:2;19376:18;;;19369:30;-1:-1:-1;;;19415:18:1;;;19408:54;19479:18;;21051:149:0;19155:348:1;21051:149:0;21307:4;21258:28;2727:18;;;;;;;;;;;21365;;21341:42;;;;;;;21414:35;;-1:-1:-1;21438:11:0;;;;;;;21414:35;:61;;;;-1:-1:-1;21467:8:0;;-1:-1:-1;;;21467:8:0;;;;21466:9;21414:61;:110;;;;-1:-1:-1;;;;;;21493:31:0;;;;;;:25;:31;;;;;;;;21492:32;21414:110;:154;;;;-1:-1:-1;;;;;;21542:26:0;;;;;;:20;:26;;;;;;;;21541:27;21414:154;:196;;;;-1:-1:-1;;;;;;21586:24:0;;;;;;:20;:24;;;;;;;;21585:25;21414:196;21396:328;;;21637:8;:15;;-1:-1:-1;;;;21637:15:0;-1:-1:-1;;;21637:15:0;;;21669:10;:8;:10::i;:::-;21696:8;:16;;-1:-1:-1;;;;21696:16:0;;;21396:328;-1:-1:-1;;;;;21855:26:0;;21736:12;21855:26;;;:20;:26;;;;;;21751:4;;21855:26;;;:54;;-1:-1:-1;;;;;;21885:24:0;;;;;;:20;:24;;;;;;;;21855:54;21851:102;;;-1:-1:-1;21936:5:0;21851:102;21965:12;22070:7;22066:1016;;;23238:18;;23223:12;:33;22152:77;;;;-1:-1:-1;;;;;;22198:31:0;;;;;;:25;:31;;;;;;;;22152:77;:128;;;;-1:-1:-1;;;;;;22251:29:0;;;;;;:25;:29;;;;;;;;22250:30;22152:128;:166;;;;;22317:1;22301:13;;:17;22152:166;22130:803;;;-1:-1:-1;;;;;22358:15:0;;;;;;:11;:15;;;;;;;;22353:173;;-1:-1:-1;;;;;22398:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;22398:22:0;22416:4;22398:22;;;;;;22443:10;:15;;22416:4;;22443:10;;:15;;22416:4;;22443:15;:::i;:::-;;;;-1:-1:-1;;22486:20:0;;-1:-1:-1;;;;;1165:32:1;;1147:51;;22486:20:0;;1135:2:1;1120:18;22486:20:0;;;;;;;22353:173;22569:3;22554:11;:6;22563:2;22554:11;:::i;:::-;22553:19;;;;:::i;:::-;22546:26;;22130:803;;;-1:-1:-1;;;;;22635:29:0;;;;;;:25;:29;;;;;;;;:51;;;;;22685:1;22668:14;;:18;22635:51;22631:302;;;22742:3;22724:14;;22715:6;:23;;;;:::i;22631:302::-;-1:-1:-1;;;;;22807:31:0;;;;;;:25;:31;;;;;;;;:52;;;;;22858:1;22842:13;;:17;22807:52;22803:130;;;22914:3;22897:13;;22888:6;:22;;;;:::i;:::-;22887:30;;;;:::i;:::-;22880:37;;22803:130;22953:8;;22949:91;;22982:42;22998:4;23012;23019;22982:15;:42::i;:::-;23056:14;23066:4;23056:14;;:::i;:::-;;;22066:1016;23094:33;23110:4;23116:2;23120:6;23094:15;:33::i;:::-;18476:4659;;;;18363:4772;;;:::o;23851:668::-;23890:12;23913:36;23930:18;;23913:16;:36::i;:::-;24070:13;;24053;;23983:21;;23962:18;;24040:26;;23983:21;24040:26;:::i;:::-;24039:44;;;;:::i;:::-;24015:68;;24094:24;24167:13;;24135:15;;24122:10;:28;;;;:::i;:::-;24121:59;;;;:::i;:::-;24094:86;;24191:17;24238:13;;24225:9;;24212:10;:22;;;;:::i;:::-;24211:40;;;;:::i;:::-;24286:10;;24278:46;;24191:60;;-1:-1:-1;;;;;;24286:10:0;;24191:60;;24278:46;;;;24191:60;24286:10;24278:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24357:14:0;;24349:54;;24264:60;;-1:-1:-1;;;;;;24357:14:0;;24385:13;;24349:54;;;;24385:13;24357:14;24349:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24436:16:0;;24428:83;;24335:68;;-1:-1:-1;;;;;;24436:16:0;;24466;;24428:83;;;;24466:16;24436;24428:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;23851:668:0:o;17328:235::-;-1:-1:-1;;;;;17411:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;17411:39:0;;;;;;;17461:38;17411:31;:39;17461:25;:38::i;4744:651::-;-1:-1:-1;;;;;4884:20:0;;4876:70;;;;-1:-1:-1;;;4876:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4965:23:0;;4957:71;;;;-1:-1:-1;;;4957:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5065:17:0;;5041:21;5065:17;;;;;;;;;;;5115:23;;;;5093:111;;;;-1:-1:-1;;;5093:111:0;;20251:2:1;5093:111:0;;;20233:21:1;20290:2;20270:18;;;20263:30;20329:34;20309:18;;;20302:62;-1:-1:-1;;;20380:18:1;;;20373:36;20426:19;;5093:111:0;20049:402:1;5093:111:0;-1:-1:-1;;;;;5240:17:0;;;:9;:17;;;;;;;;;;;5260:22;;;5240:42;;5304:20;;;;;;;;:30;;5276:6;;5240:9;5304:30;;5276:6;;5304:30;:::i;:::-;;;;;;;;5369:9;-1:-1:-1;;;;;5352:35:0;5361:6;-1:-1:-1;;;;;5352:35:0;;5380:6;5352:35;;;;160:25:1;;148:2;133:18;;14:177;5352:35:0;;;;;;;;4865:530;4744:651;;;:::o;23272:571::-;23422:16;;;23436:1;23422:16;;;;;;;;23398:21;;23422:16;;;;;;;;;;-1:-1:-1;23422:16:0;23398:40;;23467:4;23449;23454:1;23449:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23449:23:0;;;:7;;;;;;;;;;:23;;;;23493:9;;:16;;;-1:-1:-1;;;23493:16:0;;;;:9;;;;;:14;;:16;;;;;23449:7;;23493:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23483:4;23488:1;23483:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23483:26:0;;;:7;;;;;;;;;:26;23554:9;;23522:56;;23539:4;;23554:9;23566:11;23522:8;:56::i;:::-;23617:9;;:218;;-1:-1:-1;;;23617:218:0;;-1:-1:-1;;;;;23617:9:0;;;;:60;;:218;;23692:11;;23617:9;;23762:4;;23789;;23809:15;;23617:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23327:516;23272:571;:::o;16538:220::-;-1:-1:-1;;;;;16639:39:0;;;;;;:31;:39;;;;;;;;:52;;-1:-1:-1;;16639:52:0;;;;;;;;;;16707:43;;21211:51:1;;;21278:18;;;21271:50;16707:43:0;;21184:18:1;16707:43:0;21043:284:1;196:180;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;381:597::-;493:4;522:2;551;540:9;533:21;583:6;577:13;626:6;621:2;610:9;606:18;599:34;651:1;661:140;675:6;672:1;669:13;661:140;;;770:14;;;766:23;;760:30;736:17;;;755:2;732:26;725:66;690:10;;661:140;;;819:6;816:1;813:13;810:91;;;889:1;884:2;875:6;864:9;860:22;856:31;849:42;810:91;-1:-1:-1;962:2:1;941:15;-1:-1:-1;;937:29:1;922:45;;;;969:2;918:54;;381:597;-1:-1:-1;;;381:597:1:o;1209:131::-;-1:-1:-1;;;;;1284:31:1;;1274:42;;1264:70;;1330:1;1327;1320:12;1345:315;1413:6;1421;1474:2;1462:9;1453:7;1449:23;1445:32;1442:52;;;1490:1;1487;1480:12;1442:52;1529:9;1516:23;1548:31;1573:5;1548:31;:::i;:::-;1598:5;1650:2;1635:18;;;;1622:32;;-1:-1:-1;;;1345:315:1:o;1857:247::-;1916:6;1969:2;1957:9;1948:7;1944:23;1940:32;1937:52;;;1985:1;1982;1975:12;1937:52;2024:9;2011:23;2043:31;2068:5;2043:31;:::i;:::-;2093:5;1857:247;-1:-1:-1;;;1857:247:1:o;2109:456::-;2186:6;2194;2202;2255:2;2243:9;2234:7;2230:23;2226:32;2223:52;;;2271:1;2268;2261:12;2223:52;2310:9;2297:23;2329:31;2354:5;2329:31;:::i;:::-;2379:5;-1:-1:-1;2436:2:1;2421:18;;2408:32;2449:33;2408:32;2449:33;:::i;:::-;2109:456;;2501:7;;-1:-1:-1;;;2555:2:1;2540:18;;;;2527:32;;2109:456::o;2759:416::-;2824:6;2832;2885:2;2873:9;2864:7;2860:23;2856:32;2853:52;;;2901:1;2898;2891:12;2853:52;2940:9;2927:23;2959:31;2984:5;2959:31;:::i;:::-;3009:5;-1:-1:-1;3066:2:1;3051:18;;3038:32;3108:15;;3101:23;3089:36;;3079:64;;3139:1;3136;3129:12;3079:64;3162:7;3152:17;;;2759:416;;;;;:::o;3180:529::-;3257:6;3265;3273;3326:2;3314:9;3305:7;3301:23;3297:32;3294:52;;;3342:1;3339;3332:12;3294:52;3381:9;3368:23;3400:31;3425:5;3400:31;:::i;:::-;3450:5;-1:-1:-1;3507:2:1;3492:18;;3479:32;3520:33;3479:32;3520:33;:::i;:::-;3572:7;-1:-1:-1;3631:2:1;3616:18;;3603:32;3644:33;3603:32;3644:33;:::i;:::-;3696:7;3686:17;;;3180:529;;;;;:::o;3922:405::-;3997:6;4005;4013;4066:2;4054:9;4045:7;4041:23;4037:32;4034:52;;;4082:1;4079;4072:12;4034:52;4121:9;4108:23;4171:4;4164:5;4160:16;4153:5;4150:27;4140:55;;4191:1;4188;4181:12;4140:55;4214:5;4266:2;4251:18;;4238:32;;-1:-1:-1;4317:2:1;4302:18;;;4289:32;;3922:405;-1:-1:-1;;;3922:405:1:o;4332:388::-;4400:6;4408;4461:2;4449:9;4440:7;4436:23;4432:32;4429:52;;;4477:1;4474;4467:12;4429:52;4516:9;4503:23;4535:31;4560:5;4535:31;:::i;:::-;4585:5;-1:-1:-1;4642:2:1;4627:18;;4614:32;4655:33;4614:32;4655:33;:::i;4725:316::-;4802:6;4810;4818;4871:2;4859:9;4850:7;4846:23;4842:32;4839:52;;;4887:1;4884;4877:12;4839:52;-1:-1:-1;;4910:23:1;;;4980:2;4965:18;;4952:32;;-1:-1:-1;5031:2:1;5016:18;;;5003:32;;4725:316;-1:-1:-1;4725:316:1:o;5046:356::-;5248:2;5230:21;;;5267:18;;;5260:30;5326:34;5321:2;5306:18;;5299:62;5393:2;5378:18;;5046:356::o;6019:251::-;6089:6;6142:2;6130:9;6121:7;6117:23;6113:32;6110:52;;;6158:1;6155;6148:12;6110:52;6190:9;6184:16;6209:31;6234:5;6209:31;:::i;6275:127::-;6336:10;6331:3;6327:20;6324:1;6317:31;6367:4;6364:1;6357:15;6391:4;6388:1;6381:15;6407:461;6460:3;6498:5;6492:12;6525:6;6520:3;6513:19;6551:4;6580:2;6575:3;6571:12;6564:19;;6617:2;6610:5;6606:14;6638:1;6648:195;6662:6;6659:1;6656:13;6648:195;;;6727:13;;-1:-1:-1;;;;;6723:39:1;6711:52;;6783:12;;;;6818:15;;;;6759:1;6677:9;6648:195;;;-1:-1:-1;6859:3:1;;6407:461;-1:-1:-1;;;;;6407:461:1:o;6873:510::-;7144:6;7133:9;7126:25;7187:3;7182:2;7171:9;7167:18;7160:31;7107:4;7208:57;7260:3;7249:9;7245:19;7237:6;7208:57;:::i;:::-;-1:-1:-1;;;;;7301:32:1;;;;7296:2;7281:18;;7274:60;-1:-1:-1;7365:2:1;7350:18;7343:34;7200:65;6873:510;-1:-1:-1;;6873:510:1:o;7388:380::-;7467:1;7463:12;;;;7510;;;7531:61;;7585:4;7577:6;7573:17;7563:27;;7531:61;7638:2;7630:6;7627:14;7607:18;7604:38;7601:161;;7684:10;7679:3;7675:20;7672:1;7665:31;7719:4;7716:1;7709:15;7747:4;7744:1;7737:15;7601:161;;7388:380;;;:::o;8126:127::-;8187:10;8182:3;8178:20;8175:1;8168:31;8218:4;8215:1;8208:15;8242:4;8239:1;8232:15;8258:168;8298:7;8364:1;8360;8356:6;8352:14;8349:1;8346:21;8341:1;8334:9;8327:17;8323:45;8320:71;;;8371:18;;:::i;:::-;-1:-1:-1;8411:9:1;;8258:168::o;8431:217::-;8471:1;8497;8487:132;;8541:10;8536:3;8532:20;8529:1;8522:31;8576:4;8573:1;8566:15;8604:4;8601:1;8594:15;8487:132;-1:-1:-1;8633:9:1;;8431:217::o;9824:128::-;9864:3;9895:1;9891:6;9888:1;9885:13;9882:39;;;9901:18;;:::i;:::-;-1:-1:-1;9937:9:1;;9824:128::o;16396:401::-;16598:2;16580:21;;;16637:2;16617:18;;;16610:30;16676:34;16671:2;16656:18;;16649:62;-1:-1:-1;;;16742:2:1;16727:18;;16720:35;16787:3;16772:19;;16396:401::o;16802:399::-;17004:2;16986:21;;;17043:2;17023:18;;;17016:30;17082:34;17077:2;17062:18;;17055:62;-1:-1:-1;;;17148:2:1;17133:18;;17126:33;17191:3;17176:19;;16802:399::o;19919:125::-;19959:4;19987:1;19984;19981:8;19978:34;;;19992:18;;:::i;:::-;-1:-1:-1;20029:9:1;;19919:125::o;20456:582::-;20755:6;20744:9;20737:25;20798:6;20793:2;20782:9;20778:18;20771:34;20841:3;20836:2;20825:9;20821:18;20814:31;20718:4;20862:57;20914:3;20903:9;20899:19;20891:6;20862:57;:::i;:::-;-1:-1:-1;;;;;20955:32:1;;;;20950:2;20935:18;;20928:60;-1:-1:-1;21019:3:1;21004:19;20997:35;20854:65;20456:582;-1:-1:-1;;;20456:582:1:o

Swarm Source

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