ETH Price: $3,711.59 (+3.14%)

Token

ERC-20: DO YOUR OWN RESEARCH (DYOR)
 

Overview

Max Total Supply

100,000,000 DYOR

Holders

12

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,500,000 DYOR

Value
$0.00
0x9563a9561d12c37ce7acbf5ac1f7358de1228064
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:
DYOR

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-29
*/

//https://dyor-eth.com/
//https://t.me/dyorofficial

// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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);
}

interface ILpPair {
    function sync() external;
}

contract DYOR is ERC20, Ownable {


    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;

    IDexRouter public immutable dexRouter;
    address public immutable lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address DEVAddress;

    uint256 public tradingActiveBlock;
    uint256 public tradingActiveTs;
    uint256 public blockForPenaltyEnd;

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

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

    uint256 public buyTotalFees;
    uint256 public buyDEVFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellDEVFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForDEV;
    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 UpdatedDEVAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("DO YOUR OWN RESEARCH", "DYOR") {

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

        _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2

        dexRouter = IDexRouter(_dexRouter);

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

        uint256 totalSupply = 1 * 1e8 * 1e18;

        maxBuyAmount = totalSupply * 2 / 100;
        maxSellAmount = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 1 / 10000; 

        buyDEVFee = 25;
        buyLiquidityFee = 0;
        buyTotalFees = buyDEVFee + buyLiquidityFee;

        sellDEVFee = 35;
        sellLiquidityFee = 0;
        sellTotalFees = sellDEVFee + sellLiquidityFee;

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

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

        DEVAddress = address(newOwner);

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

    receive() external payable {}

    function openTrade(uint256 deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        require(deadBlocks <= 10, "Cannot set more than 5 deadblocks");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        tradingActiveTs = block.timestamp;
        blockForPenaltyEnd = tradingActiveBlock + deadBlocks;
        emit EnabledTrading();
    }

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

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }
    
    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);
    }

    // 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 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 updateFees(uint256 _buyDEVFee, uint256 _buyliquidityFee, uint256 _sellDEVFee, uint256 _sellliquidityFee) external onlyOwner {
        buyDEVFee = _buyDEVFee;
        buyLiquidityFee = _buyliquidityFee;
        buyTotalFees = buyDEVFee + buyLiquidityFee;
        sellDEVFee = _sellDEVFee;
        sellLiquidityFee = _sellliquidityFee;
        sellTotalFees = sellDEVFee + sellLiquidityFee;
    }

    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]){

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled){
                    if (to != address(dexRouter) && to != address(lpPair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number - 2 && _holderLastTransferTimestamp[to] < block.number - 2, "_transfer:: Transfer Delay enabled.  Try again later.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
            }
        }

        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){
            // bot/sniper penalty.
            if(earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0){
                fees = amount * 90 / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDEV += fees * buyDEVFee / buyTotalFees;
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDEV += fees * sellDEVFee / sellTotalFees;
            }

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

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

        	amount -= fees;
        }

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

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

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(DEVAddress),
            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 {

        if(tokensForLiquidity > 0 && balanceOf(address(this)) >= tokensForLiquidity) {
            super._transfer(address(this), address(lpPair),tokensForLiquidity);
            ILpPair(lpPair).sync();
        }
        tokensForLiquidity = 0;

        uint256 contractBalance = balanceOf(address(this));

        if(contractBalance == 0) {return;}

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

        swapTokensForEth(contractBalance);

        tokensForDEV = balanceOf(address(this));
    }

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        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 setDEVAddress(address _DEVAddress) external onlyOwner {
        require(_DEVAddress != address(0), "_DEVAddress address cannot be 0");
        DEVAddress = payable(_DEVAddress);
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"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":"UpdatedDEVAddress","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":"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":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDEVFee","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":"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":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","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":"sellDEVFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","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":"_DEVAddress","type":"address"}],"name":"setDEVAddress","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":"tokensForDEV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","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":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveTs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_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":"_buyDEVFee","type":"uint256"},{"internalType":"uint256","name":"_buyliquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellDEVFee","type":"uint256"},{"internalType":"uint256","name":"_sellliquidityFee","type":"uint256"}],"name":"updateFees","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":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600e805462ffffff191660019081179091556010805460ff191690911790553480156200002f575f80fd5b506040518060400160405280601481526020017f444f20594f5552204f574e20524553454152434800000000000000000000000081525060405180604001604052806004815260200163222ca7a960e11b8152508160039081620000949190620007c3565b506004620000a38282620007c3565b5050505f620000b7620003cb60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f805160206200371c833981519152908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa1580156200014b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200017191906200088b565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e591906200088b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000230573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025691906200088b565b6001600160a01b031660a081905262000271906001620003cf565b60a0516200028190600162000431565b6a52b7d2dcc80cd2e400000060646200029c826002620008ce565b620002a89190620008ee565b6006556064620002ba826002620008ce565b620002c69190620008ee565b600755612710620002d9826001620008ce565b620002e59190620008ee565b600955601960128190555f601381905562000300916200090e565b601155602360158190555f60168190556200031b916200090e565b6014556200032b836001620003cf565b62000338306001620003cf565b6200034761dead6001620003cf565b60805162000357906001620003cf565b620003648360016200049b565b620003713060016200049b565b6200038061dead60016200049b565b608051620003909060016200049b565b600a80546001600160a01b0319166001600160a01b038516179055620003b7838262000547565b620003c28362000629565b50505062000924565b3390565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382165f908152601b60205260409020805460ff1916821515179055620004608282620003cf565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6005546001600160a01b03163314620004e95760405162461bcd60e51b815260206004820181905260248201525f80516020620036fc83398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200059f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004e0565b8060025f828254620005b291906200090e565b90915550506001600160a01b0382165f9081526020819052604081208054839290620005e09084906200090e565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006735760405162461bcd60e51b815260206004820181905260248201525f80516020620036fc8339815191526044820152606401620004e0565b6001600160a01b038116620006da5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004e0565b6005546040516001600160a01b038084169216905f805160206200371c833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200074c57607f821691505b6020821081036200076b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620007be575f81815260208120601f850160051c81016020861015620007995750805b601f850160051c820191505b81811015620007ba57828155600101620007a5565b5050505b505050565b81516001600160401b03811115620007df57620007df62000723565b620007f781620007f0845462000737565b8462000771565b602080601f8311600181146200082d575f8415620008155750858301515b5f19600386901b1c1916600185901b178555620007ba565b5f85815260208120601f198616915b828110156200085d578886015182559484019460019091019084016200083c565b50858210156200087b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200089c575f80fd5b81516001600160a01b0381168114620008b3575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620008e857620008e8620008ba565b92915050565b5f826200090957634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620008e857620008e8620008ba565b60805160a051612d69620009935f395f81816104c501528181610ef7015281816111ed01528181611ea00152818161248a01526124b301525f818161033c015281816119c301528181611aac01528181611e63015281816127570152818161280e015261284d0152612d695ff3fe6080604052600436106102f6575f3560e01c806389c9e32011610189578063c876d0b9116100d8578063e884f26011610092578063f2fde38b1161006d578063f2fde38b146108b0578063f5648a4f146108cf578063f6374342146108e3578063fc155d1d146108f8575f80fd5b8063e884f26014610872578063ee40166e14610886578063f11a24d31461089b575f80fd5b8063c876d0b9146107ad578063d257b34f146107c6578063d85ba063146107e5578063dc3f0d0f146107fa578063dd62ed3e14610819578063e2f456051461085d575f80fd5b8063a9059cbb11610143578063ba72e0591161011e578063ba72e05914610732578063bbc0c74214610751578063c02466681461076f578063c6616ba11461078e575f80fd5b8063a9059cbb146106d0578063b51ac2c6146106ef578063b62496f514610704575f80fd5b806389c9e320146106375780638da5cb5b1461064c57806395d89b41146106695780639a7a23d61461067d578063a457c2d71461069c578063a62068ce146106bb575f80fd5b80634a62bb65116102455780636ddd1713116101ff578063751039fc116101da578063751039fc146105d05780637571336a146105e45780638366e79a1461060357806388e765ff14610622575f80fd5b80636ddd17131461056957806370a0823114610588578063715018a6146105bc575f80fd5b80634a62bb65146104e757806351f205e41461050057806358a6d53114610514578063663f95c71461052a57806366d602ae1461053f5780636a486a8e14610554575f80fd5b806323b872dd116102b05780632be32b611161028b5780632be32b611461045b578063313ce5671461047a5780633950935114610495578063452ed4f1146104b4575f80fd5b806323b872dd14610406578063254d9945146104255780632b14bbff14610446575f80fd5b806306fdde03146103015780630758d9241461032b578063095ea7b31461037657806310d5de53146103a557806318160ddd146103d35780631a8145bb146103f1575f80fd5b366102fd57005b5f80fd5b34801561030c575f80fd5b50610315610917565b604051610322919061291a565b60405180910390f35b348015610336575f80fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610322565b348015610381575f80fd5b5061039561039036600461297c565b6109a7565b6040519015158152602001610322565b3480156103b0575f80fd5b506103956103bf3660046129a6565b601a6020525f908152604090205460ff1681565b3480156103de575f80fd5b506002545b604051908152602001610322565b3480156103fc575f80fd5b506103e360185481565b348015610411575f80fd5b506103956104203660046129c8565b6109bd565b348015610430575f80fd5b5061044461043f366004612a06565b610a6a565b005b348015610451575f80fd5b506103e360155481565b348015610466575f80fd5b50610444610475366004612a06565b610b9b565b348015610485575f80fd5b5060405160128152602001610322565b3480156104a0575f80fd5b506103956104af36600461297c565b610ca8565b3480156104bf575f80fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f2575f80fd5b50600e546103959060ff1681565b34801561050b575f80fd5b50610444610ce3565b34801561051f575f80fd5b50600d544310610395565b348015610535575f80fd5b506103e360175481565b34801561054a575f80fd5b506103e360075481565b34801561055f575f80fd5b506103e360145481565b348015610574575f80fd5b50600e546103959062010000900460ff1681565b348015610593575f80fd5b506103e36105a23660046129a6565b6001600160a01b03165f9081526020819052604090205490565b3480156105c7575f80fd5b50610444610de9565b3480156105db575f80fd5b50610444610e5c565b3480156105ef575f80fd5b506104446105fe366004612a2a565b610ec6565b34801561060e575f80fd5b5061039561061d366004612a61565b610fb0565b34801561062d575f80fd5b506103e360065481565b348015610642575f80fd5b506103e3600c5481565b348015610657575f80fd5b506005546001600160a01b031661035e565b348015610674575f80fd5b506103156111b2565b348015610688575f80fd5b50610444610697366004612a2a565b6111c1565b3480156106a7575f80fd5b506103956106b636600461297c565b6112d7565b3480156106c6575f80fd5b506103e3600d5481565b3480156106db575f80fd5b506103956106ea36600461297c565b61136f565b3480156106fa575f80fd5b506103e360125481565b34801561070f575f80fd5b5061039561071e3660046129a6565b601b6020525f908152604090205460ff1681565b34801561073d575f80fd5b5061044461074c3660046129a6565b61137b565b34801561075c575f80fd5b50600e5461039590610100900460ff1681565b34801561077a575f80fd5b50610444610789366004612a2a565b61141d565b348015610799575f80fd5b506104446107a8366004612a8d565b6114a5565b3480156107b8575f80fd5b506010546103959060ff1681565b3480156107d1575f80fd5b506104446107e0366004612a06565b611503565b3480156107f0575f80fd5b506103e360115481565b348015610805575f80fd5b50610444610814366004612a06565b61164e565b348015610824575f80fd5b506103e3610833366004612a61565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610868575f80fd5b506103e360095481565b34801561087d575f80fd5b50610444611755565b348015610891575f80fd5b506103e3600b5481565b3480156108a6575f80fd5b506103e360135481565b3480156108bb575f80fd5b506104446108ca3660046129a6565b61178b565b3480156108da575f80fd5b50610444611875565b3480156108ee575f80fd5b506103e360165481565b348015610903575f80fd5b50610444610912366004612a06565b6118e9565b60606003805461092690612abc565b80601f016020809104026020016040519081016040528092919081815260200182805461095290612abc565b801561099d5780601f106109745761010080835404028352916020019161099d565b820191905f5260205f20905b81548152906001019060200180831161098057829003601f168201915b5050505050905090565b5f6109b3338484611b58565b5060015b92915050565b5f6109c9848484611c7b565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610a525760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610a5f8533858403611b58565b506001949350505050565b6005546001600160a01b03163314610a945760405162461bcd60e51b8152600401610a4990612af4565b600e54610100900460ff1615610aec5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610a49565b600a811115610b475760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420736574206d6f7265207468616e20352064656164626c6f636b6044820152607360f81b6064820152608401610a49565b600e805462ffff0019166201010017905543600b81905542600c55610b6d908290612b3d565b600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a150565b6005546001600160a01b03163314610bc55760405162461bcd60e51b8152600401610a4990612af4565b670de0b6b3a76400006103e8610bda60025490565b610be5906002612b50565b610bef9190612b67565b610bf99190612b67565b811015610c5a5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610a49565b610c6c81670de0b6b3a7640000612b50565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109b3918590610cde908690612b3d565b611b58565b6005546001600160a01b03163314610d0d5760405162461bcd60e51b8152600401610a4990612af4565b600954305f908152602081905260409020541015610d95576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610a49565b6008805460ff19166001179055610daa61245e565b6008805460ff191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610e135760405162461bcd60e51b8152600401610a4990612af4565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e865760405162461bcd60e51b8152600401610a4990612af4565b600e805460ff199081169091556010805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610ef05760405162461bcd60e51b8152600401610a4990612af4565b80610f86577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610f865760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610a49565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005545f906001600160a01b03163314610fdc5760405162461bcd60e51b8152600401610a4990612af4565b6001600160a01b0383166110325760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610a49565b306001600160a01b0384160361108a5760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610a49565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa1580156110ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f29190612b86565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015611142573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111669190612b9d565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b60606004805461092690612abc565b6005546001600160a01b031633146111eb5760405162461bcd60e51b8152600401610a4990612af4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036112925760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a49565b61129c8282612582565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156113585760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a49565b6113653385858403611b58565b5060019392505050565b5f6109b3338484611c7b565b6005546001600160a01b031633146113a55760405162461bcd60e51b8152600401610a4990612af4565b6001600160a01b0381166113fb5760405162461bcd60e51b815260206004820152601f60248201527f5f4445564164647265737320616464726573732063616e6e6f742062652030006044820152606401610a49565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114475760405162461bcd60e51b8152600401610a4990612af4565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146114cf5760405162461bcd60e51b8152600401610a4990612af4565b601284905560138390556114e38385612b3d565b601155601582905560168190556114fa8183612b3d565b60145550505050565b6005546001600160a01b0316331461152d5760405162461bcd60e51b8152600401610a4990612af4565b620186a061153a60025490565b611545906001612b50565b61154f9190612b67565b8110156115bc5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a49565b6103e86115c860025490565b6115d3906001612b50565b6115dd9190612b67565b8111156116495760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610a49565b600955565b6005546001600160a01b031633146116785760405162461bcd60e51b8152600401610a4990612af4565b670de0b6b3a76400006103e861168d60025490565b611698906002612b50565b6116a29190612b67565b6116ac9190612b67565b81101561170e5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610a49565b61172081670de0b6b3a7640000612b50565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610c9d565b6005546001600160a01b0316331461177f5760405162461bcd60e51b8152600401610a4990612af4565b6010805460ff19169055565b6005546001600160a01b031633146117b55760405162461bcd60e51b8152600401610a4990612af4565b6001600160a01b03811661181a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a49565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461189f5760405162461bcd60e51b8152600401610a4990612af4565b6040515f90339047908381818185875af1925050503d805f81146118de576040519150601f19603f3d011682016040523d82523d5f602084013e6118e3565b606091505b50505050565b6005546001600160a01b031633146119135760405162461bcd60e51b8152600401610a4990612af4565b678ac7230489e800008111156119a15760405162461bcd60e51b815260206004820152604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a401610a49565b6040805160028082526060820183525f926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a419190612bb8565b815f81518110611a5357611a53612bd3565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611a8757611a87612bd3565b6001600160a01b03928316602091820292909201015260405163b6f9de9560e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063b6f9de95908490611aed905f90869061dead904290600401612c29565b5f604051808303818588803b158015611b04575f80fd5b505af1158015611b16573d5f803e3d5ffd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051611b4c91815260200190565b60405180910390a15050565b6001600160a01b038316611bba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a49565b6001600160a01b038216611c1b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a49565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ca15760405162461bcd60e51b8152600401610a4990612c5d565b6001600160a01b038216611cc75760405162461bcd60e51b8152600401610a4990612ca2565b5f8111611d165760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610a49565b600e54610100900460ff16611da7576001600160a01b0383165f9081526019602052604090205460ff1680611d6257506001600160a01b0382165f9081526019602052604090205460ff165b611da75760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a49565b600e5460ff1615612104576005546001600160a01b03848116911614801590611dde57506005546001600160a01b03838116911614155b8015611df257506001600160a01b03821615155b8015611e0957506001600160a01b03821661dead14155b8015611e2d57506001600160a01b0383165f9081526019602052604090205460ff16155b8015611e5157506001600160a01b0382165f9081526019602052604090205460ff16155b156121045760105460ff1615611faf577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614158015611ed557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611faf57611ee5600243612ce5565b325f908152600f6020526040902054108015611f215750611f07600243612ce5565b6001600160a01b0383165f908152600f6020526040902054105b611f8b5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610a49565b325f908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f908152601b602052604090205460ff168015611fee57506001600160a01b0382165f908152601a602052604090205460ff16155b1561205b576006548111156120565760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610a49565b612104565b6001600160a01b0382165f908152601b602052604090205460ff16801561209a57506001600160a01b0383165f908152601a602052604090205460ff16155b15612104576007548111156121045760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610a49565b305f908152602081905260409020546009548110801590819061212f5750600e5462010000900460ff165b801561213e575060085460ff16155b801561216257506001600160a01b0385165f908152601b602052604090205460ff16155b801561218657506001600160a01b0385165f9081526019602052604090205460ff16155b80156121aa57506001600160a01b0384165f9081526019602052604090205460ff16155b156121cf576008805460ff191660011790556121c461245e565b6008805460ff191690555b6001600160a01b0385165f9081526019602052604090205460019060ff168061220f57506001600160a01b0385165f9081526019602052604090205460ff165b1561221757505f5b5f811561244a57600d544310801561224657506001600160a01b0387165f908152601b602052604090205460ff165b801561226a57506001600160a01b0386165f908152601b602052604090205460ff16155b801561227757505f601154115b156122fa57606461228986605a612b50565b6122939190612b67565b9050601154601354826122a69190612b50565b6122b09190612b67565b60185f8282546122c09190612b3d565b90915550506011546012546122d59083612b50565b6122df9190612b67565b60175f8282546122ef9190612b3d565b9091555061242c9050565b6001600160a01b0386165f908152601b602052604090205460ff16801561232257505f601454115b15612383576064601454866123379190612b50565b6123419190612b67565b9050601454601654826123549190612b50565b61235e9190612b67565b60185f82825461236e9190612b3d565b90915550506014546015546122d59083612b50565b6001600160a01b0387165f908152601b602052604090205460ff1680156123ab57505f601154115b1561242c576064601154866123c09190612b50565b6123ca9190612b67565b9050601154601354826123dd9190612b50565b6123e79190612b67565b60185f8282546123f79190612b3d565b909155505060115460125461240c9083612b50565b6124169190612b67565b60175f8282546124269190612b3d565b90915550505b801561243d5761243d8730836125af565b6124478186612ce5565b94505b6124558787876125af565b50505050505050565b5f60185411801561247f5750601854305f9081526020819052604090205410155b15612520576124b1307f00000000000000000000000000000000000000000000000000000000000000006018546125af565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612509575f80fd5b505af115801561251b573d5f803e3d5ffd5b505050505b5f6018819055308152602081905260408120549081900361253e5750565b60095461254c906014612b50565b81111561256457600954612561906014612b50565b90505b61256d81612702565b305f9081526020819052604090205460175550565b6001600160a01b0382165f908152601b60205260409020805460ff191682151517905561129c82826128bf565b6001600160a01b0383166125d55760405162461bcd60e51b8152600401610a4990612c5d565b6001600160a01b0382166125fb5760405162461bcd60e51b8152600401610a4990612ca2565b6001600160a01b0383165f90815260208190526040902054818110156126725760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a49565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906126a8908490612b3d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126f491815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061273557612735612bd3565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127d59190612bb8565b816001815181106127e8576127e8612bd3565b60200260200101906001600160a01b031690816001600160a01b031681525050612833307f000000000000000000000000000000000000000000000000000000000000000084611b58565b600a5460405163791ac94760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263791ac9479261288e9287925f92889291909116904290600401612cf8565b5f604051808303815f87803b1580156128a5575f80fd5b505af11580156128b7573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67469101611b4c565b5f6020808352835180828501525f5b8181101561294557858101830151858201604001528201612929565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612979575f80fd5b50565b5f806040838503121561298d575f80fd5b823561299881612965565b946020939093013593505050565b5f602082840312156129b6575f80fd5b81356129c181612965565b9392505050565b5f805f606084860312156129da575f80fd5b83356129e581612965565b925060208401356129f581612965565b929592945050506040919091013590565b5f60208284031215612a16575f80fd5b5035919050565b8015158114612979575f80fd5b5f8060408385031215612a3b575f80fd5b8235612a4681612965565b91506020830135612a5681612a1d565b809150509250929050565b5f8060408385031215612a72575f80fd5b8235612a7d81612965565b91506020830135612a5681612965565b5f805f8060808587031215612aa0575f80fd5b5050823594602084013594506040840135936060013592509050565b600181811c90821680612ad057607f821691505b602082108103612aee57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109b7576109b7612b29565b80820281158282048414176109b7576109b7612b29565b5f82612b8157634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612b96575f80fd5b5051919050565b5f60208284031215612bad575f80fd5b81516129c181612a1d565b5f60208284031215612bc8575f80fd5b81516129c181612965565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b83811015612c1e5781516001600160a01b031687529582019590820190600101612bf9565b509495945050505050565b848152608060208201525f612c416080830186612be7565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109b7576109b7612b29565b85815284602082015260a060408201525f612d1660a0830186612be7565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212208953879d57633844db5879241833a162bebbdd24f9f085ee1a6b1f284e31b32264736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102f6575f3560e01c806389c9e32011610189578063c876d0b9116100d8578063e884f26011610092578063f2fde38b1161006d578063f2fde38b146108b0578063f5648a4f146108cf578063f6374342146108e3578063fc155d1d146108f8575f80fd5b8063e884f26014610872578063ee40166e14610886578063f11a24d31461089b575f80fd5b8063c876d0b9146107ad578063d257b34f146107c6578063d85ba063146107e5578063dc3f0d0f146107fa578063dd62ed3e14610819578063e2f456051461085d575f80fd5b8063a9059cbb11610143578063ba72e0591161011e578063ba72e05914610732578063bbc0c74214610751578063c02466681461076f578063c6616ba11461078e575f80fd5b8063a9059cbb146106d0578063b51ac2c6146106ef578063b62496f514610704575f80fd5b806389c9e320146106375780638da5cb5b1461064c57806395d89b41146106695780639a7a23d61461067d578063a457c2d71461069c578063a62068ce146106bb575f80fd5b80634a62bb65116102455780636ddd1713116101ff578063751039fc116101da578063751039fc146105d05780637571336a146105e45780638366e79a1461060357806388e765ff14610622575f80fd5b80636ddd17131461056957806370a0823114610588578063715018a6146105bc575f80fd5b80634a62bb65146104e757806351f205e41461050057806358a6d53114610514578063663f95c71461052a57806366d602ae1461053f5780636a486a8e14610554575f80fd5b806323b872dd116102b05780632be32b611161028b5780632be32b611461045b578063313ce5671461047a5780633950935114610495578063452ed4f1146104b4575f80fd5b806323b872dd14610406578063254d9945146104255780632b14bbff14610446575f80fd5b806306fdde03146103015780630758d9241461032b578063095ea7b31461037657806310d5de53146103a557806318160ddd146103d35780631a8145bb146103f1575f80fd5b366102fd57005b5f80fd5b34801561030c575f80fd5b50610315610917565b604051610322919061291a565b60405180910390f35b348015610336575f80fd5b5061035e7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610322565b348015610381575f80fd5b5061039561039036600461297c565b6109a7565b6040519015158152602001610322565b3480156103b0575f80fd5b506103956103bf3660046129a6565b601a6020525f908152604090205460ff1681565b3480156103de575f80fd5b506002545b604051908152602001610322565b3480156103fc575f80fd5b506103e360185481565b348015610411575f80fd5b506103956104203660046129c8565b6109bd565b348015610430575f80fd5b5061044461043f366004612a06565b610a6a565b005b348015610451575f80fd5b506103e360155481565b348015610466575f80fd5b50610444610475366004612a06565b610b9b565b348015610485575f80fd5b5060405160128152602001610322565b3480156104a0575f80fd5b506103956104af36600461297c565b610ca8565b3480156104bf575f80fd5b5061035e7f00000000000000000000000063d2906a447386d93ac61522539e148e78eeb7d081565b3480156104f2575f80fd5b50600e546103959060ff1681565b34801561050b575f80fd5b50610444610ce3565b34801561051f575f80fd5b50600d544310610395565b348015610535575f80fd5b506103e360175481565b34801561054a575f80fd5b506103e360075481565b34801561055f575f80fd5b506103e360145481565b348015610574575f80fd5b50600e546103959062010000900460ff1681565b348015610593575f80fd5b506103e36105a23660046129a6565b6001600160a01b03165f9081526020819052604090205490565b3480156105c7575f80fd5b50610444610de9565b3480156105db575f80fd5b50610444610e5c565b3480156105ef575f80fd5b506104446105fe366004612a2a565b610ec6565b34801561060e575f80fd5b5061039561061d366004612a61565b610fb0565b34801561062d575f80fd5b506103e360065481565b348015610642575f80fd5b506103e3600c5481565b348015610657575f80fd5b506005546001600160a01b031661035e565b348015610674575f80fd5b506103156111b2565b348015610688575f80fd5b50610444610697366004612a2a565b6111c1565b3480156106a7575f80fd5b506103956106b636600461297c565b6112d7565b3480156106c6575f80fd5b506103e3600d5481565b3480156106db575f80fd5b506103956106ea36600461297c565b61136f565b3480156106fa575f80fd5b506103e360125481565b34801561070f575f80fd5b5061039561071e3660046129a6565b601b6020525f908152604090205460ff1681565b34801561073d575f80fd5b5061044461074c3660046129a6565b61137b565b34801561075c575f80fd5b50600e5461039590610100900460ff1681565b34801561077a575f80fd5b50610444610789366004612a2a565b61141d565b348015610799575f80fd5b506104446107a8366004612a8d565b6114a5565b3480156107b8575f80fd5b506010546103959060ff1681565b3480156107d1575f80fd5b506104446107e0366004612a06565b611503565b3480156107f0575f80fd5b506103e360115481565b348015610805575f80fd5b50610444610814366004612a06565b61164e565b348015610824575f80fd5b506103e3610833366004612a61565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610868575f80fd5b506103e360095481565b34801561087d575f80fd5b50610444611755565b348015610891575f80fd5b506103e3600b5481565b3480156108a6575f80fd5b506103e360135481565b3480156108bb575f80fd5b506104446108ca3660046129a6565b61178b565b3480156108da575f80fd5b50610444611875565b3480156108ee575f80fd5b506103e360165481565b348015610903575f80fd5b50610444610912366004612a06565b6118e9565b60606003805461092690612abc565b80601f016020809104026020016040519081016040528092919081815260200182805461095290612abc565b801561099d5780601f106109745761010080835404028352916020019161099d565b820191905f5260205f20905b81548152906001019060200180831161098057829003601f168201915b5050505050905090565b5f6109b3338484611b58565b5060015b92915050565b5f6109c9848484611c7b565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610a525760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610a5f8533858403611b58565b506001949350505050565b6005546001600160a01b03163314610a945760405162461bcd60e51b8152600401610a4990612af4565b600e54610100900460ff1615610aec5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610a49565b600a811115610b475760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420736574206d6f7265207468616e20352064656164626c6f636b6044820152607360f81b6064820152608401610a49565b600e805462ffff0019166201010017905543600b81905542600c55610b6d908290612b3d565b600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a150565b6005546001600160a01b03163314610bc55760405162461bcd60e51b8152600401610a4990612af4565b670de0b6b3a76400006103e8610bda60025490565b610be5906002612b50565b610bef9190612b67565b610bf99190612b67565b811015610c5a5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610a49565b610c6c81670de0b6b3a7640000612b50565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109b3918590610cde908690612b3d565b611b58565b6005546001600160a01b03163314610d0d5760405162461bcd60e51b8152600401610a4990612af4565b600954305f908152602081905260409020541015610d95576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610a49565b6008805460ff19166001179055610daa61245e565b6008805460ff191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610e135760405162461bcd60e51b8152600401610a4990612af4565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e865760405162461bcd60e51b8152600401610a4990612af4565b600e805460ff199081169091556010805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610ef05760405162461bcd60e51b8152600401610a4990612af4565b80610f86577f00000000000000000000000063d2906a447386d93ac61522539e148e78eeb7d06001600160a01b0316826001600160a01b031603610f865760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610a49565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005545f906001600160a01b03163314610fdc5760405162461bcd60e51b8152600401610a4990612af4565b6001600160a01b0383166110325760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610a49565b306001600160a01b0384160361108a5760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610a49565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa1580156110ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f29190612b86565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015611142573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111669190612b9d565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b60606004805461092690612abc565b6005546001600160a01b031633146111eb5760405162461bcd60e51b8152600401610a4990612af4565b7f00000000000000000000000063d2906a447386d93ac61522539e148e78eeb7d06001600160a01b0316826001600160a01b0316036112925760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a49565b61129c8282612582565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156113585760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a49565b6113653385858403611b58565b5060019392505050565b5f6109b3338484611c7b565b6005546001600160a01b031633146113a55760405162461bcd60e51b8152600401610a4990612af4565b6001600160a01b0381166113fb5760405162461bcd60e51b815260206004820152601f60248201527f5f4445564164647265737320616464726573732063616e6e6f742062652030006044820152606401610a49565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114475760405162461bcd60e51b8152600401610a4990612af4565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146114cf5760405162461bcd60e51b8152600401610a4990612af4565b601284905560138390556114e38385612b3d565b601155601582905560168190556114fa8183612b3d565b60145550505050565b6005546001600160a01b0316331461152d5760405162461bcd60e51b8152600401610a4990612af4565b620186a061153a60025490565b611545906001612b50565b61154f9190612b67565b8110156115bc5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a49565b6103e86115c860025490565b6115d3906001612b50565b6115dd9190612b67565b8111156116495760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610a49565b600955565b6005546001600160a01b031633146116785760405162461bcd60e51b8152600401610a4990612af4565b670de0b6b3a76400006103e861168d60025490565b611698906002612b50565b6116a29190612b67565b6116ac9190612b67565b81101561170e5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610a49565b61172081670de0b6b3a7640000612b50565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610c9d565b6005546001600160a01b0316331461177f5760405162461bcd60e51b8152600401610a4990612af4565b6010805460ff19169055565b6005546001600160a01b031633146117b55760405162461bcd60e51b8152600401610a4990612af4565b6001600160a01b03811661181a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a49565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461189f5760405162461bcd60e51b8152600401610a4990612af4565b6040515f90339047908381818185875af1925050503d805f81146118de576040519150601f19603f3d011682016040523d82523d5f602084013e6118e3565b606091505b50505050565b6005546001600160a01b031633146119135760405162461bcd60e51b8152600401610a4990612af4565b678ac7230489e800008111156119a15760405162461bcd60e51b815260206004820152604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a401610a49565b6040805160028082526060820183525f926020830190803683370190505090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a419190612bb8565b815f81518110611a5357611a53612bd3565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611a8757611a87612bd3565b6001600160a01b03928316602091820292909201015260405163b6f9de9560e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063b6f9de95908490611aed905f90869061dead904290600401612c29565b5f604051808303818588803b158015611b04575f80fd5b505af1158015611b16573d5f803e3d5ffd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051611b4c91815260200190565b60405180910390a15050565b6001600160a01b038316611bba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a49565b6001600160a01b038216611c1b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a49565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ca15760405162461bcd60e51b8152600401610a4990612c5d565b6001600160a01b038216611cc75760405162461bcd60e51b8152600401610a4990612ca2565b5f8111611d165760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610a49565b600e54610100900460ff16611da7576001600160a01b0383165f9081526019602052604090205460ff1680611d6257506001600160a01b0382165f9081526019602052604090205460ff165b611da75760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a49565b600e5460ff1615612104576005546001600160a01b03848116911614801590611dde57506005546001600160a01b03838116911614155b8015611df257506001600160a01b03821615155b8015611e0957506001600160a01b03821661dead14155b8015611e2d57506001600160a01b0383165f9081526019602052604090205460ff16155b8015611e5157506001600160a01b0382165f9081526019602052604090205460ff16155b156121045760105460ff1615611faf577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614158015611ed557507f00000000000000000000000063d2906a447386d93ac61522539e148e78eeb7d06001600160a01b0316826001600160a01b031614155b15611faf57611ee5600243612ce5565b325f908152600f6020526040902054108015611f215750611f07600243612ce5565b6001600160a01b0383165f908152600f6020526040902054105b611f8b5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610a49565b325f908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f908152601b602052604090205460ff168015611fee57506001600160a01b0382165f908152601a602052604090205460ff16155b1561205b576006548111156120565760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610a49565b612104565b6001600160a01b0382165f908152601b602052604090205460ff16801561209a57506001600160a01b0383165f908152601a602052604090205460ff16155b15612104576007548111156121045760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610a49565b305f908152602081905260409020546009548110801590819061212f5750600e5462010000900460ff165b801561213e575060085460ff16155b801561216257506001600160a01b0385165f908152601b602052604090205460ff16155b801561218657506001600160a01b0385165f9081526019602052604090205460ff16155b80156121aa57506001600160a01b0384165f9081526019602052604090205460ff16155b156121cf576008805460ff191660011790556121c461245e565b6008805460ff191690555b6001600160a01b0385165f9081526019602052604090205460019060ff168061220f57506001600160a01b0385165f9081526019602052604090205460ff165b1561221757505f5b5f811561244a57600d544310801561224657506001600160a01b0387165f908152601b602052604090205460ff165b801561226a57506001600160a01b0386165f908152601b602052604090205460ff16155b801561227757505f601154115b156122fa57606461228986605a612b50565b6122939190612b67565b9050601154601354826122a69190612b50565b6122b09190612b67565b60185f8282546122c09190612b3d565b90915550506011546012546122d59083612b50565b6122df9190612b67565b60175f8282546122ef9190612b3d565b9091555061242c9050565b6001600160a01b0386165f908152601b602052604090205460ff16801561232257505f601454115b15612383576064601454866123379190612b50565b6123419190612b67565b9050601454601654826123549190612b50565b61235e9190612b67565b60185f82825461236e9190612b3d565b90915550506014546015546122d59083612b50565b6001600160a01b0387165f908152601b602052604090205460ff1680156123ab57505f601154115b1561242c576064601154866123c09190612b50565b6123ca9190612b67565b9050601154601354826123dd9190612b50565b6123e79190612b67565b60185f8282546123f79190612b3d565b909155505060115460125461240c9083612b50565b6124169190612b67565b60175f8282546124269190612b3d565b90915550505b801561243d5761243d8730836125af565b6124478186612ce5565b94505b6124558787876125af565b50505050505050565b5f60185411801561247f5750601854305f9081526020819052604090205410155b15612520576124b1307f00000000000000000000000063d2906a447386d93ac61522539e148e78eeb7d06018546125af565b7f00000000000000000000000063d2906a447386d93ac61522539e148e78eeb7d06001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612509575f80fd5b505af115801561251b573d5f803e3d5ffd5b505050505b5f6018819055308152602081905260408120549081900361253e5750565b60095461254c906014612b50565b81111561256457600954612561906014612b50565b90505b61256d81612702565b305f9081526020819052604090205460175550565b6001600160a01b0382165f908152601b60205260409020805460ff191682151517905561129c82826128bf565b6001600160a01b0383166125d55760405162461bcd60e51b8152600401610a4990612c5d565b6001600160a01b0382166125fb5760405162461bcd60e51b8152600401610a4990612ca2565b6001600160a01b0383165f90815260208190526040902054818110156126725760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a49565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906126a8908490612b3d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126f491815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061273557612735612bd3565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127d59190612bb8565b816001815181106127e8576127e8612bd3565b60200260200101906001600160a01b031690816001600160a01b031681525050612833307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611b58565b600a5460405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81169263791ac9479261288e9287925f92889291909116904290600401612cf8565b5f604051808303815f87803b1580156128a5575f80fd5b505af11580156128b7573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67469101611b4c565b5f6020808352835180828501525f5b8181101561294557858101830151858201604001528201612929565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612979575f80fd5b50565b5f806040838503121561298d575f80fd5b823561299881612965565b946020939093013593505050565b5f602082840312156129b6575f80fd5b81356129c181612965565b9392505050565b5f805f606084860312156129da575f80fd5b83356129e581612965565b925060208401356129f581612965565b929592945050506040919091013590565b5f60208284031215612a16575f80fd5b5035919050565b8015158114612979575f80fd5b5f8060408385031215612a3b575f80fd5b8235612a4681612965565b91506020830135612a5681612a1d565b809150509250929050565b5f8060408385031215612a72575f80fd5b8235612a7d81612965565b91506020830135612a5681612965565b5f805f8060808587031215612aa0575f80fd5b5050823594602084013594506040840135936060013592509050565b600181811c90821680612ad057607f821691505b602082108103612aee57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109b7576109b7612b29565b80820281158282048414176109b7576109b7612b29565b5f82612b8157634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612b96575f80fd5b5051919050565b5f60208284031215612bad575f80fd5b81516129c181612a1d565b5f60208284031215612bc8575f80fd5b81516129c181612965565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b83811015612c1e5781516001600160a01b031687529582019590820190600101612bf9565b509495945050505050565b848152608060208201525f612c416080830186612be7565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109b7576109b7612b29565b85815284602082015260a060408201525f612d1660a0830186612be7565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212208953879d57633844db5879241833a162bebbdd24f9f085ee1a6b1f284e31b32264736f6c63430008140033

