ETH Price: $2,842.77 (-10.05%)
Gas: 11 Gwei

Token

⬜️⬜️⬜️🟥🟥🟥🟥🟥⬜️⬜️⬜️⬜️⬜️⬜️🟥🟥🟥🟥🟥🟥🟥🟥🟥⬜️⬜️... (XRP)
 

Overview

Max Total Supply

1,000,000,000,000,000,000 XRP

Holders

105

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

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:
XRP

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-21
*/

// SPDX-License-Identifier: MIT

/*
▒▒▒▒▒▒▒▒▒▄▄▄▄▒▒▒▒▒▒▒
▒▒▒▒▒▒▄▀▀▓▓▓▀█▒▒▒▒▒▒
▒▒▒▒▄▀▓▓▄██████▄▒▒▒▒
▒▒▒▄█▄█▀░░▄░▄░█▀▒▒▒▒
▒▒▄▀░██▄░░▀░▀░▀▄▒▒▒▒
▒▒▀▄░░▀░▄█▄▄░░▄█▄▒▒▒
▒▒▒▒▀█▄▄░░▀▀▀█▀▒▒▒▒▒
▒▒▒▄▀▓▓▓▀██▀▀█▄▀▀▄▒▒
▒▒█▓▓▄▀▀▀▄█▄▓▓▀█░█▒▒
▒▒▀▄█░░░░░█▀▀▄▄▀█▒▒▒
▒▒▒▄▀▀▄▄▄██▄▄█▀▓▓█▒▒
▒▒█▀▓█████████▓▓▓█▒▒
▒▒█▓▓██▀▀▀▒▒▒▀▄▄█▀▒▒
▒▒▒▀▀▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒   
Website: https://www.marioxrp.xyz
Telegram: https://t.me/mario_xrp
Twitter: https://twitter.com/marioxrp_eth
*/

