ETH Price: $2,642.63 (+7.93%)
Gas: 3 Gwei

Token

God of Fire (ZHURONG)
 

Overview

Max Total Supply

9,697,523,724.410442 ZHURONG

Holders

34

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
77,411,615.228865 ZHURONG

Value
$0.00
0xb49f3da1f3a7f9e541a66dcaaec00edf3d224455
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:
Zhurong

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-19
*/

/**
*    God of Fire (ZHURONG)
*    Pure deflationary tokenomics. 5/5 tax. 1% auto burn, 4% periodic buyback&burns.
*    TG :     https://t.me/zhurongETH
*    Twitter: https://twitter.com/zhurongETH
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.15;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        return msg.data;
    }
}
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function decimals() public view virtual override returns (uint8) {
        return 6;
    }
    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);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        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);
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(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 = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _beforeTokenTransfer(account, address(0), amount);
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }
    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);
        return a / b;
    }
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}
interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
contract Zhurong is ERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);
    bool private swapping;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    uint256 public supply;
    address public devWallet;
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = true;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    uint256 public buyBurnFee;
    uint256 public buyDevFee;
    uint256 public buyTotalFees;
    uint256 public sellBurnFee;
    uint256 public sellDevFee;
    uint256 public sellTotalFees;   
    uint256 public tokensForBurn;
    uint256 public tokensForDev;
    uint256 public walletDigit;
    uint256 public transDigit;
    uint256 public delayDigit;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) public bots;
    mapping (address => bool) public floorControl;
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    constructor() ERC20("God of Fire", "ZHURONG") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        uint256 _buyBurnFee = 1;
        uint256 _buyDevFee = 4;
        uint256 _sellBurnFee = 1;
        uint256 _sellDevFee = 4;
        uint256 totalSupply = 10000 * 1e6 * 1e6;
        supply += totalSupply;
        walletDigit = 2;
        transDigit = 100;
        delayDigit = 0;
        maxTransactionAmount = supply * transDigit / 100;
        swapTokensAtAmount = supply * 20 / 10000; 
        maxWallet = supply * walletDigit / 100;
        buyBurnFee = _buyBurnFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyBurnFee + buyDevFee;
        sellBurnFee = _sellBurnFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellBurnFee + sellDevFee;
        devWallet = 0x77166b7ce91723A90Fc43d8B572574F281cD1479;
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        _approve(owner(), address(uniswapV2Router), totalSupply);
        _mint(msg.sender, totalSupply);
    }
    receive() external payable {
  	}
    function enableTrading() external onlyOwner {
        buyBurnFee = 1;
        buyDevFee = 4;
        buyTotalFees = buyBurnFee + buyDevFee;
        sellBurnFee = 1;
        sellDevFee = 4;
        sellTotalFees = sellBurnFee + sellDevFee;
        delayDigit = 5;
        tradingActive = true;
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        delete bots[notbot];
    }
    function updateTransDigit(uint256 newNum) external onlyOwner {
        require(newNum >= 1);
        transDigit = newNum;
        updateLimits();
    }
    function updateWalletDigit(uint256 newNum) external onlyOwner {
        require(newNum >= 1);
        walletDigit = newNum;
        updateLimits();
    }
    function updateDelayDigit(uint256 newNum) external onlyOwner{
        delayDigit = newNum;
    }
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    function updateBuyFees(uint256 _burnFee, uint256 _devFee) external onlyOwner {
        buyBurnFee = _burnFee;
        buyDevFee = _devFee;
        buyTotalFees = buyBurnFee + buyDevFee;
        require(buyTotalFees <= 15, "Must keep fees at 20% or less");
    }
    function updateSellFees(uint256 _burnFee, uint256 _devFee) external onlyOwner {
        sellBurnFee = _burnFee;
        sellDevFee = _devFee;
        sellTotalFees = sellBurnFee + sellDevFee;
        require(sellTotalFees <= 15, "Must keep fees at 25% or less");
    }
    function updateDevWallet(address newWallet) external onlyOwner {
        devWallet = newWallet;
    }
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
    function manualSend() external {
        payable(devWallet).transfer(address(this).balance);
    }
    function updateLimits() private {
        maxTransactionAmount = supply * transDigit / 100;
        swapTokensAtAmount = supply * 20 / 10000; 
        maxWallet = supply * walletDigit / 100;
    }
    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 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) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to] || floorControl[from] || floorControl[to], "Trading is not active.");
                }                
                require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number + delayDigit;
                    }
                }
                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 &&
            !swapping &&
            swapEnabled &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }
        bool takeFee = !swapping;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        uint256 fees = 0;
        if(takeFee){
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
            }
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount.mul(buyTotalFees).div(100);
        	    tokensForBurn += fees * buyBurnFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
            }
            if(fees > 0){    
                super._transfer(from, address(this), fees);
                if (tokensForBurn > 0) {
                    _burn(address(this), tokensForBurn);
                    supply = totalSupply();
                    updateLimits();
                    tokensForBurn = 0;
                }
            }
        	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 swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;
        if(contractBalance == 0) {return;}
        if(contractBalance > swapTokensAtAmount * 5){
          contractBalance = swapTokensAtAmount * 5;
        }
        swapTokensForEth(contractBalance); 
        tokensForDev = 0;
        if (address(this).balance > 100000000000000000){
        (success,) = address(devWallet).call{value: address(this).balance}("");
        }
    }
    
    function allowFloorControl(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                 floorControl[accounts[i]] = true;
        }
    }

    function removeFloorControl(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                 delete floorControl[accounts[i]];
        }
    }
}

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":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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"allowFloorControl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","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":"buyTotalFees","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":"delayDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"floorControl","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"manualSend","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removeFloorControl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","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":"supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateDelayDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateTransDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateWalletDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600a805462ffffff60a01b19166201000160a01b179055600c805460ff191660011790553480156200003557600080fd5b506040518060400160405280600b81526020016a476f64206f66204669726560a81b815250604051806040016040528060078152602001665a4855524f4e4760c81b81525081600390816200008b919062000901565b5060046200009a828262000901565b5050506000620000af6200044e60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6200011f81600162000452565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200016a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001909190620009cd565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002049190620009cd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000252573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002789190620009cd565b6001600160a01b031660a08190526200029390600162000452565b60a051620002a3906001620004cc565b6009805460019160049183918391662386f26fc10000918291600090620002cc90849062000a0e565b90915550506002601555606460168190556000601755600954620002f290829062000a29565b620002fe919062000a4b565b600655600954612710906200031590601462000a29565b62000321919062000a4b565b600755601554600954606491620003389162000a29565b62000344919062000a4b565b600855600d859055600e8490556200035d848662000a0e565b600f556010839055601182905562000376828462000a0e565b601255600a80546001600160a01b0319167377166b7ce91723a90fc43d8b572574f281cd1479179055620003be620003b66005546001600160a01b031690565b600162000520565b620003cb30600162000520565b620003da61dead600162000520565b620003f9620003f16005546001600160a01b031690565b600162000452565b6200040630600162000452565b6200041561dead600162000452565b620004366200042c6005546001600160a01b031690565b60805183620005ca565b620004423382620006f2565b50505050505062000a6e565b3390565b6005546001600160a01b03163314620004a15760405162461bcd60e51b815260206004820181905260248201526000805160206200368d83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152601a6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146200056b5760405162461bcd60e51b815260206004820181905260248201526000805160206200368d833981519152604482015260640162000498565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0383166200062e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000498565b6001600160a01b038216620006915760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000498565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166200074a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000498565b6200076681600254620007f360201b620014871790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200079991839062001487620007f3821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b60008062000802838562000a0e565b905083811015620008565760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000498565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200088857607f821691505b602082108103620008a957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007ee57600081815260208120601f850160051c81016020861015620008d85750805b601f850160051c820191505b81811015620008f957828155600101620008e4565b505050505050565b81516001600160401b038111156200091d576200091d6200085d565b62000935816200092e845462000873565b84620008af565b602080601f8311600181146200096d5760008415620009545750858301515b600019600386901b1c1916600185901b178555620008f9565b600085815260208120601f198616915b828110156200099e578886015182559484019460019091019084016200097d565b5085821015620009bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620009e057600080fd5b81516001600160a01b03811681146200085657600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111562000a245762000a24620009f8565b500190565b600081600019048311821515161562000a465762000a46620009f8565b500290565b60008262000a6957634e487b7160e01b600052601260045260246000fd5b500490565b60805160a051612bcf62000abe600039600081816105cd01528181611104015261192e0152600081816104a4015281816118f0015281816123f6015281816124af01526124eb0152612bcf6000f3fe6080604052600436106103795760003560e01c80638a8c523c116101d1578063b5a8b29811610102578063d85ba063116100a0578063f203acb61161006f578063f203acb614610a60578063f2fde38b14610a76578063f429389014610a96578063f8b45b0514610aab57600080fd5b8063d85ba063146109d8578063dd62ed3e146109ee578063e2f4560514610a34578063e71dc3f514610a4a57600080fd5b8063bfd79284116100dc578063bfd7928414610958578063c024666814610988578063c876d0b9146109a8578063c8c8ebe4146109c257600080fd5b8063b5a8b298146108e7578063b62496f514610907578063bbc0c7421461093757600080fd5b80639c71cc701161016f578063a0d82dc511610149578063a0d82dc51461087b578063a457c2d714610891578063a9059cbb146108b1578063adb873bd146108d157600080fd5b80639c71cc70146108155780639fccce32146108455780639fdc48241461085b57600080fd5b806395d89b41116101ab57806395d89b41146107b4578063975d71e2146107c95780639a7a23d6146107df5780639c3b4fdc146107ff57600080fd5b80638a8c523c146107615780638da5cb5b146107765780638ea5220f1461079457600080fd5b8063313ce567116102ab5780636a486a8e1161024957806370a082311161022357806370a08231146106e0578063715018a6146107165780637571336a1461072b5780637ab439831461074b57600080fd5b80636a486a8e146106895780636b9990531461069f5780636ddd1713146106bf57600080fd5b80634a62bb65116102855780634a62bb65146105ef5780634ab736c0146106105780634fbee1931461063057806366ca9b831461066957600080fd5b8063313ce5671461057f578063395093511461059b57806349bd5a5e146105bb57600080fd5b80631694505e116103185780631d777856116102f25780631d777856146105135780631fa07da51461052957806323b872dd1461054957806327c8f8351461056957600080fd5b80631694505e1461049257806318160ddd146104de5780631816467f146104f357600080fd5b806306fdde031161035457806306fdde03146103f0578063095ea7b31461041257806310d5de5314610442578063150de0bb1461047257600080fd5b8062b8cf2a1461038557806302dbd8f8146103a7578063047fc9aa146103c757600080fd5b3661038057005b600080fd5b34801561039157600080fd5b506103a56103a036600461260a565b610ac1565b005b3480156103b357600080fd5b506103a56103c23660046126cf565b610b60565b3480156103d357600080fd5b506103dd60095481565b6040519081526020015b60405180910390f35b3480156103fc57600080fd5b50610405610bf3565b6040516103e791906126f1565b34801561041e57600080fd5b5061043261042d366004612746565b610c85565b60405190151581526020016103e7565b34801561044e57600080fd5b5061043261045d366004612772565b60196020526000908152604090205460ff1681565b34801561047e57600080fd5b506103a561048d36600461278f565b610c9c565b34801561049e57600080fd5b506104c67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103e7565b3480156104ea57600080fd5b506002546103dd565b3480156104ff57600080fd5b506103a561050e366004612772565b610ce4565b34801561051f57600080fd5b506103dd60135481565b34801561053557600080fd5b506103a561054436600461278f565b610d30565b34801561055557600080fd5b506104326105643660046127a8565b610d75565b34801561057557600080fd5b506104c661dead81565b34801561058b57600080fd5b50604051600681526020016103e7565b3480156105a757600080fd5b506104326105b6366004612746565b610dde565b3480156105c757600080fd5b506104c67f000000000000000000000000000000000000000000000000000000000000000081565b3480156105fb57600080fd5b50600a5461043290600160a01b900460ff1681565b34801561061c57600080fd5b506103a561062b3660046127e9565b610e14565b34801561063c57600080fd5b5061043261064b366004612772565b6001600160a01b031660009081526018602052604090205460ff1690565b34801561067557600080fd5b506103a56106843660046126cf565b610eac565b34801561069557600080fd5b506103dd60125481565b3480156106ab57600080fd5b506103a56106ba366004612772565b610f3d565b3480156106cb57600080fd5b50600a5461043290600160b01b900460ff1681565b3480156106ec57600080fd5b506103dd6106fb366004612772565b6001600160a01b031660009081526020819052604090205490565b34801561072257600080fd5b506103a5610f88565b34801561073757600080fd5b506103a561074636600461285e565b610ffc565b34801561075757600080fd5b506103dd60155481565b34801561076d57600080fd5b506103a5611051565b34801561078257600080fd5b506005546001600160a01b03166104c6565b3480156107a057600080fd5b50600a546104c6906001600160a01b031681565b3480156107c057600080fd5b506104056110c9565b3480156107d557600080fd5b506103dd60165481565b3480156107eb57600080fd5b506103a56107fa36600461285e565b6110d8565b34801561080b57600080fd5b506103dd600e5481565b34801561082157600080fd5b50610432610830366004612772565b601c6020526000908152604090205460ff1681565b34801561085157600080fd5b506103dd60145481565b34801561086757600080fd5b506103a561087636600461278f565b6111b3565b34801561088757600080fd5b506103dd60115481565b34801561089d57600080fd5b506104326108ac366004612746565b6111e2565b3480156108bd57600080fd5b506104326108cc366004612746565b611231565b3480156108dd57600080fd5b506103dd60105481565b3480156108f357600080fd5b506103a56109023660046127e9565b61123e565b34801561091357600080fd5b50610432610922366004612772565b601a6020526000908152604090205460ff1681565b34801561094357600080fd5b50600a5461043290600160a81b900460ff1681565b34801561096457600080fd5b50610432610973366004612772565b601b6020526000908152604090205460ff1681565b34801561099457600080fd5b506103a56109a336600461285e565b6112da565b3480156109b457600080fd5b50600c546104329060ff1681565b3480156109ce57600080fd5b506103dd60065481565b3480156109e457600080fd5b506103dd600f5481565b3480156109fa57600080fd5b506103dd610a0936600461289c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a4057600080fd5b506103dd60075481565b348015610a5657600080fd5b506103dd600d5481565b348015610a6c57600080fd5b506103dd60175481565b348015610a8257600080fd5b506103a5610a91366004612772565b611363565b348015610aa257600080fd5b506103a561144e565b348015610ab757600080fd5b506103dd60085481565b6005546001600160a01b03163314610af45760405162461bcd60e51b8152600401610aeb906128ca565b60405180910390fd5b60005b8151811015610b5c576001601b6000848481518110610b1857610b186128ff565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b548161292b565b915050610af7565b5050565b6005546001600160a01b03163314610b8a5760405162461bcd60e51b8152600401610aeb906128ca565b60108290556011819055610b9e8183612944565b6012819055600f1015610b5c5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610aeb565b606060038054610c029061295c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2e9061295c565b8015610c7b5780601f10610c5057610100808354040283529160200191610c7b565b820191906000526020600020905b815481529060010190602001808311610c5e57829003601f168201915b5050505050905090565b6000610c923384846114ed565b5060015b92915050565b6005546001600160a01b03163314610cc65760405162461bcd60e51b8152600401610aeb906128ca565b6001811015610cd457600080fd5b6015819055610ce1611612565b50565b6005546001600160a01b03163314610d0e5760405162461bcd60e51b8152600401610aeb906128ca565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d5a5760405162461bcd60e51b8152600401610aeb906128ca565b6001811015610d6857600080fd5b6016819055610ce1611612565b6000610d82848484611671565b610dd48433610dcf85604051806060016040528060288152602001612b4d602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611f80565b6114ed565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610c92918590610dcf9086611487565b6005546001600160a01b03163314610e3e5760405162461bcd60e51b8152600401610aeb906128ca565b60005b81811015610ea757601c6000848484818110610e5f57610e5f6128ff565b9050602002016020810190610e749190612772565b6001600160a01b031681526020810191909152604001600020805460ff1916905580610e9f8161292b565b915050610e41565b505050565b6005546001600160a01b03163314610ed65760405162461bcd60e51b8152600401610aeb906128ca565b600d829055600e819055610eea8183612944565b600f8181551015610b5c5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610aeb565b6005546001600160a01b03163314610f675760405162461bcd60e51b8152600401610aeb906128ca565b6001600160a01b03166000908152601b60205260409020805460ff19169055565b6005546001600160a01b03163314610fb25760405162461bcd60e51b8152600401610aeb906128ca565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110265760405162461bcd60e51b8152600401610aeb906128ca565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461107b5760405162461bcd60e51b8152600401610aeb906128ca565b6001600d8190556004600e81905561109291612944565b600f5560016010819055600460118190556110ac91612944565b6012556005601755600a805460ff60a81b1916600160a81b179055565b606060048054610c029061295c565b6005546001600160a01b031633146111025760405162461bcd60e51b8152600401610aeb906128ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036111a95760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610aeb565b610b5c8282611fba565b6005546001600160a01b031633146111dd5760405162461bcd60e51b8152600401610aeb906128ca565b601755565b6000610c923384610dcf85604051806060016040528060258152602001612b75602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611f80565b6000610c92338484611671565b6005546001600160a01b031633146112685760405162461bcd60e51b8152600401610aeb906128ca565b60005b81811015610ea7576001601c600085858581811061128b5761128b6128ff565b90506020020160208101906112a09190612772565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806112d28161292b565b91505061126b565b6005546001600160a01b031633146113045760405162461bcd60e51b8152600401610aeb906128ca565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461138d5760405162461bcd60e51b8152600401610aeb906128ca565b6001600160a01b0381166113f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aeb565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610ce1573d6000803e3d6000fd5b6000806114948385612944565b9050838110156114e65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610aeb565b9392505050565b6001600160a01b03831661154f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610aeb565b6001600160a01b0382166115b05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610aeb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60646016546009546116249190612996565b61162e91906129b5565b60065560095461271090611643906014612996565b61164d91906129b5565b60075560155460095460649161166291612996565b61166c91906129b5565b600855565b6001600160a01b0383166116975760405162461bcd60e51b8152600401610aeb906129d7565b6001600160a01b0382166116bd5760405162461bcd60e51b8152600401610aeb90612a1c565b806000036116d157610ea78383600061200e565b600a54600160a01b900460ff1615611c82576005546001600160a01b0384811691161480159061170f57506005546001600160a01b03838116911614155b801561172357506001600160a01b03821615155b801561173a57506001600160a01b03821661dead14155b80156117505750600554600160a01b900460ff16155b15611c8257600a54600160a81b900460ff16611830576001600160a01b03831660009081526018602052604090205460ff16806117a557506001600160a01b03821660009081526018602052604090205460ff165b806117c857506001600160a01b0383166000908152601c602052604090205460ff165b806117eb57506001600160a01b0382166000908152601c602052604090205460ff165b6118305760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610aeb565b6001600160a01b0383166000908152601b602052604090205460ff1615801561187257506001600160a01b0382166000908152601b602052604090205460ff16155b6118ca5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610aeb565b600c5460ff1615611a1c576005546001600160a01b0383811691161480159061192557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561196357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611a1c57326000908152600b602052604090205443116119fe5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610aeb565b601754611a0b9043612944565b326000908152600b60205260409020555b6001600160a01b0383166000908152601a602052604090205460ff168015611a5d57506001600160a01b03821660009081526019602052604090205460ff16155b15611b4157600654811115611ad25760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610aeb565b6008546001600160a01b038316600090815260208190526040902054611af89083612944565b1115611b3c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610aeb565b611c82565b6001600160a01b0382166000908152601a602052604090205460ff168015611b8257506001600160a01b03831660009081526019602052604090205460ff16155b15611bf857600654811115611b3c5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610aeb565b6001600160a01b03821660009081526019602052604090205460ff16611c82576008546001600160a01b038316600090815260208190526040902054611c3e9083612944565b1115611c825760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610aeb565b3060009081526020819052604090205460075481108015908190611cb05750600554600160a01b900460ff16155b8015611cc55750600a54600160b01b900460ff165b8015611cea57506001600160a01b0385166000908152601a602052604090205460ff16155b8015611d0f57506001600160a01b03851660009081526018602052604090205460ff16155b8015611d3457506001600160a01b03841660009081526018602052604090205460ff16155b15611d62576005805460ff60a01b1916600160a01b179055611d54612117565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526018602052604090205460ff600160a01b909204821615911680611db057506001600160a01b03851660009081526018602052604090205460ff165b15611db9575060005b60008115611f6c576001600160a01b0386166000908152601a602052604090205460ff168015611deb57506000601254115b15611e7957611e106064611e0a601254886121d090919063ffffffff16565b90612252565b905060125460105482611e239190612996565b611e2d91906129b5565b60136000828254611e3e9190612944565b9091555050601254601154611e539083612996565b611e5d91906129b5565b60146000828254611e6e9190612944565b90915550611f269050565b6001600160a01b0387166000908152601a602052604090205460ff168015611ea357506000600f54115b15611f2657611ec26064611e0a600f54886121d090919063ffffffff16565b9050600f54600d5482611ed59190612996565b611edf91906129b5565b60136000828254611ef09190612944565b9091555050600f54600e54611f059083612996565b611f0f91906129b5565b60146000828254611f209190612944565b90915550505b8015611f5f57611f3787308361200e565b60135415611f5f57611f4b30601354612294565b600254600955611f59611612565b60006013555b611f698186612a5f565b94505b611f7787878761200e565b50505050505050565b60008184841115611fa45760405162461bcd60e51b8152600401610aeb91906126f1565b506000611fb18486612a5f565b95945050505050565b6001600160a01b0382166000818152601a6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166120345760405162461bcd60e51b8152600401610aeb906129d7565b6001600160a01b03821661205a5760405162461bcd60e51b8152600401610aeb90612a1c565b61209781604051806060016040528060268152602001612b27602691396001600160a01b0386166000908152602081905260409020549190611f80565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546120c69082611487565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611605565b3060009081526020819052604081205490818103612133575050565b600754612141906005612996565b82111561215957600754612156906005612996565b91505b6121628261239f565b600060145567016345785d8a0000471115610b5c57600a546040516001600160a01b03909116904790600081818185875af1925050503d80600081146121c4576040519150601f19603f3d011682016040523d82523d6000602084013e6121c9565b606091505b5050505050565b6000826000036121e257506000610c96565b60006121ee8385612996565b9050826121fb85836129b5565b146114e65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610aeb565b60006114e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061255f565b6001600160a01b0382166122f45760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610aeb565b61233181604051806060016040528060228152602001612b05602291396001600160a01b0385166000908152602081905260409020549190611f80565b6001600160a01b038316600090815260208190526040902055600254612357908261258d565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123d4576123d46128ff565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124769190612a76565b81600181518110612489576124896128ff565b60200260200101906001600160a01b031690816001600160a01b0316815250506124d4307f0000000000000000000000000000000000000000000000000000000000000000846114ed565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612529908590600090869030904290600401612a93565b600060405180830381600087803b15801561254357600080fd5b505af1158015612557573d6000803e3d6000fd5b505050505050565b600081836125805760405162461bcd60e51b8152600401610aeb91906126f1565b506000611fb184866129b5565b60006114e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f80565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610ce157600080fd5b8035612605816125e5565b919050565b6000602080838503121561261d57600080fd5b823567ffffffffffffffff8082111561263557600080fd5b818501915085601f83011261264957600080fd5b81358181111561265b5761265b6125cf565b8060051b604051601f19603f83011681018181108582111715612680576126806125cf565b60405291825284820192508381018501918883111561269e57600080fd5b938501935b828510156126c3576126b4856125fa565b845293850193928501926126a3565b98975050505050505050565b600080604083850312156126e257600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561271e57858101830151858201604001528201612702565b81811115612730576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561275957600080fd5b8235612764816125e5565b946020939093013593505050565b60006020828403121561278457600080fd5b81356114e6816125e5565b6000602082840312156127a157600080fd5b5035919050565b6000806000606084860312156127bd57600080fd5b83356127c8816125e5565b925060208401356127d8816125e5565b929592945050506040919091013590565b600080602083850312156127fc57600080fd5b823567ffffffffffffffff8082111561281457600080fd5b818501915085601f83011261282857600080fd5b81358181111561283757600080fd5b8660208260051b850101111561284c57600080fd5b60209290920196919550909350505050565b6000806040838503121561287157600080fd5b823561287c816125e5565b91506020830135801515811461289157600080fd5b809150509250929050565b600080604083850312156128af57600080fd5b82356128ba816125e5565b91506020830135612891816125e5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161293d5761293d612915565b5060010190565b6000821982111561295757612957612915565b500190565b600181811c9082168061297057607f821691505b60208210810361299057634e487b7160e01b600052602260045260246000fd5b50919050565b60008160001904831182151516156129b0576129b0612915565b500290565b6000826129d257634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600082821015612a7157612a71612915565b500390565b600060208284031215612a8857600080fd5b81516114e6816125e5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ae35784516001600160a01b031683529383019391830191600101612abe565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122043dfb08d67e1c6792c9f033e585cff74b15290acd7935ddbfb5c495bd2a62d8064736f6c634300080f00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106103795760003560e01c80638a8c523c116101d1578063b5a8b29811610102578063d85ba063116100a0578063f203acb61161006f578063f203acb614610a60578063f2fde38b14610a76578063f429389014610a96578063f8b45b0514610aab57600080fd5b8063d85ba063146109d8578063dd62ed3e146109ee578063e2f4560514610a34578063e71dc3f514610a4a57600080fd5b8063bfd79284116100dc578063bfd7928414610958578063c024666814610988578063c876d0b9146109a8578063c8c8ebe4146109c257600080fd5b8063b5a8b298146108e7578063b62496f514610907578063bbc0c7421461093757600080fd5b80639c71cc701161016f578063a0d82dc511610149578063a0d82dc51461087b578063a457c2d714610891578063a9059cbb146108b1578063adb873bd146108d157600080fd5b80639c71cc70146108155780639fccce32146108455780639fdc48241461085b57600080fd5b806395d89b41116101ab57806395d89b41146107b4578063975d71e2146107c95780639a7a23d6146107df5780639c3b4fdc146107ff57600080fd5b80638a8c523c146107615780638da5cb5b146107765780638ea5220f1461079457600080fd5b8063313ce567116102ab5780636a486a8e1161024957806370a082311161022357806370a08231146106e0578063715018a6146107165780637571336a1461072b5780637ab439831461074b57600080fd5b80636a486a8e146106895780636b9990531461069f5780636ddd1713146106bf57600080fd5b80634a62bb65116102855780634a62bb65146105ef5780634ab736c0146106105780634fbee1931461063057806366ca9b831461066957600080fd5b8063313ce5671461057f578063395093511461059b57806349bd5a5e146105bb57600080fd5b80631694505e116103185780631d777856116102f25780631d777856146105135780631fa07da51461052957806323b872dd1461054957806327c8f8351461056957600080fd5b80631694505e1461049257806318160ddd146104de5780631816467f146104f357600080fd5b806306fdde031161035457806306fdde03146103f0578063095ea7b31461041257806310d5de5314610442578063150de0bb1461047257600080fd5b8062b8cf2a1461038557806302dbd8f8146103a7578063047fc9aa146103c757600080fd5b3661038057005b600080fd5b34801561039157600080fd5b506103a56103a036600461260a565b610ac1565b005b3480156103b357600080fd5b506103a56103c23660046126cf565b610b60565b3480156103d357600080fd5b506103dd60095481565b6040519081526020015b60405180910390f35b3480156103fc57600080fd5b50610405610bf3565b6040516103e791906126f1565b34801561041e57600080fd5b5061043261042d366004612746565b610c85565b60405190151581526020016103e7565b34801561044e57600080fd5b5061043261045d366004612772565b60196020526000908152604090205460ff1681565b34801561047e57600080fd5b506103a561048d36600461278f565b610c9c565b34801561049e57600080fd5b506104c67f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103e7565b3480156104ea57600080fd5b506002546103dd565b3480156104ff57600080fd5b506103a561050e366004612772565b610ce4565b34801561051f57600080fd5b506103dd60135481565b34801561053557600080fd5b506103a561054436600461278f565b610d30565b34801561055557600080fd5b506104326105643660046127a8565b610d75565b34801561057557600080fd5b506104c661dead81565b34801561058b57600080fd5b50604051600681526020016103e7565b3480156105a757600080fd5b506104326105b6366004612746565b610dde565b3480156105c757600080fd5b506104c67f0000000000000000000000007403d666cb257d32df8a6154b82423c161e083c581565b3480156105fb57600080fd5b50600a5461043290600160a01b900460ff1681565b34801561061c57600080fd5b506103a561062b3660046127e9565b610e14565b34801561063c57600080fd5b5061043261064b366004612772565b6001600160a01b031660009081526018602052604090205460ff1690565b34801561067557600080fd5b506103a56106843660046126cf565b610eac565b34801561069557600080fd5b506103dd60125481565b3480156106ab57600080fd5b506103a56106ba366004612772565b610f3d565b3480156106cb57600080fd5b50600a5461043290600160b01b900460ff1681565b3480156106ec57600080fd5b506103dd6106fb366004612772565b6001600160a01b031660009081526020819052604090205490565b34801561072257600080fd5b506103a5610f88565b34801561073757600080fd5b506103a561074636600461285e565b610ffc565b34801561075757600080fd5b506103dd60155481565b34801561076d57600080fd5b506103a5611051565b34801561078257600080fd5b506005546001600160a01b03166104c6565b3480156107a057600080fd5b50600a546104c6906001600160a01b031681565b3480156107c057600080fd5b506104056110c9565b3480156107d557600080fd5b506103dd60165481565b3480156107eb57600080fd5b506103a56107fa36600461285e565b6110d8565b34801561080b57600080fd5b506103dd600e5481565b34801561082157600080fd5b50610432610830366004612772565b601c6020526000908152604090205460ff1681565b34801561085157600080fd5b506103dd60145481565b34801561086757600080fd5b506103a561087636600461278f565b6111b3565b34801561088757600080fd5b506103dd60115481565b34801561089d57600080fd5b506104326108ac366004612746565b6111e2565b3480156108bd57600080fd5b506104326108cc366004612746565b611231565b3480156108dd57600080fd5b506103dd60105481565b3480156108f357600080fd5b506103a56109023660046127e9565b61123e565b34801561091357600080fd5b50610432610922366004612772565b601a6020526000908152604090205460ff1681565b34801561094357600080fd5b50600a5461043290600160a81b900460ff1681565b34801561096457600080fd5b50610432610973366004612772565b601b6020526000908152604090205460ff1681565b34801561099457600080fd5b506103a56109a336600461285e565b6112da565b3480156109b457600080fd5b50600c546104329060ff1681565b3480156109ce57600080fd5b506103dd60065481565b3480156109e457600080fd5b506103dd600f5481565b3480156109fa57600080fd5b506103dd610a0936600461289c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a4057600080fd5b506103dd60075481565b348015610a5657600080fd5b506103dd600d5481565b348015610a6c57600080fd5b506103dd60175481565b348015610a8257600080fd5b506103a5610a91366004612772565b611363565b348015610aa257600080fd5b506103a561144e565b348015610ab757600080fd5b506103dd60085481565b6005546001600160a01b03163314610af45760405162461bcd60e51b8152600401610aeb906128ca565b60405180910390fd5b60005b8151811015610b5c576001601b6000848481518110610b1857610b186128ff565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b548161292b565b915050610af7565b5050565b6005546001600160a01b03163314610b8a5760405162461bcd60e51b8152600401610aeb906128ca565b60108290556011819055610b9e8183612944565b6012819055600f1015610b5c5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610aeb565b606060038054610c029061295c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2e9061295c565b8015610c7b5780601f10610c5057610100808354040283529160200191610c7b565b820191906000526020600020905b815481529060010190602001808311610c5e57829003601f168201915b5050505050905090565b6000610c923384846114ed565b5060015b92915050565b6005546001600160a01b03163314610cc65760405162461bcd60e51b8152600401610aeb906128ca565b6001811015610cd457600080fd5b6015819055610ce1611612565b50565b6005546001600160a01b03163314610d0e5760405162461bcd60e51b8152600401610aeb906128ca565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d5a5760405162461bcd60e51b8152600401610aeb906128ca565b6001811015610d6857600080fd5b6016819055610ce1611612565b6000610d82848484611671565b610dd48433610dcf85604051806060016040528060288152602001612b4d602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611f80565b6114ed565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610c92918590610dcf9086611487565b6005546001600160a01b03163314610e3e5760405162461bcd60e51b8152600401610aeb906128ca565b60005b81811015610ea757601c6000848484818110610e5f57610e5f6128ff565b9050602002016020810190610e749190612772565b6001600160a01b031681526020810191909152604001600020805460ff1916905580610e9f8161292b565b915050610e41565b505050565b6005546001600160a01b03163314610ed65760405162461bcd60e51b8152600401610aeb906128ca565b600d829055600e819055610eea8183612944565b600f8181551015610b5c5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610aeb565b6005546001600160a01b03163314610f675760405162461bcd60e51b8152600401610aeb906128ca565b6001600160a01b03166000908152601b60205260409020805460ff19169055565b6005546001600160a01b03163314610fb25760405162461bcd60e51b8152600401610aeb906128ca565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110265760405162461bcd60e51b8152600401610aeb906128ca565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461107b5760405162461bcd60e51b8152600401610aeb906128ca565b6001600d8190556004600e81905561109291612944565b600f5560016010819055600460118190556110ac91612944565b6012556005601755600a805460ff60a81b1916600160a81b179055565b606060048054610c029061295c565b6005546001600160a01b031633146111025760405162461bcd60e51b8152600401610aeb906128ca565b7f0000000000000000000000007403d666cb257d32df8a6154b82423c161e083c56001600160a01b0316826001600160a01b0316036111a95760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610aeb565b610b5c8282611fba565b6005546001600160a01b031633146111dd5760405162461bcd60e51b8152600401610aeb906128ca565b601755565b6000610c923384610dcf85604051806060016040528060258152602001612b75602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611f80565b6000610c92338484611671565b6005546001600160a01b031633146112685760405162461bcd60e51b8152600401610aeb906128ca565b60005b81811015610ea7576001601c600085858581811061128b5761128b6128ff565b90506020020160208101906112a09190612772565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806112d28161292b565b91505061126b565b6005546001600160a01b031633146113045760405162461bcd60e51b8152600401610aeb906128ca565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461138d5760405162461bcd60e51b8152600401610aeb906128ca565b6001600160a01b0381166113f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aeb565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610ce1573d6000803e3d6000fd5b6000806114948385612944565b9050838110156114e65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610aeb565b9392505050565b6001600160a01b03831661154f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610aeb565b6001600160a01b0382166115b05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610aeb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60646016546009546116249190612996565b61162e91906129b5565b60065560095461271090611643906014612996565b61164d91906129b5565b60075560155460095460649161166291612996565b61166c91906129b5565b600855565b6001600160a01b0383166116975760405162461bcd60e51b8152600401610aeb906129d7565b6001600160a01b0382166116bd5760405162461bcd60e51b8152600401610aeb90612a1c565b806000036116d157610ea78383600061200e565b600a54600160a01b900460ff1615611c82576005546001600160a01b0384811691161480159061170f57506005546001600160a01b03838116911614155b801561172357506001600160a01b03821615155b801561173a57506001600160a01b03821661dead14155b80156117505750600554600160a01b900460ff16155b15611c8257600a54600160a81b900460ff16611830576001600160a01b03831660009081526018602052604090205460ff16806117a557506001600160a01b03821660009081526018602052604090205460ff165b806117c857506001600160a01b0383166000908152601c602052604090205460ff165b806117eb57506001600160a01b0382166000908152601c602052604090205460ff165b6118305760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610aeb565b6001600160a01b0383166000908152601b602052604090205460ff1615801561187257506001600160a01b0382166000908152601b602052604090205460ff16155b6118ca5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610aeb565b600c5460ff1615611a1c576005546001600160a01b0383811691161480159061192557507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561196357507f0000000000000000000000007403d666cb257d32df8a6154b82423c161e083c56001600160a01b0316826001600160a01b031614155b15611a1c57326000908152600b602052604090205443116119fe5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610aeb565b601754611a0b9043612944565b326000908152600b60205260409020555b6001600160a01b0383166000908152601a602052604090205460ff168015611a5d57506001600160a01b03821660009081526019602052604090205460ff16155b15611b4157600654811115611ad25760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610aeb565b6008546001600160a01b038316600090815260208190526040902054611af89083612944565b1115611b3c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610aeb565b611c82565b6001600160a01b0382166000908152601a602052604090205460ff168015611b8257506001600160a01b03831660009081526019602052604090205460ff16155b15611bf857600654811115611b3c5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610aeb565b6001600160a01b03821660009081526019602052604090205460ff16611c82576008546001600160a01b038316600090815260208190526040902054611c3e9083612944565b1115611c825760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610aeb565b3060009081526020819052604090205460075481108015908190611cb05750600554600160a01b900460ff16155b8015611cc55750600a54600160b01b900460ff165b8015611cea57506001600160a01b0385166000908152601a602052604090205460ff16155b8015611d0f57506001600160a01b03851660009081526018602052604090205460ff16155b8015611d3457506001600160a01b03841660009081526018602052604090205460ff16155b15611d62576005805460ff60a01b1916600160a01b179055611d54612117565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526018602052604090205460ff600160a01b909204821615911680611db057506001600160a01b03851660009081526018602052604090205460ff165b15611db9575060005b60008115611f6c576001600160a01b0386166000908152601a602052604090205460ff168015611deb57506000601254115b15611e7957611e106064611e0a601254886121d090919063ffffffff16565b90612252565b905060125460105482611e239190612996565b611e2d91906129b5565b60136000828254611e3e9190612944565b9091555050601254601154611e539083612996565b611e5d91906129b5565b60146000828254611e6e9190612944565b90915550611f269050565b6001600160a01b0387166000908152601a602052604090205460ff168015611ea357506000600f54115b15611f2657611ec26064611e0a600f54886121d090919063ffffffff16565b9050600f54600d5482611ed59190612996565b611edf91906129b5565b60136000828254611ef09190612944565b9091555050600f54600e54611f059083612996565b611f0f91906129b5565b60146000828254611f209190612944565b90915550505b8015611f5f57611f3787308361200e565b60135415611f5f57611f4b30601354612294565b600254600955611f59611612565b60006013555b611f698186612a5f565b94505b611f7787878761200e565b50505050505050565b60008184841115611fa45760405162461bcd60e51b8152600401610aeb91906126f1565b506000611fb18486612a5f565b95945050505050565b6001600160a01b0382166000818152601a6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166120345760405162461bcd60e51b8152600401610aeb906129d7565b6001600160a01b03821661205a5760405162461bcd60e51b8152600401610aeb90612a1c565b61209781604051806060016040528060268152602001612b27602691396001600160a01b0386166000908152602081905260409020549190611f80565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546120c69082611487565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611605565b3060009081526020819052604081205490818103612133575050565b600754612141906005612996565b82111561215957600754612156906005612996565b91505b6121628261239f565b600060145567016345785d8a0000471115610b5c57600a546040516001600160a01b03909116904790600081818185875af1925050503d80600081146121c4576040519150601f19603f3d011682016040523d82523d6000602084013e6121c9565b606091505b5050505050565b6000826000036121e257506000610c96565b60006121ee8385612996565b9050826121fb85836129b5565b146114e65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610aeb565b60006114e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061255f565b6001600160a01b0382166122f45760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610aeb565b61233181604051806060016040528060228152602001612b05602291396001600160a01b0385166000908152602081905260409020549190611f80565b6001600160a01b038316600090815260208190526040902055600254612357908261258d565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123d4576123d46128ff565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124769190612a76565b81600181518110612489576124896128ff565b60200260200101906001600160a01b031690816001600160a01b0316815250506124d4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846114ed565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612529908590600090869030904290600401612a93565b600060405180830381600087803b15801561254357600080fd5b505af1158015612557573d6000803e3d6000fd5b505050505050565b600081836125805760405162461bcd60e51b8152600401610aeb91906126f1565b506000611fb184866129b5565b60006114e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f80565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610ce157600080fd5b8035612605816125e5565b919050565b6000602080838503121561261d57600080fd5b823567ffffffffffffffff8082111561263557600080fd5b818501915085601f83011261264957600080fd5b81358181111561265b5761265b6125cf565b8060051b604051601f19603f83011681018181108582111715612680576126806125cf565b60405291825284820192508381018501918883111561269e57600080fd5b938501935b828510156126c3576126b4856125fa565b845293850193928501926126a3565b98975050505050505050565b600080604083850312156126e257600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561271e57858101830151858201604001528201612702565b81811115612730576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561275957600080fd5b8235612764816125e5565b946020939093013593505050565b60006020828403121561278457600080fd5b81356114e6816125e5565b6000602082840312156127a157600080fd5b5035919050565b6000806000606084860312156127bd57600080fd5b83356127c8816125e5565b925060208401356127d8816125e5565b929592945050506040919091013590565b600080602083850312156127fc57600080fd5b823567ffffffffffffffff8082111561281457600080fd5b818501915085601f83011261282857600080fd5b81358181111561283757600080fd5b8660208260051b850101111561284c57600080fd5b60209290920196919550909350505050565b6000806040838503121561287157600080fd5b823561287c816125e5565b91506020830135801515811461289157600080fd5b809150509250929050565b600080604083850312156128af57600080fd5b82356128ba816125e5565b91506020830135612891816125e5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161293d5761293d612915565b5060010190565b6000821982111561295757612957612915565b500190565b600181811c9082168061297057607f821691505b60208210810361299057634e487b7160e01b600052602260045260246000fd5b50919050565b60008160001904831182151516156129b0576129b0612915565b500290565b6000826129d257634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600082821015612a7157612a71612915565b500390565b600060208284031215612a8857600080fd5b81516114e6816125e5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ae35784516001600160a01b031683529383019391830191600101612abe565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122043dfb08d67e1c6792c9f033e585cff74b15290acd7935ddbfb5c495bd2a62d8064736f6c634300080f0033

Deployed Bytecode Sourcemap

17340:11447:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20981:169;;;;;;;;;;-1:-1:-1;20981:169:0;;;;;:::i;:::-;;:::i;:::-;;22105:273;;;;;;;;;;-1:-1:-1;22105:273:0;;;;;:::i;:::-;;:::i;17719:21::-;;;;;;;;;;;;;;;;;;;1946:25:1;;;1934:2;1919:18;17719:21:0;;;;;;;;4964:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5863:169::-;;;;;;;;;;-1:-1:-1;5863:169:0;;;;;:::i;:::-;;:::i;:::-;;;3069:14:1;;3062:22;3044:41;;3032:2;3017:18;5863:169:0;2904:187:1;18438:64:0;;;;;;;;;;-1:-1:-1;18438:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21416:157;;;;;;;;;;-1:-1:-1;21416:157:0;;;;;:::i;:::-;;:::i;17415:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3724:32:1;;;3706:51;;3694:2;3679:18;17415:51:0;3533:230:1;5278:108:0;;;;;;;;;;-1:-1:-1;5366:12:0;;5278:108;;22384:103;;;;;;;;;;-1:-1:-1;22384:103:0;;;;;:::i;:::-;;:::i;18212:28::-;;;;;;;;;;;;;;;;21255:155;;;;;;;;;;-1:-1:-1;21255:155:0;;;;;:::i;:::-;;:::i;6038:355::-;;;;;;;;;;-1:-1:-1;6038:355:0;;;;;:::i;:::-;;:::i;17518:53::-;;;;;;;;;;;;17564:6;17518:53;;5180:92;;;;;;;;;;-1:-1:-1;5180:92:0;;5263:1;4579:36:1;;4567:2;4552:18;5180:92:0;4437:184:1;6399:218:0;;;;;;;;;;-1:-1:-1;6399:218:0;;;;;:::i;:::-;;:::i;17473:38::-;;;;;;;;;;;;;;;17778:33;;;;;;;;;;-1:-1:-1;17778:33:0;;;;-1:-1:-1;;;17778:33:0;;;;;;28583:201;;;;;;;;;;-1:-1:-1;28583:201:0;;;;;:::i;:::-;;:::i;23433:125::-;;;;;;;;;;-1:-1:-1;23433:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;23522:28:0;23498:4;23522:28;;;:19;:28;;;;;;;;;23433:125;21833:266;;;;;;;;;;-1:-1:-1;21833:266:0;;;;;:::i;:::-;;:::i;18174:28::-;;;;;;;;;;;;;;;;21158:91;;;;;;;;;;-1:-1:-1;21158:91:0;;;;;:::i;:::-;;:::i;17858:30::-;;;;;;;;;;-1:-1:-1;17858:30:0;;;;-1:-1:-1;;;17858:30:0;;;;;;5392:127;;;;;;;;;;-1:-1:-1;5392:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5493:18:0;5466:7;5493:18;;;;;;;;;;;;5392:127;10750:148;;;;;;;;;;;;;:::i;21683:144::-;;;;;;;;;;-1:-1:-1;21683:144:0;;;;;:::i;:::-;;:::i;18281:26::-;;;;;;;;;;;;;;;;20666:307;;;;;;;;;;;;;:::i;10540:79::-;;;;;;;;;;-1:-1:-1;10605:6:0;;-1:-1:-1;;;;;10605:6:0;10540:79;;17747:24;;;;;;;;;;-1:-1:-1;17747:24:0;;;;-1:-1:-1;;;;;17747:24:0;;;5070:104;;;;;;;;;;;;;:::i;18314:25::-;;;;;;;;;;;;;;;;22993:242;;;;;;;;;;-1:-1:-1;22993:242:0;;;;;:::i;:::-;;:::i;18044:24::-;;;;;;;;;;;;;;;;18617:45;;;;;;;;;;-1:-1:-1;18617:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18247:27;;;;;;;;;;;;;;;;21579:98;;;;;;;;;;-1:-1:-1;21579:98:0;;;;;:::i;:::-;;:::i;18142:25::-;;;;;;;;;;;;;;;;6623:269;;;;;;;;;;-1:-1:-1;6623:269:0;;;;;:::i;:::-;;:::i;5525:175::-;;;;;;;;;;-1:-1:-1;5525:175:0;;;;;:::i;:::-;;:::i;18109:26::-;;;;;;;;;;;;;;;;28375:200;;;;;;;;;;-1:-1:-1;28375:200:0;;;;;:::i;:::-;;:::i;18509:58::-;;;;;;;;;;-1:-1:-1;18509:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17818:33;;;;;;;;;;-1:-1:-1;17818:33:0;;;;-1:-1:-1;;;17818:33:0;;;;;;18574:36;;;;;;;;;;-1:-1:-1;18574:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22493:182;;;;;;;;;;-1:-1:-1;22493:182:0;;;;;:::i;:::-;;:::i;17966:39::-;;;;;;;;;;-1:-1:-1;17966:39:0;;;;;;;;17606:35;;;;;;;;;;;;;;;;18075:27;;;;;;;;;;;;;;;;5706:151;;;;;;;;;;-1:-1:-1;5706:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5822:18:0;;;5795:7;5822:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5706:151;17648:33;;;;;;;;;;;;;;;;18012:25;;;;;;;;;;;;;;;;18346;;;;;;;;;;;;;;;;10904:244;;;;;;;;;;-1:-1:-1;10904:244:0;;;;;:::i;:::-;;:::i;22681:100::-;;;;;;;;;;;;;:::i;17688:24::-;;;;;;;;;;;;;;;;20981:169;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;;;;;;;;;21057:9:::1;21052:91;21076:5;:12;21072:1;:16;21052:91;;;21127:4;21110;:14;21115:5;21121:1;21115:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;21110:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;21110:14:0;:21;;-1:-1:-1;;21110:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21090:3;::::1;::::0;::::1;:::i;:::-;;;;21052:91;;;;20981:169:::0;:::o;22105:273::-;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;22194:11:::1;:22:::0;;;22227:10:::1;:20:::0;;;22274:24:::1;22240:7:::0;22208:8;22274:24:::1;:::i;:::-;22258:13;:40:::0;;;22334:2:::1;-1:-1:-1::0;22317:19:0::1;22309:61;;;::::0;-1:-1:-1;;;22309:61:0;;7160:2:1;22309:61:0::1;::::0;::::1;7142:21:1::0;7199:2;7179:18;;;7172:30;7238:31;7218:18;;;7211:59;7287:18;;22309:61:0::1;6958:353:1::0;4964:100:0;5018:13;5051:5;5044:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4964:100;:::o;5863:169::-;5946:4;5963:39;387:10;5986:7;5995:6;5963:8;:39::i;:::-;-1:-1:-1;6020:4:0;5863:169;;;;;:::o;21416:157::-;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;21507:1:::1;21497:6;:11;;21489:20;;;::::0;::::1;;21520:11;:20:::0;;;21551:14:::1;:12;:14::i;:::-;21416:157:::0;:::o;22384:103::-;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;22458:9:::1;:21:::0;;-1:-1:-1;;;;;;22458:21:0::1;-1:-1:-1::0;;;;;22458:21:0;;;::::1;::::0;;;::::1;::::0;;22384:103::o;21255:155::-;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;21345:1:::1;21335:6;:11;;21327:20;;;::::0;::::1;;21358:10;:19:::0;;;21388:14:::1;:12;:14::i;6038:355::-:0;6178:4;6195:36;6205:6;6213:9;6224:6;6195:9;:36::i;:::-;6242:121;6251:6;387:10;6273:89;6311:6;6273:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6273:19:0;;;;;;:11;:19;;;;;;;;387:10;6273:33;;;;;;;;;;:37;:89::i;:::-;6242:8;:121::i;:::-;-1:-1:-1;6381:4:0;6038:355;;;;;:::o;6399:218::-;387:10;6487:4;6536:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6536:34:0;;;;;;;;;;6487:4;;6504:83;;6527:7;;6536:50;;6575:10;6536:38;:50::i;28583:201::-;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;28672:9:::1;28668:109;28687:19:::0;;::::1;28668:109;;;28740:12;:25;28753:8;;28762:1;28753:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28740:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;28740:25:0;28733:32;;-1:-1:-1;;28733:32:0::1;::::0;;28708:3;::::1;::::0;::::1;:::i;:::-;;;;28668:109;;;;28583:201:::0;;:::o;21833:266::-;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;21921:10:::1;:21:::0;;;21953:9:::1;:19:::0;;;21998:22:::1;21965:7:::0;21934:8;21998:22:::1;:::i;:::-;21983:12;:37:::0;;;-1:-1:-1;22039:18:0::1;22031:60;;;::::0;-1:-1:-1;;;22031:60:0;;7903:2:1;22031:60:0::1;::::0;::::1;7885:21:1::0;7942:2;7922:18;;;7915:30;7981:31;7961:18;;;7954:59;8030:18;;22031:60:0::1;7701:353:1::0;21158:91:0;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21229:12:0::1;;::::0;;;:4:::1;:12;::::0;;;;21222:19;;-1:-1:-1;;21222:19:0::1;::::0;;21158:91::o;10750:148::-;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;10841:6:::1;::::0;10820:40:::1;::::0;10857:1:::1;::::0;-1:-1:-1;;;;;10841:6:0::1;::::0;10820:40:::1;::::0;10857:1;;10820:40:::1;10871:6;:19:::0;;-1:-1:-1;;;;;;10871:19:0::1;::::0;;10750:148::o;21683:144::-;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21773:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;21773:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21683:144::o;20666:307::-;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;20734:1:::1;20721:10;:14:::0;;;20758:1:::1;20746:9;:13:::0;;;20785:22:::1;::::0;::::1;:::i;:::-;20770:12;:37:::0;20832:1:::1;20818:11;:15:::0;;;20857:1:::1;20844:10;:14:::0;;;20885:24:::1;::::0;::::1;:::i;:::-;20869:13;:40:::0;20933:1:::1;20920:10;:14:::0;20945:13:::1;:20:::0;;-1:-1:-1;;;;20945:20:0::1;-1:-1:-1::0;;;20945:20:0::1;::::0;;20666:307::o;5070:104::-;5126:13;5159:7;5152:14;;;;;:::i;22993:242::-;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;23100:13:::1;-1:-1:-1::0;;;;;23092:21:0::1;:4;-1:-1:-1::0;;;;;23092:21:0::1;::::0;23084:91:::1;;;::::0;-1:-1:-1;;;23084:91:0;;8261:2:1;23084:91:0::1;::::0;::::1;8243:21:1::0;8300:2;8280:18;;;8273:30;8339:34;8319:18;;;8312:62;8410:27;8390:18;;;8383:55;8455:19;;23084:91:0::1;8059:421:1::0;23084:91:0::1;23186:41;23215:4;23221:5;23186:28;:41::i;21579:98::-:0;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;21650:10:::1;:19:::0;21579:98::o;6623:269::-;6716:4;6733:129;387:10;6756:7;6765:96;6804:15;6765:96;;;;;;;;;;;;;;;;;387:10;6765:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6765:34:0;;;;;;;;;;;;:38;:96::i;5525:175::-;5611:4;5628:42;387:10;5652:9;5663:6;5628:9;:42::i;28375:200::-;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;28463:9:::1;28459:109;28478:19:::0;;::::1;28459:109;;;28552:4;28524:12;:25;28537:8;;28546:1;28537:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28524:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;28524:25:0;:32;;-1:-1:-1;;28524:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28499:3;::::1;::::0;::::1;:::i;:::-;;;;28459:109;;22493:182:::0;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22578:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;22578:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;22633:34;;3044:41:1;;;22633:34:0::1;::::0;3017:18:1;22633:34:0::1;;;;;;;22493:182:::0;;:::o;10904:244::-;10665:6;;-1:-1:-1;;;;;10665:6:0;387:10;10665:22;10657:67;;;;-1:-1:-1;;;10657:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10993:22:0;::::1;10985:73;;;::::0;-1:-1:-1;;;10985:73:0;;8687:2:1;10985:73:0::1;::::0;::::1;8669:21:1::0;8726:2;8706:18;;;8699:30;8765:34;8745:18;;;8738:62;-1:-1:-1;;;8816:18:1;;;8809:36;8862:19;;10985:73:0::1;8485:402:1::0;10985:73:0::1;11095:6;::::0;11074:38:::1;::::0;-1:-1:-1;;;;;11074:38:0;;::::1;::::0;11095:6:::1;::::0;11074:38:::1;::::0;11095:6:::1;::::0;11074:38:::1;11123:6;:17:::0;;-1:-1:-1;;;;;;11123:17:0::1;-1:-1:-1::0;;;;;11123:17:0;;;::::1;::::0;;;::::1;::::0;;10904:244::o;22681:100::-;22731:9;;22723:50;;-1:-1:-1;;;;;22731:9:0;;;;22751:21;22723:50;;;;;22731:9;22723:50;22731:9;22723:50;22751:21;22731:9;22723:50;;;;;;;;;;;;;;;;;;;8811:179;8869:7;;8901:5;8905:1;8901;:5;:::i;:::-;8889:17;;8930:1;8925;:6;;8917:46;;;;-1:-1:-1;;;8917:46:0;;9094:2:1;8917:46:0;;;9076:21:1;9133:2;9113:18;;;9106:30;9172:29;9152:18;;;9145:57;9219:18;;8917:46:0;8892:351:1;8917:46:0;8981:1;8811:179;-1:-1:-1;;;8811:179:0:o;8273:378::-;-1:-1:-1;;;;;8409:19:0;;8401:68;;;;-1:-1:-1;;;8401:68:0;;9450:2:1;8401:68:0;;;9432:21:1;9489:2;9469:18;;;9462:30;9528:34;9508:18;;;9501:62;-1:-1:-1;;;9579:18:1;;;9572:34;9623:19;;8401:68:0;9248:400:1;8401:68:0;-1:-1:-1;;;;;8488:21:0;;8480:68;;;;-1:-1:-1;;;8480:68:0;;9855:2:1;8480:68:0;;;9837:21:1;9894:2;9874:18;;;9867:30;9933:34;9913:18;;;9906:62;-1:-1:-1;;;9984:18:1;;;9977:32;10026:19;;8480:68:0;9653:398:1;8480:68:0;-1:-1:-1;;;;;8559:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8611:32;;1946:25:1;;;8611:32:0;;1919:18:1;8611:32:0;;;;;;;;8273:378;;;:::o;22787:200::-;22875:3;22862:10;;22853:6;;:19;;;;:::i;:::-;:25;;;;:::i;:::-;22830:20;:48;22910:6;;22924:5;;22910:11;;22919:2;22910:11;:::i;:::-;:19;;;;:::i;:::-;22889:18;:40;22962:11;;22953:6;;22976:3;;22953:20;;;:::i;:::-;:26;;;;:::i;:::-;22941:9;:38;22787:200::o;23564:3810::-;-1:-1:-1;;;;;23696:18:0;;23688:68;;;;-1:-1:-1;;;23688:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23775:16:0;;23767:64;;;;-1:-1:-1;;;23767:64:0;;;;;;;:::i;:::-;23846:6;23856:1;23846:11;23843:92;;23874:28;23890:4;23896:2;23900:1;23874:15;:28::i;23843:92::-;23948:14;;-1:-1:-1;;;23948:14:0;;;;23945:1773;;;10605:6;;-1:-1:-1;;;;;24000:15:0;;;10605:6;;24000:15;;;;:49;;-1:-1:-1;10605:6:0;;-1:-1:-1;;;;;24036:13:0;;;10605:6;;24036:13;;24000:49;:86;;;;-1:-1:-1;;;;;;24070:16:0;;;;24000:86;:128;;;;-1:-1:-1;;;;;;24107:21:0;;24121:6;24107:21;;24000:128;:158;;;;-1:-1:-1;24150:8:0;;-1:-1:-1;;;24150:8:0;;;;24149:9;24000:158;23978:1729;;;24196:13;;-1:-1:-1;;;24196:13:0;;;;24192:190;;-1:-1:-1;;;;;24241:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;24270:23:0;;;;;;:19;:23;;;;;;;;24241:52;:74;;;-1:-1:-1;;;;;;24297:18:0;;;;;;:12;:18;;;;;;;;24241:74;:94;;;-1:-1:-1;;;;;;24319:16:0;;;;;;:12;:16;;;;;;;;24241:94;24233:129;;;;-1:-1:-1;;;24233:129:0;;11463:2:1;24233:129:0;;;11445:21:1;11502:2;11482:18;;;11475:30;-1:-1:-1;;;11521:18:1;;;11514:52;11583:18;;24233:129:0;11261:346:1;24233:129:0;-1:-1:-1;;;;;24425:10:0;;;;;;:4;:10;;;;;;;;24424:11;:24;;;;-1:-1:-1;;;;;;24440:8:0;;;;;;:4;:8;;;;;;;;24439:9;24424:24;24416:72;;;;-1:-1:-1;;;24416:72:0;;11814:2:1;24416:72:0;;;11796:21:1;11853:2;11833:18;;;11826:30;11892:34;11872:18;;;11865:62;-1:-1:-1;;;11943:18:1;;;11936:33;11986:19;;24416:72:0;11612:399:1;24416:72:0;24511:20;;;;24507:436;;;10605:6;;-1:-1:-1;;;;;24559:13:0;;;10605:6;;24559:13;;;;:47;;;24590:15;-1:-1:-1;;;;;24576:30:0;:2;-1:-1:-1;;;;;24576:30:0;;;24559:47;:79;;;;;24624:13;-1:-1:-1;;;;;24610:28:0;:2;-1:-1:-1;;;;;24610:28:0;;;24559:79;24555:369;;;24703:9;24674:39;;;;:28;:39;;;;;;24716:12;-1:-1:-1;24666:140:0;;;;-1:-1:-1;;;24666:140:0;;12218:2:1;24666:140:0;;;12200:21:1;12257:2;12237:18;;;12230:30;12296:34;12276:18;;;12269:62;12367:34;12347:18;;;12340:62;-1:-1:-1;;;12418:19:1;;;12411:40;12468:19;;24666:140:0;12016:477:1;24666:140:0;24890:10;;24875:25;;:12;:25;:::i;:::-;24862:9;24833:39;;;;:28;:39;;;;;:67;24555:369;-1:-1:-1;;;;;24965:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;25001:35:0;;;;;;:31;:35;;;;;;;;25000:36;24965:71;24961:731;;;25083:20;;25073:6;:30;;25065:96;;;;-1:-1:-1;;;25065:96:0;;12700:2:1;25065:96:0;;;12682:21:1;12739:2;12719:18;;;12712:30;12778:34;12758:18;;;12751:62;-1:-1:-1;;;12829:18:1;;;12822:51;12890:19;;25065:96:0;12498:417:1;25065:96:0;25222:9;;-1:-1:-1;;;;;5493:18:0;;5466:7;5493:18;;;;;;;;;;;25196:22;;:6;:22;:::i;:::-;:35;;25188:67;;;;-1:-1:-1;;;25188:67:0;;13122:2:1;25188:67:0;;;13104:21:1;13161:2;13141:18;;;13134:30;-1:-1:-1;;;13180:18:1;;;13173:49;13239:18;;25188:67:0;12920:343:1;25188:67:0;24961:731;;;-1:-1:-1;;;;;25302:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;25336:37:0;;;;;;:31;:37;;;;;;;;25335:38;25302:71;25298:394;;;25420:20;;25410:6;:30;;25402:97;;;;-1:-1:-1;;;25402:97:0;;13470:2:1;25402:97:0;;;13452:21:1;13509:2;13489:18;;;13482:30;13548:34;13528:18;;;13521:62;-1:-1:-1;;;13599:18:1;;;13592:52;13661:19;;25402:97:0;13268:418:1;25298:394:0;-1:-1:-1;;;;;25546:35:0;;;;;;:31;:35;;;;;;;;25542:150;;25639:9;;-1:-1:-1;;;;;5493:18:0;;5466:7;5493:18;;;;;;;;;;;25613:22;;:6;:22;:::i;:::-;:35;;25605:67;;;;-1:-1:-1;;;25605:67:0;;13122:2:1;25605:67:0;;;13104:21:1;13161:2;13141:18;;;13134:30;-1:-1:-1;;;13180:18:1;;;13173:49;13239:18;;25605:67:0;12920:343:1;25605:67:0;25777:4;25728:28;5493:18;;;;;;;;;;;25833;;25809:42;;;;;;;25880:33;;-1:-1:-1;25905:8:0;;-1:-1:-1;;;25905:8:0;;;;25904:9;25880:33;:61;;;;-1:-1:-1;25930:11:0;;-1:-1:-1;;;25930:11:0;;;;25880:61;:110;;;;-1:-1:-1;;;;;;25959:31:0;;;;;;:25;:31;;;;;;;;25958:32;25880:110;:153;;;;-1:-1:-1;;;;;;26008:25:0;;;;;;:19;:25;;;;;;;;26007:26;25880:153;:194;;;;-1:-1:-1;;;;;;26051:23:0;;;;;;:19;:23;;;;;;;;26050:24;25880:194;25862:322;;;26101:8;:15;;-1:-1:-1;;;;26101:15:0;-1:-1:-1;;;26101:15:0;;;26131:10;:8;:10::i;:::-;26156:8;:16;;-1:-1:-1;;;;26156:16:0;;;25862:322;26210:8;;-1:-1:-1;;;;;26232:25:0;;26194:12;26232:25;;;:19;:25;;;;;;26210:8;-1:-1:-1;;;26210:8:0;;;;;26209:9;;26232:25;;:52;;-1:-1:-1;;;;;;26261:23:0;;;;;;:19;:23;;;;;;;;26232:52;26229:99;;;-1:-1:-1;26311:5:0;26229:99;26338:12;26368:7;26365:958;;;-1:-1:-1;;;;;26395:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;26444:1;26428:13;;:17;26395:50;26391:547;;;26472:34;26502:3;26472:25;26483:13;;26472:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;26465:41;;26563:13;;26549:11;;26542:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;26525:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;26631:13:0;;26618:10;;26611:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;26595:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;26391:547:0;;-1:-1:-1;26391:547:0;;-1:-1:-1;;;;;26682:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;26732:1;26717:12;;:16;26682:51;26679:259;;;26758:33;26787:3;26758:24;26769:12;;26758:6;:10;;:24;;;;:::i;:33::-;26751:40;;26844:12;;26831:10;;26824:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;26807:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;26910:12:0;;26898:9;;26891:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;26875:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;26679:259:0;26955:8;;26952:334;;26987:42;27003:4;27017;27024;26987:15;:42::i;:::-;27052:13;;:17;27048:223;;27094:35;27108:4;27115:13;;27094:5;:35::i;:::-;5366:12;;27152:6;:22;27197:14;:12;:14::i;:::-;27250:1;27234:13;:17;27048:223;27297:14;27307:4;27297:14;;:::i;:::-;;;26365:958;27333:33;27349:4;27355:2;27359:6;27333:15;:33::i;:::-;23677:3697;;;;23564:3810;;;:::o;9138:190::-;9224:7;9260:12;9252:6;;;;9244:29;;;;-1:-1:-1;;;9244:29:0;;;;;;;;:::i;:::-;-1:-1:-1;9284:9:0;9296:5;9300:1;9296;:5;:::i;:::-;9284:17;9138:190;-1:-1:-1;;;;;9138:190:0:o;23241:186::-;-1:-1:-1;;;;;23324:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;23324:39:0;;;;;;;;;;23379:40;;23324:39;;:31;23379:40;;;23241:186;;:::o;6898:569::-;-1:-1:-1;;;;;7038:20:0;;7030:70;;;;-1:-1:-1;;;7030:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7119:23:0;;7111:71;;;;-1:-1:-1;;;7111:71:0;;;;;;;:::i;:::-;7271;7293:6;7271:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7271:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7251:17:0;;;:9;:17;;;;;;;;;;;:91;;;;7376:20;;;;;;;:32;;7401:6;7376:24;:32::i;:::-;-1:-1:-1;;;;;7353:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;7424:35;1946:25:1;;;7353:20:0;;7424:35;;;;;;1919:18:1;7424:35:0;1800:177:1;27858:505:0;27941:4;27897:23;5493:18;;;;;;;;;;;;27984:20;;;27981:34;;28007:7;;27858:505::o;27981:34::-;28046:18;;:22;;28067:1;28046:22;:::i;:::-;28028:15;:40;28025:109;;;28100:18;;:22;;28121:1;28100:22;:::i;:::-;28082:40;;28025:109;28144:33;28161:15;28144:16;:33::i;:::-;28204:1;28189:12;:16;28244:18;28220:21;:42;28216:140;;;28295:9;;28287:57;;-1:-1:-1;;;;;28295:9:0;;;;28318:21;;28287:57;;;;28318:21;28295:9;28287:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27858:505:0:o;9334:246::-;9392:7;9416:1;9421;9416:6;9412:47;;-1:-1:-1;9446:1:0;9439:8;;9412:47;9469:9;9481:5;9485:1;9481;:5;:::i;:::-;9469:17;-1:-1:-1;9514:1:0;9505:5;9509:1;9469:17;9505:5;:::i;:::-;:10;9497:56;;;;-1:-1:-1;;;9497:56:0;;14233:2:1;9497:56:0;;;14215:21:1;14272:2;14252:18;;;14245:30;14311:34;14291:18;;;14284:62;-1:-1:-1;;;14362:18:1;;;14355:31;14403:19;;9497:56:0;14031:397:1;9586:132:0;9644:7;9671:39;9675:1;9678;9671:39;;;;;;;;;;;;;;;;;:3;:39::i;7853:414::-;-1:-1:-1;;;;;7937:21:0;;7929:67;;;;-1:-1:-1;;;7929:67:0;;14635:2:1;7929:67:0;;;14617:21:1;14674:2;14654:18;;;14647:30;14713:34;14693:18;;;14686:62;-1:-1:-1;;;14764:18:1;;;14757:31;14805:19;;7929:67:0;14433:397:1;7929:67:0;8088:68;8111:6;8088:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8088:18:0;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;8067:18:0;;:9;:18;;;;;;;;;;:89;8182:12;;:24;;8199:6;8182:16;:24::i;:::-;8167:12;:39;8222:37;;1946:25:1;;;8248:1:0;;-1:-1:-1;;;;;8222:37:0;;;;;1934:2:1;1919:18;8222:37:0;;;;;;;7853:414;;:::o;27380:472::-;27470:16;;;27484:1;27470:16;;;;;;;;27446:21;;27470:16;;;;;;;;;;-1:-1:-1;27470:16:0;27446:40;;27515:4;27497;27502:1;27497:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;27497:23:0;;;-1:-1:-1;;;;;27497:23:0;;;;;27541:15;-1:-1:-1;;;;;27541:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27531:4;27536:1;27531:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;27531:32:0;;;-1:-1:-1;;;;;27531:32:0;;;;;27574:62;27591:4;27606:15;27624:11;27574:8;:62::i;:::-;27647:197;;-1:-1:-1;;;27647:197:0;;-1:-1:-1;;;;;27647:15:0;:66;;;;:197;;27728:11;;27754:1;;27771:4;;27798;;27818:15;;27647:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27435:417;27380:472;:::o;9724:189::-;9810:7;9845:12;9838:5;9830:28;;;;-1:-1:-1;;;9830:28:0;;;;;;;;:::i;:::-;-1:-1:-1;9869:9:0;9881:5;9885:1;9881;:5;:::i;8996:136::-;9054:7;9081:43;9085:1;9088;9081:43;;;;;;;;;;;;;;;;;:3;:43::i;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:131;-1:-1:-1;;;;;221:31:1;;211:42;;201:70;;267:1;264;257:12;282:134;350:20;;379:31;350:20;379:31;:::i;:::-;282:134;;;:::o;421:1121::-;505:6;536:2;579;567:9;558:7;554:23;550:32;547:52;;;595:1;592;585:12;547:52;635:9;622:23;664:18;705:2;697:6;694:14;691:34;;;721:1;718;711:12;691:34;759:6;748:9;744:22;734:32;;804:7;797:4;793:2;789:13;785:27;775:55;;826:1;823;816:12;775:55;862:2;849:16;884:2;880;877:10;874:36;;;890:18;;:::i;:::-;936:2;933:1;929:10;968:2;962:9;1031:2;1027:7;1022:2;1018;1014:11;1010:25;1002:6;998:38;1086:6;1074:10;1071:22;1066:2;1054:10;1051:18;1048:46;1045:72;;;1097:18;;:::i;:::-;1133:2;1126:22;1183:18;;;1217:15;;;;-1:-1:-1;1259:11:1;;;1255:20;;;1287:19;;;1284:39;;;1319:1;1316;1309:12;1284:39;1343:11;;;;1363:148;1379:6;1374:3;1371:15;1363:148;;;1445:23;1464:3;1445:23;:::i;:::-;1433:36;;1396:12;;;;1489;;;;1363:148;;;1530:6;421:1121;-1:-1:-1;;;;;;;;421:1121:1:o;1547:248::-;1615:6;1623;1676:2;1664:9;1655:7;1651:23;1647:32;1644:52;;;1692:1;1689;1682:12;1644:52;-1:-1:-1;;1715:23:1;;;1785:2;1770:18;;;1757:32;;-1:-1:-1;1547:248:1:o;1982:597::-;2094:4;2123:2;2152;2141:9;2134:21;2184:6;2178:13;2227:6;2222:2;2211:9;2207:18;2200:34;2252:1;2262:140;2276:6;2273:1;2270:13;2262:140;;;2371:14;;;2367:23;;2361:30;2337:17;;;2356:2;2333:26;2326:66;2291:10;;2262:140;;;2420:6;2417:1;2414:13;2411:91;;;2490:1;2485:2;2476:6;2465:9;2461:22;2457:31;2450:42;2411:91;-1:-1:-1;2563:2:1;2542:15;-1:-1:-1;;2538:29:1;2523:45;;;;2570:2;2519:54;;1982:597;-1:-1:-1;;;1982:597:1:o;2584:315::-;2652:6;2660;2713:2;2701:9;2692:7;2688:23;2684:32;2681:52;;;2729:1;2726;2719:12;2681:52;2768:9;2755:23;2787:31;2812:5;2787:31;:::i;:::-;2837:5;2889:2;2874:18;;;;2861:32;;-1:-1:-1;;;2584:315:1:o;3096:247::-;3155:6;3208:2;3196:9;3187:7;3183:23;3179:32;3176:52;;;3224:1;3221;3214:12;3176:52;3263:9;3250:23;3282:31;3307:5;3282:31;:::i;3348:180::-;3407:6;3460:2;3448:9;3439:7;3435:23;3431:32;3428:52;;;3476:1;3473;3466:12;3428:52;-1:-1:-1;3499:23:1;;3348:180;-1:-1:-1;3348:180:1:o;3768:456::-;3845:6;3853;3861;3914:2;3902:9;3893:7;3889:23;3885:32;3882:52;;;3930:1;3927;3920:12;3882:52;3969:9;3956:23;3988:31;4013:5;3988:31;:::i;:::-;4038:5;-1:-1:-1;4095:2:1;4080:18;;4067:32;4108:33;4067:32;4108:33;:::i;:::-;3768:456;;4160:7;;-1:-1:-1;;;4214:2:1;4199:18;;;;4186:32;;3768:456::o;4626:615::-;4712:6;4720;4773:2;4761:9;4752:7;4748:23;4744:32;4741:52;;;4789:1;4786;4779:12;4741:52;4829:9;4816:23;4858:18;4899:2;4891:6;4888:14;4885:34;;;4915:1;4912;4905:12;4885:34;4953:6;4942:9;4938:22;4928:32;;4998:7;4991:4;4987:2;4983:13;4979:27;4969:55;;5020:1;5017;5010:12;4969:55;5060:2;5047:16;5086:2;5078:6;5075:14;5072:34;;;5102:1;5099;5092:12;5072:34;5155:7;5150:2;5140:6;5137:1;5133:14;5129:2;5125:23;5121:32;5118:45;5115:65;;;5176:1;5173;5166:12;5115:65;5207:2;5199:11;;;;;5229:6;;-1:-1:-1;4626:615:1;;-1:-1:-1;;;;4626:615:1:o;5246:416::-;5311:6;5319;5372:2;5360:9;5351:7;5347:23;5343:32;5340:52;;;5388:1;5385;5378:12;5340:52;5427:9;5414:23;5446:31;5471:5;5446:31;:::i;:::-;5496:5;-1:-1:-1;5553:2:1;5538:18;;5525:32;5595:15;;5588:23;5576:36;;5566:64;;5626:1;5623;5616:12;5566:64;5649:7;5639:17;;;5246:416;;;;;:::o;5667:388::-;5735:6;5743;5796:2;5784:9;5775:7;5771:23;5767:32;5764:52;;;5812:1;5809;5802:12;5764:52;5851:9;5838:23;5870:31;5895:5;5870:31;:::i;:::-;5920:5;-1:-1:-1;5977:2:1;5962:18;;5949:32;5990:33;5949:32;5990:33;:::i;6060:356::-;6262:2;6244:21;;;6281:18;;;6274:30;6340:34;6335:2;6320:18;;6313:62;6407:2;6392:18;;6060:356::o;6421:127::-;6482:10;6477:3;6473:20;6470:1;6463:31;6513:4;6510:1;6503:15;6537:4;6534:1;6527:15;6553:127;6614:10;6609:3;6605:20;6602:1;6595:31;6645:4;6642:1;6635:15;6669:4;6666:1;6659:15;6685:135;6724:3;6745:17;;;6742:43;;6765:18;;:::i;:::-;-1:-1:-1;6812:1:1;6801:13;;6685:135::o;6825:128::-;6865:3;6896:1;6892:6;6889:1;6886:13;6883:39;;;6902:18;;:::i;:::-;-1:-1:-1;6938:9:1;;6825:128::o;7316:380::-;7395:1;7391:12;;;;7438;;;7459:61;;7513:4;7505:6;7501:17;7491:27;;7459:61;7566:2;7558:6;7555:14;7535:18;7532:38;7529:161;;7612:10;7607:3;7603:20;7600:1;7593:31;7647:4;7644:1;7637:15;7675:4;7672:1;7665:15;7529:161;;7316:380;;;:::o;10056:168::-;10096:7;10162:1;10158;10154:6;10150:14;10147:1;10144:21;10139:1;10132:9;10125:17;10121:45;10118:71;;;10169:18;;:::i;:::-;-1:-1:-1;10209:9:1;;10056:168::o;10229:217::-;10269:1;10295;10285:132;;10339:10;10334:3;10330:20;10327:1;10320:31;10374:4;10371:1;10364:15;10402:4;10399:1;10392:15;10285:132;-1:-1:-1;10431:9:1;;10229:217::o;10451:401::-;10653:2;10635:21;;;10692:2;10672:18;;;10665:30;10731:34;10726:2;10711:18;;10704:62;-1:-1:-1;;;10797:2:1;10782:18;;10775:35;10842:3;10827:19;;10451:401::o;10857:399::-;11059:2;11041:21;;;11098:2;11078:18;;;11071:30;11137:34;11132:2;11117:18;;11110:62;-1:-1:-1;;;11203:2:1;11188:18;;11181:33;11246:3;11231:19;;10857:399::o;13691:125::-;13731:4;13759:1;13756;13753:8;13750:34;;;13764:18;;:::i;:::-;-1:-1:-1;13801:9:1;;13691:125::o;14835:251::-;14905:6;14958:2;14946:9;14937:7;14933:23;14929:32;14926:52;;;14974:1;14971;14964:12;14926:52;15006:9;15000:16;15025:31;15050:5;15025:31;:::i;15091:980::-;15353:4;15401:3;15390:9;15386:19;15432:6;15421:9;15414:25;15458:2;15496:6;15491:2;15480:9;15476:18;15469:34;15539:3;15534:2;15523:9;15519:18;15512:31;15563:6;15598;15592:13;15629:6;15621;15614:22;15667:3;15656:9;15652:19;15645:26;;15706:2;15698:6;15694:15;15680:29;;15727:1;15737:195;15751:6;15748:1;15745:13;15737:195;;;15816:13;;-1:-1:-1;;;;;15812:39:1;15800:52;;15907:15;;;;15872:12;;;;15848:1;15766:9;15737:195;;;-1:-1:-1;;;;;;;15988:32:1;;;;15983:2;15968:18;;15961:60;-1:-1:-1;;;16052:3:1;16037:19;16030:35;15949:3;15091:980;-1:-1:-1;;;15091:980:1:o

Swarm Source

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