Deployed Bytecode Sourcemap

10152:14948:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4002:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10266:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;749:32:1;;;731:51;;719:2;704:18;10266:37:0;567:221:1;4916:169:0;;;;;;;;;;-1:-1:-1;4916:169:0;;;;;:::i;:::-;;:::i;:::-;;;1414:14:1;;1407:22;1389:41;;1377:2;1362:18;4916:169:0;1249:187:1;11341:64:0;;;;;;;;;;-1:-1:-1;11341:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4323:108;;;;;;;;;;-1:-1:-1;4411:12:0;;4323:108;;;1839:25:1;;;1827:2;1812:18;4323:108:0;1693:177:1;11158:33:0;;;;;;;;;;;;;;;;5093:492;;;;;;;;;;-1:-1:-1;5093:492:0;;;;;:::i;:::-;;:::i;14076:443::-;;;;;;;;;;-1:-1:-1;14076:443:0;;;;;:::i;:::-;;:::i;:::-;;11052:25;;;;;;;;;;;;;;;;14896:269;;;;;;;;;;-1:-1:-1;14896:269:0;;;;;:::i;:::-;;:::i;4222:93::-;;;;;;;;;;-1:-1:-1;4222:93:0;;4305:2;2663:36:1;;2651:2;2636:18;4222:93:0;2521:184:1;5593:215:0;;;;;;;;;;-1:-1:-1;5593:215:0;;;;;:::i;:::-;;:::i;10310:31::-;;;;;;;;;;;;;;;10566:33;;;;;;;;;;-1:-1:-1;10566:33:0;;;;;;;;24065:312;;;;;;;;;;;;;:::i;21264:120::-;;;;;;;;;;-1:-1:-1;21358:18:0;;21343:12;:33;21264:120;;11124:27;;;;;;;;;;;;;;;;10229:28;;;;;;;;;;;;;;;;11017;;;;;;;;;;;;;;;;10646:31;;;;;;;;;;-1:-1:-1;10646:31:0;;;;;;;;;;;4439:127;;;;;;;;;;-1:-1:-1;4439:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4540:18:0;4513:7;4540:18;;;;;;;;;;;;4439:127;8637:150;;;;;;;;;;;;;:::i;14571:154::-;;;;;;;;;;;;;:::i;16086:260::-;;;;;;;;;;-1:-1:-1;16086:260:0;;;;;:::i;:::-;;:::i;23124:456::-;;;;;;;;;;-1:-1:-1;23124:456:0;;;;;:::i;:::-;;:::i;10195:27::-;;;;;;;;;;;;;;;;10487:30;;;;;;;;;;;;;;;;8423:79;;;;;;;;;;-1:-1:-1;8488:6:0;;-1:-1:-1;;;;;8488:6:0;8423:79;;4110:104;;;;;;;;;;;;;:::i;16354:295::-;;;;;;;;;;-1:-1:-1;16354:295:0;;;;;:::i;:::-;;:::i;5816:413::-;;;;;;;;;;-1:-1:-1;5816:413:0;;;;;:::i;:::-;;:::i;10524:33::-;;;;;;;;;;;;;;;;4574:175;;;;;;;;;;-1:-1:-1;4574:175:0;;;;;:::i;:::-;;:::i;10947:24::-;;;;;;;;;;;;;;;;11563:58;;;;;;;;;;-1:-1:-1;11563:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23818:195;;;;;;;;;;-1:-1:-1;23818:195:0;;;;;:::i;:::-;;:::i;10606:33::-;;;;;;;;;;-1:-1:-1;10606:33:0;;;;;;;;;;;17323:182;;;;;;;;;;-1:-1:-1;17323:182:0;;;;;:::i;:::-;;:::i;16905:410::-;;;;;;;;;;-1:-1:-1;16905:410:0;;;;;:::i;:::-;;:::i;10865:39::-;;;;;;;;;;-1:-1:-1;10865:39:0;;;;;;;;15517:346;;;;;;;;;;-1:-1:-1;15517:346:0;;;;;:::i;:::-;;:::i;10913:27::-;;;;;;;;;;;;;;;;15173:274;;;;;;;;;;-1:-1:-1;15173:274:0;;;;;:::i;:::-;;:::i;4757:151::-;;;;;;;;;;-1:-1:-1;4757:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4873:18:0;;;4846:7;4873:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4757:151;10378:33;;;;;;;;;;;;;;;;14786:98;;;;;;;;;;;;;:::i;10447:33::-;;;;;;;;;;;;;;;;10978:30;;;;;;;;;;;;;;;;8795:244;;;;;;;;;;-1:-1:-1;8795:244:0;;;;;:::i;:::-;;:::i;23650:160::-;;;;;;;;;;;;;:::i;11084:31::-;;;;;;;;;;;;;;;;24481:616;;;;;;;;;;-1:-1:-1;24481:616:0;;;;;:::i;:::-;;:::i;4002:100::-;4056:13;4089:5;4082:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4002:100;:::o;4916:169::-;4999:4;5016:39;231:10;5039:7;5048:6;5016:8;:39::i;:::-;-1:-1:-1;5073:4:0;4916:169;;;;;:::o;5093:492::-;5233:4;5250:36;5260:6;5268:9;5279:6;5250:9;:36::i;:::-;-1:-1:-1;;;;;5326:19:0;;5299:24;5326:19;;;:11;:19;;;;;;;;231:10;5326:33;;;;;;;;5378:26;;;;5370:79;;;;-1:-1:-1;;;5370:79:0;;4798:2:1;5370:79:0;;;4780:21:1;4837:2;4817:18;;;4810:30;4876:34;4856:18;;;4849:62;-1:-1:-1;;;4927:18:1;;;4920:38;4975:19;;5370:79:0;;;;;;;;;5485:57;5494:6;231:10;5535:6;5516:16;:25;5485:8;:57::i;:::-;-1:-1:-1;5573:4:0;;5093:492;-1:-1:-1;;;;5093:492:0:o;14076:443::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;14154:13:::1;::::0;::::1;::::0;::::1;;;14153:14;14145:50;;;::::0;-1:-1:-1;;;14145:50:0;;5568:2:1;14145:50:0::1;::::0;::::1;5550:21:1::0;5607:2;5587:18;;;5580:30;5646:25;5626:18;;;5619:53;5689:18;;14145:50:0::1;5366:347:1::0;14145:50:0::1;14228:2;14214:10;:16;;14206:62;;;::::0;-1:-1:-1;;;14206:62:0;;5920:2:1;14206:62:0::1;::::0;::::1;5902:21:1::0;5959:2;5939:18;;;5932:30;5998:34;5978:18;;;5971:62;-1:-1:-1;;;6049:18:1;;;6042:31;6090:19;;14206:62:0::1;5718:397:1::0;14206:62:0::1;14279:13;:20:::0;;-1:-1:-1;;14310:18:0;;;;;14360:12:::1;14339:18;:33:::0;;;14401:15:::1;14383;:33:::0;14448:31:::1;::::0;14469:10;;14448:31:::1;:::i;:::-;14427:18;:52:::0;14495:16:::1;::::0;::::1;::::0;;;::::1;14076:443:::0;:::o;14896:269::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;15015:4:::1;15009;14989:13;4411:12:::0;;;4323:108;14989:13:::1;:17;::::0;15005:1:::1;14989:17;:::i;:::-;:24;;;;:::i;:::-;14988:31;;;;:::i;:::-;14978:6;:41;;14970:95;;;::::0;-1:-1:-1;;;14970:95:0;;6979:2:1;14970:95:0::1;::::0;::::1;6961:21:1::0;7018:2;6998:18;;;6991:30;7057:34;7037:18;;;7030:62;-1:-1:-1;;;7108:18:1;;;7101:39;7157:19;;14970:95:0::1;6777:405:1::0;14970:95:0::1;15091:17;:6:::0;15101::::1;15091:17;:::i;:::-;15076:12;:32:::0;;;15124:33:::1;::::0;1839:25:1;;;15124:33:0::1;::::0;1827:2:1;1812:18;15124:33:0::1;;;;;;;;14896:269:::0;:::o;5593:215::-;231:10;5681:4;5730:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5730:34:0;;;;;;;;;;5681:4;;5698:80;;5721:7;;5730:47;;5767:10;;5730:47;:::i;:::-;5698:8;:80::i;24065:312::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;24156:18:::1;::::0;24146:4:::1;4513:7:::0;4540:18;;;;;;;;;;;24128:46:::1;;24120:123;;;::::0;;-1:-1:-1;;;24120:123:0;;7389:2:1;24120:123:0::1;::::0;::::1;7371:21:1::0;7408:18;;;7401:30;;;;7467:34;7447:18;;;7440:62;7538:34;7518:18;;;7511:62;7590:19;;24120:123:0::1;7187:428:1::0;24120:123:0::1;24254:8;:15:::0;;-1:-1:-1;;24254:15:0::1;24265:4;24254:15;::::0;;24280:10:::1;:8;:10::i;:::-;24301:8;:16:::0;;-1:-1:-1;;24301:16:0::1;::::0;;24333:36:::1;::::0;24353:15:::1;1839:25:1::0;;24333:36:0::1;::::0;1827:2:1;1812:18;24333:36:0::1;;;;;;;24065:312::o:0;8637:150::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;8730:6:::1;::::0;8709:40:::1;::::0;8746:1:::1;::::0;-1:-1:-1;;;;;8730:6:0::1;::::0;8709:40:::1;::::0;8746:1;;8709:40:::1;8760:6;:19:::0;;-1:-1:-1;;;;;;8760:19:0::1;::::0;;8637:150::o;14571:154::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;14625:14:::1;:22:::0;;-1:-1:-1;;14625:22:0;;::::1;::::0;;;14658:20:::1;:28:::0;;;;::::1;::::0;;14702:15:::1;::::0;::::1;::::0;14642:5:::1;::::0;14702:15:::1;14571:154::o:0;16086:260::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;16182:4:::1;16178:104;;16220:6;-1:-1:-1::0;;;;;16210:16:0::1;:6;-1:-1:-1::0;;;;;16210:16:0::1;::::0;16202:68:::1;;;::::0;-1:-1:-1;;;16202:68:0;;7822:2:1;16202:68:0::1;::::0;::::1;7804:21:1::0;7861:2;7841:18;;;7834:30;7900:34;7880:18;;;7873:62;-1:-1:-1;;;7951:18:1;;;7944:37;7998:19;;16202:68:0::1;7620:403:1::0;16202:68:0::1;-1:-1:-1::0;;;;;16292:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;16292:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16086:260::o;23124:456::-;8550:6;;23211:10;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23242:20:0;::::1;23234:59;;;::::0;-1:-1:-1;;;23234:59:0;;8230:2:1;23234:59:0::1;::::0;::::1;8212:21:1::0;8269:2;8249:18;;;8242:30;8308:28;8288:18;;;8281:56;8354:18;;23234:59:0::1;8028:350:1::0;23234:59:0::1;23330:4;-1:-1:-1::0;;;;;23312:23:0;::::1;::::0;23304:64:::1;;;::::0;-1:-1:-1;;;23304:64:0;;8585:2:1;23304:64:0::1;::::0;::::1;8567:21:1::0;8624:2;8604:18;;;8597:30;8663;8643:18;;;8636:58;8711:18;;23304:64:0::1;8383:352:1::0;23304:64:0::1;23406:39;::::0;-1:-1:-1;;;23406:39:0;;23439:4:::1;23406:39;::::0;::::1;731:51:1::0;23379:24:0::1;::::0;-1:-1:-1;;;;;23406:24:0;::::1;::::0;::::1;::::0;704:18:1;;23406:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23464:46;::::0;-1:-1:-1;;;23464:46:0;;-1:-1:-1;;;;;9121:32:1;;;23464:46:0::1;::::0;::::1;9103:51:1::0;9170:18;;;9163:34;;;23379:66:0;;-1:-1:-1;23464:23:0;;::::1;::::0;::::1;::::0;9076:18:1;;23464:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23526;::::0;;-1:-1:-1;;;;;9121:32:1;;9103:51;;9185:2;9170:18;;9163:34;;;23456:54:0;;-1:-1:-1;23526:46:0::1;::::0;9076:18:1;23526:46:0::1;;;;;;;23223:357;23124:456:::0;;;;:::o;4110:104::-;4166:13;4199:7;4192:14;;;;;:::i;16354:295::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;16463:6:::1;-1:-1:-1::0;;;;;16455:14:0::1;:4;-1:-1:-1::0;;;;;16455:14:0::1;::::0;16447:84:::1;;;::::0;-1:-1:-1;;;16447:84:0;;9660:2:1;16447:84:0::1;::::0;::::1;9642:21:1::0;9699:2;9679:18;;;9672:30;9738:34;9718:18;;;9711:62;9809:27;9789:18;;;9782:55;9854:19;;16447:84:0::1;9458:421:1::0;16447:84:0::1;16544:41;16573:4;16579:5;16544:28;:41::i;:::-;16601:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;16601:40:0;::::1;::::0;::::1;::::0;;;::::1;16354:295:::0;;:::o;5816:413::-;231:10;5909:4;5953:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5953:34:0;;;;;;;;;;6006:35;;;;5998:85;;;;-1:-1:-1;;;5998:85:0;;10086:2:1;5998:85:0;;;10068:21:1;10125:2;10105:18;;;10098:30;10164:34;10144:18;;;10137:62;-1:-1:-1;;;10215:18:1;;;10208:35;10260:19;;5998:85:0;9884:401:1;5998:85:0;6119:67;231:10;6142:7;6170:15;6151:16;:34;6119:8;:67::i;:::-;-1:-1:-1;6217:4:0;;5816:413;-1:-1:-1;;;5816:413:0:o;4574:175::-;4660:4;4677:42;231:10;4701:9;4712:6;4677:9;:42::i;23818:195::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23900:25:0;::::1;23892:69;;;::::0;-1:-1:-1;;;23892:69:0;;10492:2:1;23892:69:0::1;::::0;::::1;10474:21:1::0;10531:2;10511:18;;;10504:30;10570:33;10550:18;;;10543:61;10621:18;;23892:69:0::1;10290:355:1::0;23892:69:0::1;23972:10;:33:::0;;-1:-1:-1;;;;;;23972:33:0::1;-1:-1:-1::0;;;;;23972:33:0;;;::::1;::::0;;;::::1;::::0;;23818:195::o;17323:182::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17408:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;17408:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17463:34;;1389:41:1;;;17463:34:0::1;::::0;1362:18:1;17463:34:0::1;;;;;;;17323:182:::0;;:::o;16905:410::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;17049:9:::1;:22:::0;;;17082:15:::1;:34:::0;;;17142:27:::1;17100:16:::0;17061:10;17142:27:::1;:::i;:::-;17127:12;:42:::0;17180:10:::1;:24:::0;;;17215:16:::1;:36:::0;;;17278:29:::1;17234:17:::0;17193:11;17278:29:::1;:::i;:::-;17262:13;:45:::0;-1:-1:-1;;;;16905:410:0:o;15517:346::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;15640:6:::1;15620:13;4411:12:::0;;;4323:108;15620:13:::1;:17;::::0;15636:1:::1;15620:17;:::i;:::-;:26;;;;:::i;:::-;15607:9;:39;;15599:105;;;::::0;-1:-1:-1;;;15599:105:0;;10852:2:1;15599:105:0::1;::::0;::::1;10834:21:1::0;10891:2;10871:18;;;10864:30;10930:34;10910:18;;;10903:62;-1:-1:-1;;;10981:18:1;;;10974:51;11042:19;;15599:105:0::1;10650:417:1::0;15599:105:0::1;15755:4;15735:13;4411:12:::0;;;4323:108;15735:13:::1;:17;::::0;15751:1:::1;15735:17;:::i;:::-;:24;;;;:::i;:::-;15722:9;:37;;15714:102;;;::::0;-1:-1:-1;;;15714:102:0;;11274:2:1;15714:102:0::1;::::0;::::1;11256:21:1::0;11313:2;11293:18;;;11286:30;11352:34;11332:18;;;11325:62;-1:-1:-1;;;11403:18:1;;;11396:50;11463:19;;15714:102:0::1;11072:416:1::0;15714:102:0::1;15826:18;:30:::0;15517:346::o;15173:274::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;15293:4:::1;15287;15267:13;4411:12:::0;;;4323:108;15267:13:::1;:17;::::0;15283:1:::1;15267:17;:::i;:::-;:24;;;;:::i;:::-;15266:31;;;;:::i;:::-;15256:6;:41;;15248:96;;;::::0;-1:-1:-1;;;15248:96:0;;11695:2:1;15248:96:0::1;::::0;::::1;11677:21:1::0;11734:2;11714:18;;;11707:30;11773:34;11753:18;;;11746:62;-1:-1:-1;;;11824:18:1;;;11817:40;11874:19;;15248:96:0::1;11493:406:1::0;15248:96:0::1;15371:17;:6:::0;15381::::1;15371:17;:::i;:::-;15355:13;:33:::0;;;15404:35:::1;::::0;1839:25:1;;;15404:35:0::1;::::0;1827:2:1;1812:18;15404:35:0::1;1693:177:1::0;14786:98:0;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;14848:20:::1;:28:::0;;-1:-1:-1;;14848:28:0::1;::::0;;14786:98::o;8795:244::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8884:22:0;::::1;8876:73;;;::::0;-1:-1:-1;;;8876:73:0;;12106:2:1;8876:73:0::1;::::0;::::1;12088:21:1::0;12145:2;12125:18;;;12118:30;12184:34;12164:18;;;12157:62;-1:-1:-1;;;12235:18:1;;;12228:36;12281:19;;8876:73:0::1;11904:402:1::0;8876:73:0::1;8986:6;::::0;8965:38:::1;::::0;-1:-1:-1;;;;;8965:38:0;;::::1;::::0;8986:6:::1;::::0;8965:38:::1;::::0;8986:6:::1;::::0;8965:38:::1;9014:6;:17:::0;;-1:-1:-1;;;;;;9014:17:0::1;-1:-1:-1::0;;;;;9014:17:0;;;::::1;::::0;;;::::1;::::0;;8795:244::o;23650:160::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;23744:58:::1;::::0;23708:12:::1;::::0;23752:10:::1;::::0;23776:21:::1;::::0;23708:12;23744:58;23708:12;23744:58;23776:21;23752:10;23744:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;23650:160:0:o;24481:616::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;24578:8:::1;24563:11;:23;;24555:107;;;::::0;-1:-1:-1;;;24555:107:0;;12723:2:1;24555:107:0::1;::::0;::::1;12705:21:1::0;12762:2;12742:18;;;12735:30;12801:34;12781:18;;;12774:62;12872:34;12852:18;;;12845:62;-1:-1:-1;;;12923:19:1;;;12916:38;12971:19;;24555:107:0::1;12521:475:1::0;24555:107:0::1;24699:16;::::0;;24713:1:::1;24699:16:::0;;;;;::::1;::::0;;24675:21:::1;::::0;24699:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24699:16:0::1;24675:40;;24736:9;-1:-1:-1::0;;;;;24736:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24726:4;24731:1;24726:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1::0;;;;;24726:26:0::1;;;-1:-1:-1::0;;;;;24726:26:0::1;;;::::0;::::1;24781:4;24763;24768:1;24763:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24763:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;24825:219:::1;::::0;-1:-1:-1;;;24825:219:0;;:9:::1;:60:::0;;::::1;::::0;::::1;::::0;24893:11;;24825:219:::1;::::0;24920:1:::1;::::0;24969:4;;24996:6:::1;::::0;25018:15:::1;::::0;24825:219:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;25060:29;25077:11;25060:29;;;;1839:25:1::0;;1827:2;1812:18;;1693:177;25060:29:0::1;;;;;;;;24544:553;24481:616:::0;:::o;7716:380::-;-1:-1:-1;;;;;7852:19:0;;7844:68;;;;-1:-1:-1;;;7844:68:0;;14704:2:1;7844:68:0;;;14686:21:1;14743:2;14723:18;;;14716:30;14782:34;14762:18;;;14755:62;-1:-1:-1;;;14833:18:1;;;14826:34;14877:19;;7844:68:0;14502:400:1;7844:68:0;-1:-1:-1;;;;;7931:21:0;;7923:68;;;;-1:-1:-1;;;7923:68:0;;15109:2:1;7923:68:0;;;15091:21:1;15148:2;15128:18;;;15121:30;15187:34;15167:18;;;15160:62;-1:-1:-1;;;15238:18:1;;;15231:32;15280:19;;7923:68:0;14907:398:1;7923:68:0;-1:-1:-1;;;;;8004:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8056:32;;1839:25:1;;;8056:32:0;;1812:18:1;8056:32:0;;;;;;;7716:380;;;:::o;17513:3743::-;-1:-1:-1;;;;;17613:18:0;;17605:68;;;;-1:-1:-1;;;17605:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17692:16:0;;17684:64;;;;-1:-1:-1;;;17684:64:0;;;;;;;:::i;:::-;17776:1;17767:6;:10;17759:52;;;;-1:-1:-1;;;17759:52:0;;16322:2:1;17759:52:0;;;16304:21:1;16361:2;16341:18;;;16334:30;16400:31;16380:18;;;16373:59;16449:18;;17759:52:0;16120:353:1;17759:52:0;17828:13;;;;;;;17824:132;;-1:-1:-1;;;;;17865:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;17894:23:0;;;;;;:19;:23;;;;;;;;17865:52;17857:87;;;;-1:-1:-1;;;17857:87:0;;16680:2:1;17857:87:0;;;16662:21:1;16719:2;16699:18;;;16692:30;-1:-1:-1;;;16738:18:1;;;16731:52;16800:18;;17857:87:0;16478:346:1;17857:87:0;17971:14;;;;17968:1359;;;8488:6;;-1:-1:-1;;;;;18005:15:0;;;8488:6;;18005:15;;;;:32;;-1:-1:-1;8488:6:0;;-1:-1:-1;;;;;18024:13:0;;;8488:6;;18024:13;;18005:32;:52;;;;-1:-1:-1;;;;;;18041:16:0;;;;18005:52;:77;;;;-1:-1:-1;;;;;;18061:21:0;;18075:6;18061:21;;18005:77;:107;;;;-1:-1:-1;;;;;;18087:25:0;;;;;;:19;:25;;;;;;;;18086:26;18005:107;:135;;;;-1:-1:-1;;;;;;18117:23:0;;;;;;:19;:23;;;;;;;;18116:24;18005:135;18001:1315;;;18298:20;;;;18294:506;;;18360:9;-1:-1:-1;;;;;18346:24:0;:2;-1:-1:-1;;;;;18346:24:0;;;:49;;;;;18388:6;-1:-1:-1;;;;;18374:21:0;:2;-1:-1:-1;;;;;18374:21:0;;;18346:49;18342:439;;;18473:16;18488:1;18473:12;:16;:::i;:::-;18460:9;18431:39;;;;:28;:39;;;;;;:58;:113;;;;-1:-1:-1;18528:16:0;18543:1;18528:12;:16;:::i;:::-;-1:-1:-1;;;;;18493:32:0;;;;;;:28;:32;;;;;;:51;18431:113;18423:179;;;;-1:-1:-1;;;18423:179:0;;17164:2:1;18423:179:0;;;17146:21:1;17203:2;17183:18;;;17176:30;17242:34;17222:18;;;17215:62;-1:-1:-1;;;17293:18:1;;;17286:51;17354:19;;18423:179:0;16962:417:1;18423:179:0;18658:9;18629:39;;;;:28;:39;;;;;;18671:12;18629:54;;;;-1:-1:-1;;;;;18710:32:0;;;;;;:47;18342:439;-1:-1:-1;;;;;18852:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;18888:35:0;;;;;;:31;:35;;;;;;;;18887:36;18852:71;18848:453;;;18970:12;;18960:6;:22;;18952:75;;;;-1:-1:-1;;;18952:75:0;;17586:2:1;18952:75:0;;;17568:21:1;17625:2;17605:18;;;17598:30;17664:34;17644:18;;;17637:62;-1:-1:-1;;;17715:18:1;;;17708:38;17763:19;;18952:75:0;17384:404:1;18952:75:0;18848:453;;;-1:-1:-1;;;;;19103:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;19137:37:0;;;;;;:31;:37;;;;;;;;19136:38;19103:71;19099:202;;;19221:13;;19211:6;:23;;19203:78;;;;-1:-1:-1;;;19203:78:0;;17995:2:1;19203:78:0;;;17977:21:1;18034:2;18014:18;;;18007:30;18073:34;18053:18;;;18046:62;-1:-1:-1;;;18124:18:1;;;18117:40;18174:19;;19203:78:0;17793:406:1;19203:78:0;19388:4;19339:28;4540:18;;;;;;;;;;;19446;;19422:42;;;;;;;19480:22;;-1:-1:-1;19491:11:0;;;;;;;19480:22;:35;;;;-1:-1:-1;19507:8:0;;;;19506:9;19480:35;:71;;;;-1:-1:-1;;;;;;19520:31:0;;;;;;:25;:31;;;;;;;;19519:32;19480:71;:101;;;;-1:-1:-1;;;;;;19556:25:0;;;;;;:19;:25;;;;;;;;19555:26;19480:101;:129;;;;-1:-1:-1;;;;;;19586:23:0;;;;;;:19;:23;;;;;;;;19585:24;19480:129;19477:236;;;19626:8;:15;;-1:-1:-1;;19626:15:0;19637:4;19626:15;;;19658:10;:8;:10::i;:::-;19685:8;:16;;-1:-1:-1;;19685:16:0;;;19477:236;-1:-1:-1;;;;;19843:25:0;;19725:12;19843:25;;;:19;:25;;;;;;19740:4;;19843:25;;;:52;;-1:-1:-1;;;;;;19872:23:0;;;;;;:19;:23;;;;;;;;19843:52;19840:99;;;-1:-1:-1;19922:5:0;19840:99;19951:12;20057:7;20054:1149;;;21358:18;;21343:12;:33;20119:60;;;;-1:-1:-1;;;;;;20148:31:0;;;;;;:25;:31;;;;;;;;20119:60;:94;;;;-1:-1:-1;;;;;;20184:29:0;;;;;;:25;:29;;;;;;;;20183:30;20119:94;:114;;;;;20232:1;20217:12;;:16;20119:114;20116:943;;;20274:3;20260:11;:6;20269:2;20260:11;:::i;:::-;:17;;;;:::i;:::-;20253:24;;20340:12;;20322:15;;20315:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;20293:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;20406:12:0;;20394:9;;20387:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;20371:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;20116:943:0;;-1:-1:-1;20116:943:0;;-1:-1:-1;;;;;20483:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;20532:1;20516:13;;:17;20483:50;20479:580;;;20585:3;20569:13;;20560:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;20553:35;;20655:13;;20636:16;;20629:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;20607:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;20723:13:0;;20710:10;;20703:17;;:4;:17;:::i;20479:580::-;-1:-1:-1;;;;;20799:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;20849:1;20834:12;;:16;20799:51;20796:263;;;20899:3;20884:12;;20875:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;20868:34;;20965:12;;20947:15;;20940:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;20918:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;21031:12:0;;21019:9;;21012:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;20996:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;20796:263:0;21078:8;;21075:89;;21106:42;21122:4;21136;21143;21106:15;:42::i;:::-;21177:14;21187:4;21177:14;;:::i;:::-;;;20054:1149;21215:33;21231:4;21237:2;21241:6;21215:15;:33::i;:::-;17592:3664;;;;17513:3743;;;:::o;22496:620::-;22561:1;22540:18;;:22;:72;;;;-1:-1:-1;22594:18:0;;22584:4;4513:7;4540:18;;;;;;;;;;;22566:46;;22540:72;22537:207;;;22629:66;22653:4;22668:6;22676:18;;22629:15;:66::i;:::-;22718:6;-1:-1:-1;;;;;22710:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22537:207;22775:1;22754:18;:22;;;22833:4;4540:18;;;;;;;;;;;22855:20;;;22852:34;;22878:7;22496:620::o;22852:34::-;22919:18;;:23;;22940:2;22919:23;:::i;:::-;22901:15;:41;22898:113;;;22976:18;;:23;;22997:2;22976:23;:::i;:::-;22958:41;;22898:113;23023:33;23040:15;23023:16;:33::i;:::-;23102:4;4513:7;4540:18;;;;;;;;;;;23069:12;:39;-1:-1:-1;22496:620:0:o;16657:240::-;-1:-1:-1;;;;;16740:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;16740:39:0;;;;;;;16792;16740:31;:39;16792:26;:39::i;6237:614::-;-1:-1:-1;;;;;6377:20:0;;6369:70;;;;-1:-1:-1;;;6369:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6458:23:0;;6450:71;;;;-1:-1:-1;;;6450:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6558:17:0;;6534:21;6558:17;;;;;;;;;;;6594:23;;;;6586:74;;;;-1:-1:-1;;;6586:74:0;;18406:2:1;6586:74:0;;;18388:21:1;18445:2;18425:18;;;18418:30;18484:34;18464:18;;;18457:62;-1:-1:-1;;;18535:18:1;;;18528:36;18581:19;;6586:74:0;18204:402:1;6586:74:0;-1:-1:-1;;;;;6696:17:0;;;:9;:17;;;;;;;;;;;6716:22;;;6696:42;;6760:20;;;;;;;;:30;;6732:6;;6696:9;6760:30;;6732:6;;6760:30;:::i;:::-;;;;;;;;6825:9;-1:-1:-1;;;;;6808:35:0;6817:6;-1:-1:-1;;;;;6808:35:0;;6836:6;6808:35;;;;1839:25:1;;1827:2;1812:18;;1693:177;6808:35:0;;;;;;;;6358:493;6237:614;;;:::o;21392:579::-;21544:16;;;21558:1;21544:16;;;;;;;;21520:21;;21544:16;;;;;;;;;;-1:-1:-1;21544:16:0;21520:40;;21589:4;21571;21576:1;21571:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21571:23:0;;;-1:-1:-1;;;;;21571:23:0;;;;;21615:9;-1:-1:-1;;;;;21615:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21605:4;21610:1;21605:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;21605:26:0;;;-1:-1:-1;;;;;21605:26:0;;;;;21644:56;21661:4;21676:9;21688:11;21644:8;:56::i;:::-;21911:10;;21739:224;;-1:-1:-1;;;21739:224:0;;-1:-1:-1;;;;;21739:9:0;:60;;;;;:224;;21814:11;;21840:1;;21884:4;;21911:10;;;;;21937:15;;21739:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21447:524;21392:579;:::o;15871:207::-;-1:-1:-1;;;;;15959:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;15959:52:0;;;;;;;;;;16027:43;;19366:51:1;;;19433:18;;;19426:50;16027:43:0;;19339:18:1;16027:43:0;19198:284:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;793:131::-;-1:-1:-1;;;;;868:31:1;;858:42;;848:70;;914:1;911;904:12;848:70;793:131;:::o;929:315::-;997:6;1005;1058:2;1046:9;1037:7;1033:23;1029:32;1026:52;;;1074:1;1071;1064:12;1026:52;1113:9;1100:23;1132:31;1157:5;1132:31;:::i;:::-;1182:5;1234:2;1219:18;;;;1206:32;;-1:-1:-1;;;929:315:1:o;1441:247::-;1500:6;1553:2;1541:9;1532:7;1528:23;1524:32;1521:52;;;1569:1;1566;1559:12;1521:52;1608:9;1595:23;1627:31;1652:5;1627:31;:::i;:::-;1677:5;1441:247;-1:-1:-1;;;1441:247:1:o;1875:456::-;1952:6;1960;1968;2021:2;2009:9;2000:7;1996:23;1992:32;1989:52;;;2037:1;2034;2027:12;1989:52;2076:9;2063:23;2095:31;2120:5;2095:31;:::i;:::-;2145:5;-1:-1:-1;2202:2:1;2187:18;;2174:32;2215:33;2174:32;2215:33;:::i;:::-;1875:456;;2267:7;;-1:-1:-1;;;2321:2:1;2306:18;;;;2293:32;;1875:456::o;2336:180::-;2395:6;2448:2;2436:9;2427:7;2423:23;2419:32;2416:52;;;2464:1;2461;2454:12;2416:52;-1:-1:-1;2487:23:1;;2336:180;-1:-1:-1;2336:180:1:o;2918:118::-;3004:5;2997:13;2990:21;2983:5;2980:32;2970:60;;3026:1;3023;3016:12;3041:382;3106:6;3114;3167:2;3155:9;3146:7;3142:23;3138:32;3135:52;;;3183:1;3180;3173:12;3135:52;3222:9;3209:23;3241:31;3266:5;3241:31;:::i;:::-;3291:5;-1:-1:-1;3348:2:1;3333:18;;3320:32;3361:30;3320:32;3361:30;:::i;:::-;3410:7;3400:17;;;3041:382;;;;;:::o;3428:388::-;3496:6;3504;3557:2;3545:9;3536:7;3532:23;3528:32;3525:52;;;3573:1;3570;3563:12;3525:52;3612:9;3599:23;3631:31;3656:5;3631:31;:::i;:::-;3681:5;-1:-1:-1;3738:2:1;3723:18;;3710:32;3751:33;3710:32;3751:33;:::i;3821:385::-;3907:6;3915;3923;3931;3984:3;3972:9;3963:7;3959:23;3955:33;3952:53;;;4001:1;3998;3991:12;3952:53;-1:-1:-1;;4024:23:1;;;4094:2;4079:18;;4066:32;;-1:-1:-1;4145:2:1;4130:18;;4117:32;;4196:2;4181:18;4168:32;;-1:-1:-1;3821:385:1;-1:-1:-1;3821:385:1:o;4211:380::-;4290:1;4286:12;;;;4333;;;4354:61;;4408:4;4400:6;4396:17;4386:27;;4354:61;4461:2;4453:6;4450:14;4430:18;4427:38;4424:161;;4507:10;4502:3;4498:20;4495:1;4488:31;4542:4;4539:1;4532:15;4570:4;4567:1;4560:15;4424:161;;4211:380;;;:::o;5005:356::-;5207:2;5189:21;;;5226:18;;;5219:30;5285:34;5280:2;5265:18;;5258:62;5352:2;5337:18;;5005:356::o;6120:127::-;6181:10;6176:3;6172:20;6169:1;6162:31;6212:4;6209:1;6202:15;6236:4;6233:1;6226:15;6252:125;6317:9;;;6338:10;;;6335:36;;;6351:18;;:::i;6382:168::-;6455:9;;;6486;;6503:15;;;6497:22;;6483:37;6473:71;;6524:18;;:::i;6555:217::-;6595:1;6621;6611:132;;6665:10;6660:3;6656:20;6653:1;6646:31;6700:4;6697:1;6690:15;6728:4;6725:1;6718:15;6611:132;-1:-1:-1;6757:9:1;;6555:217::o;8740:184::-;8810:6;8863:2;8851:9;8842:7;8838:23;8834:32;8831:52;;;8879:1;8876;8869:12;8831:52;-1:-1:-1;8902:16:1;;8740:184;-1:-1:-1;8740:184:1:o;9208:245::-;9275:6;9328:2;9316:9;9307:7;9303:23;9299:32;9296:52;;;9344:1;9341;9334:12;9296:52;9376:9;9370:16;9395:28;9417:5;9395:28;:::i;13133:251::-;13203:6;13256:2;13244:9;13235:7;13231:23;13227:32;13224:52;;;13272:1;13269;13262:12;13224:52;13304:9;13298:16;13323:31;13348:5;13323:31;:::i;13389:127::-;13450:10;13445:3;13441:20;13438:1;13431:31;13481:4;13478:1;13471:15;13505:4;13502:1;13495:15;13521:461;13574:3;13612:5;13606:12;13639:6;13634:3;13627:19;13665:4;13694:2;13689:3;13685:12;13678:19;;13731:2;13724:5;13720:14;13752:1;13762:195;13776:6;13773:1;13770:13;13762:195;;;13841:13;;-1:-1:-1;;;;;13837:39:1;13825:52;;13897:12;;;;13932:15;;;;13873:1;13791:9;13762:195;;;-1:-1:-1;13973:3:1;;13521:461;-1:-1:-1;;;;;13521:461:1:o;13987:510::-;14258:6;14247:9;14240:25;14301:3;14296:2;14285:9;14281:18;14274:31;14221:4;14322:57;14374:3;14363:9;14359:19;14351:6;14322:57;:::i;:::-;-1:-1:-1;;;;;14415:32:1;;;;14410:2;14395:18;;14388:60;-1:-1:-1;14479:2:1;14464:18;14457:34;14314:65;13987:510;-1:-1:-1;;13987:510:1:o;15310:401::-;15512:2;15494:21;;;15551:2;15531:18;;;15524:30;15590:34;15585:2;15570:18;;15563:62;-1:-1:-1;;;15656:2:1;15641:18;;15634:35;15701:3;15686:19;;15310:401::o;15716:399::-;15918:2;15900:21;;;15957:2;15937:18;;;15930:30;15996:34;15991:2;15976:18;;15969:62;-1:-1:-1;;;16062:2:1;16047:18;;16040:33;16105:3;16090:19;;15716:399::o;16829:128::-;16896:9;;;16917:11;;;16914:37;;;16931:18;;:::i;18611:582::-;18910:6;18899:9;18892:25;18953:6;18948:2;18937:9;18933:18;18926:34;18996:3;18991:2;18980:9;18976:18;18969:31;18873:4;19017:57;19069:3;19058:9;19054:19;19046:6;19017:57;:::i;:::-;-1:-1:-1;;;;;19110:32:1;;;;19105:2;19090:18;;19083:60;-1:-1:-1;19174:3:1;19159:19;19152:35;19009:65;18611:582;-1:-1:-1;;;18611:582:1:o

Swarm Source

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