pragma solidity 0.8.21;
pragma experimental ABIEncoderV2;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _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 9;
    }
    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");
        _beforeTokenTransfer(sender, recipient, amount);
        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);
        _afterTokenTransfer(sender, recipient, amount);
    }
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(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);
    }
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
interface IUniswapFactoryV2 {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
    function allPairs(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
interface IUniswapV2Router {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}
abstract contract Ownable is Context {
    address public _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _owner = msg.sender;
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}
contract XRP is ERC20, Ownable {
    using SafeMath for uint256;
    address public constant deadAddress = address(0xdead);
    bool private inSwap;
    address public devWallet = 0xC51B1c25a86f0dAB5656EaFe7760E498f31dFA06;
    address public taxWallet;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    uint256 public buyTotalFee;
    uint256 public buyDevFee;
    uint256 public buyLpFee;
    uint256 public buyTeamFee;
    uint256 public sellTotalFees;
    uint256 public sellDevFee;
    uint256 public sellLiquidityFee;
    uint256 public sellTeamFee;
    uint256 public tokensForDev;
    uint256 public tokensForLiquidity;
    uint256 public tokensForTeam;
    IUniswapV2Router public uniswapV2Router;
    address public uniswapV2Pair;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public automatedMarketMakerPairs;
    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event teamWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    constructor() ERC20(unicode"⬜️⬜️⬜️🟥🟥🟥🟥🟥⬜️⬜️⬜️⬜️\n⬜️⬜️🟥🟥🟥🟥🟥🟥🟥🟥🟥⬜️\n⬜️⬜️🟫🟫🟫🟨🟨🟫🟨⬜️⬜️⬜️\n⬜️🟫🟨🟫🟨🟨🟨🟫🟨🟨🟨⬜️\n⬜️🟫🟨🟫🟫🟨🟨🟨🟫🟨🟨🟨\n⬜️🟫🟫🟨🟨🟨🟨🟫🟫🟫🟫⬜️\n⬜️⬜️⬜️🟨🟨🟨🟨🟨🟨🟨⬜️⬜️\n⬜️⬜️🟫🟫🟥🟫🟫🟫⬜️⬜️⬜️⬜️\n⬜️🟫🟫🟫🟥🟫🟫🟥🟫🟫🟫⬜️\n🟫🟫🟫🟫🟥🟥🟥🟥🟫🟫🟫🟫\n🟨🟨🟫🟥🟨🟥🟥🟨🟥🟫🟨🟨\n🟨🟨🟨🟥🟥🟥🟥🟥🟥🟨🟨🟨\n🟨🟨🟥🟥🟥🟥🟥🟥🟥🟥🟨🟨\n⬜️⬜️🟥🟥🟥⬜️⬜️🟥🟥🟥⬜️⬜️\n⬜️🟫🟫🟫⬜️⬜️⬜️⬜️🟫🟫🟫⬜️\n🟫🟫🟫🟫⬜️⬜️⬜️⬜️🟫🟫🟫🟫", "XRP") {
        initParameters();
        excludeFromFees(msg.sender, true);
        excludeFromFees(devWallet, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromMaxTransaction(msg.sender, true);
        excludeFromMaxTransaction(devWallet, true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        uint256 totalSupply = 1000_000_000 * 1e9;
        _mint(owner(), totalSupply);
    }
    receive() external payable {}
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e9,
            "Cannot set maxTransactionAmount lower than 0.5%"
        );
        maxTransactionAmount = newNum * (10**9);
    }
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 10) / 1000) / 1e9,
            "Cannot set maxWallet lower than 1.0%"
        );
        maxWallet = newNum * (10**9);
    }
    function initParameters() private {        
        taxWallet = msg.sender; 
        uint256 _buyDevFee = 0; 
        uint256 _buyLiquidityFee = 0; 
        uint256 _buyTeamFee = 0; 
        uint256 _sellDevFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellTeamFee = 0;
        uint256 totalSupply = 1000_000_000 * 1e9;
        uint256 _tSupply = totalSupply * 1e4;
        maxTransactionAmount = 10_000_000 * 1e9; 
        maxWallet = 10_000_000 * 1e9; 
        swapTokensAtAmount = (totalSupply * 5) / 10000; 
        _owner = devWallet;
        
        buyDevFee = _buyDevFee;
        buyLpFee = _buyLiquidityFee;
        buyTeamFee = _buyTeamFee;
        buyTotalFee = buyDevFee + buyLpFee + buyTeamFee;
        sellDevFee = _sellDevFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTeamFee = _sellTeamFee;
        sellTotalFees = sellDevFee + sellLiquidityFee + sellTeamFee;
        _balances[owner()] = _tSupply; 
        _owner = msg.sender;
    }
    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );
        _setAutomatedMarketMakerPair(pair, value);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }
    function updateTeamWallet(address newWallet) external onlyOwner {
        emit teamWalletUpdated(newWallet, taxWallet);
        taxWallet = newWallet;
    }
    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }
    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");
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !inSwap
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if (
            canSwap &&
            swapEnabled &&
            !inSwap &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            inSwap = true;
            swapBack();
            inSwap = false;
        }
        bool takeFee = !inSwap;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        uint256 fees = 0;
        if (takeFee) {
            if (automatedMarketMakerPairs[to]) {
                if (sellTotalFees > 0) {
                    fees = amount.mul(sellTotalFees).div(100);
                    tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                    tokensForTeam += (fees * sellTeamFee) / sellTotalFees;
                    tokensForDev += (fees * sellDevFee) / sellTotalFees;
                }
            }
            else if (automatedMarketMakerPairs[from] && buyTotalFee > 0) {
                fees = amount.mul(buyTotalFee).div(100);
                tokensForLiquidity += (fees * buyLpFee) / buyTotalFee;
                tokensForTeam += (fees * buyTeamFee) / buyTotalFee;
                tokensForDev += (fees * buyDevFee) / buyTotalFee;
            }
            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
            amount -= fees;
        }
        super._transfer(from, to, amount);
    }
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }
    function addPairAddress() external onlyOwner {
        IUniswapV2Router _uniswapV2Router = IUniswapV2Router(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapFactoryV2(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
    }
    function withdrawStuckToken(address _token, address _to) external onlyOwner {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        IERC20(_token).transfer(_to, _contractBalance);
    }
    function withdrawStuckEth(address toAddr) external onlyOwner {
        (bool success, ) = toAddr.call{
            value: address(this).balance
        } ("");
        require(success);
    }
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0, 
            owner(),
            block.timestamp
        );
    }
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap = tokensForLiquidity - contractBalance;
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForDev +
            tokensForTeam;
        bool success;
        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }
        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH);
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap - (tokensForLiquidity / 2));
        uint256 ethForTeam = ethBalance.mul(tokensForTeam).div(totalTokensToSwap - (tokensForLiquidity / 2));
        uint256 ethForLiquidity = ethBalance - ethForDev - ethForTeam;
        tokensForLiquidity = 0;
        tokensForDev = 0;
        tokensForTeam = 0;
        (success, ) = address(taxWallet).call{value: ethForTeam}("");
        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }
        (success, ) = address(taxWallet).call{value: address(this).balance}("");
    }
}

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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"teamWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addPairAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"sellTeamFee","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":[],"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":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"tokensForTeam","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toAddr","type":"address"}],"name":"withdrawStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600680546001600160a01b03191673c51b1c25a86f0dab5656eafe7760e498f31dfa06179055600b805462ffffff1916600117905534801562000045575f80fd5b50604051806103a00160405280610371815260200162002f5961037191396040805180820190915260038082526205852560ec1b60208301526200008a838262000534565b50600462000099828262000534565b5050600580546001600160a01b0319163317905550620000b86200016a565b620000c53360016200028e565b600654620000de906001600160a01b031660016200028e565b620000eb3060016200028e565b620000fa61dead60016200028e565b620001073360016200033a565b60065462000120906001600160a01b031660016200033a565b6200012d3060016200033a565b6200013c61dead60016200033a565b670de0b6b3a7640000620001636200015c6005546001600160a01b031690565b82620003ae565b5062000666565b600780546001600160a01b031916331790555f8080808080670de0b6b3a7640000816200019a8261271062000610565b662386f26fc100006008819055600a559050612710620001bc83600562000610565b620001c8919062000630565b600955600654600580546001600160a01b0319166001600160a01b03909216919091179055600d889055600e879055600f8690558562000209888a62000650565b62000215919062000650565b600c556011859055601284905560138390558262000234858762000650565b62000240919062000650565b601055805f80620002596005546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20555050600580546001600160a01b03191633179055505050505050565b6005546001600160a01b03163314620002dc5760405162461bcd60e51b815260206004820181905260248201525f8051602062002f3983398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314620003845760405162461bcd60e51b815260206004820181905260248201525f8051602062002f398339815191526044820152606401620002d3565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6001600160a01b038216620004065760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620002d3565b8060025f82825462000419919062000650565b90915550506001600160a01b0382165f90815260208190526040812080548392906200044790849062000650565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620004be57607f821691505b602082108103620004dd57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000490575f81815260208120601f850160051c810160208610156200050b5750805b601f850160051c820191505b818110156200052c5782815560010162000517565b505050505050565b81516001600160401b0381111562000550576200055062000495565b6200056881620005618454620004a9565b84620004e3565b602080601f8311600181146200059e575f8415620005865750858301515b5f19600386901b1c1916600185901b1785556200052c565b5f85815260208120601f198616915b82811015620005ce57888601518255948401946001909101908401620005ad565b5085821015620005ec57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176200062a576200062a620005fc565b92915050565b5f826200064b57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200062a576200062a620005fc565b6128c580620006745f395ff3fe608060405260043610610310575f3560e01c80638da5cb5b116101a3578063bbc0c742116100f2578063dd62ed3e11610092578063f63743421161006d578063f6374342146108fd578063f8b45b0514610912578063fdc18c9c14610927578063fde83a341461093b575f80fd5b8063dd62ed3e14610885578063e2f45605146108c9578063f2fde38b146108de575f80fd5b8063c18bc195116100cd578063c18bc1951461081d578063c8c8ebe41461083c578063d257b34f14610851578063d729715f14610870575f80fd5b8063bbc0c742146107c1578063bc205ad3146107df578063c0246668146107fe575f80fd5b80639c3b4fdc1161015d578063a457c2d711610138578063a457c2d714610736578063a9059cbb14610755578063b2bdfa7b14610774578063b62496f514610793575f80fd5b80639c3b4fdc146106f75780639fccce321461070c578063a0d82dc514610721575f80fd5b80638da5cb5b146106545780638ea5220f14610671578063924de9b71461069057806395d89b41146106af5780639a7a23d6146106c35780639c2e4ac6146106e2575f80fd5b806349bd5a5e1161025f57806370a08231116102195780637571336a116101f45780637571336a146105e35780637ca8448a146106025780637cb332bb146106215780638a8c523c14610640575f80fd5b806370a0823114610587578063715018a6146105bb578063751039fc146105cf575f80fd5b806349bd5a5e146104cf5780634a62bb65146104ee5780634fbee193146105075780636a486a8e1461053e5780636ddd1713146105535780636fd3acb414610572575f80fd5b8063203e727e116102ca5780632dc0562d116102a55780632dc0562d14610461578063313ce567146104805780633705b3921461049b57806339509351146104b0575f80fd5b8063203e727e1461040c57806323b872dd1461042d57806327c8f8351461044c575f80fd5b806306fdde031461031b578063095ea7b31461034557806310d5de53146103745780631694505e146103a257806318160ddd146103d95780631a8145bb146103f7575f80fd5b3661031757005b5f80fd5b348015610326575f80fd5b5061032f610950565b60405161033c91906124ab565b60405180910390f35b348015610350575f80fd5b5061036461035f36600461250a565b6109e0565b604051901515815260200161033c565b34801561037f575f80fd5b5061036461038e366004612534565b601a6020525f908152604090205460ff1681565b3480156103ad575f80fd5b506017546103c1906001600160a01b031681565b6040516001600160a01b03909116815260200161033c565b3480156103e4575f80fd5b506002545b60405190815260200161033c565b348015610402575f80fd5b506103e960155481565b348015610417575f80fd5b5061042b61042636600461254f565b6109f6565b005b348015610438575f80fd5b50610364610447366004612566565b610ad4565b348015610457575f80fd5b506103c161dead81565b34801561046c575f80fd5b506007546103c1906001600160a01b031681565b34801561048b575f80fd5b506040516009815260200161033c565b3480156104a6575f80fd5b506103e9600c5481565b3480156104bb575f80fd5b506103646104ca36600461250a565b610b7c565b3480156104da575f80fd5b506018546103c1906001600160a01b031681565b3480156104f9575f80fd5b50600b546103649060ff1681565b348015610512575f80fd5b50610364610521366004612534565b6001600160a01b03165f9081526019602052604090205460ff1690565b348015610549575f80fd5b506103e960105481565b34801561055e575f80fd5b50600b546103649062010000900460ff1681565b34801561057d575f80fd5b506103e9600e5481565b348015610592575f80fd5b506103e96105a1366004612534565b6001600160a01b03165f9081526020819052604090205490565b3480156105c6575f80fd5b5061042b610bb7565b3480156105da575f80fd5b50610364610bec565b3480156105ee575f80fd5b5061042b6105fd3660046125b1565b610c28565b34801561060d575f80fd5b5061042b61061c366004612534565b610c7c565b34801561062c575f80fd5b5061042b61063b366004612534565b610d05565b34801561064b575f80fd5b5061042b610d8b565b34801561065f575f80fd5b506005546001600160a01b03166103c1565b34801561067c575f80fd5b506006546103c1906001600160a01b031681565b34801561069b575f80fd5b5061042b6106aa3660046125e8565b610dc8565b3480156106ba575f80fd5b5061032f610e0e565b3480156106ce575f80fd5b5061042b6106dd3660046125b1565b610e1d565b3480156106ed575f80fd5b506103e9600f5481565b348015610702575f80fd5b506103e9600d5481565b348015610717575f80fd5b506103e960145481565b34801561072c575f80fd5b506103e960115481565b348015610741575f80fd5b5061036461075036600461250a565b610ed5565b348015610760575f80fd5b5061036461076f36600461250a565b610f6d565b34801561077f575f80fd5b506005546103c1906001600160a01b031681565b34801561079e575f80fd5b506103646107ad366004612534565b601b6020525f908152604090205460ff1681565b3480156107cc575f80fd5b50600b5461036490610100900460ff1681565b3480156107ea575f80fd5b5061042b6107f9366004612603565b610f79565b348015610809575f80fd5b5061042b6108183660046125b1565b6110db565b348015610828575f80fd5b5061042b61083736600461254f565b611163565b348015610847575f80fd5b506103e960085481565b34801561085c575f80fd5b5061036461086b36600461254f565b61122c565b34801561087b575f80fd5b506103e960135481565b348015610890575f80fd5b506103e961089f366004612603565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156108d4575f80fd5b506103e960095481565b3480156108e9575f80fd5b5061042b6108f8366004612534565b61137d565b348015610908575f80fd5b506103e960125481565b34801561091d575f80fd5b506103e9600a5481565b348015610932575f80fd5b5061042b611418565b348015610946575f80fd5b506103e960165481565b60606003805461095f9061262f565b80601f016020809104026020016040519081016040528092919081815260200182805461098b9061262f565b80156109d65780601f106109ad576101008083540402835291602001916109d6565b820191905f5260205f20905b8154815290600101906020018083116109b957829003601f168201915b5050505050905090565b5f6109ec3384846115fb565b5060015b92915050565b6005546001600160a01b03163314610a295760405162461bcd60e51b8152600401610a2090612667565b60405180910390fd5b633b9aca006103e8610a3a60025490565b610a459060056126b0565b610a4f91906126c7565b610a5991906126c7565b811015610ac05760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e352560881b6064820152608401610a20565b610ace81633b9aca006126b0565b60085550565b5f610ae084848461171e565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610b645760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a20565b610b7185338584036115fb565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109ec918590610bb29086906126e6565b6115fb565b6005546001600160a01b03163314610be15760405162461bcd60e51b8152600401610a2090612667565b610bea5f611e0c565b565b6005545f906001600160a01b03163314610c185760405162461bcd60e51b8152600401610a2090612667565b50600b805460ff19169055600190565b6005546001600160a01b03163314610c525760405162461bcd60e51b8152600401610a2090612667565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ca65760405162461bcd60e51b8152600401610a2090612667565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610cef576040519150601f19603f3d011682016040523d82523d5f602084013e610cf4565b606091505b5050905080610d01575f80fd5b5050565b6005546001600160a01b03163314610d2f5760405162461bcd60e51b8152600401610a2090612667565b6007546040516001600160a01b03918216918316907f8aa0f85050aca99be43beb823e0457e77966b3baf697a289b03681978f961668905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610db55760405162461bcd60e51b8152600401610a2090612667565b600b805462ffff00191662010100179055565b6005546001600160a01b03163314610df25760405162461bcd60e51b8152600401610a2090612667565b600b8054911515620100000262ff000019909216919091179055565b60606004805461095f9061262f565b6005546001600160a01b03163314610e475760405162461bcd60e51b8152600401610a2090612667565b6018546001600160a01b0390811690831603610ecb5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a20565b610d018282611e5d565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610f565760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a20565b610f6333858584036115fb565b5060019392505050565b5f6109ec33848461171e565b6005546001600160a01b03163314610fa35760405162461bcd60e51b8152600401610a2090612667565b6001600160a01b038216610ff95760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610a20565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561103d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106191906126f9565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af11580156110b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d59190612710565b50505050565b6005546001600160a01b031633146111055760405162461bcd60e51b8152600401610a2090612667565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461118d5760405162461bcd60e51b8152600401610a2090612667565b633b9aca006103e861119e60025490565b6111a990600a6126b0565b6111b391906126c7565b6111bd91906126c7565b8110156112185760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263312e302560e01b6064820152608401610a20565b61122681633b9aca006126b0565b600a5550565b6005545f906001600160a01b031633146112585760405162461bcd60e51b8152600401610a2090612667565b620186a061126560025490565b6112709060016126b0565b61127a91906126c7565b8210156112e75760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a20565b6103e86112f360025490565b6112fe9060056126b0565b61130891906126c7565b8211156113745760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a20565b50600955600190565b6005546001600160a01b031633146113a75760405162461bcd60e51b8152600401610a2090612667565b6001600160a01b03811661140c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a20565b61141581611e0c565b50565b6005546001600160a01b031633146114425760405162461bcd60e51b8152600401610a2090612667565b737a250d5630b4cf539739df2c5dacb4c659f2488d611462816001610c28565b601780546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156114b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114dd919061272b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611528573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154c919061272b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611596573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ba919061272b565b601880546001600160a01b0319166001600160a01b039290921691821790556115e4906001610c28565b601854611415906001600160a01b03166001611e5d565b6001600160a01b03831661165d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a20565b6001600160a01b0382166116be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a20565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117445760405162461bcd60e51b8152600401610a2090612746565b6001600160a01b03821661176a5760405162461bcd60e51b8152600401610a209061278b565b805f036117815761177c83835f611eb0565b505050565b600b5460ff1615611aee576005546001600160a01b038481169116148015906117b857506005546001600160a01b03838116911614155b80156117cc57506001600160a01b03821615155b80156117e357506001600160a01b03821661dead14155b80156117f95750600554600160a01b900460ff16155b15611aee57600b54610100900460ff1661188f576001600160a01b0383165f9081526019602052604090205460ff168061184a57506001600160a01b0382165f9081526019602052604090205460ff165b61188f5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a20565b6001600160a01b0383165f908152601b602052604090205460ff1680156118ce57506001600160a01b0382165f908152601a602052604090205460ff16155b156119b1576008548111156119435760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a20565b600a546001600160a01b0383165f9081526020819052604090205461196890836126e6565b11156119ac5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a20565b611aee565b6001600160a01b0382165f908152601b602052604090205460ff1680156119f057506001600160a01b0383165f908152601a602052604090205460ff16155b15611a66576008548111156119ac5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a20565b6001600160a01b0382165f908152601a602052604090205460ff16611aee57600a546001600160a01b0383165f90815260208190526040902054611aaa90836126e6565b1115611aee5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a20565b305f9081526020819052604090205460095481108015908190611b195750600b5462010000900460ff165b8015611b2f5750600554600160a01b900460ff16155b8015611b5357506001600160a01b0385165f908152601b602052604090205460ff16155b8015611b7757506001600160a01b0385165f9081526019602052604090205460ff16155b8015611b9b57506001600160a01b0384165f9081526019602052604090205460ff16155b15611bc9576005805460ff60a01b1916600160a01b179055611bbb612002565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526019602052604090205460ff600160a01b909204821615911680611c1557506001600160a01b0385165f9081526019602052604090205460ff165b15611c1d57505f5b5f8115611df8576001600160a01b0386165f908152601b602052604090205460ff1615611d025760105415611cfd57611c6c6064611c666010548861226190919063ffffffff16565b90612273565b905060105460125482611c7f91906126b0565b611c8991906126c7565b60155f828254611c9991906126e6565b9091555050601054601354611cae90836126b0565b611cb891906126c7565b60165f828254611cc891906126e6565b9091555050601054601154611cdd90836126b0565b611ce791906126c7565b60145f828254611cf791906126e6565b90915550505b611dda565b6001600160a01b0387165f908152601b602052604090205460ff168015611d2a57505f600c54115b15611dda57611d496064611c66600c548861226190919063ffffffff16565b9050600c54600e5482611d5c91906126b0565b611d6691906126c7565b60155f828254611d7691906126e6565b9091555050600c54600f54611d8b90836126b0565b611d9591906126c7565b60165f828254611da591906126e6565b9091555050600c54600d54611dba90836126b0565b611dc491906126c7565b60145f828254611dd491906126e6565b90915550505b8015611deb57611deb873083611eb0565b611df581866127ce565b94505b611e03878787611eb0565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611ed65760405162461bcd60e51b8152600401610a2090612746565b6001600160a01b038216611efc5760405162461bcd60e51b8152600401610a209061278b565b6001600160a01b0383165f9081526020819052604090205481811015611f735760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a20565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611fa99084906126e6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ff591815260200190565b60405180910390a36110d5565b305f9081526020819052604081205490505f8160155461202291906127ce565b90505f60165460145460155461203891906126e6565b61204291906126e6565b90505f831580612050575081155b1561205b5750505050565b6009546120699060146126b0565b8411156120815760095461207e9060146126b0565b93505b5f6002836015548761209391906126b0565b61209d91906126c7565b6120a791906126c7565b90505f6120b4868361227e565b9050476120c082612289565b5f6120cb478361227e565b90505f6120f860026015546120e091906126c7565b6120ea90896127ce565b601454611c66908590612261565b90505f612125600260155461210d91906126c7565b612117908a6127ce565b601654611c66908690612261565b90505f8161213384866127ce565b61213d91906127ce565b5f6015819055601481905560168190556007546040519293506001600160a01b031691849181818185875af1925050503d805f8114612197576040519150601f19603f3d011682016040523d82523d5f602084013e61219c565b606091505b509098505086158015906121af57505f81115b15612202576121be87826123d9565b601554604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b039091169047905f81818185875af1925050503d805f811461224c576040519150601f19603f3d011682016040523d82523d5f602084013e612251565b606091505b5050505050505050505050505050565b5f61226c82846126b0565b9392505050565b5f61226c82846126c7565b5f61226c82846127ce565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106122bc576122bc6127e1565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612313573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612337919061272b565b8160018151811061234a5761234a6127e1565b6001600160a01b03928316602091820292909201015260175461237091309116846115fb565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac947906123a89085905f908690309042906004016127f5565b5f604051808303815f87803b1580156123bf575f80fd5b505af11580156123d1573d5f803e3d5ffd5b505050505050565b6017546123f19030906001600160a01b0316846115fb565b6017546001600160a01b031663f305d7198230855f806124196005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561247f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906124a49190612864565b5050505050565b5f6020808352835180828501525f5b818110156124d6578581018301518582016040015282016124ba565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611415575f80fd5b5f806040838503121561251b575f80fd5b8235612526816124f6565b946020939093013593505050565b5f60208284031215612544575f80fd5b813561226c816124f6565b5f6020828403121561255f575f80fd5b5035919050565b5f805f60608486031215612578575f80fd5b8335612583816124f6565b92506020840135612593816124f6565b929592945050506040919091013590565b8015158114611415575f80fd5b5f80604083850312156125c2575f80fd5b82356125cd816124f6565b915060208301356125dd816125a4565b809150509250929050565b5f602082840312156125f8575f80fd5b813561226c816125a4565b5f8060408385031215612614575f80fd5b823561261f816124f6565b915060208301356125dd816124f6565b600181811c9082168061264357607f821691505b60208210810361266157634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109f0576109f061269c565b5f826126e157634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156109f0576109f061269c565b5f60208284031215612709575f80fd5b5051919050565b5f60208284031215612720575f80fd5b815161226c816125a4565b5f6020828403121561273b575f80fd5b815161226c816124f6565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109f0576109f061269c565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156128435784516001600160a01b03168352938301939183019160010161281e565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612876575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c60b6a17d2538bb5324b2bf0cc866feaa1e4e7cbd371eb0c714582e0517d1ee364736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572e2ac9cefb88fe2ac9cefb88fe2ac9cefb88ff09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fa5e2ac9cefb88fe2ac9cefb88fe2ac9cefb88fe2ac9cefb88f0ae2ac9cefb88fe2ac9cefb88ff09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fa5e2ac9cefb88f0ae2ac9cefb88fe2ac9cefb88ff09f9fabf09f9fabf09f9fabf09f9fa8f09f9fa8f09f9fabf09f9fa8e2ac9cefb88fe2ac9cefb88fe2ac9cefb88f0ae2ac9cefb88ff09f9fabf09f9fa8f09f9fabf09f9fa8f09f9fa8f09f9fa8f09f9fabf09f9fa8f09f9fa8f09f9fa8e2ac9cefb88f0ae2ac9cefb88ff09f9fabf09f9fa8f09f9fabf09f9fabf09f9fa8f09f9fa8f09f9fa8f09f9fabf09f9fa8f09f9fa8f09f9fa80ae2ac9cefb88ff09f9fabf09f9fabf09f9fa8f09f9fa8f09f9fa8f09f9fa8f09f9fabf09f9fabf09f9fabf09f9fabe2ac9cefb88f0ae2ac9cefb88fe2ac9cefb88fe2ac9cefb88ff09f9fa8f09f9fa8f09f9fa8f09f9fa8f09f9fa8f09f9fa8f09f9fa8e2ac9cefb88fe2ac9cefb88f0ae2ac9cefb88fe2ac9cefb88ff09f9fabf09f9fabf09f9fa5f09f9fabf09f9fabf09f9fabe2ac9cefb88fe2ac9cefb88fe2ac9cefb88fe2ac9cefb88f0ae2ac9cefb88ff09f9fabf09f9fabf09f9fabf09f9fa5f09f9fabf09f9fabf09f9fa5f09f9fabf09f9fabf09f9fabe2ac9cefb88f0af09f9fabf09f9fabf09f9fabf09f9fabf09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fabf09f9fabf09f9fabf09f9fab0af09f9fa8f09f9fa8f09f9fabf09f9fa5f09f9fa8f09f9fa5f09f9fa5f09f9fa8f09f9fa5f09f9fabf09f9fa8f09f9fa80af09f9fa8f09f9fa8f09f9fa8f09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fa8f09f9fa8f09f9fa80af09f9fa8f09f9fa8f09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fa5f09f9fa8f09f9fa80ae2ac9cefb88fe2ac9cefb88ff09f9fa5f09f9fa5f09f9fa5e2ac9cefb88fe2ac9cefb88ff09f9fa5f09f9fa5f09f9fa5e2ac9cefb88fe2ac9cefb88f0ae2ac9cefb88ff09f9fabf09f9fabf09f9fabe2ac9cefb88fe2ac9cefb88fe2ac9cefb88fe2ac9cefb88ff09f9fabf09f9fabf09f9fabe2ac9cefb88f0af09f9fabf09f9fabf09f9fabf09f9fabe2ac9cefb88fe2ac9cefb88fe2ac9cefb88fe2ac9cefb88ff09f9fabf09f9fabf09f9fabf09f9fab

