ETH Price: $3,430.04 (+3.48%)

Token

777 (777)
 

Overview

Max Total Supply

777,777 777

Holders

111

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,047.676233873020602851 777

Value
$0.00
0x1e1cf6550e405890a9dcec7d06d90c0db7068ee9
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:
eth777

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-10
*/

/*
  ______ ______ ______ 
 |____  |____  |____  |
     / /    / /    / / 
    / /    / /    / /  
   / /    / /    / /   
  /_/    /_/    /_/    

 https://777eth.fun

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.22;

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) 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);
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal returns(bool){
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        return success; // always proceeds
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

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

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

abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant NOT_ENTERED = 1;
    uint256 private constant ENTERED = 2;

    uint256 private _status;

    /**
     * @dev Unauthorized reentrant call.
     */
    error ReentrancyGuardReentrantCall();

    constructor() {
        _status = NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be NOT_ENTERED
        if (_status == ENTERED) {
            revert ReentrancyGuardReentrantCall();
        }

        // Any calls to nonReentrant after this point will fail
        _status = ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = NOT_ENTERED;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == ENTERED;
    }
}

contract eth777 is ERC20, Ownable, ReentrancyGuard {
    using Address for address payable;

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (uint256 => address) public holderTickets;
    mapping (address => uint256) public wins;
    mapping (address => uint256) public claimTime;

    uint256 public  previousTickets;
    uint256 public  totalTickets;

    uint256 public  lastLottery;
    uint256 public  lotteryTime;

    uint256 public  feeOnBuy;
    uint256 public  feeOnSell;

    uint256 public  feeOnTransfer;
    uint256 public  totalWon;

    uint256 public  feeForFeeReceiver;

    address public  feeReceiver;
    uint256 public  SUPPLY_DIVIDER;

    uint256 public  swapTokensAtAmount;
    bool    private swapping;

    bool    public swapEnabled;
    bool    public drawEnabled;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SwapAndSendFee(uint256 tokensSwapped, uint256 bnbSend);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);
    event Winners(address one,address two,address three,address four,address five);

    constructor () ERC20("777", "777") 
    {   
        address router;
        address pinkLock;
        
        if (block.chainid == 56) {
            router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router
            pinkLock = 0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE; // BSC PinkLock
        } else if (block.chainid == 97) {
            router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router
            pinkLock = 0x5E5b9bE5fd939c578ABE5800a90C566eeEbA44a5; // BSC Testnet PinkLock
        } else if (block.chainid == 1 || block.chainid == 5) {
            router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet
            pinkLock = 0x71B5759d73262FBb223956913ecF4ecC51057641; // ETH PinkLock
        } else {
            revert();
        }

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        feeOnBuy  = 25;
        feeOnSell = 25;

        feeOnTransfer = 0;

        SUPPLY_DIVIDER = 1_000; // will result in 0.1%;

        lotteryTime = 15 minutes;

        feeReceiver = 0xc9062d545c23933C5173B351146b5F7e49C38c65;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[pinkLock] = true;

        maxWalletLimitEnabled = true;

        _isExcludedFromMaxWalletLimit[owner()] = true;
        _isExcludedFromMaxWalletLimit[address(this)] = true;
        _isExcludedFromMaxWalletLimit[address(0xdead)] = true;
        _isExcludedFromMaxWalletLimit[feeReceiver] = true;
        _isExcludedFromMaxWalletLimit[pinkLock] = true;

        _mintOnce(owner(), 777_777 * (10 ** decimals()));
        swapTokensAtAmount = totalSupply() / 5_000;

        maxWalletAmount = totalSupply() * 5 / 1000;

        swapEnabled = false;
    }

    receive() external payable {}

    function claimStuckTokens(address token) external onlyOwner {
        if (token == address(0x0)) {
            payable(msg.sender).sendValue(address(this).balance);
            return;
        }
        
        IERC20(token).transfer(msg.sender, IERC20(token).balanceOf(address(this)));
    }

    function drawRandomWinner() internal nonReentrant {
        lastLottery = block.timestamp;
        uint256 newTickets = totalTickets - previousTickets;

        uint256 newWins = address(this).balance - totalWon;
        uint256 winMoney = newWins / 5;

        totalWon += newWins;

        // pseudo random, but due to min buy and claim after 1 hours without sell no issue
        uint256 rand1 = uint256(keccak256(abi.encodePacked(blockhash(block.number - 1), block.prevrandao, block.timestamp, msg.sender, totalTickets))) % (newTickets + 1);
        uint256 rand2 = uint256(keccak256(abi.encodePacked(block.prevrandao, blockhash(block.number - 1), block.timestamp, totalTickets, msg.sender))) % (newTickets + 1);
        uint256 rand3 = uint256(keccak256(abi.encodePacked(block.timestamp, block.prevrandao, msg.sender, totalTickets, blockhash(block.number - 1)))) % (newTickets + 1);
        uint256 rand4 = uint256(keccak256(abi.encodePacked(msg.sender, block.timestamp, blockhash(block.number - 1), totalTickets, block.prevrandao))) % (newTickets + 1);
        uint256 rand5 = uint256(keccak256(abi.encodePacked(totalTickets, msg.sender, block.prevrandao, block.timestamp, blockhash(block.number - 1)))) % (newTickets + 1);

        address winner1 = holderTickets[previousTickets + rand1];
        address winner2 = holderTickets[previousTickets + rand2];
        address winner3 = holderTickets[previousTickets + rand3];
        address winner4 = holderTickets[previousTickets + rand4];
        address winner5 = holderTickets[previousTickets + rand5];

        previousTickets = totalTickets;

        claimTime[winner1] = block.timestamp + 1 hours;
        wins[winner1] += winMoney;

        claimTime[winner2] = block.timestamp + 1 hours;
        wins[winner2] += winMoney;

        claimTime[winner3] = block.timestamp + 1 hours;
        wins[winner3] += winMoney;

        claimTime[winner4] = block.timestamp + 1 hours;
        wins[winner4] += winMoney;

        claimTime[winner5] = block.timestamp + 1 hours;
        wins[winner5] += winMoney;

        emit Winners(winner1, winner2, winner3, winner4, winner5);
    }

    function claimWins() external nonReentrant payable {
        require(wins[msg.sender] > 0, "You have no wins...");
        require(address(this).balance >= wins[msg.sender], "Not enough balance, try another time");
        require(block.timestamp >= claimTime[msg.sender], "You cannot claim yet.");

        uint256 toSend = wins[msg.sender];
        wins[msg.sender] = 0;
        claimTime[msg.sender] = 0;

        payable(msg.sender).sendValue(toSend);
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner{
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    event UpdateFees(uint256 feeOnBuy, uint256 feeOnSell);

    function updateFees(uint256 _feeOnSell, uint256 _feeOnBuy, uint256 _feeOnTransfer, uint256 _SUPPLY_DIVIDER, uint256 _lotteryTime) external onlyOwner {
        require(_SUPPLY_DIVIDER >= 50, "Must be maximum 2% total supply");
        
        feeOnBuy = _feeOnBuy;
        feeOnSell = _feeOnSell;
        feeOnTransfer = _feeOnTransfer;
        SUPPLY_DIVIDER = _SUPPLY_DIVIDER;
        lotteryTime = _lotteryTime;

        require(feeOnBuy <= 25, "CSLT: Total Fees cannot exceed the maximum");
        require(feeOnSell <= 25, "CSLT: Total Fees cannot exceed the maximum");
        require(feeOnTransfer <= 25, "CSLT: Total Fees cannot exceed the maximum");

        emit UpdateFees(feeOnSell, feeOnBuy);
    }

    event FeeReceiverChanged(address feeReceiver);

    function changeFeeReceiver(address _feeReceiver) external onlyOwner{
        require(_feeReceiver != address(0), "CSLT: Fee receiver cannot be the zero address");
        feeReceiver = _feeReceiver;

        emit FeeReceiverChanged(feeReceiver);
    }
    
    event TradingEnabled(bool tradingEnabled);

    bool public tradingEnabled;

    function enableTrading() external onlyOwner{
        require(!tradingEnabled, "CSLT: Trading already enabled.");
        tradingEnabled = true;
        swapEnabled = true;
        drawEnabled = true;
        lastLottery = block.timestamp;

        emit TradingEnabled(tradingEnabled);
    }

    function _transfer(address from,address to,uint256 amount) internal override {
        require(from != address(0), "CSLT: transfer from the zero address");
        require(to != address(0), "CSLT: transfer to the zero address");
        require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "CSLT: Trading not yet enabled!");
       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapping = false;
        }

        if (
            drawEnabled &&
            !swapping &&
            to == uniswapV2Pair &&
            block.timestamp > lastLottery + lotteryTime &&
            address(this).balance > 0
        ) {
            swapping = true;
            
            drawRandomWinner();    

            swapping = false;
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            if (drawEnabled && amount >= (totalSupply() / SUPPLY_DIVIDER)) {
                holderTickets[totalTickets] = to;
                totalTickets++;
            }
            _totalFees = feeOnBuy;
        } else if (to == uniswapV2Pair) {
            _totalFees =  feeOnSell;
            wins[from] = 0;
            claimTime[from] = 0;
        } else {
            _totalFees = feeOnTransfer;
            wins[from] = 0;
            claimTime[from] = 0;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

        if (maxWalletLimitEnabled) 
        {
            if (!_isExcludedFromMaxWalletLimit[from] && 
                !_isExcludedFromMaxWalletLimit[to] &&
                to != uniswapV2Pair
            ) {
                uint256 balance  = balanceOf(to);
                require(
                    balance + amount <= maxWalletAmount, 
                    "MaxWallet: Recipient exceeds the maxWalletAmount"
                );
            }
        }

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

    function setSwapTokensAtAmount(uint256 newAmount, bool _swapEnabled, bool _drawEnabled) external onlyOwner{
        require(newAmount > totalSupply() / 1_000_000, "CSLT: SwapTokensAtAmount must be greater than 0.0001% of total supply");
        swapTokensAtAmount = newAmount;
        swapEnabled = _swapEnabled;
        drawEnabled = _drawEnabled;

        emit SwapTokensAtAmountUpdated(swapTokensAtAmount);
    }

    function swapAndSendFee(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

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

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        uint256 newBalance = address(this).balance - initialBalance;
        uint256 tFee = (feeOnBuy + feeOnSell);
        uint256 forFeeReceiver = newBalance * (tFee) / (tFee + 2);

        if (forFeeReceiver > 0) {
            payable(feeReceiver).sendValue(forFeeReceiver);
        }

        emit SwapAndSendFee(tokenAmount, newBalance);
    }

    mapping(address => bool) private _isExcludedFromMaxWalletLimit;
    bool    public maxWalletLimitEnabled;
    uint256 public maxWalletAmount;

    event ExcludedFromMaxWalletLimit(address indexed account, bool isExcluded);
    event MaxWalletLimitStateChanged(bool maxWalletLimit);
    event MaxWalletLimitAmountChanged(uint256 maxWalletAmount);

    function setEnableMaxWalletLimit(bool enable) external onlyOwner {
        require(enable != maxWalletLimitEnabled,"Max wallet limit is already set to that state");
        maxWalletLimitEnabled = enable;

        emit MaxWalletLimitStateChanged(maxWalletLimitEnabled);
    }

    function setMaxWalletAmount(uint256 _maxWalletAmount) external onlyOwner {
        require(_maxWalletAmount >= (totalSupply() / (10 ** decimals())) / 100, "Max wallet percentage cannot be lower than 1%");
        maxWalletAmount = _maxWalletAmount * (10 ** decimals());

        emit MaxWalletLimitAmountChanged(maxWalletAmount);
    }

    function excludeFromMaxWallet(address account, bool exclude) external onlyOwner {
        require( _isExcludedFromMaxWalletLimit[account] != exclude,"Account is already set to that state");
        require(account != address(this), "Can't set this address.");

        _isExcludedFromMaxWalletLimit[account] = exclude;

        emit ExcludedFromMaxWalletLimit(account, exclude);
    }

    function isExcludedFromMaxWalletLimit(address account) public view returns(bool) {
        return _isExcludedFromMaxWalletLimit[account];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxWalletLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeReceiver","type":"address"}],"name":"FeeReceiverChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"MaxWalletLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxWalletLimit","type":"bool"}],"name":"MaxWalletLimitStateChanged","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingEnabled","type":"bool"}],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeOnSell","type":"uint256"}],"name":"UpdateFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"one","type":"address"},{"indexed":false,"internalType":"address","name":"two","type":"address"},{"indexed":false,"internalType":"address","name":"three","type":"address"},{"indexed":false,"internalType":"address","name":"four","type":"address"},{"indexed":false,"internalType":"address","name":"five","type":"address"}],"name":"Winners","type":"event"},{"inputs":[],"name":"SUPPLY_DIVIDER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_feeReceiver","type":"address"}],"name":"changeFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimWins","outputs":[],"stateMutability":"payable","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":"drawEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeForFeeReceiver","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnTransfer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holderTickets","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLottery","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"},{"internalType":"bool","name":"_swapEnabled","type":"bool"},{"internalType":"bool","name":"_drawEnabled","type":"bool"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWon","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeOnSell","type":"uint256"},{"internalType":"uint256","name":"_feeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_feeOnTransfer","type":"uint256"},{"internalType":"uint256","name":"_SUPPLY_DIVIDER","type":"uint256"},{"internalType":"uint256","name":"_lotteryTime","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801562000010575f80fd5b5060408051808201825260038082526237373760e81b602080840182905284518086019095528285528401529091906200004b8382620007de565b5060046200005a8282620007de565b5050505f6200006e6200052f60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060016006555f8046603803620000fe57507310ed43c718714eb63d5aa57b78b54704e256024e905073407993575c91ce7643a4d4ccacc9a98c36ee1bbe62000187565b466061036200013a575073d99d1c33f9fc3444f8101754abc46c52416550d19050735e5b9be5fd939c578abe5800a90c566eeeba44a562000187565b46600114806200014a5750466005145b15620001835750737a250d5630b4cf539739df2c5dacb4c659f2488d90507371b5759d73262fbb223956913ecf4ecc5105764162000187565b5f80fd5b5f8290505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ef9190620008aa565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002619190620008aa565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002ac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d29190620008aa565b600780546001600160a01b038086166001600160a01b031992831681179093556008805491851691909216179055909150620003129030905f1962000533565b601960118190556012555f60138190556103e8601755610384601055601680546001600160a01b03191673c9062d545c23933c5173b351146b5f7e49c38c651790556001906009906200036d6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560099093527f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb193075003785805485166001908117909155308452828420805486168217905590871683529082208054841682179055601b80549093168117909255601a906200040c6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152601a9093528183208054851660019081179091557f428bdc965569ef4717764ecfd84e88946a9a226b52b813e6ab6a7f46aad86e888054861682179055601654821684528284208054861682179055908716835291208054909216179055620004d4620004b16005546001600160a01b031690565b620004bf6012600a620009e8565b620004ce90620bde31620009f8565b6200065e565b611388620004e160025490565b620004ed919062000a12565b6018556103e8620004fd60025490565b6200050a906005620009f8565b62000516919062000a12565b601c5550506019805461ff00191690555062000a489050565b3390565b6001600160a01b0383166200059b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005fe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000592565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620006b65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000592565b8060025f828254620006c9919062000a32565b90915550506001600160a01b0382165f9081526020819052604081208054839290620006f790849062000a32565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200076957607f821691505b6020821081036200078857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620007d957805f5260205f20601f840160051c81016020851015620007b55750805b601f840160051c820191505b81811015620007d6575f8155600101620007c1565b50505b505050565b81516001600160401b03811115620007fa57620007fa62000740565b62000812816200080b845462000754565b846200078e565b602080601f83116001811462000848575f8415620008305750858301515b5f19600386901b1c1916600185901b178555620008a2565b5f85815260208120601f198616915b82811015620008785788860151825594840194600190910190840162000857565b50858210156200089657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215620008bb575f80fd5b81516001600160a01b0381168114620008d2575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200092d57815f1904821115620009115762000911620008d9565b808516156200091f57918102915b93841c9390800290620008f2565b509250929050565b5f826200094557506001620009e2565b816200095357505f620009e2565b81600181146200096c5760028114620009775762000997565b6001915050620009e2565b60ff8411156200098b576200098b620008d9565b50506001821b620009e2565b5060208310610133831016604e8410600b8410161715620009bc575081810a620009e2565b620009c88383620008ed565b805f1904821115620009de57620009de620008d9565b0290505b92915050565b5f620008d260ff84168362000935565b8082028115828204841417620009e257620009e2620008d9565b5f8262000a2d57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620009e257620009e2620008d9565b612c2a8062000a565f395ff3fe60806040526004361061028e575f3560e01c806370a0823111610155578063aa4bde28116100be578063d2fcc00111610078578063d2fcc001146107ad578063dd11247e146107cc578063dd62ed3e146107e1578063e2f4560514610825578063f2fde38b1461083a578063f9d0831a14610859575f80fd5b8063aa4bde281461071b578063af0b4b2714610730578063b3f0067414610745578063b3ff277d14610764578063bb8c3ee014610779578063c02466681461078e575f80fd5b80638a8c523c1161010f5780638a8c523c146106615780638da5cb5b1461067557806395d89b4114610692578063a457c2d7146106a6578063a8a69b9d146106c5578063a9059cbb146106fc575f80fd5b806370a08231146105a8578063715018a6146105dc578063740db6b8146105f05780637c08b964146105f85780638047a97a14610617578063880f7b0814610642575f80fd5b8063313ce567116101f75780634fbee193116101b15780634fbee193146104d65780635922fd361461050d5780635f5a7ab91461052c57806365048d08146105415780636ca4b712146105565780636ddd17131461058a575f80fd5b8063313ce56714610413578063395093511461042e578063457ffca21461044d57806349bd5a5e1461046c5780634ada218b1461048b5780634c443127146104ab575f80fd5b80631f41f3a8116102485780631f41f3a81461037157806321a9d82a1461038657806323b872dd1461039f5780632441238e146103be57806327a14fc2146103d35780632a6c7dba146103f4575f80fd5b806304c069601461029957806306fdde03146102c1578063095ea7b3146102e25780630fa1eeab146103115780631694505e1461032657806318160ddd1461035d575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102ae600d5481565b6040519081526020015b60405180910390f35b3480156102cc575f80fd5b506102d5610878565b6040516102b891906126d8565b3480156102ed575f80fd5b506103016102fc366004612738565b610908565b60405190151581526020016102b8565b34801561031c575f80fd5b506102ae60135481565b348015610331575f80fd5b50600754610345906001600160a01b031681565b6040516001600160a01b0390911681526020016102b8565b348015610368575f80fd5b506002546102ae565b34801561037c575f80fd5b506102ae60175481565b348015610391575f80fd5b50601b546103019060ff1681565b3480156103aa575f80fd5b506103016103b9366004612762565b61091e565b3480156103c9575f80fd5b506102ae60155481565b3480156103de575f80fd5b506103f26103ed3660046127a0565b6109d2565b005b3480156103ff575f80fd5b506103f261040e3660046127c4565b610ad8565b34801561041e575f80fd5b50604051601281526020016102b8565b348015610439575f80fd5b50610301610448366004612738565b610bb7565b348015610458575f80fd5b506103f26104673660046127e6565b610bf2565b348015610477575f80fd5b50600854610345906001600160a01b031681565b348015610496575f80fd5b50601954610301906301000000900460ff1681565b3480156104b6575f80fd5b506102ae6104c536600461281d565b600c6020525f908152604090205481565b3480156104e1575f80fd5b506103016104f036600461281d565b6001600160a01b03165f9081526009602052604090205460ff1690565b348015610518575f80fd5b506103f2610527366004612838565b610d3a565b348015610537575f80fd5b506102ae60105481565b34801561054c575f80fd5b506102ae60125481565b348015610561575f80fd5b506103456105703660046127a0565b600a6020525f90815260409020546001600160a01b031681565b348015610595575f80fd5b5060195461030190610100900460ff1681565b3480156105b3575f80fd5b506102ae6105c236600461281d565b6001600160a01b03165f9081526020819052604090205490565b3480156105e7575f80fd5b506103f2610e5d565b6103f2610ed0565b348015610603575f80fd5b506103f261061236600461281d565b611024565b348015610622575f80fd5b506102ae61063136600461281d565b600b6020525f908152604090205481565b34801561064d575f80fd5b506019546103019062010000900460ff1681565b34801561066c575f80fd5b506103f2611108565b348015610680575f80fd5b506005546001600160a01b0316610345565b34801561069d575f80fd5b506102d56111e8565b3480156106b1575f80fd5b506103016106c0366004612738565b6111f7565b3480156106d0575f80fd5b506103016106df36600461281d565b6001600160a01b03165f908152601a602052604090205460ff1690565b348015610707575f80fd5b50610301610716366004612738565b61128f565b348015610726575f80fd5b506102ae601c5481565b34801561073b575f80fd5b506102ae600f5481565b348015610750575f80fd5b50601654610345906001600160a01b031681565b34801561076f575f80fd5b506102ae60145481565b348015610784575f80fd5b506102ae60115481565b348015610799575f80fd5b506103f26107a8366004612877565b61129b565b3480156107b8575f80fd5b506103f26107c7366004612877565b611324565b3480156107d7575f80fd5b506102ae600e5481565b3480156107ec575f80fd5b506102ae6107fb3660046128ae565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610830575f80fd5b506102ae60185481565b348015610845575f80fd5b506103f261085436600461281d565b611478565b348015610864575f80fd5b506103f261087336600461281d565b611562565b606060038054610887906128da565b80601f01602080910402602001604051908101604052809291908181526020018280546108b3906128da565b80156108fe5780601f106108d5576101008083540402835291602001916108fe565b820191905f5260205f20905b8154815290600101906020018083116108e157829003601f168201915b5050505050905090565b5f610914338484611687565b5060015b92915050565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f1981146109bc57828110156109af5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109bc8533858403611687565b6109c78585856117aa565b506001949350505050565b6005546001600160a01b031633146109fc5760405162461bcd60e51b81526004016109a690612912565b6064610a0a6012600a612a3b565b600254610a179190612a5d565b610a219190612a5d565b811015610a865760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060448201526c6c6f776572207468616e20312560981b60648201526084016109a6565b610a926012600a612a3b565b610a9c9082612a70565b601c8190556040519081527f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb5942906020015b60405180910390a150565b6005546001600160a01b03163314610b025760405162461bcd60e51b81526004016109a690612912565b601b5460ff16151581151503610b705760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060448201526c746f207468617420737461746560981b60648201526084016109a6565b601b805460ff191682151590811790915560405160ff909116151581527f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f190602001610acd565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610914918590610bed908690612a87565b611687565b6005546001600160a01b03163314610c1c5760405162461bcd60e51b81526004016109a690612912565b6032821015610c6d5760405162461bcd60e51b815260206004820152601f60248201527f4d757374206265206d6178696d756d20322520746f74616c20737570706c790060448201526064016109a6565b601184905560128590556013839055601782905560108190556019841115610ca75760405162461bcd60e51b81526004016109a690612a9a565b60196012541115610cca5760405162461bcd60e51b81526004016109a690612a9a565b60196013541115610ced5760405162461bcd60e51b81526004016109a690612a9a565b7f53482196ef67ac615caab1c3eca2c270acbfdcd75e57c5f24c1b98b10c8e6e04601254601154604051610d2b929190918252602082015260400190565b60405180910390a15050505050565b6005546001600160a01b03163314610d645760405162461bcd60e51b81526004016109a690612912565b620f4240610d7160025490565b610d7b9190612a5d565b8311610dfd5760405162461bcd60e51b815260206004820152604560248201527f43534c543a2053776170546f6b656e734174416d6f756e74206d75737420626560448201527f2067726561746572207468616e20302e3030303125206f6620746f74616c20736064820152647570706c7960d81b608482015260a4016109a6565b60188390556019805462ffff0019166101008415150262ff000019161762010000831515021790556040518381527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b1459060200160405180910390a1505050565b6005546001600160a01b03163314610e875760405162461bcd60e51b81526004016109a690612912565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b610ed8611ccd565b335f908152600b6020526040902054610f295760405162461bcd60e51b81526020600482015260136024820152722cb7ba903430bb32903737903bb4b73997171760691b60448201526064016109a6565b335f908152600b6020526040902054471015610f935760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f7567682062616c616e63652c2074727920616e6f746865722060448201526374696d6560e01b60648201526084016109a6565b335f908152600c6020526040902054421015610fe95760405162461bcd60e51b81526020600482015260156024820152742cb7ba9031b0b73737ba1031b630b4b6903cb2ba1760591b60448201526064016109a6565b335f818152600b60209081526040808320805490849055600c909252822091909155906110169082611cf7565b50506110226001600655565b565b6005546001600160a01b0316331461104e5760405162461bcd60e51b81526004016109a690612912565b6001600160a01b0381166110ba5760405162461bcd60e51b815260206004820152602d60248201527f43534c543a204665652072656365697665722063616e6e6f742062652074686560448201526c207a65726f206164647265737360981b60648201526084016109a6565b601680546001600160a01b0319166001600160a01b0383169081179091556040519081527f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990602001610acd565b6005546001600160a01b031633146111325760405162461bcd60e51b81526004016109a690612912565b6019546301000000900460ff161561118c5760405162461bcd60e51b815260206004820152601e60248201527f43534c543a2054726164696e6720616c726561647920656e61626c65642e000060448201526064016109a6565b60198054630101010063ffffff0019909116179081905542600f55604051630100000090910460ff16151581527fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a9060200160405180910390a1565b606060048054610887906128da565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156112785760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109a6565b6112853385858403611687565b5060019392505050565b5f6109143384846117aa565b6005546001600160a01b031633146112c55760405162461bcd60e51b81526004016109a690612912565b6001600160a01b0382165f81815260096020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791015b60405180910390a25050565b6005546001600160a01b0316331461134e5760405162461bcd60e51b81526004016109a690612912565b6001600160a01b0382165f908152601a602052604090205481151560ff9091161515036113c95760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c72656164792073657420746f207468617420736044820152637461746560e01b60648201526084016109a6565b306001600160a01b038316036114215760405162461bcd60e51b815260206004820152601760248201527f43616e277420736574207468697320616464726573732e00000000000000000060448201526064016109a6565b6001600160a01b0382165f818152601a6020908152604091829020805460ff191685151590811790915591519182527f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c9101611318565b6005546001600160a01b031633146114a25760405162461bcd60e51b81526004016109a690612912565b6001600160a01b0381166115075760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109a6565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461158c5760405162461bcd60e51b81526004016109a690612912565b6001600160a01b0381166115a8576115a43347611cf7565b5050565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156115f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116189190612ae4565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611660573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a49190612afb565b50565b6001600160a01b0383166116e95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a6565b6001600160a01b03821661174a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a6565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661180c5760405162461bcd60e51b8152602060048201526024808201527f43534c543a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a6565b6001600160a01b03821661186d5760405162461bcd60e51b815260206004820152602260248201527f43534c543a207472616e7366657220746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a6565b6019546301000000900460ff168061189c57506001600160a01b0383165f9081526009602052604090205460ff165b806118be57506001600160a01b0382165f9081526009602052604090205460ff165b61190a5760405162461bcd60e51b815260206004820152601e60248201527f43534c543a2054726164696e67206e6f742079657420656e61626c656421000060448201526064016109a6565b805f036119215761191c83835f611da1565b505050565b305f9081526020819052604090205460185481108015908190611947575060195460ff16155b801561196057506008546001600160a01b038581169116145b801561198457506001600160a01b0385165f9081526009602052604090205460ff16155b80156119975750601954610100900460ff165b156119c0576019805460ff191660011790556018546119b590611f6e565b6019805460ff191690555b60195462010000900460ff1680156119db575060195460ff16155b80156119f457506008546001600160a01b038581169116145b8015611a0e5750601054600f54611a0b9190612a87565b42115b8015611a1957505f47115b15611a3e576019805460ff19166001179055611a3361214a565b6019805460ff191690555b6001600160a01b0385165f9081526009602052604081205460ff1680611a7b57506001600160a01b0385165f9081526009602052604090205460ff165b80611a88575060195460ff165b15611a9457505f611b8a565b6008546001600160a01b0390811690871603611b1c5760195462010000900460ff168015611ad15750601754600254611acd9190612a5d565b8410155b15611b1357600e80545f908152600a6020526040812080546001600160a01b0319166001600160a01b03891617905581549190611b0d83612b16565b91905055505b50601154611b8a565b6008546001600160a01b0390811690861603611b6057506012546001600160a01b0386165f908152600b60209081526040808320839055600c909152812055611b8a565b506013546001600160a01b0386165f908152600b60209081526040808320839055600c9091528120555b8015611bc2575f6064611b9d8387612a70565b611ba79190612a5d565b9050611bb38186612b2e565b9450611bc0873083611da1565b505b601b5460ff1615611cba576001600160a01b0386165f908152601a602052604090205460ff16158015611c0d57506001600160a01b0385165f908152601a602052604090205460ff16155b8015611c2757506008546001600160a01b03868116911614155b15611cba576001600160a01b0385165f90815260208190526040902054601c54611c518683612a87565b1115611cb85760405162461bcd60e51b815260206004820152603060248201527f4d617857616c6c65743a20526563697069656e7420657863656564732074686560448201526f081b585e15d85b1b195d105b5bdd5b9d60821b60648201526084016109a6565b505b611cc5868686611da1565b505050505050565b600260065403611cf057604051633ee5aeb560e01b815260040160405180910390fd5b6002600655565b5f81471015611d485760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109a6565b5f836001600160a01b0316836040515f6040518083038185875af1925050503d805f8114611d91576040519150601f19603f3d011682016040523d82523d5f602084013e611d96565b606091505b509095945050505050565b6001600160a01b038316611e055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109a6565b6001600160a01b038216611e675760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109a6565b6001600160a01b0383165f9081526020819052604090205481811015611ede5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109a6565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611f14908490612a87565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f6091815260200190565b60405180910390a350505050565b60408051600280825260608201835247925f92919060208301908036833701905050905030815f81518110611fa557611fa5612b41565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ffc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120209190612b55565b8160018151811061203357612033612b41565b6001600160a01b03928316602091820292909201015260075460405163791ac94760e01b815291169063791ac947906120789086905f90869030904290600401612b70565b5f604051808303815f87803b15801561208f575f80fd5b505af19250505080156120a0575060015b6120a957505050565b5f6120b48347612b2e565b90505f6012546011546120c79190612a87565b90505f6120d5826002612a87565b6120df8385612a70565b6120e99190612a5d565b9050801561210957601654612107906001600160a01b031682611cf7565b505b60408051878152602081018590527f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b910160405180910390a1505050505050565b612152611ccd565b42600f55600d54600e545f9161216791612b2e565b90505f601454476121789190612b2e565b90505f612186600583612a5d565b90508160145f8282546121999190612a87565b909155505f90506121ab846001612a87565b6121b6600143612b2e565b600e54604080519240602084015244908301524260608084019190915233901b6001600160601b0319166080830152609482015260b401604051602081830303815290604052805190602001205f1c61220f9190612be1565b90505f61221d856001612a87565b44612229600143612b2e565b600e5460405161226f9392409142913390602001948552602085019390935260408401919091526060808401919091521b6001600160601b031916608082015260940190565b604051602081830303815290604052805190602001205f1c6122919190612be1565b90505f61229f866001612a87565b424433600e546001436122b29190612b2e565b6040805160208101969096528501939093526001600160601b0319606092831b1691840191909152607483015240609482015260b401604051602081830303815290604052805190602001205f1c61230a9190612be1565b90505f612318876001612a87565b3342612325600143612b2e565b600e5460405160609490941b6001600160601b03191660208501526034840192909252406054830152607482015244609482015260b401604051602081830303815290604052805190602001205f1c61237e9190612be1565b90505f61238c886001612a87565b600e5433444261239d600143612b2e565b406040516020016123dd95949392919094855260609390931b6001600160601b031916602085015260348401919091526054830152607482015260940190565b604051602081830303815290604052805190602001205f1c6123ff9190612be1565b90505f600a5f87600d546124139190612a87565b81526020019081526020015f205f9054906101000a90046001600160a01b031690505f600a5f87600d546124479190612a87565b81526020019081526020015f205f9054906101000a90046001600160a01b031690505f600a5f87600d5461247b9190612a87565b81526020019081526020015f205f9054906101000a90046001600160a01b031690505f600a5f87600d546124af9190612a87565b81526020019081526020015f205f9054906101000a90046001600160a01b031690505f600a5f87600d546124e39190612a87565b815260208101919091526040015f2054600e54600d556001600160a01b0316905061251042610e10612a87565b6001600160a01b0386165f908152600c6020908152604080832093909355600b905290812080548d9290612545908490612a87565b90915550612557905042610e10612a87565b6001600160a01b0385165f908152600c6020908152604080832093909355600b905290812080548d929061258c908490612a87565b9091555061259e905042610e10612a87565b6001600160a01b0384165f908152600c6020908152604080832093909355600b905290812080548d92906125d3908490612a87565b909155506125e5905042610e10612a87565b6001600160a01b0383165f908152600c6020908152604080832093909355600b905290812080548d929061261a908490612a87565b9091555061262c905042610e10612a87565b6001600160a01b0382165f908152600c6020908152604080832093909355600b905290812080548d9290612661908490612a87565b9091555050604080516001600160a01b03878116825286811660208301528581168284015284811660608301528316608082015290517f85b2075b4c34c708fb90412ebbf4f383c8683a8b75ecce1b6a5bafcd211016bc9181900360a00190a1505050505050505050505050506110226001600655565b5f602080835283518060208501525f5b81811015612704578581018301518582016040015282016126e8565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611684575f80fd5b5f8060408385031215612749575f80fd5b823561275481612724565b946020939093013593505050565b5f805f60608486031215612774575f80fd5b833561277f81612724565b9250602084013561278f81612724565b929592945050506040919091013590565b5f602082840312156127b0575f80fd5b5035919050565b8015158114611684575f80fd5b5f602082840312156127d4575f80fd5b81356127df816127b7565b9392505050565b5f805f805f60a086880312156127fa575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b5f6020828403121561282d575f80fd5b81356127df81612724565b5f805f6060848603121561284a575f80fd5b83359250602084013561285c816127b7565b9150604084013561286c816127b7565b809150509250925092565b5f8060408385031215612888575f80fd5b823561289381612724565b915060208301356128a3816127b7565b809150509250929050565b5f80604083850312156128bf575f80fd5b82356128ca81612724565b915060208301356128a381612724565b600181811c908216806128ee57607f821691505b60208210810361290c57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561299557815f190482111561297b5761297b612947565b8085161561298857918102915b93841c9390800290612960565b509250929050565b5f826129ab57506001610918565b816129b757505f610918565b81600181146129cd57600281146129d7576129f3565b6001915050610918565b60ff8411156129e8576129e8612947565b50506001821b610918565b5060208310610133831016604e8410600b8410161715612a16575081810a610918565b612a20838361295b565b805f1904821115612a3357612a33612947565b029392505050565b5f6127df60ff84168361299d565b634e487b7160e01b5f52601260045260245ffd5b5f82612a6b57612a6b612a49565b500490565b808202811582820484141761091857610918612947565b8082018082111561091857610918612947565b6020808252602a908201527f43534c543a20546f74616c20466565732063616e6e6f742065786365656420746040820152696865206d6178696d756d60b01b606082015260800190565b5f60208284031215612af4575f80fd5b5051919050565b5f60208284031215612b0b575f80fd5b81516127df816127b7565b5f60018201612b2757612b27612947565b5060010190565b8181038181111561091857610918612947565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612b65575f80fd5b81516127df81612724565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015612bc05784516001600160a01b031683529383019391830191600101612b9b565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82612bef57612bef612a49565b50069056fea2646970667358221220027575fc8786120347154a979533ba6035bb9e665295ceedc15d9d56bac64ae564736f6c63430008160033

Deployed Bytecode

0x60806040526004361061028e575f3560e01c806370a0823111610155578063aa4bde28116100be578063d2fcc00111610078578063d2fcc001146107ad578063dd11247e146107cc578063dd62ed3e146107e1578063e2f4560514610825578063f2fde38b1461083a578063f9d0831a14610859575f80fd5b8063aa4bde281461071b578063af0b4b2714610730578063b3f0067414610745578063b3ff277d14610764578063bb8c3ee014610779578063c02466681461078e575f80fd5b80638a8c523c1161010f5780638a8c523c146106615780638da5cb5b1461067557806395d89b4114610692578063a457c2d7146106a6578063a8a69b9d146106c5578063a9059cbb146106fc575f80fd5b806370a08231146105a8578063715018a6146105dc578063740db6b8146105f05780637c08b964146105f85780638047a97a14610617578063880f7b0814610642575f80fd5b8063313ce567116101f75780634fbee193116101b15780634fbee193146104d65780635922fd361461050d5780635f5a7ab91461052c57806365048d08146105415780636ca4b712146105565780636ddd17131461058a575f80fd5b8063313ce56714610413578063395093511461042e578063457ffca21461044d57806349bd5a5e1461046c5780634ada218b1461048b5780634c443127146104ab575f80fd5b80631f41f3a8116102485780631f41f3a81461037157806321a9d82a1461038657806323b872dd1461039f5780632441238e146103be57806327a14fc2146103d35780632a6c7dba146103f4575f80fd5b806304c069601461029957806306fdde03146102c1578063095ea7b3146102e25780630fa1eeab146103115780631694505e1461032657806318160ddd1461035d575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102ae600d5481565b6040519081526020015b60405180910390f35b3480156102cc575f80fd5b506102d5610878565b6040516102b891906126d8565b3480156102ed575f80fd5b506103016102fc366004612738565b610908565b60405190151581526020016102b8565b34801561031c575f80fd5b506102ae60135481565b348015610331575f80fd5b50600754610345906001600160a01b031681565b6040516001600160a01b0390911681526020016102b8565b348015610368575f80fd5b506002546102ae565b34801561037c575f80fd5b506102ae60175481565b348015610391575f80fd5b50601b546103019060ff1681565b3480156103aa575f80fd5b506103016103b9366004612762565b61091e565b3480156103c9575f80fd5b506102ae60155481565b3480156103de575f80fd5b506103f26103ed3660046127a0565b6109d2565b005b3480156103ff575f80fd5b506103f261040e3660046127c4565b610ad8565b34801561041e575f80fd5b50604051601281526020016102b8565b348015610439575f80fd5b50610301610448366004612738565b610bb7565b348015610458575f80fd5b506103f26104673660046127e6565b610bf2565b348015610477575f80fd5b50600854610345906001600160a01b031681565b348015610496575f80fd5b50601954610301906301000000900460ff1681565b3480156104b6575f80fd5b506102ae6104c536600461281d565b600c6020525f908152604090205481565b3480156104e1575f80fd5b506103016104f036600461281d565b6001600160a01b03165f9081526009602052604090205460ff1690565b348015610518575f80fd5b506103f2610527366004612838565b610d3a565b348015610537575f80fd5b506102ae60105481565b34801561054c575f80fd5b506102ae60125481565b348015610561575f80fd5b506103456105703660046127a0565b600a6020525f90815260409020546001600160a01b031681565b348015610595575f80fd5b5060195461030190610100900460ff1681565b3480156105b3575f80fd5b506102ae6105c236600461281d565b6001600160a01b03165f9081526020819052604090205490565b3480156105e7575f80fd5b506103f2610e5d565b6103f2610ed0565b348015610603575f80fd5b506103f261061236600461281d565b611024565b348015610622575f80fd5b506102ae61063136600461281d565b600b6020525f908152604090205481565b34801561064d575f80fd5b506019546103019062010000900460ff1681565b34801561066c575f80fd5b506103f2611108565b348015610680575f80fd5b506005546001600160a01b0316610345565b34801561069d575f80fd5b506102d56111e8565b3480156106b1575f80fd5b506103016106c0366004612738565b6111f7565b3480156106d0575f80fd5b506103016106df36600461281d565b6001600160a01b03165f908152601a602052604090205460ff1690565b348015610707575f80fd5b50610301610716366004612738565b61128f565b348015610726575f80fd5b506102ae601c5481565b34801561073b575f80fd5b506102ae600f5481565b348015610750575f80fd5b50601654610345906001600160a01b031681565b34801561076f575f80fd5b506102ae60145481565b348015610784575f80fd5b506102ae60115481565b348015610799575f80fd5b506103f26107a8366004612877565b61129b565b3480156107b8575f80fd5b506103f26107c7366004612877565b611324565b3480156107d7575f80fd5b506102ae600e5481565b3480156107ec575f80fd5b506102ae6107fb3660046128ae565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610830575f80fd5b506102ae60185481565b348015610845575f80fd5b506103f261085436600461281d565b611478565b348015610864575f80fd5b506103f261087336600461281d565b611562565b606060038054610887906128da565b80601f01602080910402602001604051908101604052809291908181526020018280546108b3906128da565b80156108fe5780601f106108d5576101008083540402835291602001916108fe565b820191905f5260205f20905b8154815290600101906020018083116108e157829003601f168201915b5050505050905090565b5f610914338484611687565b5060015b92915050565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f1981146109bc57828110156109af5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109bc8533858403611687565b6109c78585856117aa565b506001949350505050565b6005546001600160a01b031633146109fc5760405162461bcd60e51b81526004016109a690612912565b6064610a0a6012600a612a3b565b600254610a179190612a5d565b610a219190612a5d565b811015610a865760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060448201526c6c6f776572207468616e20312560981b60648201526084016109a6565b610a926012600a612a3b565b610a9c9082612a70565b601c8190556040519081527f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb5942906020015b60405180910390a150565b6005546001600160a01b03163314610b025760405162461bcd60e51b81526004016109a690612912565b601b5460ff16151581151503610b705760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060448201526c746f207468617420737461746560981b60648201526084016109a6565b601b805460ff191682151590811790915560405160ff909116151581527f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f190602001610acd565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610914918590610bed908690612a87565b611687565b6005546001600160a01b03163314610c1c5760405162461bcd60e51b81526004016109a690612912565b6032821015610c6d5760405162461bcd60e51b815260206004820152601f60248201527f4d757374206265206d6178696d756d20322520746f74616c20737570706c790060448201526064016109a6565b601184905560128590556013839055601782905560108190556019841115610ca75760405162461bcd60e51b81526004016109a690612a9a565b60196012541115610cca5760405162461bcd60e51b81526004016109a690612a9a565b60196013541115610ced5760405162461bcd60e51b81526004016109a690612a9a565b7f53482196ef67ac615caab1c3eca2c270acbfdcd75e57c5f24c1b98b10c8e6e04601254601154604051610d2b929190918252602082015260400190565b60405180910390a15050505050565b6005546001600160a01b03163314610d645760405162461bcd60e51b81526004016109a690612912565b620f4240610d7160025490565b610d7b9190612a5d565b8311610dfd5760405162461bcd60e51b815260206004820152604560248201527f43534c543a2053776170546f6b656e734174416d6f756e74206d75737420626560448201527f2067726561746572207468616e20302e3030303125206f6620746f74616c20736064820152647570706c7960d81b608482015260a4016109a6565b60188390556019805462ffff0019166101008415150262ff000019161762010000831515021790556040518381527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b1459060200160405180910390a1505050565b6005546001600160a01b03163314610e875760405162461bcd60e51b81526004016109a690612912565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b610ed8611ccd565b335f908152600b6020526040902054610f295760405162461bcd60e51b81526020600482015260136024820152722cb7ba903430bb32903737903bb4b73997171760691b60448201526064016109a6565b335f908152600b6020526040902054471015610f935760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f7567682062616c616e63652c2074727920616e6f746865722060448201526374696d6560e01b60648201526084016109a6565b335f908152600c6020526040902054421015610fe95760405162461bcd60e51b81526020600482015260156024820152742cb7ba9031b0b73737ba1031b630b4b6903cb2ba1760591b60448201526064016109a6565b335f818152600b60209081526040808320805490849055600c909252822091909155906110169082611cf7565b50506110226001600655565b565b6005546001600160a01b0316331461104e5760405162461bcd60e51b81526004016109a690612912565b6001600160a01b0381166110ba5760405162461bcd60e51b815260206004820152602d60248201527f43534c543a204665652072656365697665722063616e6e6f742062652074686560448201526c207a65726f206164647265737360981b60648201526084016109a6565b601680546001600160a01b0319166001600160a01b0383169081179091556040519081527f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990602001610acd565b6005546001600160a01b031633146111325760405162461bcd60e51b81526004016109a690612912565b6019546301000000900460ff161561118c5760405162461bcd60e51b815260206004820152601e60248201527f43534c543a2054726164696e6720616c726561647920656e61626c65642e000060448201526064016109a6565b60198054630101010063ffffff0019909116179081905542600f55604051630100000090910460ff16151581527fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a9060200160405180910390a1565b606060048054610887906128da565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156112785760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109a6565b6112853385858403611687565b5060019392505050565b5f6109143384846117aa565b6005546001600160a01b031633146112c55760405162461bcd60e51b81526004016109a690612912565b6001600160a01b0382165f81815260096020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791015b60405180910390a25050565b6005546001600160a01b0316331461134e5760405162461bcd60e51b81526004016109a690612912565b6001600160a01b0382165f908152601a602052604090205481151560ff9091161515036113c95760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c72656164792073657420746f207468617420736044820152637461746560e01b60648201526084016109a6565b306001600160a01b038316036114215760405162461bcd60e51b815260206004820152601760248201527f43616e277420736574207468697320616464726573732e00000000000000000060448201526064016109a6565b6001600160a01b0382165f818152601a6020908152604091829020805460ff191685151590811790915591519182527f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c9101611318565b6005546001600160a01b031633146114a25760405162461bcd60e51b81526004016109a690612912565b6001600160a01b0381166115075760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109a6565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461158c5760405162461bcd60e51b81526004016109a690612912565b6001600160a01b0381166115a8576115a43347611cf7565b5050565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156115f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116189190612ae4565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611660573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a49190612afb565b50565b6001600160a01b0383166116e95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a6565b6001600160a01b03821661174a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a6565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661180c5760405162461bcd60e51b8152602060048201526024808201527f43534c543a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a6565b6001600160a01b03821661186d5760405162461bcd60e51b815260206004820152602260248201527f43534c543a207472616e7366657220746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a6565b6019546301000000900460ff168061189c57506001600160a01b0383165f9081526009602052604090205460ff165b806118be57506001600160a01b0382165f9081526009602052604090205460ff165b61190a5760405162461bcd60e51b815260206004820152601e60248201527f43534c543a2054726164696e67206e6f742079657420656e61626c656421000060448201526064016109a6565b805f036119215761191c83835f611da1565b505050565b305f9081526020819052604090205460185481108015908190611947575060195460ff16155b801561196057506008546001600160a01b038581169116145b801561198457506001600160a01b0385165f9081526009602052604090205460ff16155b80156119975750601954610100900460ff165b156119c0576019805460ff191660011790556018546119b590611f6e565b6019805460ff191690555b60195462010000900460ff1680156119db575060195460ff16155b80156119f457506008546001600160a01b038581169116145b8015611a0e5750601054600f54611a0b9190612a87565b42115b8015611a1957505f47115b15611a3e576019805460ff19166001179055611a3361214a565b6019805460ff191690555b6001600160a01b0385165f9081526009602052604081205460ff1680611a7b57506001600160a01b0385165f9081526009602052604090205460ff165b80611a88575060195460ff165b15611a9457505f611b8a565b6008546001600160a01b0390811690871603611b1c5760195462010000900460ff168015611ad15750601754600254611acd9190612a5d565b8410155b15611b1357600e80545f908152600a6020526040812080546001600160a01b0319166001600160a01b03891617905581549190611b0d83612b16565b91905055505b50601154611b8a565b6008546001600160a01b0390811690861603611b6057506012546001600160a01b0386165f908152600b60209081526040808320839055600c909152812055611b8a565b506013546001600160a01b0386165f908152600b60209081526040808320839055600c9091528120555b8015611bc2575f6064611b9d8387612a70565b611ba79190612a5d565b9050611bb38186612b2e565b9450611bc0873083611da1565b505b601b5460ff1615611cba576001600160a01b0386165f908152601a602052604090205460ff16158015611c0d57506001600160a01b0385165f908152601a602052604090205460ff16155b8015611c2757506008546001600160a01b03868116911614155b15611cba576001600160a01b0385165f90815260208190526040902054601c54611c518683612a87565b1115611cb85760405162461bcd60e51b815260206004820152603060248201527f4d617857616c6c65743a20526563697069656e7420657863656564732074686560448201526f081b585e15d85b1b195d105b5bdd5b9d60821b60648201526084016109a6565b505b611cc5868686611da1565b505050505050565b600260065403611cf057604051633ee5aeb560e01b815260040160405180910390fd5b6002600655565b5f81471015611d485760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109a6565b5f836001600160a01b0316836040515f6040518083038185875af1925050503d805f8114611d91576040519150601f19603f3d011682016040523d82523d5f602084013e611d96565b606091505b509095945050505050565b6001600160a01b038316611e055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109a6565b6001600160a01b038216611e675760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109a6565b6001600160a01b0383165f9081526020819052604090205481811015611ede5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109a6565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611f14908490612a87565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f6091815260200190565b60405180910390a350505050565b60408051600280825260608201835247925f92919060208301908036833701905050905030815f81518110611fa557611fa5612b41565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ffc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120209190612b55565b8160018151811061203357612033612b41565b6001600160a01b03928316602091820292909201015260075460405163791ac94760e01b815291169063791ac947906120789086905f90869030904290600401612b70565b5f604051808303815f87803b15801561208f575f80fd5b505af19250505080156120a0575060015b6120a957505050565b5f6120b48347612b2e565b90505f6012546011546120c79190612a87565b90505f6120d5826002612a87565b6120df8385612a70565b6120e99190612a5d565b9050801561210957601654612107906001600160a01b031682611cf7565b505b60408051878152602081018590527f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b910160405180910390a1505050505050565b612152611ccd565b42600f55600d54600e545f9161216791612b2e565b90505f601454476121789190612b2e565b90505f612186600583612a5d565b90508160145f8282546121999190612a87565b909155505f90506121ab846001612a87565b6121b6600143612b2e565b600e54604080519240602084015244908301524260608084019190915233901b6001600160601b0319166080830152609482015260b401604051602081830303815290604052805190602001205f1c61220f9190612be1565b90505f61221d856001612a87565b44612229600143612b2e565b600e5460405161226f9392409142913390602001948552602085019390935260408401919091526060808401919091521b6001600160601b031916608082015260940190565b604051602081830303815290604052805190602001205f1c6122919190612be1565b90505f61229f866001612a87565b424433600e546001436122b29190612b2e565b6040805160208101969096528501939093526001600160601b0319606092831b1691840191909152607483015240609482015260b401604051602081830303815290604052805190602001205f1c61230a9190612be1565b90505f612318876001612a87565b3342612325600143612b2e565b600e5460405160609490941b6001600160601b03191660208501526034840192909252406054830152607482015244609482015260b401604051602081830303815290604052805190602001205f1c61237e9190612be1565b90505f61238c886001612a87565b600e5433444261239d600143612b2e565b406040516020016123dd95949392919094855260609390931b6001600160601b031916602085015260348401919091526054830152607482015260940190565b604051602081830303815290604052805190602001205f1c6123ff9190612be1565b90505f600a5f87600d546124139190612a87565b81526020019081526020015f205f9054906101000a90046001600160a01b031690505f600a5f87600d546124479190612a87565b81526020019081526020015f205f9054906101000a90046001600160a01b031690505f600a5f87600d5461247b9190612a87565b81526020019081526020015f205f9054906101000a90046001600160a01b031690505f600a5f87600d546124af9190612a87565b81526020019081526020015f205f9054906101000a90046001600160a01b031690505f600a5f87600d546124e39190612a87565b815260208101919091526040015f2054600e54600d556001600160a01b0316905061251042610e10612a87565b6001600160a01b0386165f908152600c6020908152604080832093909355600b905290812080548d9290612545908490612a87565b90915550612557905042610e10612a87565b6001600160a01b0385165f908152600c6020908152604080832093909355600b905290812080548d929061258c908490612a87565b9091555061259e905042610e10612a87565b6001600160a01b0384165f908152600c6020908152604080832093909355600b905290812080548d92906125d3908490612a87565b909155506125e5905042610e10612a87565b6001600160a01b0383165f908152600c6020908152604080832093909355600b905290812080548d929061261a908490612a87565b9091555061262c905042610e10612a87565b6001600160a01b0382165f908152600c6020908152604080832093909355600b905290812080548d9290612661908490612a87565b9091555050604080516001600160a01b03878116825286811660208301528581168284015284811660608301528316608082015290517f85b2075b4c34c708fb90412ebbf4f383c8683a8b75ecce1b6a5bafcd211016bc9181900360a00190a1505050505050505050505050506110226001600655565b5f602080835283518060208501525f5b81811015612704578581018301518582016040015282016126e8565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611684575f80fd5b5f8060408385031215612749575f80fd5b823561275481612724565b946020939093013593505050565b5f805f60608486031215612774575f80fd5b833561277f81612724565b9250602084013561278f81612724565b929592945050506040919091013590565b5f602082840312156127b0575f80fd5b5035919050565b8015158114611684575f80fd5b5f602082840312156127d4575f80fd5b81356127df816127b7565b9392505050565b5f805f805f60a086880312156127fa575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b5f6020828403121561282d575f80fd5b81356127df81612724565b5f805f6060848603121561284a575f80fd5b83359250602084013561285c816127b7565b9150604084013561286c816127b7565b809150509250925092565b5f8060408385031215612888575f80fd5b823561289381612724565b915060208301356128a3816127b7565b809150509250929050565b5f80604083850312156128bf575f80fd5b82356128ca81612724565b915060208301356128a381612724565b600181811c908216806128ee57607f821691505b60208210810361290c57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561299557815f190482111561297b5761297b612947565b8085161561298857918102915b93841c9390800290612960565b509250929050565b5f826129ab57506001610918565b816129b757505f610918565b81600181146129cd57600281146129d7576129f3565b6001915050610918565b60ff8411156129e8576129e8612947565b50506001821b610918565b5060208310610133831016604e8410600b8410161715612a16575081810a610918565b612a20838361295b565b805f1904821115612a3357612a33612947565b029392505050565b5f6127df60ff84168361299d565b634e487b7160e01b5f52601260045260245ffd5b5f82612a6b57612a6b612a49565b500490565b808202811582820484141761091857610918612947565b8082018082111561091857610918612947565b6020808252602a908201527f43534c543a20546f74616c20466565732063616e6e6f742065786365656420746040820152696865206d6178696d756d60b01b606082015260800190565b5f60208284031215612af4575f80fd5b5051919050565b5f60208284031215612b0b575f80fd5b81516127df816127b7565b5f60018201612b2757612b27612947565b5060010190565b8181038181111561091857610918612947565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612b65575f80fd5b81516127df81612724565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015612bc05784516001600160a01b031683529383019391830191600101612b9b565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82612bef57612bef612a49565b50069056fea2646970667358221220027575fc8786120347154a979533ba6035bb9e665295ceedc15d9d56bac64ae564736f6c63430008160033

Deployed Bytecode Sourcemap

10560:13815:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10963:31;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;10963:31:0;;;;;;;;4052:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4966:169::-;;;;;;;;;;-1:-1:-1;4966:169:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;4966:169:0;1205:187:1;11173:29:0;;;;;;;;;;;;;;;;10660:41;;;;;;;;;;-1:-1:-1;10660:41:0;;;;-1:-1:-1;;;;;10660:41:0;;;;;;-1:-1:-1;;;;;1586:32:1;;;1568:51;;1556:2;1541:18;10660:41:0;1397:228:1;4373:108:0;;;;;;;;;;-1:-1:-1;4461:12:0;;4373:108;;11318:30;;;;;;;;;;;;;;;;22902:36;;;;;;;;;;-1:-1:-1;22902:36:0;;;;;;;;5143:573;;;;;;;;;;-1:-1:-1;5143:573:0;;;;;:::i;:::-;;:::i;11242:33::-;;;;;;;;;;;;;;;;23480:340;;;;;;;;;;-1:-1:-1;23480:340:0;;;;;:::i;:::-;;:::i;:::-;;23192:280;;;;;;;;;;-1:-1:-1;23192:280:0;;;;;:::i;:::-;;:::i;4272:93::-;;;;;;;;;;-1:-1:-1;4272:93:0;;4355:2;2787:36:1;;2775:2;2760:18;4272:93:0;2645:184:1;5724:215:0;;;;;;;;;;-1:-1:-1;5724:215:0;;;;;:::i;:::-;;:::i;17437:725::-;;;;;;;;;;-1:-1:-1;17437:725:0;;;;;:::i;:::-;;:::i;10708:29::-;;;;;;;;;;-1:-1:-1;10708:29:0;;;;-1:-1:-1;;;;;10708:29:0;;;18542:26;;;;;;;;;;-1:-1:-1;18542:26:0;;;;;;;;;;;10909:45;;;;;;;;;;-1:-1:-1;10909:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;17242:125;;;;;;;;;;-1:-1:-1;17242:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;17331:28:0;17307:4;17331:28;;;:19;:28;;;;;;;;;17242:125;21538:422;;;;;;;;;;-1:-1:-1;21538:422:0;;;;;:::i;:::-;;:::i;11072:27::-;;;;;;;;;;;;;;;;11139:25;;;;;;;;;;;;;;;;10806:49;;;;;;;;;;-1:-1:-1;10806:49:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;10806:49:0;;;11431:26;;;;;;;;;;-1:-1:-1;11431:26:0;;;;;;;;;;;4489:127;;;;;;;;;;-1:-1:-1;4489:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4590:18:0;4563:7;4590:18;;;;;;;;;;;;4489:127;3241:148;;;;;;;;;;;;;:::i;16570:471::-;;;:::i;18224:256::-;;;;;;;;;;-1:-1:-1;18224:256:0;;;;;:::i;:::-;;:::i;10862:40::-;;;;;;;;;;-1:-1:-1;10862:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;11464:26;;;;;;;;;;-1:-1:-1;11464:26:0;;;;;;;;;;;18577:298;;;;;;;;;;;;;:::i;3027:79::-;;;;;;;;;;-1:-1:-1;3092:6:0;;-1:-1:-1;;;;;3092:6:0;3027:79;;4160:104;;;;;;;;;;;;;:::i;5947:413::-;;;;;;;;;;-1:-1:-1;5947:413:0;;;;;:::i;:::-;;:::i;24227:145::-;;;;;;;;;;-1:-1:-1;24227:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;24326:38:0;24302:4;24326:38;;;:29;:38;;;;;;;;;24227:145;4624:175;;;;;;;;;;-1:-1:-1;4624:175:0;;;;;:::i;:::-;;:::i;22945:30::-;;;;;;;;;;;;;;;;11038:27;;;;;;;;;;;;;;;;11284;;;;;;;;;;-1:-1:-1;11284:27:0;;;;-1:-1:-1;;;;;11284:27:0;;;11209:24;;;;;;;;;;;;;;;;11108;;;;;;;;;;;;;;;;17049:185;;;;;;;;;;-1:-1:-1;17049:185:0;;;;;:::i;:::-;;:::i;23828:391::-;;;;;;;;;;-1:-1:-1;23828:391:0;;;;;:::i;:::-;;:::i;11001:28::-;;;;;;;;;;;;;;;;4807:151;;;;;;;;;;-1:-1:-1;4807:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4923:18:0;;;4896:7;4923:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4807:151;11357:34;;;;;;;;;;;;;;;;3397:244;;;;;;;;;;-1:-1:-1;3397:244:0;;;;;:::i;:::-;;:::i;14079:300::-;;;;;;;;;;-1:-1:-1;14079:300:0;;;;;:::i;:::-;;:::i;4052:100::-;4106:13;4139:5;4132:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4052:100;:::o;4966:169::-;5049:4;5066:39;2430:10;5089:7;5098:6;5066:8;:39::i;:::-;-1:-1:-1;5123:4:0;4966:169;;;;;:::o;5143:573::-;-1:-1:-1;;;;;5327:19:0;;5283:4;5327:19;;;:11;:19;;;;;;;;2430:10;5327:33;;;;;;;;-1:-1:-1;;5375:37:0;;5371:265;;5457:6;5437:16;:26;;5429:79;;;;-1:-1:-1;;;5429:79:0;;5569:2:1;5429:79:0;;;5551:21:1;5608:2;5588:18;;;5581:30;5647:34;5627:18;;;5620:62;-1:-1:-1;;;5698:18:1;;;5691:38;5746:19;;5429:79:0;;;;;;;;;5552:57;5561:6;2430:10;5602:6;5583:16;:25;5552:8;:57::i;:::-;5648:36;5658:6;5666:9;5677:6;5648:9;:36::i;:::-;-1:-1:-1;5704:4:0;;5143:573;-1:-1:-1;;;;5143:573:0:o;23480:340::-;3154:6;;-1:-1:-1;;;;;3154:6:0;2430:10;3154:22;3146:67;;;;-1:-1:-1;;;3146:67:0;;;;;;;:::i;:::-;23631:3:::1;23610:16;4355:2:::0;23610::::1;:16;:::i;:::-;4461:12:::0;;23593:34:::1;;;;:::i;:::-;23592:42;;;;:::i;:::-;23572:16;:62;;23564:120;;;::::0;-1:-1:-1;;;23564:120:0;;8105:2:1;23564:120:0::1;::::0;::::1;8087:21:1::0;8144:2;8124:18;;;8117:30;8183:34;8163:18;;;8156:62;-1:-1:-1;;;8234:18:1;;;8227:43;8287:19;;23564:120:0::1;7903:409:1::0;23564:120:0::1;23733:16;4355:2:::0;23733::::1;:16;:::i;:::-;23713:37;::::0;:16;:37:::1;:::i;:::-;23695:15;:55:::0;;;23768:44:::1;::::0;160:25:1;;;23768:44:0::1;::::0;148:2:1;133:18;23768:44:0::1;;;;;;;;23480:340:::0;:::o;23192:280::-;3154:6;;-1:-1:-1;;;;;3154:6:0;2430:10;3154:22;3146:67;;;;-1:-1:-1;;;3146:67:0;;;;;;;:::i;:::-;23286:21:::1;::::0;::::1;;23276:31;;::::0;::::1;;::::0;23268:88:::1;;;::::0;-1:-1:-1;;;23268:88:0;;8692:2:1;23268:88:0::1;::::0;::::1;8674:21:1::0;8731:2;8711:18;;;8704:30;8770:34;8750:18;;;8743:62;-1:-1:-1;;;8821:18:1;;;8814:43;8874:19;;23268:88:0::1;8490:409:1::0;23268:88:0::1;23367:21;:30:::0;;-1:-1:-1;;23367:30:0::1;::::0;::::1;;::::0;;::::1;::::0;;;23415:49:::1;::::0;23367:30:::1;23442:21:::0;;;1370:14:1;1363:22;1345:41;;23415:49:0::1;::::0;1333:2:1;1318:18;23415:49:0::1;1205:187:1::0;5724:215:0;2430:10;5812:4;5861:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5861:34:0;;;;;;;;;;5812:4;;5829:80;;5852:7;;5861:47;;5898:10;;5861:47;:::i;:::-;5829:8;:80::i;17437:725::-;3154:6;;-1:-1:-1;;;;;3154:6:0;2430:10;3154:22;3146:67;;;;-1:-1:-1;;;3146:67:0;;;;;;;:::i;:::-;17624:2:::1;17605:15;:21;;17597:65;;;::::0;-1:-1:-1;;;17597:65:0;;9236:2:1;17597:65:0::1;::::0;::::1;9218:21:1::0;9275:2;9255:18;;;9248:30;9314:33;9294:18;;;9287:61;9365:18;;17597:65:0::1;9034:355:1::0;17597:65:0::1;17683:8;:20:::0;;;17714:9:::1;:22:::0;;;17747:13:::1;:30:::0;;;17788:14:::1;:32:::0;;;17831:11:::1;:26:::0;;;17890:2:::1;17878:14:::0;::::1;;17870:69;;;;-1:-1:-1::0;;;17870:69:0::1;;;;;;;:::i;:::-;17971:2;17958:9;;:15;;17950:70;;;;-1:-1:-1::0;;;17950:70:0::1;;;;;;;:::i;:::-;18056:2;18039:13;;:19;;18031:74;;;;-1:-1:-1::0;;;18031:74:0::1;;;;;;;:::i;:::-;18123:31;18134:9;;18145:8;;18123:31;;;;;;9979:25:1::0;;;10035:2;10020:18;;10013:34;9967:2;9952:18;;9805:248;18123:31:0::1;;;;;;;;17437:725:::0;;;;;:::o;21538:422::-;3154:6;;-1:-1:-1;;;;;3154:6:0;2430:10;3154:22;3146:67;;;;-1:-1:-1;;;3146:67:0;;;;;;;:::i;:::-;21691:9:::1;21675:13;4461:12:::0;;;4373:108;21675:13:::1;:25;;;;:::i;:::-;21663:9;:37;21655:119;;;::::0;-1:-1:-1;;;21655:119:0;;10260:2:1;21655:119:0::1;::::0;::::1;10242:21:1::0;10299:2;10279:18;;;10272:30;10338:34;10318:18;;;10311:62;10409:34;10389:18;;;10382:62;-1:-1:-1;;;10460:19:1;;;10453:36;10506:19;;21655:119:0::1;10058:473:1::0;21655:119:0::1;21785:18;:30:::0;;;21826:11:::1;:26:::0;;-1:-1:-1;;21863:26:0;21826::::1;::::0;::::1;;;-1:-1:-1::0;;21863:26:0;;;;::::1;;;;::::0;;21907:45:::1;::::0;160:25:1;;;21907:45:0::1;::::0;148:2:1;133:18;21907:45:0::1;;;;;;;21538:422:::0;;;:::o;3241:148::-;3154:6;;-1:-1:-1;;;;;3154:6:0;2430:10;3154:22;3146:67;;;;-1:-1:-1;;;3146:67:0;;;;;;;:::i;:::-;3332:6:::1;::::0;3311:40:::1;::::0;3348:1:::1;::::0;-1:-1:-1;;;;;3332:6:0::1;::::0;3311:40:::1;::::0;3348:1;;3311:40:::1;3362:6;:19:::0;;-1:-1:-1;;;;;;3362:19:0::1;::::0;;3241:148::o;16570:471::-;9645:21;:19;:21::i;:::-;16645:10:::1;16659:1;16640:16:::0;;;:4:::1;:16;::::0;;;;;16632:52:::1;;;::::0;-1:-1:-1;;;16632:52:0;;10738:2:1;16632:52:0::1;::::0;::::1;10720:21:1::0;10777:2;10757:18;;;10750:30;-1:-1:-1;;;10796:18:1;;;10789:49;10855:18;;16632:52:0::1;10536:343:1::0;16632:52:0::1;16733:10;16728:16;::::0;;;:4:::1;:16;::::0;;;;;16703:21:::1;:41;;16695:90;;;::::0;-1:-1:-1;;;16695:90:0;;11086:2:1;16695:90:0::1;::::0;::::1;11068:21:1::0;11125:2;11105:18;;;11098:30;11164:34;11144:18;;;11137:62;-1:-1:-1;;;11215:18:1;;;11208:34;11259:19;;16695:90:0::1;10884:400:1::0;16695:90:0::1;16833:10;16823:21;::::0;;;:9:::1;:21;::::0;;;;;16804:15:::1;:40;;16796:74;;;::::0;-1:-1:-1;;;16796:74:0;;11491:2:1;16796:74:0::1;::::0;::::1;11473:21:1::0;11530:2;11510:18;;;11503:30;-1:-1:-1;;;11549:18:1;;;11542:51;11610:18;;16796:74:0::1;11289:345:1::0;16796:74:0::1;16905:10;16883:14;16900:16:::0;;;:4:::1;:16;::::0;;;;;;;;;16927:20;;;;16958:9:::1;:21:::0;;;;;:25;;;;16900:16;16996:37:::1;::::0;16900:16;16996:29:::1;:37::i;:::-;;16621:420;9689:20:::0;8980:1;10231:7;:21;10048:212;9689:20;16570:471::o;18224:256::-;3154:6;;-1:-1:-1;;;;;3154:6:0;2430:10;3154:22;3146:67;;;;-1:-1:-1;;;3146:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18310:26:0;::::1;18302:84;;;::::0;-1:-1:-1;;;18302:84:0;;11841:2:1;18302:84:0::1;::::0;::::1;11823:21:1::0;11880:2;11860:18;;;11853:30;11919:34;11899:18;;;11892:62;-1:-1:-1;;;11970:18:1;;;11963:43;12023:19;;18302:84:0::1;11639:409:1::0;18302:84:0::1;18397:11;:26:::0;;-1:-1:-1;;;;;;18397:26:0::1;-1:-1:-1::0;;;;;18397:26:0;::::1;::::0;;::::1;::::0;;;18441:31:::1;::::0;1568:51:1;;;18441:31:0::1;::::0;1556:2:1;1541:18;18441:31:0::1;1397:228:1::0;18577:298:0;3154:6;;-1:-1:-1;;;;;3154:6:0;2430:10;3154:22;3146:67;;;;-1:-1:-1;;;3146:67:0;;;;;;;:::i;:::-;18640:14:::1;::::0;;;::::1;;;18639:15;18631:58;;;::::0;-1:-1:-1;;;18631:58:0;;12255:2:1;18631:58:0::1;::::0;::::1;12237:21:1::0;12294:2;12274:18;;;12267:30;12333:32;12313:18;;;12306:60;12383:18;;18631:58:0::1;12053:354:1::0;18631:58:0::1;18700:14;:21:::0;;18761:18;-1:-1:-1;;18761:18:0;;;;;;;;18804:15:::1;18790:11;:29:::0;18837:30:::1;::::0;18700:21;18852:14;;::::1;18700:21;18852:14;1370::1::0;1363:22;1345:41;;18837:30:0::1;::::0;1333:2:1;1318:18;18837:30:0::1;;;;;;;18577:298::o:0;4160:104::-;4216:13;4249:7;4242:14;;;;;:::i;5947:413::-;2430:10;6040:4;6084:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6084:34:0;;;;;;;;;;6137:35;;;;6129:85;;;;-1:-1:-1;;;6129:85:0;;12614:2:1;6129:85:0;;;12596:21:1;12653:2;12633:18;;;12626:30;12692:34;12672:18;;;12665:62;-1:-1:-1;;;12743:18:1;;;12736:35;12788:19;;6129:85:0;12412:401:1;6129:85:0;6250:67;2430:10;6273:7;6301:15;6282:16;:34;6250:8;:67::i;:::-;-1:-1:-1;6348:4:0;;5947:413;-1:-1:-1;;;5947:413:0:o;4624:175::-;4710:4;4727:42;2430:10;4751:9;4762:6;4727:9;:42::i;17049:185::-;3154:6;;-1:-1:-1;;;;;3154:6:0;2430:10;3154:22;3146:67;;;;-1:-1:-1;;;3146:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17135:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;17135:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17192:34;;1345:41:1;;;17192:34:0::1;::::0;1318:18:1;17192:34:0::1;;;;;;;;17049:185:::0;;:::o;23828:391::-;3154:6;;-1:-1:-1;;;;;3154:6:0;2430:10;3154:22;3146:67;;;;-1:-1:-1;;;3146:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23928:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;:49;::::1;;:38;::::0;;::::1;:49;;::::0;23919:98:::1;;;::::0;-1:-1:-1;;;23919:98:0;;13020:2:1;23919:98:0::1;::::0;::::1;13002:21:1::0;13059:2;13039:18;;;13032:30;13098:34;13078:18;;;13071:62;-1:-1:-1;;;13149:18:1;;;13142:34;13193:19;;23919:98:0::1;12818:400:1::0;23919:98:0::1;24055:4;-1:-1:-1::0;;;;;24036:24:0;::::1;::::0;24028:60:::1;;;::::0;-1:-1:-1;;;24028:60:0;;13425:2:1;24028:60:0::1;::::0;::::1;13407:21:1::0;13464:2;13444:18;;;13437:30;13503:25;13483:18;;;13476:53;13546:18;;24028:60:0::1;13223:347:1::0;24028:60:0::1;-1:-1:-1::0;;;;;24101:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;;;;:48;;-1:-1:-1;;24101:48:0::1;::::0;::::1;;::::0;;::::1;::::0;;;24167:44;;1345:41:1;;;24167:44:0::1;::::0;1318:18:1;24167:44:0::1;1205:187:1::0;3397:244:0;3154:6;;-1:-1:-1;;;;;3154:6:0;2430:10;3154:22;3146:67;;;;-1:-1:-1;;;3146:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3486:22:0;::::1;3478:73;;;::::0;-1:-1:-1;;;3478:73:0;;13777:2:1;3478:73:0::1;::::0;::::1;13759:21:1::0;13816:2;13796:18;;;13789:30;13855:34;13835:18;;;13828:62;-1:-1:-1;;;13906:18:1;;;13899:36;13952:19;;3478:73:0::1;13575:402:1::0;3478:73:0::1;3588:6;::::0;3567:38:::1;::::0;-1:-1:-1;;;;;3567:38:0;;::::1;::::0;3588:6:::1;::::0;3567:38:::1;::::0;3588:6:::1;::::0;3567:38:::1;3616:6;:17:::0;;-1:-1:-1;;;;;;3616:17:0::1;-1:-1:-1::0;;;;;3616:17:0;;;::::1;::::0;;;::::1;::::0;;3397:244::o;14079:300::-;3154:6;;-1:-1:-1;;;;;3154:6:0;2430:10;3154:22;3146:67;;;;-1:-1:-1;;;3146:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14154:21:0;::::1;14150:127;;14192:52;14200:10;14222:21;14192:29;:52::i;:::-;;14079:300:::0;:::o;14150:127::-:1;14332:38;::::0;-1:-1:-1;;;14332:38:0;;14364:4:::1;14332:38;::::0;::::1;1568:51:1::0;-1:-1:-1;;;;;14297:22:0;::::1;::::0;::::1;::::0;14320:10:::1;::::0;14297:22;;14332:23:::1;::::0;1541:18:1;;14332:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14297:74;::::0;-1:-1:-1;;;;;;14297:74:0::1;::::0;;;;;;-1:-1:-1;;;;;14363:32:1;;;14297:74:0::1;::::0;::::1;14345:51:1::0;14412:18;;;14405:34;14318:18;;14297:74:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3224:1::-;14079:300:::0;:::o;7754:380::-;-1:-1:-1;;;;;7890:19:0;;7882:68;;;;-1:-1:-1;;;7882:68:0;;14902:2:1;7882:68:0;;;14884:21:1;14941:2;14921:18;;;14914:30;14980:34;14960:18;;;14953:62;-1:-1:-1;;;15031:18:1;;;15024:34;15075:19;;7882:68:0;14700:400:1;7882:68:0;-1:-1:-1;;;;;7969:21:0;;7961:68;;;;-1:-1:-1;;;7961:68:0;;15307:2:1;7961:68:0;;;15289:21:1;15346:2;15326:18;;;15319:30;15385:34;15365:18;;;15358:62;-1:-1:-1;;;15436:18:1;;;15429:32;15478:19;;7961:68:0;15105:398:1;7961:68:0;-1:-1:-1;;;;;8042:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8094:32;;160:25:1;;;8094:32:0;;133:18:1;8094:32:0;;;;;;;7754:380;;;:::o;18883:2647::-;-1:-1:-1;;;;;18979:18:0;;18971:67;;;;-1:-1:-1;;;18971:67:0;;15710:2:1;18971:67:0;;;15692:21:1;15749:2;15729:18;;;15722:30;15788:34;15768:18;;;15761:62;-1:-1:-1;;;15839:18:1;;;15832:34;15883:19;;18971:67:0;15508:400:1;18971:67:0;-1:-1:-1;;;;;19057:16:0;;19049:63;;;;-1:-1:-1;;;19049:63:0;;16115:2:1;19049:63:0;;;16097:21:1;16154:2;16134:18;;;16127:30;16193:34;16173:18;;;16166:62;-1:-1:-1;;;16244:18:1;;;16237:32;16286:19;;19049:63:0;15913:398:1;19049:63:0;19131:14;;;;;;;;:43;;-1:-1:-1;;;;;;19149:25:0;;;;;;:19;:25;;;;;;;;19131:43;:70;;;-1:-1:-1;;;;;;19178:23:0;;;;;;:19;:23;;;;;;;;19131:70;19123:113;;;;-1:-1:-1;;;19123:113:0;;16518:2:1;19123:113:0;;;16500:21:1;16557:2;16537:18;;;16530:30;16596:32;16576:18;;;16569:60;16646:18;;19123:113:0;16316:354:1;19123:113:0;19260:6;19270:1;19260:11;19256:93;;19288:28;19304:4;19310:2;19314:1;19288:15;:28::i;:::-;18883:2647;;;:::o;19256:93::-;19404:4;19355:28;4590:18;;;;;;;;;;;19462;;19438:42;;;;;;;19497:33;;-1:-1:-1;19522:8:0;;;;19521:9;19497:33;:69;;;;-1:-1:-1;19553:13:0;;-1:-1:-1;;;;;19547:19:0;;;19553:13;;19547:19;19497:69;:112;;;;-1:-1:-1;;;;;;19584:25:0;;;;;;:19;:25;;;;;;;;19583:26;19497:112;:140;;;;-1:-1:-1;19626:11:0;;;;;;;19497:140;19493:299;;;19664:8;:15;;-1:-1:-1;;19664:15:0;19675:4;19664:15;;;19723:18;;19708:34;;:14;:34::i;:::-;19764:8;:16;;-1:-1:-1;;19764:16:0;;;19493:299;19822:11;;;;;;;:37;;;;-1:-1:-1;19851:8:0;;;;19850:9;19822:37;:73;;;;-1:-1:-1;19882:13:0;;-1:-1:-1;;;;;19876:19:0;;;19882:13;;19876:19;19822:73;:133;;;;;19944:11;;19930;;:25;;;;:::i;:::-;19912:15;:43;19822:133;:175;;;;;19996:1;19972:21;:25;19822:175;19804:331;;;20024:8;:15;;-1:-1:-1;;20024:15:0;20035:4;20024:15;;;20068:18;:16;:18::i;:::-;20107:8;:16;;-1:-1:-1;;20107:16:0;;;19804:331;-1:-1:-1;;;;;20180:25:0;;20147:18;20180:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;20209:23:0;;;;;;:19;:23;;;;;;;;20180:52;:64;;;-1:-1:-1;20236:8:0;;;;20180:64;20176:635;;;-1:-1:-1;20274:1:0;20176:635;;;20305:13;;-1:-1:-1;;;;;20305:13:0;;;20297:21;;;;20293:518;;20339:11;;;;;;;:57;;;;-1:-1:-1;20381:14:0;;4461:12;;20365:30;;;;:::i;:::-;20354:6;:42;;20339:57;20335:163;;;20431:12;;;20417:27;;;;:13;:27;;;;;:32;;-1:-1:-1;;;;;;20417:32:0;-1:-1:-1;;;;;20417:32:0;;;;;20468:14;;;20431:12;20468:14;;;:::i;:::-;;;;;;20335:163;-1:-1:-1;20525:8:0;;20293:518;;;20561:13;;-1:-1:-1;;;;;20561:13:0;;;20555:19;;;;20551:260;;-1:-1:-1;20605:9:0;;-1:-1:-1;;;;;20629:10:0;;20642:1;20629:10;;;:4;:10;;;;;;;;:14;;;20658:9;:15;;;;;:19;20551:260;;;-1:-1:-1;20723:13:0;;-1:-1:-1;;;;;20751:10:0;;20764:1;20751:10;;;:4;:10;;;;;;;;:14;;;20780:9;:15;;;;;:19;20551:260;20827:14;;20823:183;;20858:12;20897:3;20874:19;20883:10;20874:6;:19;:::i;:::-;20873:27;;;;:::i;:::-;20858:42;-1:-1:-1;20924:13:0;20858:42;20924:6;:13;:::i;:::-;20915:22;;20952:42;20968:4;20982;20989;20952:15;:42::i;:::-;20843:163;20823:183;21022:21;;;;21018:459;;;-1:-1:-1;;;;;21075:35:0;;;;;;:29;:35;;;;;;;;21074:36;:92;;;;-1:-1:-1;;;;;;21133:33:0;;;;;;:29;:33;;;;;;;;21132:34;21074:92;:132;;;;-1:-1:-1;21193:13:0;;-1:-1:-1;;;;;21187:19:0;;;21193:13;;21187:19;;21074:132;21070:396;;;-1:-1:-1;;;;;4590:18:0;;21241:15;4590:18;;;;;;;;;;;21342:15;;21322:16;21332:6;4590:18;21322:16;:::i;:::-;:35;;21292:158;;;;-1:-1:-1;;;21292:158:0;;17150:2:1;21292:158:0;;;17132:21:1;17189:2;17169:18;;;17162:30;17228:34;17208:18;;;17201:62;-1:-1:-1;;;17279:18:1;;;17272:46;17335:19;;21292:158:0;16948:412:1;21292:158:0;21222:244;21070:396;21489:33;21505:4;21511:2;21515:6;21489:15;:33::i;:::-;18960:2570;;;18883:2647;;;:::o;9725:315::-;9023:1;9854:7;;:18;9850:88;;9896:30;;-1:-1:-1;;;9896:30:0;;;;;;;;;;;9850:88;9023:1;10015:7;:17;9725:315::o;2025:285::-;2104:4;2153:6;2128:21;:31;;2120:73;;;;-1:-1:-1;;;2120:73:0;;17567:2:1;2120:73:0;;;17549:21:1;17606:2;17586:18;;;17579:30;17645:31;17625:18;;;17618:59;17694:18;;2120:73:0;17365:353:1;2120:73:0;2207:12;2225:9;-1:-1:-1;;;;;2225:14:0;2247:6;2225:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2206:52:0;;2025:285;-1:-1:-1;;;;;2025:285:0:o;6368:614::-;-1:-1:-1;;;;;6508:20:0;;6500:70;;;;-1:-1:-1;;;6500:70:0;;18135:2:1;6500:70:0;;;18117:21:1;18174:2;18154:18;;;18147:30;18213:34;18193:18;;;18186:62;-1:-1:-1;;;18264:18:1;;;18257:35;18309:19;;6500:70:0;17933:401:1;6500:70:0;-1:-1:-1;;;;;6589:23:0;;6581:71;;;;-1:-1:-1;;;6581:71:0;;18541:2:1;6581:71:0;;;18523:21:1;18580:2;18560:18;;;18553:30;18619:34;18599:18;;;18592:62;-1:-1:-1;;;18670:18:1;;;18663:33;18713:19;;6581:71:0;18339:399:1;6581:71:0;-1:-1:-1;;;;;6689:17:0;;6665:21;6689:17;;;;;;;;;;;6725:23;;;;6717:74;;;;-1:-1:-1;;;6717:74:0;;18945:2:1;6717:74:0;;;18927:21:1;18984:2;18964:18;;;18957:30;19023:34;19003:18;;;18996:62;-1:-1:-1;;;19074:18:1;;;19067:36;19120:19;;6717:74:0;18743:402:1;6717:74:0;-1:-1:-1;;;;;6827:17:0;;;:9;:17;;;;;;;;;;;6847:22;;;6827:42;;6891:20;;;;;;;;:30;;6863:6;;6827:9;6891:30;;6863:6;;6891:30;:::i;:::-;;;;;;;;6956:9;-1:-1:-1;;;;;6939:35:0;6948:6;-1:-1:-1;;;;;6939:35:0;;6967:6;6939:35;;;;160:25:1;;148:2;133:18;;14:177;6939:35:0;;;;;;;;6489:493;6368:614;;;:::o;21968:857::-;22115:16;;;22129:1;22115:16;;;;;;;;22057:21;;22032:22;;22115:16;22129:1;22115:16;;;;;;;;;;-1:-1:-1;22115:16:0;22091:40;;22160:4;22142;22147:1;22142:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22142:23:0;;;:7;;;;;;;;;;:23;;;;22186:15;;:22;;;-1:-1:-1;;;22186:22:0;;;;:15;;;;;:20;;:22;;;;;22142:7;;22186:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22176:4;22181:1;22176:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22176:32:0;;;:7;;;;;;;;;:32;22225:15;;:196;;-1:-1:-1;;;22225:196:0;;:15;;;:66;;:196;;22306:11;;22225:15;;22348:4;;22375;;22395:15;;22225:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22221:243;;22446:7;;21968:857;:::o;22221:243::-;22476:18;22497:38;22521:14;22497:21;:38;:::i;:::-;22476:59;;22546:12;22573:9;;22562:8;;:20;;;;:::i;:::-;22546:37;-1:-1:-1;22594:22:0;22642:8;22546:37;22649:1;22642:8;:::i;:::-;22619:19;22633:4;22619:10;:19;:::i;:::-;:32;;;;:::i;:::-;22594:57;-1:-1:-1;22668:18:0;;22664:97;;22711:11;;22703:46;;-1:-1:-1;;;;;22711:11:0;22734:14;22703:30;:46::i;:::-;;22664:97;22778:39;;;9979:25:1;;;10035:2;10020:18;;10013:34;;;22778:39:0;;9952:18:1;22778:39:0;;;;;;;22021:804;;;;;21968:857;:::o;14387:2175::-;9645:21;:19;:21::i;:::-;14462:15:::1;14448:11;:29:::0;14524:15:::1;::::0;14509:12:::1;::::0;14488:18:::1;::::0;14509:30:::1;::::0;::::1;:::i;:::-;14488:51;;14552:15;14594:8;;14570:21;:32;;;;:::i;:::-;14552:50:::0;-1:-1:-1;14613:16:0::1;14632:11;14642:1;14552:50:::0;14632:11:::1;:::i;:::-;14613:30;;14668:7;14656:8;;:19;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;14780:13:0::1;::::0;-1:-1:-1;14926:14:0::1;:10:::0;14939:1:::1;14926:14;:::i;:::-;14841:16;14856:1;14841:12;:16;:::i;:::-;14907:12;::::0;14814:106:::1;::::0;;14831:27;::::1;14814:106;::::0;::::1;20896:19:1::0;14860:16:0::1;20931:12:1::0;;;20924:28;14878:15:0::1;20968:12:1::0;;;;20961:28;;;;14895:10:0::1;21023:15:1::0;;-1:-1:-1;;;;;;21019:53:1;21005:12;;;20998:75;21089:13;;;21082:29;21127:13;;14814:106:0::1;;;;;;;;;;;;14804:117;;;;;;14796:126;;:145;;;;:::i;:::-;14780:161:::0;-1:-1:-1;14952:13:0::1;15098:14;:10:::0;15111:1:::1;15098:14;:::i;:::-;15003:16;15031;15046:1;15031:12;:16;:::i;:::-;15067:12;::::0;14986:106:::1;::::0;::::1;::::0;;15021:27:::1;::::0;15050:15:::1;::::0;15081:10:::1;::::0;14986:106:::1;;21509:19:1::0;;;21553:2;21544:12;;21537:28;;;;21590:2;21581:12;;21574:28;;;;21627:2;21618:12;;;21611:28;;;;21674:15;-1:-1:-1;;;;;;21670:53:1;21664:3;21655:13;;21648:76;21749:3;21740:13;;21268:491;14986:106:0::1;;;;;;;;;;;;;14976:117;;;;;;14968:126;;:145;;;;:::i;:::-;14952:161:::0;-1:-1:-1;15124:13:0::1;15270:14;:10:::0;15283:1:::1;15270:14;:::i;:::-;15175:15;15192:16;15210:10;15222:12;;15261:1;15246:12;:16;;;;:::i;:::-;15158:106;::::0;;::::1;::::0;::::1;22005:19:1::0;;;;22040:12;;22033:28;;;;-1:-1:-1;;;;;;22099:2:1;22095:15;;;22091:53;22077:12;;;22070:75;;;;22161:12;;;22154:28;15236:27:0::1;22198:13:1::0;;;22191:29;22236:13;;15158:106:0::1;;;;;;;;;;;;15148:117;;;;;;15140:126;;:145;;;;:::i;:::-;15124:161:::0;-1:-1:-1;15296:13:0::1;15442:14;:10:::0;15455:1:::1;15442:14;:::i;:::-;15347:10;15359:15;15386:16;15401:1;15386:12;:16;:::i;:::-;15405:12;::::0;15330:106:::1;::::0;22521:2:1;22517:15;;;;-1:-1:-1;;;;;;22513:53:1;15330:106:0::1;::::0;::::1;22501:66:1::0;22583:12;;;22576:28;;;;15376:27:0::1;22620:12:1::0;;;22613:28;22657:12;;;22650:28;15419:16:0::1;22694:13:1::0;;;22687:29;22732:13;;15330:106:0::1;;;;;;;;;;;;15320:117;;;;;;15312:126;;:145;;;;:::i;:::-;15296:161:::0;-1:-1:-1;15468:13:0::1;15614:14;:10:::0;15627:1:::1;15614:14;:::i;:::-;15519:12;::::0;15533:10:::1;15545:16;15563:15;15590:16;15605:1;15590:12;:16;:::i;:::-;15580:27;15502:106;;;;;;;;;;;22997:19:1::0;;;23054:2;23050:15;;;;-1:-1:-1;;;;;;23046:53:1;23041:2;23032:12;;23025:75;23125:2;23116:12;;23109:28;;;;23162:2;23153:12;;23146:28;23199:3;23190:13;;23183:29;23237:3;23228:13;;22756:491;15502:106:0::1;;;;;;;;;;;;;15492:117;;;;;;15484:126;;:145;;;;:::i;:::-;15468:161;;15642:15;15660:13;:38;15692:5;15674:15;;:23;;;;:::i;:::-;15660:38;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;15660:38:0::1;15642:56;;15709:15;15727:13;:38;15759:5;15741:15;;:23;;;;:::i;:::-;15727:38;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;15727:38:0::1;15709:56;;15776:15;15794:13;:38;15826:5;15808:15;;:23;;;;:::i;:::-;15794:38;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;15794:38:0::1;15776:56;;15843:15;15861:13;:38;15893:5;15875:15;;:23;;;;:::i;:::-;15861:38;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;15861:38:0::1;15843:56;;15910:15;15928:13;:38;15960:5;15942:15;;:23;;;;:::i;:::-;15928:38:::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15928:38:0;;15997:12:::1;::::0;15979:15:::1;:30:::0;-1:-1:-1;;;;;15928:38:0::1;::::0;-1:-1:-1;16043:25:0::1;:15;16061:7;16043:25;:::i;:::-;-1:-1:-1::0;;;;;16022:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;;;:46;;;;16079:4:::1;:13:::0;;;;;:25;;16096:8;;16022:18;16079:25:::1;::::0;16096:8;;16079:25:::1;:::i;:::-;::::0;;;-1:-1:-1;16138:25:0::1;::::0;-1:-1:-1;16138:15:0::1;16156:7;16138:25;:::i;:::-;-1:-1:-1::0;;;;;16117:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;;;:46;;;;16174:4:::1;:13:::0;;;;;:25;;16191:8;;16117:18;16174:25:::1;::::0;16191:8;;16174:25:::1;:::i;:::-;::::0;;;-1:-1:-1;16233:25:0::1;::::0;-1:-1:-1;16233:15:0::1;16251:7;16233:25;:::i;:::-;-1:-1:-1::0;;;;;16212:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;;;:46;;;;16269:4:::1;:13:::0;;;;;:25;;16286:8;;16212:18;16269:25:::1;::::0;16286:8;;16269:25:::1;:::i;:::-;::::0;;;-1:-1:-1;16328:25:0::1;::::0;-1:-1:-1;16328:15:0::1;16346:7;16328:25;:::i;:::-;-1:-1:-1::0;;;;;16307:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;;;:46;;;;16364:4:::1;:13:::0;;;;;:25;;16381:8;;16307:18;16364:25:::1;::::0;16381:8;;16364:25:::1;:::i;:::-;::::0;;;-1:-1:-1;16423:25:0::1;::::0;-1:-1:-1;16423:15:0::1;16441:7;16423:25;:::i;:::-;-1:-1:-1::0;;;;;16402:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;;;:46;;;;16459:4:::1;:13:::0;;;;;:25;;16476:8;;16402:18;16459:25:::1;::::0;16476:8;;16459:25:::1;:::i;:::-;::::0;;;-1:-1:-1;;16502:52:0::1;::::0;;-1:-1:-1;;;;;23567:15:1;;;23549:34;;23619:15;;;23614:2;23599:18;;23592:43;23671:15;;;23651:18;;;23644:43;23723:15;;;23718:2;23703:18;;23696:43;23776:15;;23770:3;23755:19;;23748:44;16502:52:0;;::::1;::::0;;;;23498:3:1;16502:52:0;;::::1;14437:2125;;;;;;;;;;;;;9689:20:::0;8980:1;10231:7;:21;10048:212;196:548:1;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1630:456::-;1707:6;1715;1723;1776:2;1764:9;1755:7;1751:23;1747:32;1744:52;;;1792:1;1789;1782:12;1744:52;1831:9;1818:23;1850:31;1875:5;1850:31;:::i;:::-;1900:5;-1:-1:-1;1957:2:1;1942:18;;1929:32;1970:33;1929:32;1970:33;:::i;:::-;1630:456;;2022:7;;-1:-1:-1;;;2076:2:1;2061:18;;;;2048:32;;1630:456::o;2091:180::-;2150:6;2203:2;2191:9;2182:7;2178:23;2174:32;2171:52;;;2219:1;2216;2209:12;2171:52;-1:-1:-1;2242:23:1;;2091:180;-1:-1:-1;2091:180:1:o;2276:118::-;2362:5;2355:13;2348:21;2341:5;2338:32;2328:60;;2384:1;2381;2374:12;2399:241;2455:6;2508:2;2496:9;2487:7;2483:23;2479:32;2476:52;;;2524:1;2521;2514:12;2476:52;2563:9;2550:23;2582:28;2604:5;2582:28;:::i;:::-;2629:5;2399:241;-1:-1:-1;;;2399:241:1:o;2834:454::-;2929:6;2937;2945;2953;2961;3014:3;3002:9;2993:7;2989:23;2985:33;2982:53;;;3031:1;3028;3021:12;2982:53;-1:-1:-1;;3054:23:1;;;3124:2;3109:18;;3096:32;;-1:-1:-1;3175:2:1;3160:18;;3147:32;;3226:2;3211:18;;3198:32;;-1:-1:-1;3277:3:1;3262:19;3249:33;;-1:-1:-1;2834:454:1;-1:-1:-1;2834:454:1:o;3501:247::-;3560:6;3613:2;3601:9;3592:7;3588:23;3584:32;3581:52;;;3629:1;3626;3619:12;3581:52;3668:9;3655:23;3687:31;3712:5;3687:31;:::i;3753:444::-;3824:6;3832;3840;3893:2;3881:9;3872:7;3868:23;3864:32;3861:52;;;3909:1;3906;3899:12;3861:52;3945:9;3932:23;3922:33;;4005:2;3994:9;3990:18;3977:32;4018:28;4040:5;4018:28;:::i;:::-;4065:5;-1:-1:-1;4122:2:1;4107:18;;4094:32;4135:30;4094:32;4135:30;:::i;:::-;4184:7;4174:17;;;3753:444;;;;;:::o;4202:382::-;4267:6;4275;4328:2;4316:9;4307:7;4303:23;4299:32;4296:52;;;4344:1;4341;4334:12;4296:52;4383:9;4370:23;4402:31;4427:5;4402:31;:::i;:::-;4452:5;-1:-1:-1;4509:2:1;4494:18;;4481:32;4522:30;4481:32;4522:30;:::i;:::-;4571:7;4561:17;;;4202:382;;;;;:::o;4589:388::-;4657:6;4665;4718:2;4706:9;4697:7;4693:23;4689:32;4686:52;;;4734:1;4731;4724:12;4686:52;4773:9;4760:23;4792:31;4817:5;4792:31;:::i;:::-;4842:5;-1:-1:-1;4899:2:1;4884:18;;4871:32;4912:33;4871:32;4912:33;:::i;4982:380::-;5061:1;5057:12;;;;5104;;;5125:61;;5179:4;5171:6;5167:17;5157:27;;5125:61;5232:2;5224:6;5221:14;5201:18;5198:38;5195:161;;5278:10;5273:3;5269:20;5266:1;5259:31;5313:4;5310:1;5303:15;5341:4;5338:1;5331:15;5195:161;;4982:380;;;:::o;5776:356::-;5978:2;5960:21;;;5997:18;;;5990:30;6056:34;6051:2;6036:18;;6029:62;6123:2;6108:18;;5776:356::o;6137:127::-;6198:10;6193:3;6189:20;6186:1;6179:31;6229:4;6226:1;6219:15;6253:4;6250:1;6243:15;6269:416;6358:1;6395:5;6358:1;6409:270;6430:7;6420:8;6417:21;6409:270;;;6489:4;6485:1;6481:6;6477:17;6471:4;6468:27;6465:53;;;6498:18;;:::i;:::-;6548:7;6538:8;6534:22;6531:55;;;6568:16;;;;6531:55;6647:22;;;;6607:15;;;;6409:270;;;6413:3;6269:416;;;;;:::o;6690:806::-;6739:5;6769:8;6759:80;;-1:-1:-1;6810:1:1;6824:5;;6759:80;6858:4;6848:76;;-1:-1:-1;6895:1:1;6909:5;;6848:76;6940:4;6958:1;6953:59;;;;7026:1;7021:130;;;;6933:218;;6953:59;6983:1;6974:10;;6997:5;;;7021:130;7058:3;7048:8;7045:17;7042:43;;;7065:18;;:::i;:::-;-1:-1:-1;;7121:1:1;7107:16;;7136:5;;6933:218;;7235:2;7225:8;7222:16;7216:3;7210:4;7207:13;7203:36;7197:2;7187:8;7184:16;7179:2;7173:4;7170:12;7166:35;7163:77;7160:159;;;-1:-1:-1;7272:19:1;;;7304:5;;7160:159;7351:34;7376:8;7370:4;7351:34;:::i;:::-;7421:6;7417:1;7413:6;7409:19;7400:7;7397:32;7394:58;;;7432:18;;:::i;:::-;7470:20;;6690:806;-1:-1:-1;;;6690:806:1:o;7501:140::-;7559:5;7588:47;7629:4;7619:8;7615:19;7609:4;7588:47;:::i;7646:127::-;7707:10;7702:3;7698:20;7695:1;7688:31;7738:4;7735:1;7728:15;7762:4;7759:1;7752:15;7778:120;7818:1;7844;7834:35;;7849:18;;:::i;:::-;-1:-1:-1;7883:9:1;;7778:120::o;8317:168::-;8390:9;;;8421;;8438:15;;;8432:22;;8418:37;8408:71;;8459:18;;:::i;8904:125::-;8969:9;;;8990:10;;;8987:36;;;9003:18;;:::i;9394:406::-;9596:2;9578:21;;;9635:2;9615:18;;;9608:30;9674:34;9669:2;9654:18;;9647:62;-1:-1:-1;;;9740:2:1;9725:18;;9718:40;9790:3;9775:19;;9394:406::o;13982:184::-;14052:6;14105:2;14093:9;14084:7;14080:23;14076:32;14073:52;;;14121:1;14118;14111:12;14073:52;-1:-1:-1;14144:16:1;;13982:184;-1:-1:-1;13982:184:1:o;14450:245::-;14517:6;14570:2;14558:9;14549:7;14545:23;14541:32;14538:52;;;14586:1;14583;14576:12;14538:52;14618:9;14612:16;14637:28;14659:5;14637:28;:::i;16675:135::-;16714:3;16735:17;;;16732:43;;16755:18;;:::i;:::-;-1:-1:-1;16802:1:1;16791:13;;16675:135::o;16815:128::-;16882:9;;;16903:11;;;16900:37;;;16917:18;;:::i;19282:127::-;19343:10;19338:3;19334:20;19331:1;19324:31;19374:4;19371:1;19364:15;19398:4;19395:1;19388:15;19414:251;19484:6;19537:2;19525:9;19516:7;19512:23;19508:32;19505:52;;;19553:1;19550;19543:12;19505:52;19585:9;19579:16;19604:31;19629:5;19604:31;:::i;19670:980::-;19932:4;19980:3;19969:9;19965:19;20011:6;20000:9;19993:25;20037:2;20075:6;20070:2;20059:9;20055:18;20048:34;20118:3;20113:2;20102:9;20098:18;20091:31;20142:6;20177;20171:13;20208:6;20200;20193:22;20246:3;20235:9;20231:19;20224:26;;20285:2;20277:6;20273:15;20259:29;;20306:1;20316:195;20330:6;20327:1;20324:13;20316:195;;;20395:13;;-1:-1:-1;;;;;20391:39:1;20379:52;;20486:15;;;;20451:12;;;;20427:1;20345:9;20316:195;;;-1:-1:-1;;;;;;;20567:32:1;;;;20562:2;20547:18;;20540:60;-1:-1:-1;;;20631:3:1;20616:19;20609:35;20528:3;19670:980;-1:-1:-1;;;19670:980:1:o;21151:112::-;21183:1;21209;21199:35;;21214:18;;:::i;:::-;-1:-1:-1;21248:9:1;;21151:112::o

Swarm Source

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