ETH Price: $2,376.57 (-1.37%)

Token

CyberDoge (CyberDG)
 

Overview

Max Total Supply

9,000,000,000 CyberDG

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
27,000,000 CyberDG

Value
$0.00
0x3e775cad9a99a971384092994531803b03d1fb63
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:
CyberDoge

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-22
*/

/**

Step into the enigmatic realm of Cyber Doge, a clandestine meme token that has emerged from the depths of the digital underworld.

Portal - https://t.me/CyberDogeCommunity

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

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 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    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 _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(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

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

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

contract CyberDoge is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address marketingAddress;

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

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;

    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    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 EnabledTrading();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedMarketingAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event OwnerForcedSwapBack(uint256 timestamp);
 
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("CyberDoge", "CyberDG") {

        address newOwner = msg.sender; // can leave alone if owner is deployer.

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

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

        uint256 totalSupply = 9_000_000_000 * 1e18;

        maxBuyAmount = totalSupply / 50;
        maxSellAmount = totalSupply / 50;
        maxWalletAmount = totalSupply / 50;
        swapTokensAtAmount = totalSupply / 1000;

        buyMarketingFee = 20;
        buyLiquidityFee = 0;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = 20;
        sellLiquidityFee = 0;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;

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

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

        marketingAddress = payable(0xAF42176Ae6b353585E220DB6d4494aFFbef5Cf11);

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

    receive() external payable {}

    // only enable if no plan to airdrop

    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        emit EnabledTrading();
    }

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

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

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

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

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
        swapTokensAtAmount = newAmount;
    }

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

    function airdropToWallets(address[] memory wallets, uint256[] memory amountsInTokens) external onlyOwner {
        require(wallets.length == amountsInTokens.length, "arrays must be the same length");
        require(wallets.length < 600, "Can only airdrop 600 wallets per txn due to gas limits"); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input.
        for(uint256 i = 0; i < wallets.length; i++){
            address wallet = wallets[i];
            uint256 amount = amountsInTokens[i];
            super._transfer(msg.sender, wallet, amount);
        }
    }

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

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs");

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

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less");
    }

    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        require(sellTotalFees <= 10, "Must keep fees at 10% or less");
    }

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

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

        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
    
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }
    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 addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 60){
            contractBalance = swapTokensAtAmount * 60;
        }

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForMarketing = ethBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        if(address(this).balance > 0){
            (success,) = address(marketingAddress).call{value: address(this).balance}("");
        }
    }

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function setMarketingAddress(address _marketingAddress) external onlyOwner {
        require(_marketingAddress != address(0), "_marketingAddress address cannot be 0");
        marketingAddress = payable(_marketingAddress);
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= 0, "No tokens to swap");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

}

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":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","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":"tokensIntoLiquidity","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":"UpdatedMarketingAddress","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":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","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":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","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":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","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":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","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":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600c805462ffffff60a01b1916600160a01b1790553480156200002657600080fd5b50604051806040016040528060098152602001684379626572446f676560b81b815250604051806040016040528060078152602001664379626572444760c81b81525081600390816200007a9190620007be565b506004620000898282620007be565b50505060006200009e620003b660201b60201c565b600580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620036db833981519152908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016b91906200088a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001df91906200088a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025391906200088a565b600a80546001600160a01b0319166001600160a01b039290921691821790556200027f906001620003ba565b600a5462000298906001600160a01b031660016200041d565b6b1d14a0219e54822428000000620002b2603282620008bc565b600655620002c2603282620008bc565b600755620002d2603282620008bc565b600855620002e36103e882620008bc565b600b556014600e8190556000600f819055620002ff91620008df565b600d5560146011819055600060128190556200031b91620008df565b6010556200032b836001620003ba565b62000338306001620003ba565b6200034761dead6001620003ba565b6200035483600162000489565b6200036130600162000489565b6200037061dead600162000489565b600c80546001600160a01b03191673af42176ae6b353585e220db6d4494affbef5cf11179055620003a2838262000537565b620003ad836200061c565b50505062000907565b3390565b6001600160a01b038216600081815260166020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152601760205260409020805460ff19168215151790556200044d8282620003ba565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620004d85760405162461bcd60e51b81526020600482018190526024820152600080516020620036bb83398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200058f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004cf565b8060026000828254620005a39190620008df565b90915550506001600160a01b03821660009081526020819052604081208054839290620005d2908490620008df565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006675760405162461bcd60e51b81526020600482018190526024820152600080516020620036bb8339815191526044820152606401620004cf565b6001600160a01b038116620006ce5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004cf565b6005546040516001600160a01b03808416921690600080516020620036db83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200074457607f821691505b6020821081036200076557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007b957600081815260208120601f850160051c81016020861015620007945750805b601f850160051c820191505b81811015620007b557828155600101620007a0565b5050505b505050565b81516001600160401b03811115620007da57620007da62000719565b620007f281620007eb84546200072f565b846200076b565b602080601f8311600181146200082a5760008415620008115750858301515b600019600386901b1c1916600185901b178555620007b5565b600085815260208120601f198616915b828110156200085b578886015182559484019460019091019084016200083a565b50858210156200087a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200089d57600080fd5b81516001600160a01b0381168114620008b557600080fd5b9392505050565b600082620008da57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200090157634e487b7160e01b600052601160045260246000fd5b92915050565b612da480620009176000396000f3fe6080604052600436106102b25760003560e01c80637bce5a0411610175578063b62496f5116100dc578063dc3f0d0f11610095578063f11a24d31161006f578063f11a24d314610850578063f2fde38b14610866578063f5648a4f14610886578063f63743421461089b57600080fd5b8063dc3f0d0f146107d4578063dd62ed3e146107f4578063e2f456051461083a57600080fd5b8063b62496f51461070d578063bbc0c7421461073d578063c02466681461075e578063c18bc1951461077e578063d257b34f1461079e578063d85ba063146107be57600080fd5b8063921369131161012e578063921369131461066c57806395d89b41146106825780639a7a23d614610697578063a457c2d7146106b7578063a9059cbb146106d7578063aa4bde28146106f757600080fd5b80637bce5a04146105cd5780638366e79a146105e357806388e765ff146106035780638a8c523c146106195780638da5cb5b1461062e578063906e9dd01461064c57600080fd5b806339509351116102195780636a486a8e116101d25780636a486a8e146105165780636ddd17131461052c57806370a082311461054d578063715018a614610583578063751039fc146105985780637571336a146105ad57600080fd5b8063395093511461046a578063452ed4f11461048a5780634a62bb65146104aa57806351f205e4146104cb57806366ca9b83146104e057806366d602ae1461050057600080fd5b80631a8145bb1161026b5780631a8145bb146103c25780631f3fed8f146103d85780632307b441146103ee57806323b872dd1461040e5780632be32b611461042e578063313ce5671461044e57600080fd5b806302dbd8f8146102be57806306fdde03146102e05780630758d9241461030b578063095ea7b31461034357806310d5de531461037357806318160ddd146103a357600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102de6102d93660046127a2565b6108b1565b005b3480156102ec57600080fd5b506102f5610951565b60405161030291906127c4565b60405180910390f35b34801561031757600080fd5b5060095461032b906001600160a01b031681565b6040516001600160a01b039091168152602001610302565b34801561034f57600080fd5b5061036361035e36600461282a565b6109e3565b6040519015158152602001610302565b34801561037f57600080fd5b5061036361038e366004612856565b60166020526000908152604090205460ff1681565b3480156103af57600080fd5b506002545b604051908152602001610302565b3480156103ce57600080fd5b506103b460145481565b3480156103e457600080fd5b506103b460135481565b3480156103fa57600080fd5b506102de610409366004612950565b6109fa565b34801561041a57600080fd5b50610363610429366004612a12565b610b53565b34801561043a57600080fd5b506102de610449366004612a53565b610bfd565b34801561045a57600080fd5b5060405160128152602001610302565b34801561047657600080fd5b5061036361048536600461282a565b610d0a565b34801561049657600080fd5b50600a5461032b906001600160a01b031681565b3480156104b657600080fd5b50600c5461036390600160a01b900460ff1681565b3480156104d757600080fd5b506102de610d46565b3480156104ec57600080fd5b506102de6104fb3660046127a2565b610dd6565b34801561050c57600080fd5b506103b460075481565b34801561052257600080fd5b506103b460105481565b34801561053857600080fd5b50600c5461036390600160b01b900460ff1681565b34801561055957600080fd5b506103b4610568366004612856565b6001600160a01b031660009081526020819052604090205490565b34801561058f57600080fd5b506102de610e69565b3480156105a457600080fd5b506102de610edd565b3480156105b957600080fd5b506102de6105c8366004612a7a565b610f3f565b3480156105d957600080fd5b506103b4600e5481565b3480156105ef57600080fd5b506103636105fe366004612ab3565b611007565b34801561060f57600080fd5b506103b460065481565b34801561062557600080fd5b506102de6111b8565b34801561063a57600080fd5b506005546001600160a01b031661032b565b34801561065857600080fd5b506102de610667366004612856565b61127c565b34801561067857600080fd5b506103b460115481565b34801561068e57600080fd5b506102f561132c565b3480156106a357600080fd5b506102de6106b2366004612a7a565b61133b565b3480156106c357600080fd5b506103636106d236600461282a565b61142f565b3480156106e357600080fd5b506103636106f236600461282a565b6114c8565b34801561070357600080fd5b506103b460085481565b34801561071957600080fd5b50610363610728366004612856565b60176020526000908152604090205460ff1681565b34801561074957600080fd5b50600c5461036390600160a81b900460ff1681565b34801561076a57600080fd5b506102de610779366004612a7a565b6114d5565b34801561078a57600080fd5b506102de610799366004612a53565b61155e565b3480156107aa57600080fd5b506102de6107b9366004612a53565b611667565b3480156107ca57600080fd5b506103b4600d5481565b3480156107e057600080fd5b506102de6107ef366004612a53565b6117b2565b34801561080057600080fd5b506103b461080f366004612ab3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561084657600080fd5b506103b4600b5481565b34801561085c57600080fd5b506103b4600f5481565b34801561087257600080fd5b506102de610881366004612856565b6118b9565b34801561089257600080fd5b506102de6119a4565b3480156108a757600080fd5b506103b460125481565b6005546001600160a01b031633146108e45760405162461bcd60e51b81526004016108db90612ae1565b60405180910390fd5b601182905560128190556108f88183612b2c565b6010819055600a101561094d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c65737300000060448201526064016108db565b5050565b60606003805461096090612b3f565b80601f016020809104026020016040519081016040528092919081815260200182805461098c90612b3f565b80156109d95780601f106109ae576101008083540402835291602001916109d9565b820191906000526020600020905b8154815290600101906020018083116109bc57829003601f168201915b5050505050905090565b60006109f0338484611a1b565b5060015b92915050565b6005546001600160a01b03163314610a245760405162461bcd60e51b81526004016108db90612ae1565b8051825114610a755760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e677468000060448201526064016108db565b610258825110610ae65760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203630302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016108db565b60005b8251811015610b4e576000838281518110610b0657610b06612b79565b602002602001015190506000838381518110610b2457610b24612b79565b60200260200101519050610b39338383611b3f565b50508080610b4690612b8f565b915050610ae9565b505050565b6000610b60848484611c94565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610be55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108db565b610bf28533858403611a1b565b506001949350505050565b6005546001600160a01b03163314610c275760405162461bcd60e51b81526004016108db90612ae1565b670de0b6b3a76400006103e8610c3c60025490565b610c47906002612ba8565b610c519190612bbf565b610c5b9190612bbf565b811015610cbc5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b60648201526084016108db565b610cce81670de0b6b3a7640000612ba8565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109f0918590610d41908690612b2c565b611a1b565b6005546001600160a01b03163314610d705760405162461bcd60e51b81526004016108db90612ae1565b306000908152602052600a805460ff60a01b1916600160a01b179055610d94612398565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610e005760405162461bcd60e51b81526004016108db90612ae1565b600e829055600f819055610e148183612b2c565b600d819055600a101561094d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c65737300000060448201526064016108db565b6005546001600160a01b03163314610e935760405162461bcd60e51b81526004016108db90612ae1565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f075760405162461bcd60e51b81526004016108db90612ae1565b600c805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610f695760405162461bcd60e51b81526004016108db90612ae1565b80610fdc57600a546001600160a01b0390811690831603610fdc5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016108db565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546000906001600160a01b031633146110345760405162461bcd60e51b81526004016108db90612ae1565b6001600160a01b03831661108a5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016108db565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190612be1565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c9190612bfa565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146111e25760405162461bcd60e51b81526004016108db90612ae1565b600c54600160a81b900460ff161561123c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e6700000000000000000060448201526064016108db565b600c805461ffff60a81b191661010160a81b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b6005546001600160a01b031633146112a65760405162461bcd60e51b81526004016108db90612ae1565b6001600160a01b03811661130a5760405162461bcd60e51b815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b60648201526084016108db565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60606004805461096090612b3f565b6005546001600160a01b031633146113655760405162461bcd60e51b81526004016108db90612ae1565b600a546001600160a01b03908116908316036113e95760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108db565b6113f38282612505565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114b15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108db565b6114be3385858403611a1b565b5060019392505050565b60006109f0338484611c94565b6005546001600160a01b031633146114ff5760405162461bcd60e51b81526004016108db90612ae1565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146115885760405162461bcd60e51b81526004016108db90612ae1565b670de0b6b3a76400006103e861159d60025490565b6115a8906003612ba8565b6115b29190612bbf565b6115bc9190612bbf565b8110156116205760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b60648201526084016108db565b61163281670de0b6b3a7640000612ba8565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610cff565b6005546001600160a01b031633146116915760405162461bcd60e51b81526004016108db90612ae1565b620186a061169e60025490565b6116a9906001612ba8565b6116b39190612bbf565b8110156117205760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108db565b6103e861172c60025490565b611737906001612ba8565b6117419190612bbf565b8111156117ad5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b60648201526084016108db565b600b55565b6005546001600160a01b031633146117dc5760405162461bcd60e51b81526004016108db90612ae1565b670de0b6b3a76400006103e86117f160025490565b6117fc906002612ba8565b6118069190612bbf565b6118109190612bbf565b8110156118725760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b60648201526084016108db565b61188481670de0b6b3a7640000612ba8565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610cff565b6005546001600160a01b031633146118e35760405162461bcd60e51b81526004016108db90612ae1565b6001600160a01b0381166119485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108db565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146119ce5760405162461bcd60e51b81526004016108db90612ae1565b604051600090339047908381818185875af1925050503d8060008114611a10576040519150601f19603f3d011682016040523d82523d6000602084013e611a15565b606091505b50505050565b6001600160a01b038316611a7d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108db565b6001600160a01b038216611ade5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108db565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b655760405162461bcd60e51b81526004016108db90612c17565b6001600160a01b038216611b8b5760405162461bcd60e51b81526004016108db90612c5c565b6001600160a01b03831660009081526020819052604090205481811015611c035760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108db565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611c3a908490612b2c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c8691815260200190565b60405180910390a350505050565b6001600160a01b038316611cba5760405162461bcd60e51b81526004016108db90612c17565b6001600160a01b038216611ce05760405162461bcd60e51b81526004016108db90612c5c565b60008111611d305760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016108db565b600c54600160a81b900460ff16611dc5576001600160a01b03831660009081526015602052604090205460ff1680611d8057506001600160a01b03821660009081526015602052604090205460ff165b611dc55760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108db565b600c54600160a01b900460ff16156120d4576005546001600160a01b03848116911614801590611e0357506005546001600160a01b03838116911614155b8015611e1757506001600160a01b03821615155b8015611e2e57506001600160a01b03821661dead14155b8015611e5357506001600160a01b03831660009081526015602052604090205460ff16155b8015611e7857506001600160a01b03821660009081526015602052604090205460ff16155b156120d4576001600160a01b03831660009081526017602052604090205460ff168015611ebe57506001600160a01b03821660009081526016602052604090205460ff16155b15611f9a57600654811115611f265760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016108db565b6008546001600160a01b038316600090815260208190526040902054611f4c9083612b2c565b1115611f955760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016108db565b6120d4565b6001600160a01b03821660009081526017602052604090205460ff168015611fdb57506001600160a01b03831660009081526016602052604090205460ff16155b1561204557600754811115611f955760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016108db565b6001600160a01b03821660009081526016602052604090205460ff166120d4576008546001600160a01b03831660009081526020819052604090205461208b9083612b2c565b11156120d45760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016108db565b30600090815260208190526040902054600b54811080159081906121015750600c54600160b01b900460ff165b80156121175750600a54600160a01b900460ff16155b801561213c57506001600160a01b03851660009081526017602052604090205460ff16155b801561216157506001600160a01b03851660009081526015602052604090205460ff16155b801561218657506001600160a01b03841660009081526015602052604090205460ff16155b156121b457600a805460ff60a01b1916600160a01b1790556121a6612398565b600a805460ff60a01b191690555b6001600160a01b03851660009081526015602052604090205460019060ff16806121f657506001600160a01b03851660009081526015602052604090205460ff165b156121ff575060005b60008115612384576001600160a01b03861660009081526017602052604090205460ff16801561223157506000601054115b156122b9576064601054866122469190612ba8565b6122509190612bbf565b9050601054601254826122639190612ba8565b61226d9190612bbf565b6014600082825461227e9190612b2c565b90915550506010546011546122939083612ba8565b61229d9190612bbf565b601360008282546122ae9190612b2c565b909155506123669050565b6001600160a01b03871660009081526017602052604090205460ff1680156122e357506000600d54115b15612366576064600d54866122f89190612ba8565b6123029190612bbf565b9050600d54600f54826123159190612ba8565b61231f9190612bbf565b601460008282546123309190612b2c565b9091555050600d54600e546123459083612ba8565b61234f9190612bbf565b601360008282546123609190612b2c565b90915550505b801561237757612377873083611b3f565b6123818186612c9f565b94505b61238f878787611b3f565b50505050505050565b30600090815260208190526040812054905060006013546014546123bc9190612b2c565b90508115806123c9575080155b156123d2575050565b600b546123e090603c612ba8565b8211156123f857600b546123f590603c612ba8565b91505b6000806002836014548661240c9190612ba8565b6124169190612bbf565b6124209190612bbf565b905061243461242f8286612c9f565b612533565b6014544790819060009061244a90600290612bbf565b6124549087612c9f565b6013546124619085612ba8565b61246b9190612bbf565b90506124778183612c9f565b60006014819055601355915083158015906124925750600082115b156124a1576124a1848361268d565b471561238f57600c546040516001600160a01b03909116904790600081818185875af1925050503d80600081146124f4576040519150601f19603f3d011682016040523d82523d6000602084013e6124f9565b606091505b50505050505050505050565b6001600160a01b0382166000908152601760205260409020805460ff19168215151790556113f3828261273f565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061256857612568612b79565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156125c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e59190612cb2565b816001815181106125f8576125f8612b79565b6001600160a01b03928316602091820292909201015260095461261e9130911684611a1b565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612657908590600090869030904290600401612ccf565b600060405180830381600087803b15801561267157600080fd5b505af1158015612685573d6000803e3d6000fd5b505050505050565b6009546126a59030906001600160a01b031684611a1b565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612713573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127389190612d40565b5050505050565b6001600160a01b038216600081815260166020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b600080604083850312156127b557600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156127f1578581018301518582016040015282016127d5565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461282757600080fd5b50565b6000806040838503121561283d57600080fd5b823561284881612812565b946020939093013593505050565b60006020828403121561286857600080fd5b813561287381612812565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156128b9576128b961287a565b604052919050565b600067ffffffffffffffff8211156128db576128db61287a565b5060051b60200190565b600082601f8301126128f657600080fd5b8135602061290b612906836128c1565b612890565b82815260059290921b8401810191818101908684111561292a57600080fd5b8286015b84811015612945578035835291830191830161292e565b509695505050505050565b6000806040838503121561296357600080fd5b823567ffffffffffffffff8082111561297b57600080fd5b818501915085601f83011261298f57600080fd5b8135602061299f612906836128c1565b82815260059290921b840181019181810190898411156129be57600080fd5b948201945b838610156129e55785356129d681612812565b825294820194908201906129c3565b965050860135925050808211156129fb57600080fd5b50612a08858286016128e5565b9150509250929050565b600080600060608486031215612a2757600080fd5b8335612a3281612812565b92506020840135612a4281612812565b929592945050506040919091013590565b600060208284031215612a6557600080fd5b5035919050565b801515811461282757600080fd5b60008060408385031215612a8d57600080fd5b8235612a9881612812565b91506020830135612aa881612a6c565b809150509250929050565b60008060408385031215612ac657600080fd5b8235612ad181612812565b91506020830135612aa881612812565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109f4576109f4612b16565b600181811c90821680612b5357607f821691505b602082108103612b7357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060018201612ba157612ba1612b16565b5060010190565b80820281158282048414176109f4576109f4612b16565b600082612bdc57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612bf357600080fd5b5051919050565b600060208284031215612c0c57600080fd5b815161287381612a6c565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109f4576109f4612b16565b600060208284031215612cc457600080fd5b815161287381612812565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d1f5784516001600160a01b031683529383019391830191600101612cfa565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612d5557600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212203e9ed5413741242eaea0aa43185f694ec5ccd29917948baf8fb7270544524b7264736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102b25760003560e01c80637bce5a0411610175578063b62496f5116100dc578063dc3f0d0f11610095578063f11a24d31161006f578063f11a24d314610850578063f2fde38b14610866578063f5648a4f14610886578063f63743421461089b57600080fd5b8063dc3f0d0f146107d4578063dd62ed3e146107f4578063e2f456051461083a57600080fd5b8063b62496f51461070d578063bbc0c7421461073d578063c02466681461075e578063c18bc1951461077e578063d257b34f1461079e578063d85ba063146107be57600080fd5b8063921369131161012e578063921369131461066c57806395d89b41146106825780639a7a23d614610697578063a457c2d7146106b7578063a9059cbb146106d7578063aa4bde28146106f757600080fd5b80637bce5a04146105cd5780638366e79a146105e357806388e765ff146106035780638a8c523c146106195780638da5cb5b1461062e578063906e9dd01461064c57600080fd5b806339509351116102195780636a486a8e116101d25780636a486a8e146105165780636ddd17131461052c57806370a082311461054d578063715018a614610583578063751039fc146105985780637571336a146105ad57600080fd5b8063395093511461046a578063452ed4f11461048a5780634a62bb65146104aa57806351f205e4146104cb57806366ca9b83146104e057806366d602ae1461050057600080fd5b80631a8145bb1161026b5780631a8145bb146103c25780631f3fed8f146103d85780632307b441146103ee57806323b872dd1461040e5780632be32b611461042e578063313ce5671461044e57600080fd5b806302dbd8f8146102be57806306fdde03146102e05780630758d9241461030b578063095ea7b31461034357806310d5de531461037357806318160ddd146103a357600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102de6102d93660046127a2565b6108b1565b005b3480156102ec57600080fd5b506102f5610951565b60405161030291906127c4565b60405180910390f35b34801561031757600080fd5b5060095461032b906001600160a01b031681565b6040516001600160a01b039091168152602001610302565b34801561034f57600080fd5b5061036361035e36600461282a565b6109e3565b6040519015158152602001610302565b34801561037f57600080fd5b5061036361038e366004612856565b60166020526000908152604090205460ff1681565b3480156103af57600080fd5b506002545b604051908152602001610302565b3480156103ce57600080fd5b506103b460145481565b3480156103e457600080fd5b506103b460135481565b3480156103fa57600080fd5b506102de610409366004612950565b6109fa565b34801561041a57600080fd5b50610363610429366004612a12565b610b53565b34801561043a57600080fd5b506102de610449366004612a53565b610bfd565b34801561045a57600080fd5b5060405160128152602001610302565b34801561047657600080fd5b5061036361048536600461282a565b610d0a565b34801561049657600080fd5b50600a5461032b906001600160a01b031681565b3480156104b657600080fd5b50600c5461036390600160a01b900460ff1681565b3480156104d757600080fd5b506102de610d46565b3480156104ec57600080fd5b506102de6104fb3660046127a2565b610dd6565b34801561050c57600080fd5b506103b460075481565b34801561052257600080fd5b506103b460105481565b34801561053857600080fd5b50600c5461036390600160b01b900460ff1681565b34801561055957600080fd5b506103b4610568366004612856565b6001600160a01b031660009081526020819052604090205490565b34801561058f57600080fd5b506102de610e69565b3480156105a457600080fd5b506102de610edd565b3480156105b957600080fd5b506102de6105c8366004612a7a565b610f3f565b3480156105d957600080fd5b506103b4600e5481565b3480156105ef57600080fd5b506103636105fe366004612ab3565b611007565b34801561060f57600080fd5b506103b460065481565b34801561062557600080fd5b506102de6111b8565b34801561063a57600080fd5b506005546001600160a01b031661032b565b34801561065857600080fd5b506102de610667366004612856565b61127c565b34801561067857600080fd5b506103b460115481565b34801561068e57600080fd5b506102f561132c565b3480156106a357600080fd5b506102de6106b2366004612a7a565b61133b565b3480156106c357600080fd5b506103636106d236600461282a565b61142f565b3480156106e357600080fd5b506103636106f236600461282a565b6114c8565b34801561070357600080fd5b506103b460085481565b34801561071957600080fd5b50610363610728366004612856565b60176020526000908152604090205460ff1681565b34801561074957600080fd5b50600c5461036390600160a81b900460ff1681565b34801561076a57600080fd5b506102de610779366004612a7a565b6114d5565b34801561078a57600080fd5b506102de610799366004612a53565b61155e565b3480156107aa57600080fd5b506102de6107b9366004612a53565b611667565b3480156107ca57600080fd5b506103b4600d5481565b3480156107e057600080fd5b506102de6107ef366004612a53565b6117b2565b34801561080057600080fd5b506103b461080f366004612ab3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561084657600080fd5b506103b4600b5481565b34801561085c57600080fd5b506103b4600f5481565b34801561087257600080fd5b506102de610881366004612856565b6118b9565b34801561089257600080fd5b506102de6119a4565b3480156108a757600080fd5b506103b460125481565b6005546001600160a01b031633146108e45760405162461bcd60e51b81526004016108db90612ae1565b60405180910390fd5b601182905560128190556108f88183612b2c565b6010819055600a101561094d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c65737300000060448201526064016108db565b5050565b60606003805461096090612b3f565b80601f016020809104026020016040519081016040528092919081815260200182805461098c90612b3f565b80156109d95780601f106109ae576101008083540402835291602001916109d9565b820191906000526020600020905b8154815290600101906020018083116109bc57829003601f168201915b5050505050905090565b60006109f0338484611a1b565b5060015b92915050565b6005546001600160a01b03163314610a245760405162461bcd60e51b81526004016108db90612ae1565b8051825114610a755760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e677468000060448201526064016108db565b610258825110610ae65760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203630302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016108db565b60005b8251811015610b4e576000838281518110610b0657610b06612b79565b602002602001015190506000838381518110610b2457610b24612b79565b60200260200101519050610b39338383611b3f565b50508080610b4690612b8f565b915050610ae9565b505050565b6000610b60848484611c94565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610be55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108db565b610bf28533858403611a1b565b506001949350505050565b6005546001600160a01b03163314610c275760405162461bcd60e51b81526004016108db90612ae1565b670de0b6b3a76400006103e8610c3c60025490565b610c47906002612ba8565b610c519190612bbf565b610c5b9190612bbf565b811015610cbc5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b60648201526084016108db565b610cce81670de0b6b3a7640000612ba8565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109f0918590610d41908690612b2c565b611a1b565b6005546001600160a01b03163314610d705760405162461bcd60e51b81526004016108db90612ae1565b306000908152602052600a805460ff60a01b1916600160a01b179055610d94612398565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610e005760405162461bcd60e51b81526004016108db90612ae1565b600e829055600f819055610e148183612b2c565b600d819055600a101561094d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c65737300000060448201526064016108db565b6005546001600160a01b03163314610e935760405162461bcd60e51b81526004016108db90612ae1565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f075760405162461bcd60e51b81526004016108db90612ae1565b600c805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610f695760405162461bcd60e51b81526004016108db90612ae1565b80610fdc57600a546001600160a01b0390811690831603610fdc5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016108db565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546000906001600160a01b031633146110345760405162461bcd60e51b81526004016108db90612ae1565b6001600160a01b03831661108a5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016108db565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190612be1565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c9190612bfa565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146111e25760405162461bcd60e51b81526004016108db90612ae1565b600c54600160a81b900460ff161561123c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e6700000000000000000060448201526064016108db565b600c805461ffff60a81b191661010160a81b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b6005546001600160a01b031633146112a65760405162461bcd60e51b81526004016108db90612ae1565b6001600160a01b03811661130a5760405162461bcd60e51b815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b60648201526084016108db565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60606004805461096090612b3f565b6005546001600160a01b031633146113655760405162461bcd60e51b81526004016108db90612ae1565b600a546001600160a01b03908116908316036113e95760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108db565b6113f38282612505565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114b15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108db565b6114be3385858403611a1b565b5060019392505050565b60006109f0338484611c94565b6005546001600160a01b031633146114ff5760405162461bcd60e51b81526004016108db90612ae1565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146115885760405162461bcd60e51b81526004016108db90612ae1565b670de0b6b3a76400006103e861159d60025490565b6115a8906003612ba8565b6115b29190612bbf565b6115bc9190612bbf565b8110156116205760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b60648201526084016108db565b61163281670de0b6b3a7640000612ba8565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610cff565b6005546001600160a01b031633146116915760405162461bcd60e51b81526004016108db90612ae1565b620186a061169e60025490565b6116a9906001612ba8565b6116b39190612bbf565b8110156117205760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108db565b6103e861172c60025490565b611737906001612ba8565b6117419190612bbf565b8111156117ad5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b60648201526084016108db565b600b55565b6005546001600160a01b031633146117dc5760405162461bcd60e51b81526004016108db90612ae1565b670de0b6b3a76400006103e86117f160025490565b6117fc906002612ba8565b6118069190612bbf565b6118109190612bbf565b8110156118725760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b60648201526084016108db565b61188481670de0b6b3a7640000612ba8565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610cff565b6005546001600160a01b031633146118e35760405162461bcd60e51b81526004016108db90612ae1565b6001600160a01b0381166119485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108db565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146119ce5760405162461bcd60e51b81526004016108db90612ae1565b604051600090339047908381818185875af1925050503d8060008114611a10576040519150601f19603f3d011682016040523d82523d6000602084013e611a15565b606091505b50505050565b6001600160a01b038316611a7d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108db565b6001600160a01b038216611ade5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108db565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b655760405162461bcd60e51b81526004016108db90612c17565b6001600160a01b038216611b8b5760405162461bcd60e51b81526004016108db90612c5c565b6001600160a01b03831660009081526020819052604090205481811015611c035760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108db565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611c3a908490612b2c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c8691815260200190565b60405180910390a350505050565b6001600160a01b038316611cba5760405162461bcd60e51b81526004016108db90612c17565b6001600160a01b038216611ce05760405162461bcd60e51b81526004016108db90612c5c565b60008111611d305760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016108db565b600c54600160a81b900460ff16611dc5576001600160a01b03831660009081526015602052604090205460ff1680611d8057506001600160a01b03821660009081526015602052604090205460ff165b611dc55760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108db565b600c54600160a01b900460ff16156120d4576005546001600160a01b03848116911614801590611e0357506005546001600160a01b03838116911614155b8015611e1757506001600160a01b03821615155b8015611e2e57506001600160a01b03821661dead14155b8015611e5357506001600160a01b03831660009081526015602052604090205460ff16155b8015611e7857506001600160a01b03821660009081526015602052604090205460ff16155b156120d4576001600160a01b03831660009081526017602052604090205460ff168015611ebe57506001600160a01b03821660009081526016602052604090205460ff16155b15611f9a57600654811115611f265760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016108db565b6008546001600160a01b038316600090815260208190526040902054611f4c9083612b2c565b1115611f955760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016108db565b6120d4565b6001600160a01b03821660009081526017602052604090205460ff168015611fdb57506001600160a01b03831660009081526016602052604090205460ff16155b1561204557600754811115611f955760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016108db565b6001600160a01b03821660009081526016602052604090205460ff166120d4576008546001600160a01b03831660009081526020819052604090205461208b9083612b2c565b11156120d45760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016108db565b30600090815260208190526040902054600b54811080159081906121015750600c54600160b01b900460ff165b80156121175750600a54600160a01b900460ff16155b801561213c57506001600160a01b03851660009081526017602052604090205460ff16155b801561216157506001600160a01b03851660009081526015602052604090205460ff16155b801561218657506001600160a01b03841660009081526015602052604090205460ff16155b156121b457600a805460ff60a01b1916600160a01b1790556121a6612398565b600a805460ff60a01b191690555b6001600160a01b03851660009081526015602052604090205460019060ff16806121f657506001600160a01b03851660009081526015602052604090205460ff165b156121ff575060005b60008115612384576001600160a01b03861660009081526017602052604090205460ff16801561223157506000601054115b156122b9576064601054866122469190612ba8565b6122509190612bbf565b9050601054601254826122639190612ba8565b61226d9190612bbf565b6014600082825461227e9190612b2c565b90915550506010546011546122939083612ba8565b61229d9190612bbf565b601360008282546122ae9190612b2c565b909155506123669050565b6001600160a01b03871660009081526017602052604090205460ff1680156122e357506000600d54115b15612366576064600d54866122f89190612ba8565b6123029190612bbf565b9050600d54600f54826123159190612ba8565b61231f9190612bbf565b601460008282546123309190612b2c565b9091555050600d54600e546123459083612ba8565b61234f9190612bbf565b601360008282546123609190612b2c565b90915550505b801561237757612377873083611b3f565b6123818186612c9f565b94505b61238f878787611b3f565b50505050505050565b30600090815260208190526040812054905060006013546014546123bc9190612b2c565b90508115806123c9575080155b156123d2575050565b600b546123e090603c612ba8565b8211156123f857600b546123f590603c612ba8565b91505b6000806002836014548661240c9190612ba8565b6124169190612bbf565b6124209190612bbf565b905061243461242f8286612c9f565b612533565b6014544790819060009061244a90600290612bbf565b6124549087612c9f565b6013546124619085612ba8565b61246b9190612bbf565b90506124778183612c9f565b60006014819055601355915083158015906124925750600082115b156124a1576124a1848361268d565b471561238f57600c546040516001600160a01b03909116904790600081818185875af1925050503d80600081146124f4576040519150601f19603f3d011682016040523d82523d6000602084013e6124f9565b606091505b50505050505050505050565b6001600160a01b0382166000908152601760205260409020805460ff19168215151790556113f3828261273f565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061256857612568612b79565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156125c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e59190612cb2565b816001815181106125f8576125f8612b79565b6001600160a01b03928316602091820292909201015260095461261e9130911684611a1b565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612657908590600090869030904290600401612ccf565b600060405180830381600087803b15801561267157600080fd5b505af1158015612685573d6000803e3d6000fd5b505050505050565b6009546126a59030906001600160a01b031684611a1b565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612713573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127389190612d40565b5050505050565b6001600160a01b038216600081815260166020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b600080604083850312156127b557600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156127f1578581018301518582016040015282016127d5565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461282757600080fd5b50565b6000806040838503121561283d57600080fd5b823561284881612812565b946020939093013593505050565b60006020828403121561286857600080fd5b813561287381612812565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156128b9576128b961287a565b604052919050565b600067ffffffffffffffff8211156128db576128db61287a565b5060051b60200190565b600082601f8301126128f657600080fd5b8135602061290b612906836128c1565b612890565b82815260059290921b8401810191818101908684111561292a57600080fd5b8286015b84811015612945578035835291830191830161292e565b509695505050505050565b6000806040838503121561296357600080fd5b823567ffffffffffffffff8082111561297b57600080fd5b818501915085601f83011261298f57600080fd5b8135602061299f612906836128c1565b82815260059290921b840181019181810190898411156129be57600080fd5b948201945b838610156129e55785356129d681612812565b825294820194908201906129c3565b965050860135925050808211156129fb57600080fd5b50612a08858286016128e5565b9150509250929050565b600080600060608486031215612a2757600080fd5b8335612a3281612812565b92506020840135612a4281612812565b929592945050506040919091013590565b600060208284031215612a6557600080fd5b5035919050565b801515811461282757600080fd5b60008060408385031215612a8d57600080fd5b8235612a9881612812565b91506020830135612aa881612a6c565b809150509250929050565b60008060408385031215612ac657600080fd5b8235612ad181612812565b91506020830135612aa881612812565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109f4576109f4612b16565b600181811c90821680612b5357607f821691505b602082108103612b7357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060018201612ba157612ba1612b16565b5060010190565b80820281158282048414176109f4576109f4612b16565b600082612bdc57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612bf357600080fd5b5051919050565b600060208284031215612c0c57600080fd5b815161287381612a6c565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109f4576109f4612b16565b600060208284031215612cc457600080fd5b815161287381612812565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d1f5784516001600160a01b031683529383019391830191600101612cfa565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612d5557600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212203e9ed5413741242eaea0aa43185f694ec5ccd29917948baf8fb7270544524b7264736f6c63430008110033

Deployed Bytecode Sourcemap

9689:14183:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16836:317;;;;;;;;;;-1:-1:-1;16836:317:0;;;;;:::i;:::-;;:::i;:::-;;4136:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9843:27;;;;;;;;;;-1:-1:-1;9843:27:0;;;;-1:-1:-1;;;;;9843:27:0;;;;;;-1:-1:-1;;;;;1002:32:1;;;984:51;;972:2;957:18;9843:27:0;820:221:1;5050:169:0;;;;;;;;;;-1:-1:-1;5050:169:0;;;;;:::i;:::-;;:::i;:::-;;;1667:14:1;;1660:22;1642:41;;1630:2;1615:18;5050:169:0;1502:187:1;10576:64:0;;;;;;;;;;-1:-1:-1;10576:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4457:108;;;;;;;;;;-1:-1:-1;4545:12:0;;4457:108;;;2092:25:1;;;2080:2;2065:18;4457:108:0;1946:177:1;10393:33:0;;;;;;;;;;;;;;;;10353;;;;;;;;;;;;;;;;15073:618;;;;;;;;;;-1:-1:-1;15073:618:0;;;;;:::i;:::-;;:::i;5227:492::-;;;;;;;;;;-1:-1:-1;5227:492:0;;;;;:::i;:::-;;:::i;13587:269::-;;;;;;;;;;-1:-1:-1;13587:269:0;;;;;:::i;:::-;;:::i;4356:93::-;;;;;;;;;;-1:-1:-1;4356:93:0;;4439:2;5403:36:1;;5391:2;5376:18;4356:93:0;5261:184:1;5727:215:0;;;;;;;;;;-1:-1:-1;5727:215:0;;;;;:::i;:::-;;:::i;9877:21::-;;;;;;;;;;-1:-1:-1;9877:21:0;;;;-1:-1:-1;;;;;9877:21:0;;;10010:33;;;;;;;;;;-1:-1:-1;10010:33:0;;;;-1:-1:-1;;;10010:33:0;;;;;;23619:248;;;;;;;;;;;;;:::i;16518:310::-;;;;;;;;;;-1:-1:-1;16518:310:0;;;;;:::i;:::-;;:::i;9769:28::-;;;;;;;;;;;;;;;;10240;;;;;;;;;;;;;;;;10090:31;;;;;;;;;;-1:-1:-1;10090:31:0;;;;-1:-1:-1;;;10090:31:0;;;;;;4573:127;;;;;;;;;;-1:-1:-1;4573:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4674:18:0;4647:7;4674:18;;;;;;;;;;;;4573:127;8213:150;;;;;;;;;;;;;:::i;13464:115::-;;;;;;;;;;;;;:::i;15699:260::-;;;;;;;;;;-1:-1:-1;15699:260:0;;;;;:::i;:::-;;:::i;10164:30::-;;;;;;;;;;;;;;;;22717:381;;;;;;;;;;-1:-1:-1;22717:381:0;;;;;:::i;:::-;;:::i;9735:27::-;;;;;;;;;;;;;;;;13207:205;;;;;;;;;;;;;:::i;7999:79::-;;;;;;;;;;-1:-1:-1;8064:6:0;;-1:-1:-1;;;;;8064:6:0;7999:79;;23336:231;;;;;;;;;;-1:-1:-1;23336:231:0;;;;;:::i;:::-;;:::i;10275:31::-;;;;;;;;;;;;;;;;4244:104;;;;;;;;;;;;;:::i;15967:295::-;;;;;;;;;;-1:-1:-1;15967:295:0;;;;;:::i;:::-;;:::i;5950:413::-;;;;;;;;;;-1:-1:-1;5950:413:0;;;;;:::i;:::-;;:::i;4708:175::-;;;;;;;;;;-1:-1:-1;4708:175:0;;;;;:::i;:::-;;:::i;9804:30::-;;;;;;;;;;;;;;;;10798:58;;;;;;;;;;-1:-1:-1;10798:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10050:33;;;;;;;;;;-1:-1:-1;10050:33:0;;;;-1:-1:-1;;;10050:33:0;;;;;;17161:182;;;;;;;;;;-1:-1:-1;17161:182:0;;;;;:::i;:::-;;:::i;14146:284::-;;;;;;;;;;-1:-1:-1;14146:284:0;;;;;:::i;:::-;;:::i;14500:350::-;;;;;;;;;;-1:-1:-1;14500:350:0;;;;;:::i;:::-;;:::i;10130:27::-;;;;;;;;;;;;;;;;13864:274;;;;;;;;;;-1:-1:-1;13864:274:0;;;;;:::i;:::-;;:::i;4891:151::-;;;;;;;;;;-1:-1:-1;4891:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5007:18:0;;;4980:7;5007:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4891:151;9935:33;;;;;;;;;;;;;;;;10201:30;;;;;;;;;;;;;;;;8371:244;;;;;;;;;;-1:-1:-1;8371:244:0;;;;;:::i;:::-;;:::i;23168:160::-;;;;;;;;;;;;;:::i;10313:31::-;;;;;;;;;;;;;;;;16836:317;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;;;;;;;;;16936:16:::1;:32:::0;;;16979:16:::1;:32:::0;;;17038:35:::1;16998:13:::0;16955;17038:35:::1;:::i;:::-;17022:13;:51:::0;;;17109:2:::1;-1:-1:-1::0;17092:19:0::1;17084:61;;;::::0;-1:-1:-1;;;17084:61:0;;7386:2:1;17084:61:0::1;::::0;::::1;7368:21:1::0;7425:2;7405:18;;;7398:30;7464:31;7444:18;;;7437:59;7513:18;;17084:61:0::1;7184:353:1::0;17084:61:0::1;16836:317:::0;;:::o;4136:100::-;4190:13;4223:5;4216:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4136:100;:::o;5050:169::-;5133:4;5150:39;365:10;5173:7;5182:6;5150:8;:39::i;:::-;-1:-1:-1;5207:4:0;5050:169;;;;;:::o;15073:618::-;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;15215:15:::1;:22;15197:7;:14;:40;15189:83;;;::::0;-1:-1:-1;;;15189:83:0;;8129:2:1;15189:83:0::1;::::0;::::1;8111:21:1::0;8168:2;8148:18;;;8141:30;8207:32;8187:18;;;8180:60;8257:18;;15189:83:0::1;7927:354:1::0;15189:83:0::1;15308:3;15291:7;:14;:20;15283:87;;;::::0;-1:-1:-1;;;15283:87:0;;8488:2:1;15283:87:0::1;::::0;::::1;8470:21:1::0;8527:2;8507:18;;;8500:30;8566:34;8546:18;;;8539:62;-1:-1:-1;;;8617:18:1;;;8610:52;8679:19;;15283:87:0::1;8286:418:1::0;15283:87:0::1;15483:9;15479:205;15502:7;:14;15498:1;:18;15479:205;;;15537:14;15554:7;15562:1;15554:10;;;;;;;;:::i;:::-;;;;;;;15537:27;;15579:14;15596:15;15612:1;15596:18;;;;;;;;:::i;:::-;;;;;;;15579:35;;15629:43;15645:10;15657:6;15665;15629:15;:43::i;:::-;15522:162;;15518:3;;;;;:::i;:::-;;;;15479:205;;;;15073:618:::0;;:::o;5227:492::-;5367:4;5384:36;5394:6;5402:9;5413:6;5384:9;:36::i;:::-;-1:-1:-1;;;;;5460:19:0;;5433:24;5460:19;;;:11;:19;;;;;;;;365:10;5460:33;;;;;;;;5512:26;;;;5504:79;;;;-1:-1:-1;;;5504:79:0;;9183:2:1;5504:79:0;;;9165:21:1;9222:2;9202:18;;;9195:30;9261:34;9241:18;;;9234:62;-1:-1:-1;;;9312:18:1;;;9305:38;9360:19;;5504:79:0;8981:404:1;5504:79:0;5619:57;5628:6;365:10;5669:6;5650:16;:25;5619:8;:57::i;:::-;-1:-1:-1;5707:4:0;;5227:492;-1:-1:-1;;;;5227:492:0:o;13587:269::-;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;13706:4:::1;13700;13680:13;4545:12:::0;;;4457:108;13680:13:::1;:17;::::0;13696:1:::1;13680:17;:::i;:::-;:24;;;;:::i;:::-;13679:31;;;;:::i;:::-;13669:6;:41;;13661:95;;;::::0;-1:-1:-1;;;13661:95:0;;9987:2:1;13661:95:0::1;::::0;::::1;9969:21:1::0;10026:2;10006:18;;;9999:30;10065:34;10045:18;;;10038:62;-1:-1:-1;;;10116:18:1;;;10109:39;10165:19;;13661:95:0::1;9785:405:1::0;13661:95:0::1;13782:17;:6:::0;13792::::1;13782:17;:::i;:::-;13767:12;:32:::0;;;13815:33:::1;::::0;2092:25:1;;;13815:33:0::1;::::0;2080:2:1;2065:18;13815:33:0::1;;;;;;;;13587:269:::0;:::o;5727:215::-;365:10;5815:4;5864:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5864:34:0;;;;;;;;;;5815:4;;5832:80;;5855:7;;5864:47;;5901:10;;5864:47;:::i;:::-;5832:8;:80::i;23619:248::-;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;23700:4:::1;23710:1;4674:18:::0;;;;;23744:8:::1;:15:::0;;-1:-1:-1;;;;23744:15:0::1;-1:-1:-1::0;;;23744:15:0::1;::::0;;23770:10:::1;:8;:10::i;:::-;23791:8;:16:::0;;-1:-1:-1;;;;23791:16:0::1;::::0;;23823:36:::1;::::0;23843:15:::1;2092:25:1::0;;23823:36:0::1;::::0;2080:2:1;2065:18;23823:36:0::1;;;;;;;23619:248::o:0;16518:310::-;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;16617:15:::1;:31:::0;;;16659:15:::1;:31:::0;;;16716:33:::1;16677:13:::0;16635;16716:33:::1;:::i;:::-;16701:12;:48:::0;;;16784:2:::1;-1:-1:-1::0;16768:18:0::1;16760:60;;;::::0;-1:-1:-1;;;16760:60:0;;7386:2:1;16760:60:0::1;::::0;::::1;7368:21:1::0;7425:2;7405:18;;;7398:30;7464:31;7444:18;;;7437:59;7513:18;;16760:60:0::1;7184:353:1::0;8213:150:0;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;8306:6:::1;::::0;8285:40:::1;::::0;8322:1:::1;::::0;-1:-1:-1;;;;;8306:6:0::1;::::0;8285:40:::1;::::0;8322:1;;8285:40:::1;8336:6;:19:::0;;-1:-1:-1;;;;;;8336:19:0::1;::::0;;8213:150::o;13464:115::-;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;13518:14:::1;:22:::0;;-1:-1:-1;;;;13518:22:0::1;::::0;;13556:15:::1;::::0;::::1;::::0;13535:5:::1;::::0;13556:15:::1;13464:115::o:0;15699:260::-;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;15795:4:::1;15791:104;;15833:6;::::0;-1:-1:-1;;;;;15833:6:0;;::::1;15823:16:::0;;::::1;::::0;15815:68:::1;;;::::0;-1:-1:-1;;;15815:68:0;;10743:2:1;15815:68:0::1;::::0;::::1;10725:21:1::0;10782:2;10762:18;;;10755:30;10821:34;10801:18;;;10794:62;-1:-1:-1;;;10872:18:1;;;10865:37;10919:19;;15815:68:0::1;10541:403:1::0;15815:68:0::1;-1:-1:-1::0;;;;;15905:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;15905:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15699:260::o;22717:381::-;8126:6;;22804:10;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22835:20:0;::::1;22827:59;;;::::0;-1:-1:-1;;;22827:59:0;;11151:2:1;22827:59:0::1;::::0;::::1;11133:21:1::0;11190:2;11170:18;;;11163:30;11229:28;11209:18;;;11202:56;11275:18;;22827:59:0::1;10949:350:1::0;22827:59:0::1;22924:39;::::0;-1:-1:-1;;;22924:39:0;;22957:4:::1;22924:39;::::0;::::1;984:51:1::0;22897:24:0::1;::::0;-1:-1:-1;;;;;22924:24:0;::::1;::::0;::::1;::::0;957:18:1;;22924:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22982:46;::::0;-1:-1:-1;;;22982:46:0;;-1:-1:-1;;;;;11685:32:1;;;22982:46:0::1;::::0;::::1;11667:51:1::0;11734:18;;;11727:34;;;22897:66:0;;-1:-1:-1;22982:23:0;;::::1;::::0;::::1;::::0;11640:18:1;;22982:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23044;::::0;;-1:-1:-1;;;;;11685:32:1;;11667:51;;11749:2;11734:18;;11727:34;;;22974:54:0;;-1:-1:-1;23044:46:0::1;::::0;11640:18:1;23044:46:0::1;;;;;;;22816:282;22717:381:::0;;;;:::o;13207:205::-;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;13271:13:::1;::::0;-1:-1:-1;;;13271:13:0;::::1;;;13270:14;13262:50;;;::::0;-1:-1:-1;;;13262:50:0;;12224:2:1;13262:50:0::1;::::0;::::1;12206:21:1::0;12263:2;12243:18;;;12236:30;12302:25;12282:18;;;12275:53;12345:18;;13262:50:0::1;12022:347:1::0;13262:50:0::1;13323:13;:20:::0;;-1:-1:-1;;;;13354:18:0;-1:-1:-1;;;13354:18:0;;;13388:16:::1;::::0;::::1;::::0;-1:-1:-1;;13388:16:0::1;13207:205::o:0;23336:231::-;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23430:31:0;::::1;23422:81;;;::::0;-1:-1:-1;;;23422:81:0;;12576:2:1;23422:81:0::1;::::0;::::1;12558:21:1::0;12615:2;12595:18;;;12588:30;12654:34;12634:18;;;12627:62;-1:-1:-1;;;12705:18:1;;;12698:35;12750:19;;23422:81:0::1;12374:401:1::0;23422:81:0::1;23514:16;:45:::0;;-1:-1:-1;;;;;;23514:45:0::1;-1:-1:-1::0;;;;;23514:45:0;;;::::1;::::0;;;::::1;::::0;;23336:231::o;4244:104::-;4300:13;4333:7;4326:14;;;;;:::i;15967:295::-;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;16076:6:::1;::::0;-1:-1:-1;;;;;16076:6:0;;::::1;16068:14:::0;;::::1;::::0;16060:84:::1;;;::::0;-1:-1:-1;;;16060:84:0;;12982:2:1;16060:84:0::1;::::0;::::1;12964:21:1::0;13021:2;13001:18;;;12994:30;13060:34;13040:18;;;13033:62;13131:27;13111:18;;;13104:55;13176:19;;16060:84:0::1;12780:421:1::0;16060:84:0::1;16157:41;16186:4;16192:5;16157:28;:41::i;:::-;16214:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;16214:40:0;::::1;::::0;::::1;::::0;;;::::1;15967:295:::0;;:::o;5950:413::-;365:10;6043:4;6087:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6087:34:0;;;;;;;;;;6140:35;;;;6132:85;;;;-1:-1:-1;;;6132:85:0;;13408:2:1;6132:85:0;;;13390:21:1;13447:2;13427:18;;;13420:30;13486:34;13466:18;;;13459:62;-1:-1:-1;;;13537:18:1;;;13530:35;13582:19;;6132:85:0;13206:401:1;6132:85:0;6253:67;365:10;6276:7;6304:15;6285:16;:34;6253:8;:67::i;:::-;-1:-1:-1;6351:4:0;;5950:413;-1:-1:-1;;;5950:413:0:o;4708:175::-;4794:4;4811:42;365:10;4835:9;4846:6;4811:9;:42::i;17161:182::-;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17246:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;17246:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17301:34;;1642:41:1;;;17301:34:0::1;::::0;1615:18:1;17301:34:0::1;;;;;;;17161:182:::0;;:::o;14146:284::-;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;14268:4:::1;14262;14242:13;4545:12:::0;;;4457:108;14242:13:::1;:17;::::0;14258:1:::1;14242:17;:::i;:::-;:24;;;;:::i;:::-;14241:31;;;;:::i;:::-;14231:6;:41;;14223:98;;;::::0;-1:-1:-1;;;14223:98:0;;13814:2:1;14223:98:0::1;::::0;::::1;13796:21:1::0;13853:2;13833:18;;;13826:30;13892:34;13872:18;;;13865:62;-1:-1:-1;;;13943:18:1;;;13936:42;13995:19;;14223:98:0::1;13612:408:1::0;14223:98:0::1;14350:17;:6:::0;14360::::1;14350:17;:::i;:::-;14332:15;:35:::0;;;14383:39:::1;::::0;2092:25:1;;;14383:39:0::1;::::0;2080:2:1;2065:18;14383:39:0::1;1946:177:1::0;14500:350:0;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;14624:6:::1;14604:13;4545:12:::0;;;4457:108;14604:13:::1;:17;::::0;14620:1:::1;14604:17;:::i;:::-;:26;;;;:::i;:::-;14591:9;:39;;14583:105;;;::::0;-1:-1:-1;;;14583:105:0;;14227:2:1;14583:105:0::1;::::0;::::1;14209:21:1::0;14266:2;14246:18;;;14239:30;14305:34;14285:18;;;14278:62;-1:-1:-1;;;14356:18:1;;;14349:51;14417:19;;14583:105:0::1;14025:417:1::0;14583:105:0::1;14740:4;14720:13;4545:12:::0;;;4457:108;14720:13:::1;:17;::::0;14736:1:::1;14720:17;:::i;:::-;:24;;;;:::i;:::-;14707:9;:37;;14699:102;;;::::0;-1:-1:-1;;;14699:102:0;;14649:2:1;14699:102:0::1;::::0;::::1;14631:21:1::0;14688:2;14668:18;;;14661:30;14727:34;14707:18;;;14700:62;-1:-1:-1;;;14778:18:1;;;14771:50;14838:19;;14699:102:0::1;14447:416:1::0;14699:102:0::1;14812:18;:30:::0;14500:350::o;13864:274::-;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;13984:4:::1;13978;13958:13;4545:12:::0;;;4457:108;13958:13:::1;:17;::::0;13974:1:::1;13958:17;:::i;:::-;:24;;;;:::i;:::-;13957:31;;;;:::i;:::-;13947:6;:41;;13939:96;;;::::0;-1:-1:-1;;;13939:96:0;;15070:2:1;13939:96:0::1;::::0;::::1;15052:21:1::0;15109:2;15089:18;;;15082:30;15148:34;15128:18;;;15121:62;-1:-1:-1;;;15199:18:1;;;15192:40;15249:19;;13939:96:0::1;14868:406:1::0;13939:96:0::1;14062:17;:6:::0;14072::::1;14062:17;:::i;:::-;14046:13;:33:::0;;;14095:35:::1;::::0;2092:25:1;;;14095:35:0::1;::::0;2080:2:1;2065:18;14095:35:0::1;1946:177:1::0;8371:244:0;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8460:22:0;::::1;8452:73;;;::::0;-1:-1:-1;;;8452:73:0;;15481:2:1;8452:73:0::1;::::0;::::1;15463:21:1::0;15520:2;15500:18;;;15493:30;15559:34;15539:18;;;15532:62;-1:-1:-1;;;15610:18:1;;;15603:36;15656:19;;8452:73:0::1;15279:402:1::0;8452:73:0::1;8562:6;::::0;8541:38:::1;::::0;-1:-1:-1;;;;;8541:38:0;;::::1;::::0;8562:6:::1;::::0;8541:38:::1;::::0;8562:6:::1;::::0;8541:38:::1;8590:6;:17:::0;;-1:-1:-1;;;;;;8590:17:0::1;-1:-1:-1::0;;;;;8590:17:0;;;::::1;::::0;;;::::1;::::0;;8371:244::o;23168:160::-;8126:6;;-1:-1:-1;;;;;8126:6:0;365:10;8126:22;8118:67;;;;-1:-1:-1;;;8118:67:0;;;;;;;:::i;:::-;23262:58:::1;::::0;23226:12:::1;::::0;23270:10:::1;::::0;23294:21:::1;::::0;23226:12;23262:58;23226:12;23262:58;23294:21;23270:10;23262:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;23168:160:0:o;7292:380::-;-1:-1:-1;;;;;7428:19:0;;7420:68;;;;-1:-1:-1;;;7420:68:0;;16098:2:1;7420:68:0;;;16080:21:1;16137:2;16117:18;;;16110:30;16176:34;16156:18;;;16149:62;-1:-1:-1;;;16227:18:1;;;16220:34;16271:19;;7420:68:0;15896:400:1;7420:68:0;-1:-1:-1;;;;;7507:21:0;;7499:68;;;;-1:-1:-1;;;7499:68:0;;16503:2:1;7499:68:0;;;16485:21:1;16542:2;16522:18;;;16515:30;16581:34;16561:18;;;16554:62;-1:-1:-1;;;16632:18:1;;;16625:32;16674:19;;7499:68:0;16301:398:1;7499:68:0;-1:-1:-1;;;;;7580:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7632:32;;2092:25:1;;;7632:32:0;;2065:18:1;7632:32:0;;;;;;;7292:380;;;:::o;6371:614::-;-1:-1:-1;;;;;6511:20:0;;6503:70;;;;-1:-1:-1;;;6503:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6592:23:0;;6584:71;;;;-1:-1:-1;;;6584:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6692:17:0;;6668:21;6692:17;;;;;;;;;;;6728:23;;;;6720:74;;;;-1:-1:-1;;;6720:74:0;;17716:2:1;6720:74:0;;;17698:21:1;17755:2;17735:18;;;17728:30;17794:34;17774:18;;;17767:62;-1:-1:-1;;;17845:18:1;;;17838:36;17891:19;;6720:74:0;17514:402:1;6720:74:0;-1:-1:-1;;;;;6830:17:0;;;:9;:17;;;;;;;;;;;6850:22;;;6830:42;;6894:20;;;;;;;;:30;;6866:6;;6830:9;6894:30;;6866:6;;6894:30;:::i;:::-;;;;;;;;6959:9;-1:-1:-1;;;;;6942:35:0;6951:6;-1:-1:-1;;;;;6942:35:0;;6970:6;6942:35;;;;2092:25:1;;2080:2;2065:18;;1946:177;6942:35:0;;;;;;;;6492:493;6371:614;;;:::o;17351:3035::-;-1:-1:-1;;;;;17451:18:0;;17443:68;;;;-1:-1:-1;;;17443:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17530:16:0;;17522:64;;;;-1:-1:-1;;;17522:64:0;;;;;;;:::i;:::-;17614:1;17605:6;:10;17597:52;;;;-1:-1:-1;;;17597:52:0;;18123:2:1;17597:52:0;;;18105:21:1;18162:2;18142:18;;;18135:30;18201:31;18181:18;;;18174:59;18250:18;;17597:52:0;17921:353:1;17597:52:0;17666:13;;-1:-1:-1;;;17666:13:0;;;;17662:132;;-1:-1:-1;;;;;17703:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;17732:23:0;;;;;;:19;:23;;;;;;;;17703:52;17695:87;;;;-1:-1:-1;;;17695:87:0;;18481:2:1;17695:87:0;;;18463:21:1;18520:2;18500:18;;;18493:30;-1:-1:-1;;;18539:18:1;;;18532:52;18601:18;;17695:87:0;18279:346:1;17695:87:0;17809:14;;-1:-1:-1;;;17809:14:0;;;;17806:995;;;8064:6;;-1:-1:-1;;;;;17843:15:0;;;8064:6;;17843:15;;;;:32;;-1:-1:-1;8064:6:0;;-1:-1:-1;;;;;17862:13:0;;;8064:6;;17862:13;;17843:32;:52;;;;-1:-1:-1;;;;;;17879:16:0;;;;17843:52;:77;;;;-1:-1:-1;;;;;;17899:21:0;;17913:6;17899:21;;17843:77;:107;;;;-1:-1:-1;;;;;;17925:25:0;;;;;;:19;:25;;;;;;;;17924:26;17843:107;:135;;;;-1:-1:-1;;;;;;17955:23:0;;;;;;:19;:23;;;;;;;;17954:24;17843:135;17839:951;;;-1:-1:-1;;;;;18036:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;18072:35:0;;;;;;:31;:35;;;;;;;;18071:36;18036:71;18032:743;;;18154:12;;18144:6;:22;;18136:75;;;;-1:-1:-1;;;18136:75:0;;18832:2:1;18136:75:0;;;18814:21:1;18871:2;18851:18;;;18844:30;18910:34;18890:18;;;18883:62;-1:-1:-1;;;18961:18:1;;;18954:38;19009:19;;18136:75:0;18630:404:1;18136:75:0;18272:15;;-1:-1:-1;;;;;4674:18:0;;4647:7;4674:18;;;;;;;;;;;18246:22;;:6;:22;:::i;:::-;:41;;18238:78;;;;-1:-1:-1;;;18238:78:0;;19241:2:1;18238:78:0;;;19223:21:1;19280:2;19260:18;;;19253:30;-1:-1:-1;;;19299:18:1;;;19292:54;19363:18;;18238:78:0;19039:348:1;18238:78:0;18032:743;;;-1:-1:-1;;;;;18392:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;18426:37:0;;;;;;:31;:37;;;;;;;;18425:38;18392:71;18388:387;;;18510:13;;18500:6;:23;;18492:78;;;;-1:-1:-1;;;18492:78:0;;19594:2:1;18492:78:0;;;19576:21:1;19633:2;19613:18;;;19606:30;19672:34;19652:18;;;19645:62;-1:-1:-1;;;19723:18:1;;;19716:40;19773:19;;18492:78:0;19392:406:1;18388:387:0;-1:-1:-1;;;;;18618:35:0;;;;;;:31;:35;;;;;;;;18613:162;;18711:15;;-1:-1:-1;;;;;4674:18:0;;4647:7;4674:18;;;;;;;;;;;18685:22;;:6;:22;:::i;:::-;:41;;18677:78;;;;-1:-1:-1;;;18677:78:0;;19241:2:1;18677:78:0;;;19223:21:1;19280:2;19260:18;;;19253:30;-1:-1:-1;;;19299:18:1;;;19292:54;19363:18;;18677:78:0;19039:348:1;18677:78:0;18862:4;18813:28;4674:18;;;;;;;;;;;18920;;18896:42;;;;;;;18954:22;;-1:-1:-1;18965:11:0;;-1:-1:-1;;;18965:11:0;;;;18954:22;:35;;;;-1:-1:-1;18981:8:0;;-1:-1:-1;;;18981:8:0;;;;18980:9;18954:35;:71;;;;-1:-1:-1;;;;;;18994:31:0;;;;;;:25;:31;;;;;;;;18993:32;18954:71;:101;;;;-1:-1:-1;;;;;;19030:25:0;;;;;;:19;:25;;;;;;;;19029:26;18954:101;:129;;;;-1:-1:-1;;;;;;19060:23:0;;;;;;:19;:23;;;;;;;;19059:24;18954:129;18951:236;;;19100:8;:15;;-1:-1:-1;;;;19100:15:0;-1:-1:-1;;;19100:15:0;;;19132:10;:8;:10::i;:::-;19159:8;:16;;-1:-1:-1;;;;19159:16:0;;;18951:236;-1:-1:-1;;;;;19317:25:0;;19199:12;19317:25;;;:19;:25;;;;;;19214:4;;19317:25;;;:52;;-1:-1:-1;;;;;;19346:23:0;;;;;;:19;:23;;;;;;;;19317:52;19314:99;;;-1:-1:-1;19396:5:0;19314:99;19425:12;19529:7;19526:807;;;-1:-1:-1;;;;;19580:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;19629:1;19613:13;;:17;19580:50;19576:610;;;19682:3;19666:13;;19657:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;19650:35;;19752:13;;19733:16;;19726:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;19704:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;19832:13:0;;19813:16;;19806:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;19784:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;19576:610:0;;-1:-1:-1;19576:610:0;;-1:-1:-1;;;;;19908:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;19958:1;19943:12;;:16;19908:51;19905:281;;;20011:3;19996:12;;19987:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;19980:34;;20080:12;;20062:15;;20055:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;20033:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;20158:12:0;;20140:15;;20133:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;20111:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;19905:281:0;20205:8;;20202:89;;20233:42;20249:4;20263;20270;20233:15;:42::i;:::-;20307:14;20317:4;20307:14;;:::i;:::-;;;19526:807;20345:33;20361:4;20367:2;20371:6;20345:15;:33::i;:::-;17430:2956;;;;17351:3035;;;:::o;21490:1219::-;21573:4;21529:23;4674:18;;;;;;;;;;;21529:50;;21590:25;21639:18;;21618;;:39;;;;:::i;:::-;21590:67;-1:-1:-1;21673:20:0;;;:46;;-1:-1:-1;21697:22:0;;21673:46;21670:60;;;21722:7;;21490:1219::o;21670:60::-;21763:18;;:23;;21784:2;21763:23;:::i;:::-;21745:15;:41;21742:113;;;21820:18;;:23;;21841:2;21820:23;:::i;:::-;21802:41;;21742:113;21867:12;21941:23;22026:1;22006:17;21985:18;;21967:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;21941:86;-1:-1:-1;22040:51:0;22057:33;21941:86;22057:15;:33;:::i;:::-;22040:16;:51::i;:::-;22288:18;;22125:21;;;;22104:18;;22288:20;;22307:1;;22288:20;:::i;:::-;22267:42;;:17;:42;:::i;:::-;22245:18;;22232:31;;:10;:31;:::i;:::-;:78;;;;:::i;:::-;22206:104;-1:-1:-1;22323:34:0;22206:104;22323:34;;:::i;:::-;22391:1;22370:18;:22;;;22403:18;:22;22323:34;-1:-1:-1;22441:19:0;;;;;:42;;;22482:1;22464:15;:19;22441:42;22438:119;;;22499:46;22512:15;22529;22499:12;:46::i;:::-;22572:21;:25;22569:133;;22634:16;;22626:64;;-1:-1:-1;;;;;22634:16:0;;;;22664:21;;22626:64;;;;22664:21;22634:16;22626:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;21490:1219:0:o;16270:240::-;-1:-1:-1;;;;;16353:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;16353:39:0;;;;;;;16405;16353:31;:39;16405:26;:39::i;20392:573::-;20544:16;;;20558:1;20544:16;;;;;;;;20520:21;;20544:16;;;;;;;;;;-1:-1:-1;20544:16:0;20520:40;;20589:4;20571;20576:1;20571:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20571:23:0;;;:7;;;;;;;;;;:23;;;;20615:9;;:16;;;-1:-1:-1;;;20615:16:0;;;;:9;;;;;:14;;:16;;;;;20571:7;;20615:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20605:4;20610:1;20605:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20605:26:0;;;:7;;;;;;;;;:26;20676:9;;20644:56;;20661:4;;20676:9;20688:11;20644:8;:56::i;:::-;20739:9;;:218;;-1:-1:-1;;;20739:218:0;;-1:-1:-1;;;;;20739:9:0;;;;:60;;:218;;20814:11;;20739:9;;20884:4;;20911;;20931:15;;20739:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20447:518;20392:573;:::o;20973:509::-;21153:9;;21121:56;;21138:4;;-1:-1:-1;;;;;21153:9:0;21165:11;21121:8;:56::i;:::-;21220:9;;:254;;-1:-1:-1;;;21220:254:0;;21286:4;21220:254;;;21518:34:1;21568:18;;;21561:34;;;21220:9:0;21611:18:1;;;21604:34;;;21654:18;;;21647:34;21426:6:0;21697:19:1;;;21690:44;21448:15:0;21750:19:1;;;21743:35;-1:-1:-1;;;;;21220:9:0;;;;:25;;21253:9;;21452:19:1;;21220:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20973:509;;:::o;14858:207::-;-1:-1:-1;;;;;14946:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;14946:52:0;;;;;;;;;;15014:43;;22268:51:1;;;22335:18;;;22328:50;15014:43:0;;22241:18:1;15014:43:0;;;;;;;14858:207;;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;1046:131::-;-1:-1:-1;;;;;1121:31:1;;1111:42;;1101:70;;1167:1;1164;1157:12;1101:70;1046:131;:::o;1182:315::-;1250:6;1258;1311:2;1299:9;1290:7;1286:23;1282:32;1279:52;;;1327:1;1324;1317:12;1279:52;1366:9;1353:23;1385:31;1410:5;1385:31;:::i;:::-;1435:5;1487:2;1472:18;;;;1459:32;;-1:-1:-1;;;1182:315:1:o;1694:247::-;1753:6;1806:2;1794:9;1785:7;1781:23;1777:32;1774:52;;;1822:1;1819;1812:12;1774:52;1861:9;1848:23;1880:31;1905:5;1880:31;:::i;:::-;1930:5;1694:247;-1:-1:-1;;;1694:247:1:o;2128:127::-;2189:10;2184:3;2180:20;2177:1;2170:31;2220:4;2217:1;2210:15;2244:4;2241:1;2234:15;2260:275;2331:2;2325:9;2396:2;2377:13;;-1:-1:-1;;2373:27:1;2361:40;;2431:18;2416:34;;2452:22;;;2413:62;2410:88;;;2478:18;;:::i;:::-;2514:2;2507:22;2260:275;;-1:-1:-1;2260:275:1:o;2540:183::-;2600:4;2633:18;2625:6;2622:30;2619:56;;;2655:18;;:::i;:::-;-1:-1:-1;2700:1:1;2696:14;2712:4;2692:25;;2540:183::o;2728:662::-;2782:5;2835:3;2828:4;2820:6;2816:17;2812:27;2802:55;;2853:1;2850;2843:12;2802:55;2889:6;2876:20;2915:4;2939:60;2955:43;2995:2;2955:43;:::i;:::-;2939:60;:::i;:::-;3033:15;;;3119:1;3115:10;;;;3103:23;;3099:32;;;3064:12;;;;3143:15;;;3140:35;;;3171:1;3168;3161:12;3140:35;3207:2;3199:6;3195:15;3219:142;3235:6;3230:3;3227:15;3219:142;;;3301:17;;3289:30;;3339:12;;;;3252;;3219:142;;;-1:-1:-1;3379:5:1;2728:662;-1:-1:-1;;;;;;2728:662:1:o;3395:1215::-;3513:6;3521;3574:2;3562:9;3553:7;3549:23;3545:32;3542:52;;;3590:1;3587;3580:12;3542:52;3630:9;3617:23;3659:18;3700:2;3692:6;3689:14;3686:34;;;3716:1;3713;3706:12;3686:34;3754:6;3743:9;3739:22;3729:32;;3799:7;3792:4;3788:2;3784:13;3780:27;3770:55;;3821:1;3818;3811:12;3770:55;3857:2;3844:16;3879:4;3903:60;3919:43;3959:2;3919:43;:::i;3903:60::-;3997:15;;;4079:1;4075:10;;;;4067:19;;4063:28;;;4028:12;;;;4103:19;;;4100:39;;;4135:1;4132;4125:12;4100:39;4159:11;;;;4179:217;4195:6;4190:3;4187:15;4179:217;;;4275:3;4262:17;4292:31;4317:5;4292:31;:::i;:::-;4336:18;;4212:12;;;;4374;;;;4179:217;;;4415:5;-1:-1:-1;;4458:18:1;;4445:32;;-1:-1:-1;;4489:16:1;;;4486:36;;;4518:1;4515;4508:12;4486:36;;4541:63;4596:7;4585:8;4574:9;4570:24;4541:63;:::i;:::-;4531:73;;;3395:1215;;;;;:::o;4615:456::-;4692:6;4700;4708;4761:2;4749:9;4740:7;4736:23;4732:32;4729:52;;;4777:1;4774;4767:12;4729:52;4816:9;4803:23;4835:31;4860:5;4835:31;:::i;:::-;4885:5;-1:-1:-1;4942:2:1;4927:18;;4914:32;4955:33;4914:32;4955:33;:::i;:::-;4615:456;;5007:7;;-1:-1:-1;;;5061:2:1;5046:18;;;;5033:32;;4615:456::o;5076:180::-;5135:6;5188:2;5176:9;5167:7;5163:23;5159:32;5156:52;;;5204:1;5201;5194:12;5156:52;-1:-1:-1;5227:23:1;;5076:180;-1:-1:-1;5076:180:1:o;5658:118::-;5744:5;5737:13;5730:21;5723:5;5720:32;5710:60;;5766:1;5763;5756:12;5781:382;5846:6;5854;5907:2;5895:9;5886:7;5882:23;5878:32;5875:52;;;5923:1;5920;5913:12;5875:52;5962:9;5949:23;5981:31;6006:5;5981:31;:::i;:::-;6031:5;-1:-1:-1;6088:2:1;6073:18;;6060:32;6101:30;6060:32;6101:30;:::i;:::-;6150:7;6140:17;;;5781:382;;;;;:::o;6168:388::-;6236:6;6244;6297:2;6285:9;6276:7;6272:23;6268:32;6265:52;;;6313:1;6310;6303:12;6265:52;6352:9;6339:23;6371:31;6396:5;6371:31;:::i;:::-;6421:5;-1:-1:-1;6478:2:1;6463:18;;6450:32;6491:33;6450:32;6491:33;:::i;6561:356::-;6763:2;6745:21;;;6782:18;;;6775:30;6841:34;6836:2;6821:18;;6814:62;6908:2;6893:18;;6561:356::o;6922:127::-;6983:10;6978:3;6974:20;6971:1;6964:31;7014:4;7011:1;7004:15;7038:4;7035:1;7028:15;7054:125;7119:9;;;7140:10;;;7137:36;;;7153:18;;:::i;7542:380::-;7621:1;7617:12;;;;7664;;;7685:61;;7739:4;7731:6;7727:17;7717:27;;7685:61;7792:2;7784:6;7781:14;7761:18;7758:38;7755:161;;7838:10;7833:3;7829:20;7826:1;7819:31;7873:4;7870:1;7863:15;7901:4;7898:1;7891:15;7755:161;;7542:380;;;:::o;8709:127::-;8770:10;8765:3;8761:20;8758:1;8751:31;8801:4;8798:1;8791:15;8825:4;8822:1;8815:15;8841:135;8880:3;8901:17;;;8898:43;;8921:18;;:::i;:::-;-1:-1:-1;8968:1:1;8957:13;;8841:135::o;9390:168::-;9463:9;;;9494;;9511:15;;;9505:22;;9491:37;9481:71;;9532:18;;:::i;9563:217::-;9603:1;9629;9619:132;;9673:10;9668:3;9664:20;9661:1;9654:31;9708:4;9705:1;9698:15;9736:4;9733:1;9726:15;9619:132;-1:-1:-1;9765:9:1;;9563:217::o;11304:184::-;11374:6;11427:2;11415:9;11406:7;11402:23;11398:32;11395:52;;;11443:1;11440;11433:12;11395:52;-1:-1:-1;11466:16:1;;11304:184;-1:-1:-1;11304:184:1:o;11772:245::-;11839:6;11892:2;11880:9;11871:7;11867:23;11863:32;11860:52;;;11908:1;11905;11898:12;11860:52;11940:9;11934:16;11959:28;11981:5;11959:28;:::i;16704:401::-;16906:2;16888:21;;;16945:2;16925:18;;;16918:30;16984:34;16979:2;16964:18;;16957:62;-1:-1:-1;;;17050:2:1;17035:18;;17028:35;17095:3;17080:19;;16704:401::o;17110:399::-;17312:2;17294:21;;;17351:2;17331:18;;;17324:30;17390:34;17385:2;17370:18;;17363:62;-1:-1:-1;;;17456:2:1;17441:18;;17434:33;17499:3;17484:19;;17110:399::o;19803:128::-;19870:9;;;19891:11;;;19888:37;;;19905:18;;:::i;19936:251::-;20006:6;20059:2;20047:9;20038:7;20034:23;20030:32;20027:52;;;20075:1;20072;20065:12;20027:52;20107:9;20101:16;20126:31;20151:5;20126:31;:::i;20192:980::-;20454:4;20502:3;20491:9;20487:19;20533:6;20522:9;20515:25;20559:2;20597:6;20592:2;20581:9;20577:18;20570:34;20640:3;20635:2;20624:9;20620:18;20613:31;20664:6;20699;20693:13;20730:6;20722;20715:22;20768:3;20757:9;20753:19;20746:26;;20807:2;20799:6;20795:15;20781:29;;20828:1;20838:195;20852:6;20849:1;20846:13;20838:195;;;20917:13;;-1:-1:-1;;;;;20913:39:1;20901:52;;21008:15;;;;20973:12;;;;20949:1;20867:9;20838:195;;;-1:-1:-1;;;;;;;21089:32:1;;;;21084:2;21069:18;;21062:60;-1:-1:-1;;;21153:3:1;21138:19;21131:35;21050:3;20192:980;-1:-1:-1;;;20192:980:1:o;21789:306::-;21877:6;21885;21893;21946:2;21934:9;21925:7;21921:23;21917:32;21914:52;;;21962:1;21959;21952:12;21914:52;21991:9;21985:16;21975:26;;22041:2;22030:9;22026:18;22020:25;22010:35;;22085:2;22074:9;22070:18;22064:25;22054:35;;21789:306;;;;;:::o

Swarm Source

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