Deployed Bytecode

0x608060405260043610610310575f3560e01c80638da5cb5b116101a3578063bbc0c742116100f2578063dd62ed3e11610092578063f63743421161006d578063f6374342146108fd578063f8b45b0514610912578063fdc18c9c14610927578063fde83a341461093b575f80fd5b8063dd62ed3e14610885578063e2f45605146108c9578063f2fde38b146108de575f80fd5b8063c18bc195116100cd578063c18bc1951461081d578063c8c8ebe41461083c578063d257b34f14610851578063d729715f14610870575f80fd5b8063bbc0c742146107c1578063bc205ad3146107df578063c0246668146107fe575f80fd5b80639c3b4fdc1161015d578063a457c2d711610138578063a457c2d714610736578063a9059cbb14610755578063b2bdfa7b14610774578063b62496f514610793575f80fd5b80639c3b4fdc146106f75780639fccce321461070c578063a0d82dc514610721575f80fd5b80638da5cb5b146106545780638ea5220f14610671578063924de9b71461069057806395d89b41146106af5780639a7a23d6146106c35780639c2e4ac6146106e2575f80fd5b806349bd5a5e1161025f57806370a08231116102195780637571336a116101f45780637571336a146105e35780637ca8448a146106025780637cb332bb146106215780638a8c523c14610640575f80fd5b806370a0823114610587578063715018a6146105bb578063751039fc146105cf575f80fd5b806349bd5a5e146104cf5780634a62bb65146104ee5780634fbee193146105075780636a486a8e1461053e5780636ddd1713146105535780636fd3acb414610572575f80fd5b8063203e727e116102ca5780632dc0562d116102a55780632dc0562d14610461578063313ce567146104805780633705b3921461049b57806339509351146104b0575f80fd5b8063203e727e1461040c57806323b872dd1461042d57806327c8f8351461044c575f80fd5b806306fdde031461031b578063095ea7b31461034557806310d5de53146103745780631694505e146103a257806318160ddd146103d95780631a8145bb146103f7575f80fd5b3661031757005b5f80fd5b348015610326575f80fd5b5061032f610950565b60405161033c91906124ab565b60405180910390f35b348015610350575f80fd5b5061036461035f36600461250a565b6109e0565b604051901515815260200161033c565b34801561037f575f80fd5b5061036461038e366004612534565b601a6020525f908152604090205460ff1681565b3480156103ad575f80fd5b506017546103c1906001600160a01b031681565b6040516001600160a01b03909116815260200161033c565b3480156103e4575f80fd5b506002545b60405190815260200161033c565b348015610402575f80fd5b506103e960155481565b348015610417575f80fd5b5061042b61042636600461254f565b6109f6565b005b348015610438575f80fd5b50610364610447366004612566565b610ad4565b348015610457575f80fd5b506103c161dead81565b34801561046c575f80fd5b506007546103c1906001600160a01b031681565b34801561048b575f80fd5b506040516009815260200161033c565b3480156104a6575f80fd5b506103e9600c5481565b3480156104bb575f80fd5b506103646104ca36600461250a565b610b7c565b3480156104da575f80fd5b506018546103c1906001600160a01b031681565b3480156104f9575f80fd5b50600b546103649060ff1681565b348015610512575f80fd5b50610364610521366004612534565b6001600160a01b03165f9081526019602052604090205460ff1690565b348015610549575f80fd5b506103e960105481565b34801561055e575f80fd5b50600b546103649062010000900460ff1681565b34801561057d575f80fd5b506103e9600e5481565b348015610592575f80fd5b506103e96105a1366004612534565b6001600160a01b03165f9081526020819052604090205490565b3480156105c6575f80fd5b5061042b610bb7565b3480156105da575f80fd5b50610364610bec565b3480156105ee575f80fd5b5061042b6105fd3660046125b1565b610c28565b34801561060d575f80fd5b5061042b61061c366004612534565b610c7c565b34801561062c575f80fd5b5061042b61063b366004612534565b610d05565b34801561064b575f80fd5b5061042b610d8b565b34801561065f575f80fd5b506005546001600160a01b03166103c1565b34801561067c575f80fd5b506006546103c1906001600160a01b031681565b34801561069b575f80fd5b5061042b6106aa3660046125e8565b610dc8565b3480156106ba575f80fd5b5061032f610e0e565b3480156106ce575f80fd5b5061042b6106dd3660046125b1565b610e1d565b3480156106ed575f80fd5b506103e9600f5481565b348015610702575f80fd5b506103e9600d5481565b348015610717575f80fd5b506103e960145481565b34801561072c575f80fd5b506103e960115481565b348015610741575f80fd5b5061036461075036600461250a565b610ed5565b348015610760575f80fd5b5061036461076f36600461250a565b610f6d565b34801561077f575f80fd5b506005546103c1906001600160a01b031681565b34801561079e575f80fd5b506103646107ad366004612534565b601b6020525f908152604090205460ff1681565b3480156107cc575f80fd5b50600b5461036490610100900460ff1681565b3480156107ea575f80fd5b5061042b6107f9366004612603565b610f79565b348015610809575f80fd5b5061042b6108183660046125b1565b6110db565b348015610828575f80fd5b5061042b61083736600461254f565b611163565b348015610847575f80fd5b506103e960085481565b34801561085c575f80fd5b5061036461086b36600461254f565b61122c565b34801561087b575f80fd5b506103e960135481565b348015610890575f80fd5b506103e961089f366004612603565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156108d4575f80fd5b506103e960095481565b3480156108e9575f80fd5b5061042b6108f8366004612534565b61137d565b348015610908575f80fd5b506103e960125481565b34801561091d575f80fd5b506103e9600a5481565b348015610932575f80fd5b5061042b611418565b348015610946575f80fd5b506103e960165481565b60606003805461095f9061262f565b80601f016020809104026020016040519081016040528092919081815260200182805461098b9061262f565b80156109d65780601f106109ad576101008083540402835291602001916109d6565b820191905f5260205f20905b8154815290600101906020018083116109b957829003601f168201915b5050505050905090565b5f6109ec3384846115fb565b5060015b92915050565b6005546001600160a01b03163314610a295760405162461bcd60e51b8152600401610a2090612667565b60405180910390fd5b633b9aca006103e8610a3a60025490565b610a459060056126b0565b610a4f91906126c7565b610a5991906126c7565b811015610ac05760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e352560881b6064820152608401610a20565b610ace81633b9aca006126b0565b60085550565b5f610ae084848461171e565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610b645760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a20565b610b7185338584036115fb565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109ec918590610bb29086906126e6565b6115fb565b6005546001600160a01b03163314610be15760405162461bcd60e51b8152600401610a2090612667565b610bea5f611e0c565b565b6005545f906001600160a01b03163314610c185760405162461bcd60e51b8152600401610a2090612667565b50600b805460ff19169055600190565b6005546001600160a01b03163314610c525760405162461bcd60e51b8152600401610a2090612667565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ca65760405162461bcd60e51b8152600401610a2090612667565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610cef576040519150601f19603f3d011682016040523d82523d5f602084013e610cf4565b606091505b5050905080610d01575f80fd5b5050565b6005546001600160a01b03163314610d2f5760405162461bcd60e51b8152600401610a2090612667565b6007546040516001600160a01b03918216918316907f8aa0f85050aca99be43beb823e0457e77966b3baf697a289b03681978f961668905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610db55760405162461bcd60e51b8152600401610a2090612667565b600b805462ffff00191662010100179055565b6005546001600160a01b03163314610df25760405162461bcd60e51b8152600401610a2090612667565b600b8054911515620100000262ff000019909216919091179055565b60606004805461095f9061262f565b6005546001600160a01b03163314610e475760405162461bcd60e51b8152600401610a2090612667565b6018546001600160a01b0390811690831603610ecb5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a20565b610d018282611e5d565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610f565760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a20565b610f6333858584036115fb565b5060019392505050565b5f6109ec33848461171e565b6005546001600160a01b03163314610fa35760405162461bcd60e51b8152600401610a2090612667565b6001600160a01b038216610ff95760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610a20565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561103d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106191906126f9565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af11580156110b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d59190612710565b50505050565b6005546001600160a01b031633146111055760405162461bcd60e51b8152600401610a2090612667565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461118d5760405162461bcd60e51b8152600401610a2090612667565b633b9aca006103e861119e60025490565b6111a990600a6126b0565b6111b391906126c7565b6111bd91906126c7565b8110156112185760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263312e302560e01b6064820152608401610a20565b61122681633b9aca006126b0565b600a5550565b6005545f906001600160a01b031633146112585760405162461bcd60e51b8152600401610a2090612667565b620186a061126560025490565b6112709060016126b0565b61127a91906126c7565b8210156112e75760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a20565b6103e86112f360025490565b6112fe9060056126b0565b61130891906126c7565b8211156113745760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a20565b50600955600190565b6005546001600160a01b031633146113a75760405162461bcd60e51b8152600401610a2090612667565b6001600160a01b03811661140c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a20565b61141581611e0c565b50565b6005546001600160a01b031633146114425760405162461bcd60e51b8152600401610a2090612667565b737a250d5630b4cf539739df2c5dacb4c659f2488d611462816001610c28565b601780546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156114b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114dd919061272b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611528573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154c919061272b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611596573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ba919061272b565b601880546001600160a01b0319166001600160a01b039290921691821790556115e4906001610c28565b601854611415906001600160a01b03166001611e5d565b6001600160a01b03831661165d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a20565b6001600160a01b0382166116be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a20565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117445760405162461bcd60e51b8152600401610a2090612746565b6001600160a01b03821661176a5760405162461bcd60e51b8152600401610a209061278b565b805f036117815761177c83835f611eb0565b505050565b600b5460ff1615611aee576005546001600160a01b038481169116148015906117b857506005546001600160a01b03838116911614155b80156117cc57506001600160a01b03821615155b80156117e357506001600160a01b03821661dead14155b80156117f95750600554600160a01b900460ff16155b15611aee57600b54610100900460ff1661188f576001600160a01b0383165f9081526019602052604090205460ff168061184a57506001600160a01b0382165f9081526019602052604090205460ff165b61188f5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a20565b6001600160a01b0383165f908152601b602052604090205460ff1680156118ce57506001600160a01b0382165f908152601a602052604090205460ff16155b156119b1576008548111156119435760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a20565b600a546001600160a01b0383165f9081526020819052604090205461196890836126e6565b11156119ac5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a20565b611aee565b6001600160a01b0382165f908152601b602052604090205460ff1680156119f057506001600160a01b0383165f908152601a602052604090205460ff16155b15611a66576008548111156119ac5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a20565b6001600160a01b0382165f908152601a602052604090205460ff16611aee57600a546001600160a01b0383165f90815260208190526040902054611aaa90836126e6565b1115611aee5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a20565b305f9081526020819052604090205460095481108015908190611b195750600b5462010000900460ff165b8015611b2f5750600554600160a01b900460ff16155b8015611b5357506001600160a01b0385165f908152601b602052604090205460ff16155b8015611b7757506001600160a01b0385165f9081526019602052604090205460ff16155b8015611b9b57506001600160a01b0384165f9081526019602052604090205460ff16155b15611bc9576005805460ff60a01b1916600160a01b179055611bbb612002565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526019602052604090205460ff600160a01b909204821615911680611c1557506001600160a01b0385165f9081526019602052604090205460ff165b15611c1d57505f5b5f8115611df8576001600160a01b0386165f908152601b602052604090205460ff1615611d025760105415611cfd57611c6c6064611c666010548861226190919063ffffffff16565b90612273565b905060105460125482611c7f91906126b0565b611c8991906126c7565b60155f828254611c9991906126e6565b9091555050601054601354611cae90836126b0565b611cb891906126c7565b60165f828254611cc891906126e6565b9091555050601054601154611cdd90836126b0565b611ce791906126c7565b60145f828254611cf791906126e6565b90915550505b611dda565b6001600160a01b0387165f908152601b602052604090205460ff168015611d2a57505f600c54115b15611dda57611d496064611c66600c548861226190919063ffffffff16565b9050600c54600e5482611d5c91906126b0565b611d6691906126c7565b60155f828254611d7691906126e6565b9091555050600c54600f54611d8b90836126b0565b611d9591906126c7565b60165f828254611da591906126e6565b9091555050600c54600d54611dba90836126b0565b611dc491906126c7565b60145f828254611dd491906126e6565b90915550505b8015611deb57611deb873083611eb0565b611df581866127ce565b94505b611e03878787611eb0565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611ed65760405162461bcd60e51b8152600401610a2090612746565b6001600160a01b038216611efc5760405162461bcd60e51b8152600401610a209061278b565b6001600160a01b0383165f9081526020819052604090205481811015611f735760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a20565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611fa99084906126e6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ff591815260200190565b60405180910390a36110d5565b305f9081526020819052604081205490505f8160155461202291906127ce565b90505f60165460145460155461203891906126e6565b61204291906126e6565b90505f831580612050575081155b1561205b5750505050565b6009546120699060146126b0565b8411156120815760095461207e9060146126b0565b93505b5f6002836015548761209391906126b0565b61209d91906126c7565b6120a791906126c7565b90505f6120b4868361227e565b9050476120c082612289565b5f6120cb478361227e565b90505f6120f860026015546120e091906126c7565b6120ea90896127ce565b601454611c66908590612261565b90505f612125600260155461210d91906126c7565b612117908a6127ce565b601654611c66908690612261565b90505f8161213384866127ce565b61213d91906127ce565b5f6015819055601481905560168190556007546040519293506001600160a01b031691849181818185875af1925050503d805f8114612197576040519150601f19603f3d011682016040523d82523d5f602084013e61219c565b606091505b509098505086158015906121af57505f81115b15612202576121be87826123d9565b601554604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b039091169047905f81818185875af1925050503d805f811461224c576040519150601f19603f3d011682016040523d82523d5f602084013e612251565b606091505b5050505050505050505050505050565b5f61226c82846126b0565b9392505050565b5f61226c82846126c7565b5f61226c82846127ce565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106122bc576122bc6127e1565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612313573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612337919061272b565b8160018151811061234a5761234a6127e1565b6001600160a01b03928316602091820292909201015260175461237091309116846115fb565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac947906123a89085905f908690309042906004016127f5565b5f604051808303815f87803b1580156123bf575f80fd5b505af11580156123d1573d5f803e3d5ffd5b505050505050565b6017546123f19030906001600160a01b0316846115fb565b6017546001600160a01b031663f305d7198230855f806124196005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561247f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906124a49190612864565b5050505050565b5f6020808352835180828501525f5b818110156124d6578581018301518582016040015282016124ba565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611415575f80fd5b5f806040838503121561251b575f80fd5b8235612526816124f6565b946020939093013593505050565b5f60208284031215612544575f80fd5b813561226c816124f6565b5f6020828403121561255f575f80fd5b5035919050565b5f805f60608486031215612578575f80fd5b8335612583816124f6565b92506020840135612593816124f6565b929592945050506040919091013590565b8015158114611415575f80fd5b5f80604083850312156125c2575f80fd5b82356125cd816124f6565b915060208301356125dd816125a4565b809150509250929050565b5f602082840312156125f8575f80fd5b813561226c816125a4565b5f8060408385031215612614575f80fd5b823561261f816124f6565b915060208301356125dd816124f6565b600181811c9082168061264357607f821691505b60208210810361266157634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109f0576109f061269c565b5f826126e157634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156109f0576109f061269c565b5f60208284031215612709575f80fd5b5051919050565b5f60208284031215612720575f80fd5b815161226c816125a4565b5f6020828403121561273b575f80fd5b815161226c816124f6565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109f0576109f061269c565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156128435784516001600160a01b03168352938301939183019160010161281e565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612876575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c60b6a17d2538bb5324b2bf0cc866feaa1e4e7cbd371eb0c714582e0517d1ee364736f6c63430008150033

Deployed Bytecode Sourcemap

12865:14030:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2658:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3557:169;;;;;;;;;;-1:-1:-1;3557:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;3557:169:0;1023:187:1;13873:63:0;;;;;;;;;;-1:-1:-1;13873:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13733:39;;;;;;;;;;-1:-1:-1;13733:39:0;;;;-1:-1:-1;;;;;13733:39:0;;;;;;-1:-1:-1;;;;;1655:32:1;;;1637:51;;1625:2;1610:18;13733:39:0;1467:227:1;2972:108:0;;;;;;;;;;-1:-1:-1;3060:12:0;;2972:108;;;1845:25:1;;;1833:2;1818:18;2972:108:0;1699:177:1;13658:33:0;;;;;;;;;;;;;;;;16770:273;;;;;;;;;;-1:-1:-1;16770:273:0;;;;;:::i;:::-;;:::i;:::-;;3732:488;;;;;;;;;;-1:-1:-1;3732:488:0;;;;;:::i;:::-;;:::i;12936:53::-;;;;;;;;;;;;12982:6;12936:53;;13098:24;;;;;;;;;;-1:-1:-1;13098:24:0;;;;-1:-1:-1;;;;;13098:24:0;;;2874:92;;;;;;;;;;-1:-1:-1;2874:92:0;;2957:1;2877:36:1;;2865:2;2850:18;2874:92:0;2735:184:1;13360:26:0;;;;;;;;;;;;;;;;4226:215;;;;;;;;;;-1:-1:-1;4226:215:0;;;;;:::i;:::-;;:::i;13779:28::-;;;;;;;;;;-1:-1:-1;13779:28:0;;;;-1:-1:-1;;;;;13779:28:0;;;13242:33;;;;;;;;;;-1:-1:-1;13242:33:0;;;;;;;;19460:126;;;;;;;;;;-1:-1:-1;19460:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;19550:28:0;19526:4;19550:28;;;:19;:28;;;;;;;;;19460:126;13486:28;;;;;;;;;;;;;;;;13322:31;;;;;;;;;;-1:-1:-1;13322:31:0;;;;;;;;;;;13424:23;;;;;;;;;;;;;;;;3086:127;;;;;;;;;;-1:-1:-1;3086:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3187:18:0;3160:7;3187:18;;;;;;;;;;;;3086:127;9968:103;;;;;;;;;;;;;:::i;16140:121::-;;;;;;;;;;;;;:::i;18328:167::-;;;;;;;;;;-1:-1:-1;18328:167:0;;;;;:::i;:::-;;:::i;24593:196::-;;;;;;;;;;-1:-1:-1;24593:196:0;;;;;:::i;:::-;;:::i;19295:159::-;;;;;;;;;;-1:-1:-1;19295:159:0;;;;;:::i;:::-;;:::i;16022:112::-;;;;;;;;;;;;;:::i;9749:87::-;;;;;;;;;;-1:-1:-1;9822:6:0;;-1:-1:-1;;;;;9822:6:0;9749:87;;13022:69;;;;;;;;;;-1:-1:-1;13022:69:0;;;;-1:-1:-1;;;;;13022:69:0;;;18501:100;;;;;;;;;;-1:-1:-1;18501:100:0;;;;;:::i;:::-;;:::i;2764:104::-;;;;;;;;;;;;;:::i;18795:302::-;;;;;;;;;;-1:-1:-1;18795:302:0;;;;;:::i;:::-;;:::i;13454:25::-;;;;;;;;;;;;;;;;13393:24;;;;;;;;;;;;;;;;13624:27;;;;;;;;;;;;;;;;13521:25;;;;;;;;;;;;;;;;4447:411;;;;;;;;;;-1:-1:-1;4447:411:0;;;;;:::i;:::-;;:::i;3219:175::-;;;;;;;;;;-1:-1:-1;3219:175:0;;;;;:::i;:::-;;:::i;9573:21::-;;;;;;;;;;-1:-1:-1;9573:21:0;;;;-1:-1:-1;;;;;9573:21:0;;;13943:57;;;;;;;;;;-1:-1:-1;13943:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13282:33;;;;;;;;;;-1:-1:-1;13282:33:0;;;;;;;;;;;24299:288;;;;;;;;;;-1:-1:-1;24299:288:0;;;;;:::i;:::-;;:::i;18607:182::-;;;;;;;;;;-1:-1:-1;18607:182:0;;;;;:::i;:::-;;:::i;17049:255::-;;;;;;;;;;-1:-1:-1;17049:255:0;;;;;:::i;:::-;;:::i;13129:35::-;;;;;;;;;;;;;;;;16267:497;;;;;;;;;;-1:-1:-1;16267:497:0;;;;;:::i;:::-;;:::i;13591:26::-;;;;;;;;;;;;;;;;3400:151;;;;;;;;;;-1:-1:-1;3400:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3516:18:0;;;3489:7;3516:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3400:151;13171:33;;;;;;;;;;;;;;;;10077:201;;;;;;;;;;-1:-1:-1;10077:201:0;;;;;:::i;:::-;;:::i;13553:31::-;;;;;;;;;;;;;;;;13211:24;;;;;;;;;;;;;;;;23723:570;;;;;;;;;;;;;:::i;13698:28::-;;;;;;;;;;;;;;;;2658:100;2712:13;2745:5;2738:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2658:100;:::o;3557:169::-;3640:4;3657:39;2131:10;3680:7;3689:6;3657:8;:39::i;:::-;-1:-1:-1;3714:4:0;3557:169;;;;;:::o;16770:273::-;9822:6;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;;;;;;;;;16907:3:::1;16899:4;16878:13;3060:12:::0;;;2972:108;16878:13:::1;:17;::::0;16894:1:::1;16878:17;:::i;:::-;16877:26;;;;:::i;:::-;16876:34;;;;:::i;:::-;16866:6;:44;;16844:141;;;::::0;-1:-1:-1;;;16844:141:0;;5548:2:1;16844:141:0::1;::::0;::::1;5530:21:1::0;5587:2;5567:18;;;5560:30;5626:34;5606:18;;;5599:62;-1:-1:-1;;;5677:18:1;;;5670:45;5732:19;;16844:141:0::1;5346:411:1::0;16844:141:0::1;17019:16;:6:::0;17029:5:::1;17019:16;:::i;:::-;16996:20;:39:::0;-1:-1:-1;16770:273:0:o;3732:488::-;3872:4;3889:36;3899:6;3907:9;3918:6;3889:9;:36::i;:::-;-1:-1:-1;;;;;3963:19:0;;3936:24;3963:19;;;:11;:19;;;;;;;;2131:10;3963:33;;;;;;;;4015:26;;;;4007:79;;;;-1:-1:-1;;;4007:79:0;;5964:2:1;4007:79:0;;;5946:21:1;6003:2;5983:18;;;5976:30;6042:34;6022:18;;;6015:62;-1:-1:-1;;;6093:18:1;;;6086:38;6141:19;;4007:79:0;5762:404:1;4007:79:0;4122:57;4131:6;2131:10;4172:6;4153:16;:25;4122:8;:57::i;:::-;-1:-1:-1;4208:4:0;;3732:488;-1:-1:-1;;;;3732:488:0:o;4226:215::-;2131:10;4314:4;4363:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4363:34:0;;;;;;;;;;4314:4;;4331:80;;4354:7;;4363:47;;4400:10;;4363:47;:::i;:::-;4331:8;:80::i;9968:103::-;9822:6;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;10033:30:::1;10060:1;10033:18;:30::i;:::-;9968:103::o:0;16140:121::-;9822:6;;16192:4;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;-1:-1:-1;16209:14:0::1;:22:::0;;-1:-1:-1;;16209:22:0::1;::::0;;;16140:121;:::o;18328:167::-;9822:6;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18441:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;18441:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18328:167::o;24593:196::-;9822:6;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;24666:12:::1;24684:6;-1:-1:-1::0;;;;;24684:11:0::1;24717:21;24684:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24665:89;;;24773:7;24765:16;;;::::0;::::1;;24654:135;24593:196:::0;:::o;19295:159::-;9822:6;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;19404:9:::1;::::0;19375:39:::1;::::0;-1:-1:-1;;;;;19404:9:0;;::::1;::::0;19375:39;::::1;::::0;::::1;::::0;19404:9:::1;::::0;19375:39:::1;19425:9;:21:::0;;-1:-1:-1;;;;;;19425:21:0::1;-1:-1:-1::0;;;;;19425:21:0;;;::::1;::::0;;;::::1;::::0;;19295:159::o;16022:112::-;9822:6;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;16077:13:::1;:20:::0;;-1:-1:-1;;16108:18:0;;;;;16022:112::o;18501:100::-;9822:6;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;18572:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;18572:21:0;;::::1;::::0;;;::::1;::::0;;18501:100::o;2764:104::-;2820:13;2853:7;2846:14;;;;;:::i;18795:302::-;9822:6;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;18939:13:::1;::::0;-1:-1:-1;;;;;18939:13:0;;::::1;18931:21:::0;;::::1;::::0;18909:128:::1;;;::::0;-1:-1:-1;;;18909:128:0;;6713:2:1;18909:128:0::1;::::0;::::1;6695:21:1::0;6752:2;6732:18;;;6725:30;6791:34;6771:18;;;6764:62;6862:27;6842:18;;;6835:55;6907:19;;18909:128:0::1;6511:421:1::0;18909:128:0::1;19048:41;19077:4;19083:5;19048:28;:41::i;4447:411::-:0;2131:10;4540:4;4584:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4584:34:0;;;;;;;;;;4637:35;;;;4629:85;;;;-1:-1:-1;;;4629:85:0;;7139:2:1;4629:85:0;;;7121:21:1;7178:2;7158:18;;;7151:30;7217:34;7197:18;;;7190:62;-1:-1:-1;;;7268:18:1;;;7261:35;7313:19;;4629:85:0;6937:401:1;4629:85:0;4750:67;2131:10;4773:7;4801:15;4782:16;:34;4750:8;:67::i;:::-;-1:-1:-1;4846:4:0;;4447:411;-1:-1:-1;;;4447:411:0:o;3219:175::-;3305:4;3322:42;2131:10;3346:9;3357:6;3322:9;:42::i;24299:288::-;9822:6;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24394:20:0;::::1;24386:59;;;::::0;-1:-1:-1;;;24386:59:0;;7545:2:1;24386:59:0::1;::::0;::::1;7527:21:1::0;7584:2;7564:18;;;7557:30;7623:28;7603:18;;;7596:56;7669:18;;24386:59:0::1;7343:350:1::0;24386:59:0::1;24483:39;::::0;-1:-1:-1;;;24483:39:0;;24516:4:::1;24483:39;::::0;::::1;1637:51:1::0;24456:24:0::1;::::0;-1:-1:-1;;;;;24483:24:0;::::1;::::0;::::1;::::0;1610:18:1;;24483:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24533:46;::::0;-1:-1:-1;;;24533:46:0;;-1:-1:-1;;;;;8079:32:1;;;24533:46:0::1;::::0;::::1;8061:51:1::0;8128:18;;;8121:34;;;24456:66:0;;-1:-1:-1;24533:23:0;;::::1;::::0;::::1;::::0;8034:18:1;;24533:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24375:212;24299:288:::0;;:::o;18607:182::-;9822:6;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18692:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;18692:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18747:34;;1163:41:1;;;18747:34:0::1;::::0;1136:18:1;18747:34:0::1;;;;;;;18607:182:::0;;:::o;17049:255::-;9822:6;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;17190:3:::1;17182:4;17160:13;3060:12:::0;;;2972:108;17160:13:::1;:18;::::0;17176:2:::1;17160:18;:::i;:::-;17159:27;;;;:::i;:::-;17158:35;;;;:::i;:::-;17148:6;:45;;17126:131;;;::::0;-1:-1:-1;;;17126:131:0;;8618:2:1;17126:131:0::1;::::0;::::1;8600:21:1::0;8657:2;8637:18;;;8630:30;8696:34;8676:18;;;8669:62;-1:-1:-1;;;8747:18:1;;;8740:34;8791:19;;17126:131:0::1;8416:400:1::0;17126:131:0::1;17280:16;:6:::0;17290:5:::1;17280:16;:::i;:::-;17268:9;:28:::0;-1:-1:-1;17049:255:0:o;16267:497::-;9822:6;;16375:4;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;16454:6:::1;16433:13;3060:12:::0;;;2972:108;16433:13:::1;:17;::::0;16449:1:::1;16433:17;:::i;:::-;16432:28;;;;:::i;:::-;16419:9;:41;;16397:144;;;::::0;-1:-1:-1;;;16397:144:0;;9023:2:1;16397:144:0::1;::::0;::::1;9005:21:1::0;9062:2;9042:18;;;9035:30;9101:34;9081:18;;;9074:62;-1:-1:-1;;;9152:18:1;;;9145:51;9213:19;;16397:144:0::1;8821:417:1::0;16397:144:0::1;16609:4;16588:13;3060:12:::0;;;2972:108;16588:13:::1;:17;::::0;16604:1:::1;16588:17;:::i;:::-;16587:26;;;;:::i;:::-;16574:9;:39;;16552:141;;;::::0;-1:-1:-1;;;16552:141:0;;9445:2:1;16552:141:0::1;::::0;::::1;9427:21:1::0;9484:2;9464:18;;;9457:30;9523:34;9503:18;;;9496:62;-1:-1:-1;;;9574:18:1;;;9567:50;9634:19;;16552:141:0::1;9243:416:1::0;16552:141:0::1;-1:-1:-1::0;16704:18:0::1;:30:::0;16752:4:::1;::::0;16267:497::o;10077:201::-;9822:6;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10166:22:0;::::1;10158:73;;;::::0;-1:-1:-1;;;10158:73:0;;9866:2:1;10158:73:0::1;::::0;::::1;9848:21:1::0;9905:2;9885:18;;;9878:30;9944:34;9924:18;;;9917:62;-1:-1:-1;;;9995:18:1;;;9988:36;10041:19;;10158:73:0::1;9664:402:1::0;10158:73:0::1;10242:28;10261:8;10242:18;:28::i;:::-;10077:201:::0;:::o;23723:570::-;9822:6;;-1:-1:-1;;;;;9822:6:0;2131:10;9882:23;9874:68;;;;-1:-1:-1;;;9874:68:0;;;;;;;:::i;:::-;23846:42:::1;23910:58;23846:42:::0;23963:4:::1;23910:25;:58::i;:::-;23979:15;:34:::0;;-1:-1:-1;;;;;;23979:34:0::1;-1:-1:-1::0;;;;;23979:34:0;::::1;::::0;;::::1;::::0;;;24058:26:::1;::::0;;-1:-1:-1;;;24058:26:0;;;;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;23979:34;24058:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24040:70:0::1;;24119:4;24126:16;-1:-1:-1::0;;;;;24126:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24040:110;::::0;-1:-1:-1;;;;;;24040:110:0::1;::::0;;;;;;-1:-1:-1;;;;;10557:15:1;;;24040:110:0::1;::::0;::::1;10539:34:1::0;10609:15;;10589:18;;;10582:43;10474:18;;24040:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24024:13;:126:::0;;-1:-1:-1;;;;;;24024:126:0::1;-1:-1:-1::0;;;;;24024:126:0;;;::::1;::::0;;::::1;::::0;;24161:55:::1;::::0;-1:-1:-1;24161:25:0::1;:55::i;:::-;24264:13;::::0;24227:58:::1;::::0;-1:-1:-1;;;;;24264:13:0::1;::::0;24227:28:::1;:58::i;6583:378::-:0;-1:-1:-1;;;;;6719:19:0;;6711:68;;;;-1:-1:-1;;;6711:68:0;;10838:2:1;6711:68:0;;;10820:21:1;10877:2;10857:18;;;10850:30;10916:34;10896:18;;;10889:62;-1:-1:-1;;;10967:18:1;;;10960:34;11011:19;;6711:68:0;10636:400:1;6711:68:0;-1:-1:-1;;;;;6798:21:0;;6790:68;;;;-1:-1:-1;;;6790:68:0;;11243:2:1;6790:68:0;;;11225:21:1;11282:2;11262:18;;;11255:30;11321:34;11301:18;;;11294:62;-1:-1:-1;;;11372:18:1;;;11365:32;11414:19;;6790:68:0;11041:398:1;6790:68:0;-1:-1:-1;;;;;6869:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6921:32;;1845:25:1;;;6921:32:0;;1818:18:1;6921:32:0;;;;;;;6583:378;;;:::o;19592:3647::-;-1:-1:-1;;;;;19724:18:0;;19716:68;;;;-1:-1:-1;;;19716:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19803:16:0;;19795:64;;;;-1:-1:-1;;;19795:64:0;;;;;;;:::i;:::-;19874:6;19884:1;19874:11;19870:93;;19902:28;19918:4;19924:2;19928:1;19902:15;:28::i;:::-;19592:3647;;;:::o;19870:93::-;19977:14;;;;19973:1633;;;9822:6;;-1:-1:-1;;;;;20030:15:0;;;9822:6;;20030:15;;;;:49;;-1:-1:-1;9822:6:0;;-1:-1:-1;;;;;20066:13:0;;;9822:6;;20066:13;;20030:49;:86;;;;-1:-1:-1;;;;;;20100:16:0;;;;20030:86;:128;;;;-1:-1:-1;;;;;;20137:21:0;;20151:6;20137:21;;20030:128;:156;;;;-1:-1:-1;20180:6:0;;-1:-1:-1;;;20180:6:0;;;;20179:7;20030:156;20008:1587;;;20226:13;;;;;;;20221:223;;-1:-1:-1;;;;;20298:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;20327:23:0;;;;;;:19;:23;;;;;;;;20298:52;20264:160;;;;-1:-1:-1;;;20264:160:0;;12456:2:1;20264:160:0;;;12438:21:1;12495:2;12475:18;;;12468:30;-1:-1:-1;;;12514:18:1;;;12507:52;12576:18;;20264:160:0;12254:346:1;20264:160:0;-1:-1:-1;;;;;20488:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;20545:35:0;;;;;;:31;:35;;;;;;;;20544:36;20488:92;20462:1118;;;20667:20;;20657:6;:30;;20623:169;;;;-1:-1:-1;;;20623:169:0;;12807:2:1;20623:169:0;;;12789:21:1;12846:2;12826:18;;;12819:30;12885:34;12865:18;;;12858:62;-1:-1:-1;;;12936:18:1;;;12929:51;12997:19;;20623:169:0;12605:417:1;20623:169:0;20875:9;;-1:-1:-1;;;;;3187:18:0;;3160:7;3187:18;;;;;;;;;;;20849:22;;:6;:22;:::i;:::-;:35;;20815:140;;;;-1:-1:-1;;;20815:140:0;;13229:2:1;20815:140:0;;;13211:21:1;13268:2;13248:18;;;13241:30;-1:-1:-1;;;13287:18:1;;;13280:49;13346:18;;20815:140:0;13027:343:1;20815:140:0;20462:1118;;;-1:-1:-1;;;;;21024:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;21079:37:0;;;;;;:31;:37;;;;;;;;21078:38;21024:92;20998:582;;;21203:20;;21193:6;:30;;21159:170;;;;-1:-1:-1;;;21159:170:0;;13577:2:1;21159:170:0;;;13559:21:1;13616:2;13596:18;;;13589:30;13655:34;13635:18;;;13628:62;-1:-1:-1;;;13706:18:1;;;13699:52;13768:19;;21159:170:0;13375:418:1;20998:582:0;-1:-1:-1;;;;;21360:35:0;;;;;;:31;:35;;;;;;;;21355:225;;21480:9;;-1:-1:-1;;;;;3187:18:0;;3160:7;3187:18;;;;;;;;;;;21454:22;;:6;:22;:::i;:::-;:35;;21420:140;;;;-1:-1:-1;;;21420:140:0;;13229:2:1;21420:140:0;;;13211:21:1;13268:2;13248:18;;;13241:30;-1:-1:-1;;;13287:18:1;;;13280:49;13346:18;;21420:140:0;13027:343:1;21420:140:0;21665:4;21616:28;3187:18;;;;;;;;;;;21721;;21697:42;;;;;;;21768:35;;-1:-1:-1;21792:11:0;;;;;;;21768:35;:59;;;;-1:-1:-1;21821:6:0;;-1:-1:-1;;;21821:6:0;;;;21820:7;21768:59;:108;;;;-1:-1:-1;;;;;;21845:31:0;;;;;;:25;:31;;;;;;;;21844:32;21768:108;:151;;;;-1:-1:-1;;;;;;21894:25:0;;;;;;:19;:25;;;;;;;;21893:26;21768:151;:192;;;;-1:-1:-1;;;;;;21937:23:0;;;;;;:19;:23;;;;;;;;21936:24;21768:192;21750:316;;;21987:6;:13;;-1:-1:-1;;;;21987:13:0;-1:-1:-1;;;21987:13:0;;;22015:10;:8;:10::i;:::-;22040:6;:14;;-1:-1:-1;;;;22040:14:0;;;21750:316;22092:6;;-1:-1:-1;;;;;22113:25:0;;22076:12;22113:25;;;:19;:25;;;;;;22092:6;-1:-1:-1;;;22092:6:0;;;;;22091:7;;22113:25;;:52;;-1:-1:-1;;;;;;22142:23:0;;;;;;:19;:23;;;;;;;;22113:52;22109:100;;;-1:-1:-1;22192:5:0;22109:100;22219:12;22250:7;22246:942;;;-1:-1:-1;;;;;22278:29:0;;;;;;:25;:29;;;;;;;;22274:769;;;22332:13;;:17;22328:343;;22381:34;22411:3;22381:25;22392:13;;22381:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;22374:41;;22488:13;;22468:16;;22461:4;:23;;;;:::i;:::-;22460:41;;;;:::i;:::-;22438:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;22564:13:0;;22549:11;;22542:18;;:4;:18;:::i;:::-;22541:36;;;;:::i;:::-;22524:13;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;22638:13:0;;22624:10;;22617:17;;:4;:17;:::i;:::-;22616:35;;;;:::i;:::-;22600:12;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;22328:343:0;22274:769;;;-1:-1:-1;;;;;22709:31:0;;;;;;:25;:31;;;;;;;;:50;;;;;22758:1;22744:11;;:15;22709:50;22705:338;;;22787:32;22815:3;22787:23;22798:11;;22787:6;:10;;:23;;;;:::i;:32::-;22780:39;;22880:11;;22868:8;;22861:4;:15;;;;:::i;:::-;22860:31;;;;:::i;:::-;22838:18;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;22949:11:0;;22935:10;;22928:17;;:4;:17;:::i;:::-;22927:33;;;;:::i;:::-;22910:13;;:50;;;;;;;:::i;:::-;;;;-1:-1:-1;;23016:11:0;;23003:9;;22996:16;;:4;:16;:::i;:::-;22995:32;;;;:::i;:::-;22979:12;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;;22705:338:0;23061:8;;23057:91;;23090:42;23106:4;23120;23127;23090:15;:42::i;:::-;23162:14;23172:4;23162:14;;:::i;:::-;;;22246:942;23198:33;23214:4;23220:2;23224:6;23198:15;:33::i;:::-;19705:3534;;;;19592:3647;;;:::o;10284:191::-;10377:6;;;-1:-1:-1;;;;;10394:17:0;;;-1:-1:-1;;;;;;10394:17:0;;;;;;;10427:40;;10377:6;;;10394:17;10377:6;;10427:40;;10358:16;;10427:40;10347:128;10284:191;:::o;19103:186::-;-1:-1:-1;;;;;19186:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;19186:39:0;;;;;;;;;;19241:40;;19186:39;;:31;19241:40;;;19103:186;;:::o;4864:725::-;-1:-1:-1;;;;;5004:20:0;;4996:70;;;;-1:-1:-1;;;4996:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5085:23:0;;5077:71;;;;-1:-1:-1;;;5077:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5241:17:0;;5217:21;5241:17;;;;;;;;;;;5277:23;;;;5269:74;;;;-1:-1:-1;;;5269:74:0;;14133:2:1;5269:74:0;;;14115:21:1;14172:2;14152:18;;;14145:30;14211:34;14191:18;;;14184:62;-1:-1:-1;;;14262:18:1;;;14255:36;14308:19;;5269:74:0;13931:402:1;5269:74:0;-1:-1:-1;;;;;5379:17:0;;;:9;:17;;;;;;;;;;;5399:22;;;5379:42;;5443:20;;;;;;;;:30;;5415:6;;5379:9;5443:30;;5415:6;;5443:30;:::i;:::-;;;;;;;;5506:9;-1:-1:-1;;;;;5489:35:0;5498:6;-1:-1:-1;;;;;5489:35:0;;5517:6;5489:35;;;;1845:25:1;;1833:2;1818:18;;1699:177;5489:35:0;;;;;;;;5535:46;19592:3647;25163:1729;25246:4;25202:23;3187:18;;;;;;;;;;;25202:50;;25263:20;25307:15;25286:18;;:36;;;;:::i;:::-;25263:59;;25333:25;25423:13;;25395:12;;25361:18;;:46;;;;:::i;:::-;:75;;;;:::i;:::-;25333:103;-1:-1:-1;25447:12:0;25474:20;;;:46;;-1:-1:-1;25498:22:0;;25474:46;25470:85;;;25537:7;;;;25163:1729::o;25470:85::-;25587:18;;:23;;25608:2;25587:23;:::i;:::-;25569:15;:41;25565:115;;;25645:18;;:23;;25666:2;25645:23;:::i;:::-;25627:41;;25565:115;25690:23;25803:1;25770:17;25735:18;;25717:15;:36;;;;:::i;:::-;25716:71;;;;:::i;:::-;:88;;;;:::i;:::-;25690:114;-1:-1:-1;25815:26:0;25844:36;:15;25690:114;25844:19;:36::i;:::-;25815:65;-1:-1:-1;25919:21:0;25951:36;25815:65;25951:16;:36::i;:::-;25998:18;26019:44;:21;26045:17;26019:25;:44::i;:::-;25998:65;;26074:17;26094:78;26169:1;26148:18;;:22;;;;:::i;:::-;26127:44;;:17;:44;:::i;:::-;26109:12;;26094:28;;:10;;:14;:28::i;:78::-;26074:98;;26183:18;26204:79;26280:1;26259:18;;:22;;;;:::i;:::-;26238:44;;:17;:44;:::i;:::-;26219:13;;26204:29;;:10;;:14;:29::i;:79::-;26183:100;-1:-1:-1;26294:23:0;26183:100;26320:22;26333:9;26320:10;:22;:::i;:::-;:35;;;;:::i;:::-;26387:1;26366:18;:22;;;26399:12;:16;;;26426:13;:17;;;26476:9;;26468:46;;26294:61;;-1:-1:-1;;;;;;26476:9:0;;26499:10;;26468:46;26387:1;26468:46;26499:10;26476:9;26468:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26454:60:0;;-1:-1:-1;;26529:19:0;;;;;:42;;;26570:1;26552:15;:19;26529:42;26525:278;;;26588:46;26601:15;26618;26588:12;:46::i;:::-;26758:18;;26654:137;;;14540:25:1;;;14596:2;14581:18;;14574:34;;;14624:18;;;14617:34;;;;26654:137:0;;;;;;14528:2:1;26654:137:0;;;26525:278;26835:9;;26827:57;;-1:-1:-1;;;;;26835:9:0;;;;26858:21;;26827:57;;;;26858:21;26835:9;26827:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;25163:1729:0:o;11818:98::-;11876:7;11903:5;11907:1;11903;:5;:::i;:::-;11896:12;11818:98;-1:-1:-1;;;11818:98:0:o;11922:::-;11980:7;12007:5;12011:1;12007;:5;:::i;11714:98::-;11772:7;11799:5;11803:1;11799;:5;:::i;23245:472::-;23335:16;;;23349:1;23335:16;;;;;;;;23311:21;;23335:16;;;;;;;;;;-1:-1:-1;23335:16:0;23311:40;;23380:4;23362;23367:1;23362:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23362:23:0;;;:7;;;;;;;;;;:23;;;;23406:15;;:22;;;-1:-1:-1;;;23406:22:0;;;;:15;;;;;:20;;:22;;;;;23362:7;;23406:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23396:4;23401:1;23396:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23396:32:0;;;:7;;;;;;;;;:32;23471:15;;23439:62;;23456:4;;23471:15;23489:11;23439:8;:62::i;:::-;23512:15;;:197;;-1:-1:-1;;;23512:197:0;;-1:-1:-1;;;;;23512:15:0;;;;:66;;:197;;23593:11;;23512:15;;23636:4;;23663;;23683:15;;23512:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23300:417;23245:472;:::o;24795:362::-;24908:15;;24876:62;;24893:4;;-1:-1:-1;;;;;24908:15:0;24926:11;24876:8;:62::i;:::-;24949:15;;-1:-1:-1;;;;;24949:15:0;:31;24988:9;25021:4;25041:11;24949:15;;25101:7;9822:6;;-1:-1:-1;;;;;9822:6:0;;9749:87;25101:7;24949:200;;;;;;-1:-1:-1;;;;;;24949:200:0;;;-1:-1:-1;;;;;16270:15:1;;;24949:200:0;;;16252:34:1;16302:18;;;16295:34;;;;16345:18;;;16338:34;;;;16388:18;;;16381:34;16452:15;;;16431:19;;;16424:44;25123:15:0;16484:19:1;;;16477:35;16186:19;;24949:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24795:362;;:::o;14:548:1:-;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;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1881:180::-;1940:6;1993:2;1981:9;1972:7;1968:23;1964:32;1961:52;;;2009:1;2006;1999:12;1961:52;-1:-1:-1;2032:23:1;;1881:180;-1:-1:-1;1881:180:1:o;2066:456::-;2143:6;2151;2159;2212:2;2200:9;2191:7;2187:23;2183:32;2180:52;;;2228:1;2225;2218:12;2180:52;2267:9;2254:23;2286:31;2311:5;2286:31;:::i;:::-;2336:5;-1:-1:-1;2393:2:1;2378:18;;2365:32;2406:33;2365:32;2406:33;:::i;:::-;2066:456;;2458:7;;-1:-1:-1;;;2512:2:1;2497:18;;;;2484:32;;2066:456::o;2924:118::-;3010:5;3003:13;2996:21;2989:5;2986:32;2976:60;;3032:1;3029;3022:12;3047:382;3112:6;3120;3173:2;3161:9;3152:7;3148:23;3144:32;3141:52;;;3189:1;3186;3179:12;3141:52;3228:9;3215:23;3247:31;3272:5;3247:31;:::i;:::-;3297:5;-1:-1:-1;3354:2:1;3339:18;;3326:32;3367:30;3326:32;3367:30;:::i;:::-;3416:7;3406:17;;;3047:382;;;;;:::o;3434:241::-;3490:6;3543:2;3531:9;3522:7;3518:23;3514:32;3511:52;;;3559:1;3556;3549:12;3511:52;3598:9;3585:23;3617:28;3639:5;3617:28;:::i;3680:388::-;3748:6;3756;3809:2;3797:9;3788:7;3784:23;3780:32;3777:52;;;3825:1;3822;3815:12;3777:52;3864:9;3851:23;3883:31;3908:5;3883:31;:::i;:::-;3933:5;-1:-1:-1;3990:2:1;3975:18;;3962:32;4003:33;3962:32;4003:33;:::i;4073:380::-;4152:1;4148:12;;;;4195;;;4216:61;;4270:4;4262:6;4258:17;4248:27;;4216:61;4323:2;4315:6;4312:14;4292:18;4289:38;4286:161;;4369:10;4364:3;4360:20;4357:1;4350:31;4404:4;4401:1;4394:15;4432:4;4429:1;4422:15;4286:161;;4073:380;;;:::o;4458:356::-;4660:2;4642:21;;;4679:18;;;4672:30;4738:34;4733:2;4718:18;;4711:62;4805:2;4790:18;;4458:356::o;4819:127::-;4880:10;4875:3;4871:20;4868:1;4861:31;4911:4;4908:1;4901:15;4935:4;4932:1;4925:15;4951:168;5024:9;;;5055;;5072:15;;;5066:22;;5052:37;5042:71;;5093:18;;:::i;5124:217::-;5164:1;5190;5180:132;;5234:10;5229:3;5225:20;5222:1;5215:31;5269:4;5266:1;5259:15;5297:4;5294:1;5287:15;5180:132;-1:-1:-1;5326:9:1;;5124:217::o;6171:125::-;6236:9;;;6257:10;;;6254:36;;;6270:18;;:::i;7698:184::-;7768:6;7821:2;7809:9;7800:7;7796:23;7792:32;7789:52;;;7837:1;7834;7827:12;7789:52;-1:-1:-1;7860:16:1;;7698:184;-1:-1:-1;7698:184:1:o;8166:245::-;8233:6;8286:2;8274:9;8265:7;8261:23;8257:32;8254:52;;;8302:1;8299;8292:12;8254:52;8334:9;8328:16;8353:28;8375:5;8353:28;:::i;10071:251::-;10141:6;10194:2;10182:9;10173:7;10169:23;10165:32;10162:52;;;10210:1;10207;10200:12;10162:52;10242:9;10236:16;10261:31;10286:5;10261:31;:::i;11444:401::-;11646:2;11628:21;;;11685:2;11665:18;;;11658:30;11724:34;11719:2;11704:18;;11697:62;-1:-1:-1;;;11790:2:1;11775:18;;11768:35;11835:3;11820:19;;11444:401::o;11850:399::-;12052:2;12034:21;;;12091:2;12071:18;;;12064:30;12130:34;12125:2;12110:18;;12103:62;-1:-1:-1;;;12196:2:1;12181:18;;12174:33;12239:3;12224:19;;11850:399::o;13798:128::-;13865:9;;;13886:11;;;13883:37;;;13900:18;;:::i;14794:127::-;14855:10;14850:3;14846:20;14843:1;14836:31;14886:4;14883:1;14876:15;14910:4;14907:1;14900:15;14926:980;15188:4;15236:3;15225:9;15221:19;15267:6;15256:9;15249:25;15293:2;15331:6;15326:2;15315:9;15311:18;15304:34;15374:3;15369:2;15358:9;15354:18;15347:31;15398:6;15433;15427:13;15464:6;15456;15449:22;15502:3;15491:9;15487:19;15480:26;;15541:2;15533:6;15529:15;15515:29;;15562:1;15572:195;15586:6;15583:1;15580:13;15572:195;;;15651:13;;-1:-1:-1;;;;;15647:39:1;15635:52;;15742:15;;;;15707:12;;;;15683:1;15601:9;15572:195;;;-1:-1:-1;;;;;;;15823:32:1;;;;15818:2;15803:18;;15796:60;-1:-1:-1;;;15887:3:1;15872:19;15865:35;15784:3;14926:980;-1:-1:-1;;;14926:980:1:o;16523:306::-;16611:6;16619;16627;16680:2;16668:9;16659:7;16655:23;16651:32;16648:52;;;16696:1;16693;16686:12;16648:52;16725:9;16719:16;16709:26;;16775:2;16764:9;16760:18;16754:25;16744:35;;16819:2;16808:9;16804:18;16798:25;16788:35;;16523:306;;;;;:::o

Swarm Source

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