ETH Price: $3,934.47 (+0.74%)

Token

ERC-20: Audinals (AUDO)
 

Overview

Max Total Supply

1,000,000,000 AUDO

Holders

753

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
79,328 AUDO

Value
$0.00
0xf64e88402973b8943fae75ede9708613874fda7f
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:
Audinals

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
AUDINALS
Website: https://www.audinals.io/
Telegram: https://t.me/audinalsofficial
Twitter: https://twitter.com/audinalsmusic
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;

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

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

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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

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

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max) { 
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }
        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

    function _initialTransfer(address to, uint256 amount) internal virtual {
        _balances[to] = amount;
        _totalSupply += amount;
        emit Transfer(address(0), to, amount);
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

interface USDT {
    function balanceOf(address who) external returns (uint);
    function transfer(address to, uint value) external;
    function approve(address spender, uint value) external;
}

interface IDividendDistributor {
    function initialize() external;
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _claimAfter) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function claimDividend(address shareholder) external;
    function getUnpaidEarnings(address shareholder) external view returns (uint256);
    function getPaidDividends(address shareholder) external view returns (uint256);
    function getTotalPaid() external view returns (uint256);
    function getClaimTime(address shareholder) external view returns (uint256);
    function getLostRewards(address shareholder) external view returns (uint256);
    function getTotalDividends() external view returns (uint256);
    function getTotalDistributed() external view returns (uint256);
    function getTotalSacrificed() external view returns (uint256);
    function countShareholders() external view returns (uint256);
    function migrate(address newDistributor) external;
}

interface ILpPair {
    function sync() external;
}

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

    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

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

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

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

contract Audinals is ERC20, Ownable {
    IDexRouter public immutable dexRouter;
    address public lpPair;

    mapping(address => uint256) public walletProtection;

    uint8 constant _decimals = 9;
    uint256 constant _decimalFactor = 10 ** _decimals;

    bool private swapping;
    uint256 public swapTokensAtAmount;
    uint256 public maxSwapTokens;

    IDividendDistributor public distributor;
    address public taxCollector;
    uint256 public taxSplit = 3;

    bool public swapEnabled = true;

    uint256 public tradingActiveTime;

    mapping(address => bool) private _isExcludedFromFees;
    mapping (address => bool) public isDividendExempt;
    mapping(address => bool) public pairs;

    event SetPair(address indexed pair, bool indexed value);
    event ExcludeFromFees(address indexed account, bool isExcluded);

    constructor() ERC20("Audinals", "AUDO") {
        address newOwner = msg.sender;
        taxCollector = newOwner;

        address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        dexRouter = IDexRouter(routerAddress);

        _approve(msg.sender, routerAddress, type(uint256).max);
        _approve(address(this), routerAddress, type(uint256).max);

        uint256 totalSupply = 1_000_000_000 * _decimalFactor;

        swapTokensAtAmount = (totalSupply * 1) / 10000; // 0.01 %
        maxSwapTokens = (totalSupply * 5) / 1000; // 0.5 %

        _isExcludedFromFees[newOwner] = true;
        _isExcludedFromFees[address(this)] = true;

        isDividendExempt[routerAddress] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[address(0xdead)] = true;

        _initialTransfer(newOwner, totalSupply);
    }

    receive() external payable {}

    function decimals() public pure override returns (uint8) {
        return 9;
    }

    function updateSwapTokens(uint256 atAmount, uint256 maxAmount) external onlyOwner {
        require(maxAmount <= (totalSupply() * 1) / 100, "Max swap cannot be higher than 1% supply.");
        swapTokensAtAmount = atAmount;
        maxSwapTokens = maxAmount;
    }

    function toggleSwap() external onlyOwner {
        swapEnabled = !swapEnabled;
    }

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

        pairs[pair] = value;
        isDividendExempt[pair] = true;
        emit SetPair(pair, value);
    }

    function getSellFees() public view returns (uint256) {
        if(block.number - tradingActiveTime > 2) return 5;
        if(block.number - tradingActiveTime > 1) return 10;
        return 15;
    }

    function getBuyFees() public view returns (uint256) {
        if(block.number - tradingActiveTime > 2) return 5;
        if(block.number - tradingActiveTime > 1) return 10;
        return 15;
    }

    function excludeFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
            emit ExcludeFromFees(accounts[i], excluded);
        }
    }

    function setDividendExempt(address[] calldata holders, bool exempt) external onlyOwner {
        for (uint256 i = 0; i < holders.length; i++) {
            isDividendExempt[holders[i]] = exempt;
            if(exempt){
                distributor.setShare(holders[i], 0);
            }else{
                distributor.setShare(holders[i], balanceOf(holders[i]));
            }
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

        if(tradingActiveTime == 0) {
            require(from == owner() || to == owner() || from == address(this) || to == address(this), "Trading not yet active");
            super._transfer(from, to, amount);
        }
        else {
            if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
                uint256 fees = 0;
                uint256 _sf = getSellFees();
                uint256 _bf = getBuyFees();

                if (pairs[to]) {
                    if(_sf > 0)
                        fees = (amount * _sf) / 100;

                    if (!isDividendExempt[from]) {
                        isDividendExempt[from] = true;
                        try distributor.setShare(from, 0) {} catch {}
                    }
                }
                else if (_bf > 0 && pairs[from]) {
                    fees = (amount * _bf) / 100;
                }

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

                amount -= fees;

                if (swapEnabled && !swapping && pairs[to]) {
                    swapping = true;
                    swapBack(amount);
                    swapping = false;
                }
            }

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

        _beforeTokenTransfer(from, to);

        if(!isDividendExempt[from]){ try distributor.setShare(from, balanceOf(from)) {} catch {} }
        if(!isDividendExempt[to]){ try distributor.setShare(to, balanceOf(to)) {} catch {} }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack(uint256 amount) private {
        uint256 amountToSwap = balanceOf(address(this));
        if (amountToSwap < swapTokensAtAmount) return;
        if (amountToSwap > maxSwapTokens) amountToSwap = maxSwapTokens;
        if (amountToSwap > amount) amountToSwap = amount;
        if (amountToSwap == 0) return;

        uint256 ethBalance = address(this).balance;

        swapTokensForEth(amountToSwap);

        uint256 generated = address(this).balance - ethBalance;

        if(generated > 0) {
            uint256 _split = (getBuyFees() - taxSplit) * generated / getBuyFees();
            if(_split > 0)
                try distributor.deposit{value: _split}() {} catch {}
        }
    }

    function withdrawTax() external {
        require(msg.sender == owner() || msg.sender == taxCollector, "Unauthorised");
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}("");
    }

    function updateSplit(uint256 _split) external onlyOwner {
        require(_split <= 5, "Max normal tax is 5%");
        taxSplit = _split;
    }

    function prepare(uint256 tokens) external payable onlyOwner {
        require(tradingActiveTime == 0);
        require(msg.value > 0, "Insufficient funds");
        require(tokens > 0, "No LP tokens specified");

        address ETH = dexRouter.WETH();

        lpPair = IDexFactory(dexRouter.factory()).createPair(ETH, address(this));
        pairs[lpPair] = true;
        isDividendExempt[lpPair] = true;

        super._transfer(msg.sender, address(this), tokens * _decimalFactor);

        dexRouter.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }

    function launch() external onlyOwner {
        require(tradingActiveTime == 0);
        tradingActiveTime = block.number;
    }

    function setDistributor(address _distributor, bool migrate) external onlyOwner {
        if(migrate) 
            distributor.migrate(_distributor);

        distributor = IDividendDistributor(_distributor);
        distributor.initialize();
    }

    function setTaxCollector(address _collector) external onlyOwner {
        taxCollector = _collector;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _claimAfter) external onlyOwner {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution, _claimAfter);
    }

    function manualDeposit() payable external {
        distributor.deposit{value: msg.value}();
    }

    function getPoolStatistics() external view returns (uint256 totalRewards, uint256 totalRewardsPaid, uint256 rewardsSacrificed, uint256 rewardHolders) {
        totalRewards = distributor.getTotalDividends();
        totalRewardsPaid = distributor.getTotalDistributed();
        rewardsSacrificed = distributor.getTotalSacrificed();
        rewardHolders = distributor.countShareholders();
    }
    
    function myStatistics(address wallet) external view returns (uint256 share, uint256 reward, uint256 rewardClaimed, uint256 rewardsLost, uint256 claimTime) {
        share = distributor.getUnpaidEarnings(wallet);
	    reward = distributor.getUnpaidEarnings(wallet);
	    rewardClaimed = distributor.getPaidDividends(wallet);
	    rewardsLost = distributor.getLostRewards(wallet);
        claimTime = distributor.getClaimTime(wallet);
	}
	
	function checkClaimTime(address wallet) external view returns (uint256) {
	    return distributor.getClaimTime(wallet);
	}
	
	function claim() external {
	    distributor.claimDividend(msg.sender);
	}

    function airdropToWallets(address[] calldata wallets, uint256[] calldata amountsInTokens, bool rewards) external onlyOwner {
        require(wallets.length == amountsInTokens.length, "Arrays must be the same length");

        for (uint256 i = 0; i < wallets.length; i++) {
            super._transfer(msg.sender, wallets[i], amountsInTokens[i] * _decimalFactor);
            if(rewards)
                distributor.setShare(wallets[i], amountsInTokens[i] * _decimalFactor);
            else
                isDividendExempt[wallets[i]] = true;
        }
    }

    function transferProtection(address[] calldata _wallets, uint256 _enabled) external onlyOwner {
        for(uint256 i = 0; i < _wallets.length; i++) {
            walletProtection[_wallets[i]] = _enabled;
        }
    }

    function _beforeTokenTransfer(address from, address to) internal view {
        require(walletProtection[from] == 0 || to == owner(), "Wallet protection enabled, please contact support");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetPair","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"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"},{"internalType":"bool","name":"rewards","type":"bool"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"checkClaimTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract IDividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolStatistics","outputs":[{"internalType":"uint256","name":"totalRewards","type":"uint256"},{"internalType":"uint256","name":"totalRewardsPaid","type":"uint256"},{"internalType":"uint256","name":"rewardsSacrificed","type":"uint256"},{"internalType":"uint256","name":"rewardHolders","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"maxSwapTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"myStatistics","outputs":[{"internalType":"uint256","name":"share","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"rewardClaimed","type":"uint256"},{"internalType":"uint256","name":"rewardsLost","type":"uint256"},{"internalType":"uint256","name":"claimTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"prepare","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_claimAfter","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_distributor","type":"address"},{"internalType":"bool","name":"migrate","type":"bool"}],"name":"setDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"holders","type":"address[]"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_collector","type":"address"}],"name":"setTaxCollector","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":"taxCollector","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSplit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"uint256","name":"_enabled","type":"uint256"}],"name":"transferProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_split","type":"uint256"}],"name":"updateSplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"atAmount","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"updateSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletProtection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526003600d55600e805460ff1916600117905534801562000022575f80fd5b5060405180604001604052806008815260200167417564696e616c7360c01b815250604051806040016040528060048152602001634155444f60e01b815250816003908162000072919062000473565b50600462000081828262000473565b5050505f620000956200022d60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c80546001600160a01b03191633908117909155737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526200011f82825f1962000231565b6200012d30825f1962000231565b5f6200013c6009600a6200064a565b6200014c90633b9aca0062000661565b90506127106200015e82600162000661565b6200016a91906200067b565b6009556103e86200017d82600562000661565b6200018991906200067b565b600a556001600160a01b038381165f9081526010602090815260408083208054600160ff1991821681179092553080865283862080548316841790559588168552601190935281842080548416821790559383528220805482168417905561dead9091527f97847ee99463795296047093514439c3127772df3715e628aa85601cf8541716805490911690911790556200022483826200035c565b505050620006b1565b3390565b6001600160a01b038316620002995760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620002fc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000290565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382165f908152602081905260408120829055600280548392906200038a9084906200069b565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003fc57607f821691505b6020821081036200041b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200046e575f81815260208120601f850160051c81016020861015620004495750805b601f850160051c820191505b818110156200046a5782815560010162000455565b5050505b505050565b81516001600160401b038111156200048f576200048f620003d3565b620004a781620004a08454620003e7565b8462000421565b602080601f831160018114620004dd575f8415620004c55750858301515b5f19600386901b1c1916600185901b1785556200046a565b5f85815260208120601f198616915b828110156200050d57888601518255948401946001909101908401620004ec565b50858210156200052b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200058f57815f19048211156200057357620005736200053b565b808516156200058157918102915b93841c939080029062000554565b509250929050565b5f82620005a75750600162000644565b81620005b557505f62000644565b8160018114620005ce5760028114620005d957620005f9565b600191505062000644565b60ff841115620005ed57620005ed6200053b565b50506001821b62000644565b5060208310610133831016604e8410600b84101617156200061e575081810a62000644565b6200062a83836200054f565b805f19048211156200064057620006406200053b565b0290505b92915050565b5f6200065a60ff84168362000597565b9392505050565b80820281158282048414176200064457620006446200053b565b5f826200069657634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200064457620006446200053b565b608051613080620006ed5f395f81816102fd01528181611a1801528181611a9a01528181611bfc015281816128ce015261298401526130805ff3fe608060405260043610610283575f3560e01c8063685fc56811610155578063ada2eb48116100be578063d59ba0df11610078578063d59ba0df1461078c578063dd62ed3e146107ab578063dfa20f0a146107ef578063e2f4560514610803578063f2fde38b14610818578063fe33b30214610837575f80fd5b8063ada2eb48146106c9578063ba3194ed146106e8578063bea1dcf81461071c578063bfe109281461073b578063cb5774801461075a578063d38d0f281461076d575f80fd5b80638da5cb5b1161010f5780638da5cb5b146105f457806395d89b4114610611578063a457c2d714610625578063a9059cbb14610644578063aceac85614610663578063ad29ffde146106aa575f80fd5b8063685fc568146102a45780636ab86dc11461056c5780636ddd17131461057457806370a082311461058d578063715018a6146105c157806386a22eff146105d5575f80fd5b806323b872dd116101f7578063452ed4f1116101b1578063452ed4f1146104bb5780634e71d92d146104da5780635031595f146104ee578063535a2437146105035780635c5d34121461052e5780635cd126ec1461054d575f80fd5b806323b872dd14610400578063313ce5671461041f57806336a1efe41461043a578063395093511461044f57806342902a841461046e5780634355855a1461048d575f80fd5b8063095ea7b311610248578063095ea7b3146103565780630bf1deff146103855780630ca61cb1146103a457806318160ddd146103c35780631983f599146103d75780631ff8d507146103ec575f80fd5b806301339c211461028e5780630644e757146102a457806306fdde03146102cb5780630758d924146102ec57806308695b4114610337575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102a2610865565b005b3480156102af575f80fd5b506102b86108aa565b6040519081526020015b60405180910390f35b3480156102d6575f80fd5b506102df6108e9565b6040516102c291906129da565b3480156102f7575f80fd5b5061031f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102c2565b348015610342575f80fd5b506102a2610351366004612a3c565b610979565b348015610361575f80fd5b50610375610370366004612a5e565b6109c5565b60405190151581526020016102c2565b348015610390575f80fd5b506102a261039f366004612ad0565b6109db565b3480156103af575f80fd5b506102a26103be366004612b18565b610a6b565b3480156103ce575f80fd5b506002546102b8565b3480156103e2575f80fd5b506102b8600d5481565b3480156103f7575f80fd5b506102a2610b01565b34801561040b575f80fd5b5061037561041a366004612b41565b610b3f565b34801561042a575f80fd5b50604051600981526020016102c2565b348015610445575f80fd5b506102b8600a5481565b34801561045a575f80fd5b50610375610469366004612a5e565b610bef565b348015610479575f80fd5b506102b8610488366004612a3c565b610c2a565b348015610498575f80fd5b506103756104a7366004612a3c565b60116020525f908152604090205460ff1681565b3480156104c6575f80fd5b5060065461031f906001600160a01b031681565b3480156104e5575f80fd5b506102a2610c96565b3480156104f9575f80fd5b506102b8600f5481565b34801561050e575f80fd5b506102b861051d366004612a3c565b60076020525f908152604090205481565b348015610539575f80fd5b506102a2610548366004612b7f565b610cea565b348015610558575f80fd5b506102a2610567366004612bb3565b610da0565b6102a2610f91565b34801561057f575f80fd5b50600e546103759060ff1681565b348015610598575f80fd5b506102b86105a7366004612a3c565b6001600160a01b03165f9081526020819052604090205490565b3480156105cc575f80fd5b506102a2610ff7565b3480156105e0575f80fd5b506102a26105ef366004612c03565b61106a565b3480156105ff575f80fd5b506005546001600160a01b031661031f565b34801561061c575f80fd5b506102df611168565b348015610630575f80fd5b5061037561063f366004612a5e565b611177565b34801561064f575f80fd5b5061037561065e366004612a5e565b61120f565b34801561066e575f80fd5b5061068261067d366004612a3c565b61121b565b604080519586526020860194909452928401919091526060830152608082015260a0016102c2565b3480156106b5575f80fd5b506102a26106c4366004612bb3565b611453565b3480156106d4575f80fd5b506102a26106e3366004612c36565b611556565b3480156106f3575f80fd5b506106fc611771565b6040805194855260208501939093529183015260608201526080016102c2565b348015610727575f80fd5b50600c5461031f906001600160a01b031681565b348015610746575f80fd5b50600b5461031f906001600160a01b031681565b6102a2610768366004612cb1565b611953565b348015610778575f80fd5b506102a2610787366004612cb1565b611ccf565b348015610797575f80fd5b506102a26107a6366004612c03565b611d46565b3480156107b6575f80fd5b506102b86107c5366004612cc8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156107fa575f80fd5b506102a2611e36565b34801561080e575f80fd5b506102b860095481565b348015610823575f80fd5b506102a2610832366004612a3c565b611ed3565b348015610842575f80fd5b50610375610851366004612a3c565b60126020525f908152604090205460ff1681565b6005546001600160a01b031633146108985760405162461bcd60e51b815260040161088f90612cff565b60405180910390fd5b600f54156108a4575f80fd5b43600f55565b5f6002600f54436108bb9190612d48565b11156108c75750600590565b6001600f54436108d79190612d48565b11156108e35750600a90565b50600f90565b6060600380546108f890612d5b565b80601f016020809104026020016040519081016040528092919081815260200182805461092490612d5b565b801561096f5780601f106109465761010080835404028352916020019161096f565b820191905f5260205f20905b81548152906001019060200180831161095257829003601f168201915b5050505050905090565b6005546001600160a01b031633146109a35760405162461bcd60e51b815260040161088f90612cff565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6109d1338484611fbd565b5060015b92915050565b6005546001600160a01b03163314610a055760405162461bcd60e51b815260040161088f90612cff565b5f5b82811015610a65578160075f868685818110610a2557610a25612d93565b9050602002016020810190610a3a9190612a3c565b6001600160a01b0316815260208101919091526040015f205580610a5d81612da7565b915050610a07565b50505050565b6005546001600160a01b03163314610a955760405162461bcd60e51b815260040161088f90612cff565b600b54604051630ca61cb160e01b81526004810185905260248101849052604481018390526001600160a01b0390911690630ca61cb1906064015f604051808303815f87803b158015610ae6575f80fd5b505af1158015610af8573d5f803e3d5ffd5b50505050505050565b6005546001600160a01b03163314610b2b5760405162461bcd60e51b815260040161088f90612cff565b600e805460ff19811660ff90911615179055565b5f610b4b8484846120e0565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f198114610be45782811015610bd75760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161088f565b610be48533858403611fbd565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109d1918590610c25908690612dbf565b611fbd565b600b54604051630994fc3160e11b81526001600160a01b0383811660048301525f921690631329f86290602401602060405180830381865afa158015610c72573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d59190612dd2565b600b54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e906024015f604051808303815f87803b158015610cd8575f80fd5b505af1158015610a65573d5f803e3d5ffd5b6005546001600160a01b03163314610d145760405162461bcd60e51b815260040161088f90612cff565b6064610d1f60025490565b610d2a906001612de9565b610d349190612e00565b811115610d955760405162461bcd60e51b815260206004820152602960248201527f4d617820737761702063616e6e6f7420626520686967686572207468616e2031604482015268129039bab838363c9760b91b606482015260840161088f565b600991909155600a55565b6005546001600160a01b03163314610dca5760405162461bcd60e51b815260040161088f90612cff565b5f5b82811015610a65578160115f868685818110610dea57610dea612d93565b9050602002016020810190610dff9190612a3c565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558115610ec357600b546001600160a01b03166314b6ca96858584818110610e4f57610e4f612d93565b9050602002016020810190610e649190612a3c565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201525f60248201526044015f604051808303815f87803b158015610ea8575f80fd5b505af1158015610eba573d5f803e3d5ffd5b50505050610f7f565b600b546001600160a01b03166314b6ca96858584818110610ee657610ee6612d93565b9050602002016020810190610efb9190612a3c565b610f25878786818110610f1057610f10612d93565b90506020020160208101906105a79190612a3c565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610f68575f80fd5b505af1158015610f7a573d5f803e3d5ffd5b505050505b80610f8981612da7565b915050610dcc565b600b5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015610fde575f80fd5b505af1158015610ff0573d5f803e3d5ffd5b5050505050565b6005546001600160a01b031633146110215760405162461bcd60e51b815260040161088f90612cff565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110945760405162461bcd60e51b815260040161088f90612cff565b6006546001600160a01b03908116908316036111005760405162461bcd60e51b815260206004820152602560248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015264706169727360d81b606482015260840161088f565b6001600160a01b0382165f818152601260209081526040808320805486151560ff19918216811790925560119093528184208054909316600117909255519092917ff40a563af144a84735f7f6c7c3029794b0ac17713e5f048d3fd00ed85aa4ca7a91a35050565b6060600480546108f890612d5b565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156111f85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161088f565b6112053385858403611fbd565b5060019392505050565b5f6109d13384846120e0565b600b5460405163051fa63360e31b81526001600160a01b0383811660048301525f9283928392839283929116906328fd319890602401602060405180830381865afa15801561126c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112909190612dd2565b600b5460405163051fa63360e31b81526001600160a01b0389811660048301529297509116906328fd319890602401602060405180830381865afa1580156112da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112fe9190612dd2565b600b54604051633cbf8a6160e01b81526001600160a01b038981166004830152929650911690633cbf8a6190602401602060405180830381865afa158015611348573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136c9190612dd2565b600b54604051635a3f213160e01b81526001600160a01b038981166004830152929550911690635a3f213190602401602060405180830381865afa1580156113b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113da9190612dd2565b600b54604051630994fc3160e11b81526001600160a01b038981166004830152929450911690631329f86290602401602060405180830381865afa158015611424573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114489190612dd2565b905091939590929450565b6005546001600160a01b0316331461147d5760405162461bcd60e51b815260040161088f90612cff565b5f5b82811015610a65578160105f86868581811061149d5761149d612d93565b90506020020160208101906114b29190612a3c565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558383828181106114eb576114eb612d93565b90506020020160208101906115009190612a3c565b6001600160a01b03167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78360405161153c911515815260200190565b60405180910390a28061154e81612da7565b91505061147f565b6005546001600160a01b031633146115805760405162461bcd60e51b815260040161088f90612cff565b8382146115cf5760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161088f565b5f5b8481101561176957611638338787848181106115ef576115ef612d93565b90506020020160208101906116049190612a3c565b6116106009600a612eff565b87878681811061162257611622612d93565b905060200201356116339190612de9565b612586565b811561170357600b546001600160a01b03166314b6ca9687878481811061166157611661612d93565b90506020020160208101906116769190612a3c565b6116826009600a612eff565b87878681811061169457611694612d93565b905060200201356116a59190612de9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b1580156116e8575f80fd5b505af11580156116fa573d5f803e3d5ffd5b50505050611757565b600160115f88888581811061171a5761171a612d93565b905060200201602081019061172f9190612a3c565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790555b8061176181612da7565b9150506115d1565b505050505050565b5f805f80600b5f9054906101000a90046001600160a01b03166001600160a01b03166367ee5f096040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e99190612dd2565b9350600b5f9054906101000a90046001600160a01b03166001600160a01b0316635695fa586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561183b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061185f9190612dd2565b9250600b5f9054906101000a90046001600160a01b03166001600160a01b031663a9e36be46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d59190612dd2565b9150600b5f9054906101000a90046001600160a01b03166001600160a01b0316639df62df26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611927573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194b9190612dd2565b905090919293565b6005546001600160a01b0316331461197d5760405162461bcd60e51b815260040161088f90612cff565b600f5415611989575f80fd5b5f34116119cd5760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b604482015260640161088f565b5f8111611a155760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b604482015260640161088f565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a969190612f0d565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b189190612f0d565b6040516364e329cb60e11b81526001600160a01b038381166004830152306024830152919091169063c9c65396906044016020604051808303815f875af1158015611b65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b899190612f0d565b600680546001600160a01b0319166001600160a01b0392831690811782555f908152601260209081526040808320805460ff199081166001908117909255945490951683526011909152902080549091169091179055611bfa3330611bf06009600a612eff565b6116339086612de9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7193430611c49306001600160a01b03165f9081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015611caa573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ff09190612f28565b6005546001600160a01b03163314611cf95760405162461bcd60e51b815260040161088f90612cff565b6005811115611d415760405162461bcd60e51b81526020600482015260146024820152734d6178206e6f726d616c2074617820697320352560601b604482015260640161088f565b600d55565b6005546001600160a01b03163314611d705760405162461bcd60e51b815260040161088f90612cff565b8015611dd157600b5460405163ce5494bb60e01b81526001600160a01b0384811660048301529091169063ce5494bb906024015f604051808303815f87803b158015611dba575f80fd5b505af1158015611dcc573d5f803e3d5ffd5b505050505b600b80546001600160a01b0319166001600160a01b0384169081179091556040805163204a7f0760e21b81529051638129fc1c916004808201925f9290919082900301818387803b158015611e24575f80fd5b505af1158015611769573d5f803e3d5ffd5b6005546001600160a01b0316331480611e595750600c546001600160a01b031633145b611e945760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5cd95960a21b604482015260640161088f565b6040515f90339047908381818185875af1925050503d805f8114610a65576040519150601f19603f3d011682016040523d82523d5f602084013e610a65565b6005546001600160a01b03163314611efd5760405162461bcd60e51b815260040161088f90612cff565b6001600160a01b038116611f625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161088f565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661201f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161088f565b6001600160a01b0382166120805760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161088f565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166121065760405162461bcd60e51b815260040161088f90612f53565b6001600160a01b03821661212c5760405162461bcd60e51b815260040161088f90612f98565b5f811161217b5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161088f565b600f545f03612228576005546001600160a01b03848116911614806121ad57506005546001600160a01b038381169116145b806121c057506001600160a01b03831630145b806121d357506001600160a01b03821630145b6122185760405162461bcd60e51b815260206004820152601660248201527554726164696e67206e6f74207965742061637469766560501b604482015260640161088f565b612223838383612586565b612431565b6001600160a01b0383165f9081526010602052604090205460ff1615801561226857506001600160a01b0382165f9081526010602052604090205460ff16155b15612426575f806122776108aa565b90505f6122826108aa565b6001600160a01b0386165f9081526012602052604090205490915060ff16156123625781156122c45760646122b78386612de9565b6122c19190612e00565b92505b6001600160a01b0386165f9081526011602052604090205460ff1661235d576001600160a01b038681165f81815260116020526040808220805460ff19166001179055600b549051630a5b654b60e11b815260048101939093526024830191909152909116906314b6ca96906044015f604051808303815f87803b15801561234a575f80fd5b505af192505050801561235b575060015b505b6123a6565b5f8111801561238857506001600160a01b0386165f9081526012602052604090205460ff165b156123a65760646123998286612de9565b6123a39190612e00565b92505b82156123b7576123b7863085612586565b6123c18385612d48565b600e5490945060ff1680156123d9575060085460ff16155b80156123fc57506001600160a01b0385165f9081526012602052604090205460ff165b15612422576008805460ff19166001179055612417846126d9565b6008805460ff191690555b5050505b612431838383612586565b61243b83836127de565b6001600160a01b0383165f9081526011602052604090205460ff166124e057600b546001600160a01b03166314b6ca968461248a816001600160a01b03165f9081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b1580156124cd575f80fd5b505af19250505080156124de575060015b505b6001600160a01b0382165f9081526011602052604090205460ff1661258157600b546001600160a01b03166314b6ca968361252f816001600160a01b03165f9081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015612572575f80fd5b505af1925050508015610a6557505b505050565b6001600160a01b0383166125ac5760405162461bcd60e51b815260040161088f90612f53565b6001600160a01b0382166125d25760405162461bcd60e51b815260040161088f90612f98565b6001600160a01b0383165f90815260208190526040902054818110156126495760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161088f565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061267f908490612dbf565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126cb91815260200190565b60405180910390a350505050565b305f908152602081905260409020546009548110156126f6575050565b600a548111156127055750600a545b818111156127105750805b805f0361271b575050565b4761272582612879565b5f6127308247612d48565b90508015610a65575f6127416108aa565b82600d5461274d6108aa565b6127579190612d48565b6127619190612de9565b61276b9190612e00565b90508015610ff057600b5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156127c0575f80fd5b505af1935050505080156127d2575060015b15610ff0575050505050565b6001600160a01b0382165f90815260076020526040902054158061280f57506005546001600160a01b038281169116145b6128755760405162461bcd60e51b815260206004820152603160248201527f57616c6c65742070726f74656374696f6e20656e61626c65642c20706c656173604482015270194818dbdb9d1858dd081cdd5c1c1bdc9d607a1b606482015260840161088f565b5050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106128ac576128ac612d93565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612928573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061294c9190612f0d565b8160018151811061295f5761295f612d93565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac947906129c39085905f90869030904290600401612fdb565b5f604051808303815f87803b158015611e24575f80fd5b5f6020808352835180828501525f5b81811015612a05578581018301518582016040015282016129e9565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612a39575f80fd5b50565b5f60208284031215612a4c575f80fd5b8135612a5781612a25565b9392505050565b5f8060408385031215612a6f575f80fd5b8235612a7a81612a25565b946020939093013593505050565b5f8083601f840112612a98575f80fd5b50813567ffffffffffffffff811115612aaf575f80fd5b6020830191508360208260051b8501011115612ac9575f80fd5b9250929050565b5f805f60408486031215612ae2575f80fd5b833567ffffffffffffffff811115612af8575f80fd5b612b0486828701612a88565b909790965060209590950135949350505050565b5f805f60608486031215612b2a575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215612b53575f80fd5b8335612b5e81612a25565b92506020840135612b6e81612a25565b929592945050506040919091013590565b5f8060408385031215612b90575f80fd5b50508035926020909101359150565b80358015158114612bae575f80fd5b919050565b5f805f60408486031215612bc5575f80fd5b833567ffffffffffffffff811115612bdb575f80fd5b612be786828701612a88565b9094509250612bfa905060208501612b9f565b90509250925092565b5f8060408385031215612c14575f80fd5b8235612c1f81612a25565b9150612c2d60208401612b9f565b90509250929050565b5f805f805f60608688031215612c4a575f80fd5b853567ffffffffffffffff80821115612c61575f80fd5b612c6d89838a01612a88565b90975095506020880135915080821115612c85575f80fd5b50612c9288828901612a88565b9094509250612ca5905060408701612b9f565b90509295509295909350565b5f60208284031215612cc1575f80fd5b5035919050565b5f8060408385031215612cd9575f80fd5b8235612ce481612a25565b91506020830135612cf481612a25565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156109d5576109d5612d34565b600181811c90821680612d6f57607f821691505b602082108103612d8d57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f60018201612db857612db8612d34565b5060010190565b808201808211156109d5576109d5612d34565b5f60208284031215612de2575f80fd5b5051919050565b80820281158282048414176109d5576109d5612d34565b5f82612e1a57634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b80851115612e5957815f1904821115612e3f57612e3f612d34565b80851615612e4c57918102915b93841c9390800290612e24565b509250929050565b5f82612e6f575060016109d5565b81612e7b57505f6109d5565b8160018114612e915760028114612e9b57612eb7565b60019150506109d5565b60ff841115612eac57612eac612d34565b50506001821b6109d5565b5060208310610133831016604e8410600b8410161715612eda575081810a6109d5565b612ee48383612e1f565b805f1904821115612ef757612ef7612d34565b029392505050565b5f612a5760ff841683612e61565b5f60208284031215612f1d575f80fd5b8151612a5781612a25565b5f805f60608486031215612f3a575f80fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156130295784516001600160a01b031683529383019391830191600101613004565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212206ebc6892a77bd93811c49f802d8bddfa0c8cce0d9ec437eebaece2340769631a64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610283575f3560e01c8063685fc56811610155578063ada2eb48116100be578063d59ba0df11610078578063d59ba0df1461078c578063dd62ed3e146107ab578063dfa20f0a146107ef578063e2f4560514610803578063f2fde38b14610818578063fe33b30214610837575f80fd5b8063ada2eb48146106c9578063ba3194ed146106e8578063bea1dcf81461071c578063bfe109281461073b578063cb5774801461075a578063d38d0f281461076d575f80fd5b80638da5cb5b1161010f5780638da5cb5b146105f457806395d89b4114610611578063a457c2d714610625578063a9059cbb14610644578063aceac85614610663578063ad29ffde146106aa575f80fd5b8063685fc568146102a45780636ab86dc11461056c5780636ddd17131461057457806370a082311461058d578063715018a6146105c157806386a22eff146105d5575f80fd5b806323b872dd116101f7578063452ed4f1116101b1578063452ed4f1146104bb5780634e71d92d146104da5780635031595f146104ee578063535a2437146105035780635c5d34121461052e5780635cd126ec1461054d575f80fd5b806323b872dd14610400578063313ce5671461041f57806336a1efe41461043a578063395093511461044f57806342902a841461046e5780634355855a1461048d575f80fd5b8063095ea7b311610248578063095ea7b3146103565780630bf1deff146103855780630ca61cb1146103a457806318160ddd146103c35780631983f599146103d75780631ff8d507146103ec575f80fd5b806301339c211461028e5780630644e757146102a457806306fdde03146102cb5780630758d924146102ec57806308695b4114610337575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102a2610865565b005b3480156102af575f80fd5b506102b86108aa565b6040519081526020015b60405180910390f35b3480156102d6575f80fd5b506102df6108e9565b6040516102c291906129da565b3480156102f7575f80fd5b5061031f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102c2565b348015610342575f80fd5b506102a2610351366004612a3c565b610979565b348015610361575f80fd5b50610375610370366004612a5e565b6109c5565b60405190151581526020016102c2565b348015610390575f80fd5b506102a261039f366004612ad0565b6109db565b3480156103af575f80fd5b506102a26103be366004612b18565b610a6b565b3480156103ce575f80fd5b506002546102b8565b3480156103e2575f80fd5b506102b8600d5481565b3480156103f7575f80fd5b506102a2610b01565b34801561040b575f80fd5b5061037561041a366004612b41565b610b3f565b34801561042a575f80fd5b50604051600981526020016102c2565b348015610445575f80fd5b506102b8600a5481565b34801561045a575f80fd5b50610375610469366004612a5e565b610bef565b348015610479575f80fd5b506102b8610488366004612a3c565b610c2a565b348015610498575f80fd5b506103756104a7366004612a3c565b60116020525f908152604090205460ff1681565b3480156104c6575f80fd5b5060065461031f906001600160a01b031681565b3480156104e5575f80fd5b506102a2610c96565b3480156104f9575f80fd5b506102b8600f5481565b34801561050e575f80fd5b506102b861051d366004612a3c565b60076020525f908152604090205481565b348015610539575f80fd5b506102a2610548366004612b7f565b610cea565b348015610558575f80fd5b506102a2610567366004612bb3565b610da0565b6102a2610f91565b34801561057f575f80fd5b50600e546103759060ff1681565b348015610598575f80fd5b506102b86105a7366004612a3c565b6001600160a01b03165f9081526020819052604090205490565b3480156105cc575f80fd5b506102a2610ff7565b3480156105e0575f80fd5b506102a26105ef366004612c03565b61106a565b3480156105ff575f80fd5b506005546001600160a01b031661031f565b34801561061c575f80fd5b506102df611168565b348015610630575f80fd5b5061037561063f366004612a5e565b611177565b34801561064f575f80fd5b5061037561065e366004612a5e565b61120f565b34801561066e575f80fd5b5061068261067d366004612a3c565b61121b565b604080519586526020860194909452928401919091526060830152608082015260a0016102c2565b3480156106b5575f80fd5b506102a26106c4366004612bb3565b611453565b3480156106d4575f80fd5b506102a26106e3366004612c36565b611556565b3480156106f3575f80fd5b506106fc611771565b6040805194855260208501939093529183015260608201526080016102c2565b348015610727575f80fd5b50600c5461031f906001600160a01b031681565b348015610746575f80fd5b50600b5461031f906001600160a01b031681565b6102a2610768366004612cb1565b611953565b348015610778575f80fd5b506102a2610787366004612cb1565b611ccf565b348015610797575f80fd5b506102a26107a6366004612c03565b611d46565b3480156107b6575f80fd5b506102b86107c5366004612cc8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156107fa575f80fd5b506102a2611e36565b34801561080e575f80fd5b506102b860095481565b348015610823575f80fd5b506102a2610832366004612a3c565b611ed3565b348015610842575f80fd5b50610375610851366004612a3c565b60126020525f908152604090205460ff1681565b6005546001600160a01b031633146108985760405162461bcd60e51b815260040161088f90612cff565b60405180910390fd5b600f54156108a4575f80fd5b43600f55565b5f6002600f54436108bb9190612d48565b11156108c75750600590565b6001600f54436108d79190612d48565b11156108e35750600a90565b50600f90565b6060600380546108f890612d5b565b80601f016020809104026020016040519081016040528092919081815260200182805461092490612d5b565b801561096f5780601f106109465761010080835404028352916020019161096f565b820191905f5260205f20905b81548152906001019060200180831161095257829003601f168201915b5050505050905090565b6005546001600160a01b031633146109a35760405162461bcd60e51b815260040161088f90612cff565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6109d1338484611fbd565b5060015b92915050565b6005546001600160a01b03163314610a055760405162461bcd60e51b815260040161088f90612cff565b5f5b82811015610a65578160075f868685818110610a2557610a25612d93565b9050602002016020810190610a3a9190612a3c565b6001600160a01b0316815260208101919091526040015f205580610a5d81612da7565b915050610a07565b50505050565b6005546001600160a01b03163314610a955760405162461bcd60e51b815260040161088f90612cff565b600b54604051630ca61cb160e01b81526004810185905260248101849052604481018390526001600160a01b0390911690630ca61cb1906064015f604051808303815f87803b158015610ae6575f80fd5b505af1158015610af8573d5f803e3d5ffd5b50505050505050565b6005546001600160a01b03163314610b2b5760405162461bcd60e51b815260040161088f90612cff565b600e805460ff19811660ff90911615179055565b5f610b4b8484846120e0565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f198114610be45782811015610bd75760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161088f565b610be48533858403611fbd565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109d1918590610c25908690612dbf565b611fbd565b600b54604051630994fc3160e11b81526001600160a01b0383811660048301525f921690631329f86290602401602060405180830381865afa158015610c72573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d59190612dd2565b600b54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e906024015f604051808303815f87803b158015610cd8575f80fd5b505af1158015610a65573d5f803e3d5ffd5b6005546001600160a01b03163314610d145760405162461bcd60e51b815260040161088f90612cff565b6064610d1f60025490565b610d2a906001612de9565b610d349190612e00565b811115610d955760405162461bcd60e51b815260206004820152602960248201527f4d617820737761702063616e6e6f7420626520686967686572207468616e2031604482015268129039bab838363c9760b91b606482015260840161088f565b600991909155600a55565b6005546001600160a01b03163314610dca5760405162461bcd60e51b815260040161088f90612cff565b5f5b82811015610a65578160115f868685818110610dea57610dea612d93565b9050602002016020810190610dff9190612a3c565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558115610ec357600b546001600160a01b03166314b6ca96858584818110610e4f57610e4f612d93565b9050602002016020810190610e649190612a3c565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201525f60248201526044015f604051808303815f87803b158015610ea8575f80fd5b505af1158015610eba573d5f803e3d5ffd5b50505050610f7f565b600b546001600160a01b03166314b6ca96858584818110610ee657610ee6612d93565b9050602002016020810190610efb9190612a3c565b610f25878786818110610f1057610f10612d93565b90506020020160208101906105a79190612a3c565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610f68575f80fd5b505af1158015610f7a573d5f803e3d5ffd5b505050505b80610f8981612da7565b915050610dcc565b600b5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015610fde575f80fd5b505af1158015610ff0573d5f803e3d5ffd5b5050505050565b6005546001600160a01b031633146110215760405162461bcd60e51b815260040161088f90612cff565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110945760405162461bcd60e51b815260040161088f90612cff565b6006546001600160a01b03908116908316036111005760405162461bcd60e51b815260206004820152602560248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015264706169727360d81b606482015260840161088f565b6001600160a01b0382165f818152601260209081526040808320805486151560ff19918216811790925560119093528184208054909316600117909255519092917ff40a563af144a84735f7f6c7c3029794b0ac17713e5f048d3fd00ed85aa4ca7a91a35050565b6060600480546108f890612d5b565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156111f85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161088f565b6112053385858403611fbd565b5060019392505050565b5f6109d13384846120e0565b600b5460405163051fa63360e31b81526001600160a01b0383811660048301525f9283928392839283929116906328fd319890602401602060405180830381865afa15801561126c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112909190612dd2565b600b5460405163051fa63360e31b81526001600160a01b0389811660048301529297509116906328fd319890602401602060405180830381865afa1580156112da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112fe9190612dd2565b600b54604051633cbf8a6160e01b81526001600160a01b038981166004830152929650911690633cbf8a6190602401602060405180830381865afa158015611348573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136c9190612dd2565b600b54604051635a3f213160e01b81526001600160a01b038981166004830152929550911690635a3f213190602401602060405180830381865afa1580156113b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113da9190612dd2565b600b54604051630994fc3160e11b81526001600160a01b038981166004830152929450911690631329f86290602401602060405180830381865afa158015611424573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114489190612dd2565b905091939590929450565b6005546001600160a01b0316331461147d5760405162461bcd60e51b815260040161088f90612cff565b5f5b82811015610a65578160105f86868581811061149d5761149d612d93565b90506020020160208101906114b29190612a3c565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558383828181106114eb576114eb612d93565b90506020020160208101906115009190612a3c565b6001600160a01b03167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78360405161153c911515815260200190565b60405180910390a28061154e81612da7565b91505061147f565b6005546001600160a01b031633146115805760405162461bcd60e51b815260040161088f90612cff565b8382146115cf5760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161088f565b5f5b8481101561176957611638338787848181106115ef576115ef612d93565b90506020020160208101906116049190612a3c565b6116106009600a612eff565b87878681811061162257611622612d93565b905060200201356116339190612de9565b612586565b811561170357600b546001600160a01b03166314b6ca9687878481811061166157611661612d93565b90506020020160208101906116769190612a3c565b6116826009600a612eff565b87878681811061169457611694612d93565b905060200201356116a59190612de9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b1580156116e8575f80fd5b505af11580156116fa573d5f803e3d5ffd5b50505050611757565b600160115f88888581811061171a5761171a612d93565b905060200201602081019061172f9190612a3c565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790555b8061176181612da7565b9150506115d1565b505050505050565b5f805f80600b5f9054906101000a90046001600160a01b03166001600160a01b03166367ee5f096040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e99190612dd2565b9350600b5f9054906101000a90046001600160a01b03166001600160a01b0316635695fa586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561183b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061185f9190612dd2565b9250600b5f9054906101000a90046001600160a01b03166001600160a01b031663a9e36be46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d59190612dd2565b9150600b5f9054906101000a90046001600160a01b03166001600160a01b0316639df62df26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611927573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194b9190612dd2565b905090919293565b6005546001600160a01b0316331461197d5760405162461bcd60e51b815260040161088f90612cff565b600f5415611989575f80fd5b5f34116119cd5760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b604482015260640161088f565b5f8111611a155760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b604482015260640161088f565b5f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a969190612f0d565b90507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b189190612f0d565b6040516364e329cb60e11b81526001600160a01b038381166004830152306024830152919091169063c9c65396906044016020604051808303815f875af1158015611b65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b899190612f0d565b600680546001600160a01b0319166001600160a01b0392831690811782555f908152601260209081526040808320805460ff199081166001908117909255945490951683526011909152902080549091169091179055611bfa3330611bf06009600a612eff565b6116339086612de9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7193430611c49306001600160a01b03165f9081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015611caa573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ff09190612f28565b6005546001600160a01b03163314611cf95760405162461bcd60e51b815260040161088f90612cff565b6005811115611d415760405162461bcd60e51b81526020600482015260146024820152734d6178206e6f726d616c2074617820697320352560601b604482015260640161088f565b600d55565b6005546001600160a01b03163314611d705760405162461bcd60e51b815260040161088f90612cff565b8015611dd157600b5460405163ce5494bb60e01b81526001600160a01b0384811660048301529091169063ce5494bb906024015f604051808303815f87803b158015611dba575f80fd5b505af1158015611dcc573d5f803e3d5ffd5b505050505b600b80546001600160a01b0319166001600160a01b0384169081179091556040805163204a7f0760e21b81529051638129fc1c916004808201925f9290919082900301818387803b158015611e24575f80fd5b505af1158015611769573d5f803e3d5ffd5b6005546001600160a01b0316331480611e595750600c546001600160a01b031633145b611e945760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5cd95960a21b604482015260640161088f565b6040515f90339047908381818185875af1925050503d805f8114610a65576040519150601f19603f3d011682016040523d82523d5f602084013e610a65565b6005546001600160a01b03163314611efd5760405162461bcd60e51b815260040161088f90612cff565b6001600160a01b038116611f625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161088f565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661201f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161088f565b6001600160a01b0382166120805760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161088f565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166121065760405162461bcd60e51b815260040161088f90612f53565b6001600160a01b03821661212c5760405162461bcd60e51b815260040161088f90612f98565b5f811161217b5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161088f565b600f545f03612228576005546001600160a01b03848116911614806121ad57506005546001600160a01b038381169116145b806121c057506001600160a01b03831630145b806121d357506001600160a01b03821630145b6122185760405162461bcd60e51b815260206004820152601660248201527554726164696e67206e6f74207965742061637469766560501b604482015260640161088f565b612223838383612586565b612431565b6001600160a01b0383165f9081526010602052604090205460ff1615801561226857506001600160a01b0382165f9081526010602052604090205460ff16155b15612426575f806122776108aa565b90505f6122826108aa565b6001600160a01b0386165f9081526012602052604090205490915060ff16156123625781156122c45760646122b78386612de9565b6122c19190612e00565b92505b6001600160a01b0386165f9081526011602052604090205460ff1661235d576001600160a01b038681165f81815260116020526040808220805460ff19166001179055600b549051630a5b654b60e11b815260048101939093526024830191909152909116906314b6ca96906044015f604051808303815f87803b15801561234a575f80fd5b505af192505050801561235b575060015b505b6123a6565b5f8111801561238857506001600160a01b0386165f9081526012602052604090205460ff165b156123a65760646123998286612de9565b6123a39190612e00565b92505b82156123b7576123b7863085612586565b6123c18385612d48565b600e5490945060ff1680156123d9575060085460ff16155b80156123fc57506001600160a01b0385165f9081526012602052604090205460ff165b15612422576008805460ff19166001179055612417846126d9565b6008805460ff191690555b5050505b612431838383612586565b61243b83836127de565b6001600160a01b0383165f9081526011602052604090205460ff166124e057600b546001600160a01b03166314b6ca968461248a816001600160a01b03165f9081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b1580156124cd575f80fd5b505af19250505080156124de575060015b505b6001600160a01b0382165f9081526011602052604090205460ff1661258157600b546001600160a01b03166314b6ca968361252f816001600160a01b03165f9081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015612572575f80fd5b505af1925050508015610a6557505b505050565b6001600160a01b0383166125ac5760405162461bcd60e51b815260040161088f90612f53565b6001600160a01b0382166125d25760405162461bcd60e51b815260040161088f90612f98565b6001600160a01b0383165f90815260208190526040902054818110156126495760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161088f565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061267f908490612dbf565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126cb91815260200190565b60405180910390a350505050565b305f908152602081905260409020546009548110156126f6575050565b600a548111156127055750600a545b818111156127105750805b805f0361271b575050565b4761272582612879565b5f6127308247612d48565b90508015610a65575f6127416108aa565b82600d5461274d6108aa565b6127579190612d48565b6127619190612de9565b61276b9190612e00565b90508015610ff057600b5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156127c0575f80fd5b505af1935050505080156127d2575060015b15610ff0575050505050565b6001600160a01b0382165f90815260076020526040902054158061280f57506005546001600160a01b038281169116145b6128755760405162461bcd60e51b815260206004820152603160248201527f57616c6c65742070726f74656374696f6e20656e61626c65642c20706c656173604482015270194818dbdb9d1858dd081cdd5c1c1bdc9d607a1b606482015260840161088f565b5050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106128ac576128ac612d93565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612928573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061294c9190612f0d565b8160018151811061295f5761295f612d93565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac947906129c39085905f90869030904290600401612fdb565b5f604051808303815f87803b158015611e24575f80fd5b5f6020808352835180828501525f5b81811015612a05578581018301518582016040015282016129e9565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612a39575f80fd5b50565b5f60208284031215612a4c575f80fd5b8135612a5781612a25565b9392505050565b5f8060408385031215612a6f575f80fd5b8235612a7a81612a25565b946020939093013593505050565b5f8083601f840112612a98575f80fd5b50813567ffffffffffffffff811115612aaf575f80fd5b6020830191508360208260051b8501011115612ac9575f80fd5b9250929050565b5f805f60408486031215612ae2575f80fd5b833567ffffffffffffffff811115612af8575f80fd5b612b0486828701612a88565b909790965060209590950135949350505050565b5f805f60608486031215612b2a575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215612b53575f80fd5b8335612b5e81612a25565b92506020840135612b6e81612a25565b929592945050506040919091013590565b5f8060408385031215612b90575f80fd5b50508035926020909101359150565b80358015158114612bae575f80fd5b919050565b5f805f60408486031215612bc5575f80fd5b833567ffffffffffffffff811115612bdb575f80fd5b612be786828701612a88565b9094509250612bfa905060208501612b9f565b90509250925092565b5f8060408385031215612c14575f80fd5b8235612c1f81612a25565b9150612c2d60208401612b9f565b90509250929050565b5f805f805f60608688031215612c4a575f80fd5b853567ffffffffffffffff80821115612c61575f80fd5b612c6d89838a01612a88565b90975095506020880135915080821115612c85575f80fd5b50612c9288828901612a88565b9094509250612ca5905060408701612b9f565b90509295509295909350565b5f60208284031215612cc1575f80fd5b5035919050565b5f8060408385031215612cd9575f80fd5b8235612ce481612a25565b91506020830135612cf481612a25565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156109d5576109d5612d34565b600181811c90821680612d6f57607f821691505b602082108103612d8d57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f60018201612db857612db8612d34565b5060010190565b808201808211156109d5576109d5612d34565b5f60208284031215612de2575f80fd5b5051919050565b80820281158282048414176109d5576109d5612d34565b5f82612e1a57634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b80851115612e5957815f1904821115612e3f57612e3f612d34565b80851615612e4c57918102915b93841c9390800290612e24565b509250929050565b5f82612e6f575060016109d5565b81612e7b57505f6109d5565b8160018114612e915760028114612e9b57612eb7565b60019150506109d5565b60ff841115612eac57612eac612d34565b50506001821b6109d5565b5060208310610133831016604e8410600b8410161715612eda575081810a6109d5565b612ee48383612e1f565b805f1904821115612ef757612ef7612d34565b029392505050565b5f612a5760ff841683612e61565b5f60208284031215612f1d575f80fd5b8151612a5781612a25565b5f805f60608486031215612f3a575f80fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156130295784516001600160a01b031683529383019391830191600101613004565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212206ebc6892a77bd93811c49f802d8bddfa0c8cce0d9ec437eebaece2340769631a64736f6c63430008150033

Deployed Bytecode Sourcemap

12293:10736:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20102:130;;;;;;;;;;;;;:::i;:::-;;15080:201;;;;;;;;;;;;;:::i;:::-;;;160:25:1;;;148:2;133:18;15080:201:0;;;;;;;;4181:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;12336:37::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;931:32:1;;;913:51;;901:2;886:18;12336:37:0;749:221:1;20501:108:0;;;;;;;;;;-1:-1:-1;20501:108:0;;;;;:::i;:::-;;:::i;5236:210::-;;;;;;;;;;-1:-1:-1;5236:210:0;;;;;:::i;:::-;;:::i;:::-;;;1848:14:1;;1841:22;1823:41;;1811:2;1796:18;5236:210:0;1683:187:1;22599:224:0;;;;;;;;;;-1:-1:-1;22599:224:0;;;;;:::i;:::-;;:::i;20617:216::-;;;;;;;;;;-1:-1:-1;20617:216:0;;;;;:::i;:::-;;:::i;4502:108::-;;;;;;;;;;-1:-1:-1;4590:12:0;;4502:108;;12748:27;;;;;;;;;;;;;;;;14455:86;;;;;;;;;;;;;:::i;5454:620::-;;;;;;;;;;-1:-1:-1;5454:620:0;;;;;:::i;:::-;;:::i;14086:84::-;;;;;;;;;;-1:-1:-1;14086:84:0;;14161:1;3681:36:1;;3669:2;3654:18;14086:84:0;3539:184:1;12631:28:0;;;;;;;;;;;;;;;;6082:297;;;;;;;;;;-1:-1:-1;6082:297:0;;;;;:::i;:::-;;:::i;21807:124::-;;;;;;;;;;-1:-1:-1;21807:124:0;;;;;:::i;:::-;;:::i;12923:49::-;;;;;;;;;;-1:-1:-1;12923:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12380:21;;;;;;;;;;-1:-1:-1;12380:21:0;;;;-1:-1:-1;;;;;12380:21:0;;;21937:76;;;;;;;;;;;;;:::i;12823:32::-;;;;;;;;;;;;;;;;12410:51;;;;;;;;;;-1:-1:-1;12410:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;14178:269;;;;;;;;;;-1:-1:-1;14178:269:0;;;;;:::i;:::-;;:::i;15575:402::-;;;;;;;;;;-1:-1:-1;15575:402:0;;;;;:::i;:::-;;:::i;20841:100::-;;;:::i;12784:30::-;;;;;;;;;;-1:-1:-1;12784:30:0;;;;;;;;4618:177;;;;;;;;;;-1:-1:-1;4618:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;4769:18:0;4737:7;4769:18;;;;;;;;;;;;4618:177;8682:148;;;;;;;;;;;;;:::i;14549:313::-;;;;;;;;;;-1:-1:-1;14549:313:0;;;;;:::i;:::-;;:::i;8468:79::-;;;;;;;;;;-1:-1:-1;8533:6:0;;-1:-1:-1;;;;;8533:6:0;8468:79;;4289:104;;;;;;;;;;;;;:::i;6387:482::-;;;;;;;;;;-1:-1:-1;6387:482:0;;;;;:::i;:::-;;:::i;4803:216::-;;;;;;;;;;-1:-1:-1;4803:216:0;;;;;:::i;:::-;;:::i;21360:441::-;;;;;;;;;;-1:-1:-1;21360:441:0;;;;;:::i;:::-;;:::i;:::-;;;;5443:25:1;;;5499:2;5484:18;;5477:34;;;;5527:18;;;5520:34;;;;5585:2;5570:18;;5563:34;5628:3;5613:19;;5606:35;5430:3;5415:19;21360:441:0;5184:463:1;15289:278:0;;;;;;;;;;-1:-1:-1;15289:278:0;;;;;:::i;:::-;;:::i;22021:570::-;;;;;;;;;;-1:-1:-1;22021:570:0;;;;;:::i;:::-;;:::i;20949:399::-;;;;;;;;;;;;;:::i;:::-;;;;6729:25:1;;;6785:2;6770:18;;6763:34;;;;6813:18;;;6806:34;6871:2;6856:18;;6849:34;6716:3;6701:19;20949:399:0;6498:391:1;12714:27:0;;;;;;;;;;-1:-1:-1;12714:27:0;;;;-1:-1:-1;;;;;12714:27:0;;;12668:39;;;;;;;;;;-1:-1:-1;12668:39:0;;;;-1:-1:-1;;;;;12668:39:0;;;19465:629;;;;;;:::i;:::-;;:::i;19310:147::-;;;;;;;;;;-1:-1:-1;19310:147:0;;;;;:::i;:::-;;:::i;20240:253::-;;;;;;;;;;-1:-1:-1;20240:253:0;;;;;:::i;:::-;;:::i;5027:201::-;;;;;;;;;;-1:-1:-1;5027:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5193:18:0;;;5161:7;5193:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5027:201;19069:233;;;;;;;;;;;;;:::i;12591:33::-;;;;;;;;;;;;;;;;8838:281;;;;;;;;;;-1:-1:-1;8838:281:0;;;;;:::i;:::-;;:::i;12979:37::-;;;;;;;;;;-1:-1:-1;12979:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20102:130;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;;;;;;;;;20158:17:::1;::::0;:22;20150:31:::1;;;::::0;::::1;;20212:12;20192:17;:32:::0;20102:130::o;15080:201::-;15123:7;15181:1;15161:17;;15146:12;:32;;;;:::i;:::-;:36;15143:49;;;-1:-1:-1;15191:1:0;;15080:201::o;15143:49::-;15241:1;15221:17;;15206:12;:32;;;;:::i;:::-;:36;15203:50;;;-1:-1:-1;15251:2:0;;15080:201::o;15203:50::-;-1:-1:-1;15271:2:0;;15080:201::o;4181:100::-;4235:13;4268:5;4261:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4181:100;:::o;20501:108::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;20576:12:::1;:25:::0;;-1:-1:-1;;;;;;20576:25:0::1;-1:-1:-1::0;;;;;20576:25:0;;;::::1;::::0;;;::::1;::::0;;20501:108::o;5236:210::-;5355:4;5377:39;315:10;5400:7;5409:6;5377:8;:39::i;:::-;-1:-1:-1;5434:4:0;5236:210;;;;;:::o;22599:224::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;22708:9:::1;22704:112;22723:19:::0;;::::1;22704:112;;;22796:8;22764:16;:29;22781:8;;22790:1;22781:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22764:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;22764:29:0;:40;22744:3;::::1;::::0;::::1;:::i;:::-;;;;22704:112;;;;22599:224:::0;;;:::o;20617:216::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;20747:11:::1;::::0;:78:::1;::::0;-1:-1:-1;;;20747:78:0;;::::1;::::0;::::1;9193:25:1::0;;;9234:18;;;9227:34;;;9277:18;;;9270:34;;;-1:-1:-1;;;;;20747:11:0;;::::1;::::0;:35:::1;::::0;9166:18:1;;20747:78:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20617:216:::0;;;:::o;14455:86::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;14522:11:::1;::::0;;-1:-1:-1;;14507:26:0;::::1;14522:11;::::0;;::::1;14521:12;14507:26;::::0;;14455:86::o;5454:620::-;5594:4;5611:36;5621:6;5629:9;5640:6;5611:9;:36::i;:::-;-1:-1:-1;;;;;5687:19:0;;5660:24;5687:19;;;:11;:19;;;;;;;;315:10;5687:33;;;;;;;;-1:-1:-1;;5734:37:0;;5731:314;;5835:6;5815:16;:26;;5789:128;;;;-1:-1:-1;;;5789:128:0;;9517:2:1;5789:128:0;;;9499:21:1;9556:2;9536:18;;;9529:30;9595:34;9575:18;;;9568:62;-1:-1:-1;;;9646:18:1;;;9639:38;9694:19;;5789:128:0;9315:404:1;5789:128:0;5961:57;5970:6;315:10;6011:6;5992:16;:25;5961:8;:57::i;:::-;-1:-1:-1;6062:4:0;;5454:620;-1:-1:-1;;;;5454:620:0:o;6082:297::-;315:10;6197:4;6291:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6291:34:0;;;;;;;;;;6197:4;;6219:130;;6269:7;;6291:47;;6328:10;;6291:47;:::i;:::-;6219:8;:130::i;21807:124::-;21894:11;;:32;;-1:-1:-1;;;21894:32:0;;-1:-1:-1;;;;;931:32:1;;;21894::0;;;913:51:1;21870:7:0;;21894:11;;:24;;886:18:1;;21894:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21937:76::-;21971:11;;:37;;-1:-1:-1;;;21971:37:0;;21997:10;21971:37;;;913:51:1;-1:-1:-1;;;;;21971:11:0;;;;:25;;886:18:1;;21971:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14178:269;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;14314:3:::1;14293:13;4590:12:::0;;;4502:108;14293:13:::1;:17;::::0;14309:1:::1;14293:17;:::i;:::-;14292:25;;;;:::i;:::-;14279:9;:38;;14271:92;;;::::0;-1:-1:-1;;;14271:92:0;;10640:2:1;14271:92:0::1;::::0;::::1;10622:21:1::0;10679:2;10659:18;;;10652:30;10718:34;10698:18;;;10691:62;-1:-1:-1;;;10769:18:1;;;10762:39;10818:19;;14271:92:0::1;10438:405:1::0;14271:92:0::1;14374:18;:29:::0;;;;14414:13:::1;:25:::0;14178:269::o;15575:402::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;15678:9:::1;15673:297;15693:18:::0;;::::1;15673:297;;;15764:6;15733:16;:28;15750:7;;15758:1;15750:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15733:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15733:28:0;:37;;-1:-1:-1;;15733:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15785:174;::::1;;;15814:11;::::0;-1:-1:-1;;;;;15814:11:0::1;:20;15835:7:::0;;15843:1;15835:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15814:35;::::0;-1:-1:-1;;;;;;15814:35:0::1;::::0;;;;;;-1:-1:-1;;;;;11048:32:1;;;15814:35:0::1;::::0;::::1;11030:51:1::0;15847:1:0::1;11097:18:1::0;;;11090:34;11003:18;;15814:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15785:174;;;15888:11;::::0;-1:-1:-1;;;;;15888:11:0::1;:20;15909:7:::0;;15917:1;15909:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15921:21;15931:7;;15939:1;15931:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;15921:21::-;15888:55;::::0;-1:-1:-1;;;;;;15888:55:0::1;::::0;;;;;;-1:-1:-1;;;;;11048:32:1;;;15888:55:0::1;::::0;::::1;11030:51:1::0;11097:18;;;11090:34;11003:18;;15888:55:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15785:174;15713:3:::0;::::1;::::0;::::1;:::i;:::-;;;;15673:297;;20841:100:::0;20894:11;;;;;;;;;-1:-1:-1;;;;;20894:11:0;-1:-1:-1;;;;;20894:19:0;;20921:9;20894:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20841:100::o;8682:148::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;8773:6:::1;::::0;8752:40:::1;::::0;8789:1:::1;::::0;-1:-1:-1;;;;;8773:6:0::1;::::0;8752:40:::1;::::0;8789:1;;8752:40:::1;8803:6;:19:::0;;-1:-1:-1;;;;;;8803:19:0::1;::::0;;8682:148::o;14549:313::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;14675:6:::1;::::0;-1:-1:-1;;;;;14675:6:0;;::::1;14667:14:::0;;::::1;::::0;14645:101:::1;;;::::0;-1:-1:-1;;;14645:101:0;;11616:2:1;14645:101:0::1;::::0;::::1;11598:21:1::0;11655:2;11635:18;;;11628:30;11694:34;11674:18;;;11667:62;-1:-1:-1;;;11745:18:1;;;11738:35;11790:19;;14645:101:0::1;11414:401:1::0;14645:101:0::1;-1:-1:-1::0;;;;;14759:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;;;:19;;;::::1;;-1:-1:-1::0;;14759:19:0;;::::1;::::0;::::1;::::0;;;14789:16:::1;:22:::0;;;;;;:29;;;;::::1;14759:19:::0;14789:29:::1;::::0;;;14834:20;14759:19;;:11;14834:20:::1;::::0;::::1;14549:313:::0;;:::o;4289:104::-;4345:13;4378:7;4371:14;;;;;:::i;6387:482::-;315:10;6507:4;6556:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6556:34:0;;;;;;;;;;6623:35;;;;6601:122;;;;-1:-1:-1;;;6601:122:0;;12022:2:1;6601:122:0;;;12004:21:1;12061:2;12041:18;;;12034:30;12100:34;12080:18;;;12073:62;-1:-1:-1;;;12151:18:1;;;12144:35;12196:19;;6601:122:0;11820:401:1;6601:122:0;6759:67;315:10;6782:7;6810:15;6791:16;:34;6759:8;:67::i;:::-;-1:-1:-1;6857:4:0;;6387:482;-1:-1:-1;;;6387:482:0:o;4803:216::-;4925:4;4947:42;315:10;4971:9;4982:6;4947:9;:42::i;21360:441::-;21534:11;;:37;;-1:-1:-1;;;21534:37:0;;-1:-1:-1;;;;;931:32:1;;;21534:37:0;;;913:51:1;21421:13:0;;;;;;;;;;21534:11;;;:29;;886:18:1;;21534:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21588:11;;:37;;-1:-1:-1;;;21588:37:0;;-1:-1:-1;;;;;931:32:1;;;21588:37:0;;;913:51:1;21526:45:0;;-1:-1:-1;21588:11:0;;;:29;;886:18:1;;21588:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21649:11;;:36;;-1:-1:-1;;;21649:36:0;;-1:-1:-1;;;;;931:32:1;;;21649:36:0;;;913:51:1;21579:46:0;;-1:-1:-1;21649:11:0;;;:28;;886:18:1;;21649:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21707:11;;:34;;-1:-1:-1;;;21707:34:0;;-1:-1:-1;;;;;931:32:1;;;21707:34:0;;;913:51:1;21633:52:0;;-1:-1:-1;21707:11:0;;;:26;;886:18:1;;21707:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21764:11;;:32;;-1:-1:-1;;;21764:32:0;;-1:-1:-1;;;;;931:32:1;;;21764::0;;;913:51:1;21693:48:0;;-1:-1:-1;21764:11:0;;;:24;;886:18:1;;21764:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21752:44;;21360:441;;;;;;;:::o;15289:278::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;15391:9:::1;15386:174;15406:19:::0;;::::1;15386:174;;;15482:8;15447:19;:32;15467:8;;15476:1;15467:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15447:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15447:32:0;:43;;-1:-1:-1;;15447:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15526:8;;15535:1;15526:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15510:38:0::1;;15539:8;15510:38;;;;1848:14:1::0;1841:22;1823:41;;1811:2;1796:18;;1683:187;15510:38:0::1;;;;;;;;15427:3:::0;::::1;::::0;::::1;:::i;:::-;;;;15386:174;;22021:570:::0;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;22163:40;;::::1;22155:83;;;::::0;-1:-1:-1;;;22155:83:0;;12428:2:1;22155:83:0::1;::::0;::::1;12410:21:1::0;12467:2;12447:18;;;12440:30;12506:32;12486:18;;;12479:60;12556:18;;22155:83:0::1;12226:354:1::0;22155:83:0::1;22256:9;22251:333;22271:18:::0;;::::1;22251:333;;;22311:76;22327:10;22339:7;;22347:1;22339:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12539:15;12497:1;12539:2;:15;:::i;:::-;22351;;22367:1;22351:18;;;;;;;:::i;:::-;;;;;;;:35;;;;:::i;:::-;22311:15;:76::i;:::-;22405:7;22402:170;;;22431:11;::::0;-1:-1:-1;;;;;22431:11:0::1;:20;22452:7:::0;;22460:1;22452:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12539:15;12497:1;12539:2;:15;:::i;:::-;22464;;22480:1;22464:18;;;;;;;:::i;:::-;;;;;;;:35;;;;:::i;:::-;22431:69;::::0;-1:-1:-1;;;;;;22431:69:0::1;::::0;;;;;;-1:-1:-1;;;;;11048:32:1;;;22431:69:0::1;::::0;::::1;11030:51:1::0;11097:18;;;11090:34;11003:18;;22431:69:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22402:170;;;22568:4;22537:16;:28;22554:7;;22562:1;22554:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22537:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;22537:28:0;:35;;-1:-1:-1;;22537:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22402:170:::1;22291:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22251:333;;;;22021:570:::0;;;;;:::o;20949:399::-;21001:20;21023:24;21049:25;21076:21;21125:11;;;;;;;;;-1:-1:-1;;;;;21125:11:0;-1:-1:-1;;;;;21125:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21110:46;;21186:11;;;;;;;;;-1:-1:-1;;;;;21186:11:0;-1:-1:-1;;;;;21186:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21167:52;;21250:11;;;;;;;;;-1:-1:-1;;;;;21250:11:0;-1:-1:-1;;;;;21250:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21230:52;;21309:11;;;;;;;;;-1:-1:-1;;;;;21309:11:0;-1:-1:-1;;;;;21309:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21293:47;;20949:399;;;;:::o;19465:629::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;19544:17:::1;::::0;:22;19536:31:::1;;;::::0;::::1;;19598:1;19586:9;:13;19578:44;;;::::0;-1:-1:-1;;;19578:44:0;;14170:2:1;19578:44:0::1;::::0;::::1;14152:21:1::0;14209:2;14189:18;;;14182:30;-1:-1:-1;;;14228:18:1;;;14221:48;14286:18;;19578:44:0::1;13968:342:1::0;19578:44:0::1;19650:1;19641:6;:10;19633:45;;;::::0;-1:-1:-1;;;19633:45:0;;14517:2:1;19633:45:0::1;::::0;::::1;14499:21:1::0;14556:2;14536:18;;;14529:30;-1:-1:-1;;;14575:18:1;;;14568:52;14637:18;;19633:45:0::1;14315:346:1::0;19633:45:0::1;19691:11;19705:9;-1:-1:-1::0;;;;;19705:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19691:30;;19755:9;-1:-1:-1::0;;;;;19755:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19743:63;::::0;-1:-1:-1;;;19743:63:0;;-1:-1:-1;;;;;15152:15:1;;;19743:63:0::1;::::0;::::1;15134:34:1::0;19800:4:0::1;15184:18:1::0;;;15177:43;19743::0;;;::::1;::::0;::::1;::::0;15069:18:1;;19743:63:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19734:6;:72:::0;;-1:-1:-1;;;;;;19734:72:0::1;-1:-1:-1::0;;;;;19734:72:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;19817:13:0;;;:5:::1;:13;::::0;;;;;;;:20;;-1:-1:-1;;19817:20:0;;::::1;-1:-1:-1::0;19817:20:0;;::::1;::::0;;;19865:6;;;;::::1;19848:24:::0;;:16:::1;:24:::0;;;;;:31;;;;::::1;::::0;;::::1;::::0;;19892:67:::1;19908:10;19928:4;12539:15;12497:1;12539:2;:15;:::i;:::-;19935:23;::::0;:6;:23:::1;:::i;19892:67::-;19972:9;-1:-1:-1::0;;;;;19972:25:0::1;;20005:9;20024:4;20030:24;20048:4;-1:-1:-1::0;;;;;4769:18:0;4737:7;4769:18;;;;;;;;;;;;4618:177;20030:24:::1;19972:114;::::0;-1:-1:-1;;;;;;19972:114:0::1;::::0;;;;;;-1:-1:-1;;;;;15590:15:1;;;19972:114:0::1;::::0;::::1;15572:34:1::0;15622:18;;;15615:34;20055:1:0::1;15665:18:1::0;;;15658:34;;;15708:18;;;15701:34;20059:10:0::1;15751:19:1::0;;;15744:44;20070:15:0::1;15804:19:1::0;;;15797:35;15506:19;;19972:114:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19310:147::-:0;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;19395:1:::1;19385:6;:11;;19377:44;;;::::0;-1:-1:-1;;;19377:44:0;;16356:2:1;19377:44:0::1;::::0;::::1;16338:21:1::0;16395:2;16375:18;;;16368:30;-1:-1:-1;;;16414:18:1;;;16407:50;16474:18;;19377:44:0::1;16154:344:1::0;19377:44:0::1;19432:8;:17:::0;19310:147::o;20240:253::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;20333:7:::1;20330:59;;;20356:11;::::0;:33:::1;::::0;-1:-1:-1;;;20356:33:0;;-1:-1:-1;;;;;931:32:1;;;20356:33:0::1;::::0;::::1;913:51:1::0;20356:11:0;;::::1;::::0;:19:::1;::::0;886:18:1;;20356:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20330:59;20402:11;:48:::0;;-1:-1:-1;;;;;;20402:48:0::1;-1:-1:-1::0;;;;;20402:48:0;::::1;::::0;;::::1;::::0;;;20461:24:::1;::::0;;-1:-1:-1;;;20461:24:0;;;;:22:::1;::::0;:24:::1;::::0;;::::1;::::0;-1:-1:-1;;20461:24:0;;;;;;;;-1:-1:-1;20402:48:0;20461:24;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;19069:233:::0;8533:6;;-1:-1:-1;;;;;8533:6:0;19120:10;:21;;:51;;-1:-1:-1;19159:12:0;;-1:-1:-1;;;;;19159:12:0;19145:10;:26;19120:51;19112:76;;;;-1:-1:-1;;;19112:76:0;;16705:2:1;19112:76:0;;;16687:21:1;16744:2;16724:18;;;16717:30;-1:-1:-1;;;16763:18:1;;;16756:42;16815:18;;19112:76:0;16503:336:1;19112:76:0;19236:58;;19199:12;;19244:10;;19268:21;;19199:12;19236:58;19199:12;19236:58;19268:21;19244:10;19236:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8838:281;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8941:22:0;::::1;8919:110;;;::::0;-1:-1:-1;;;8919:110:0;;17256:2:1;8919:110:0::1;::::0;::::1;17238:21:1::0;17295:2;17275:18;;;17268:30;17334:34;17314:18;;;17307:62;-1:-1:-1;;;17385:18:1;;;17378:36;17431:19;;8919:110:0::1;17054:402:1::0;8919:110:0::1;9066:6;::::0;9045:38:::1;::::0;-1:-1:-1;;;;;9045:38:0;;::::1;::::0;9066:6:::1;::::0;9045:38:::1;::::0;9066:6:::1;::::0;9045:38:::1;9094:6;:17:::0;;-1:-1:-1;;;;;;9094:17:0::1;-1:-1:-1::0;;;;;9094:17:0;;;::::1;::::0;;;::::1;::::0;;8838:281::o;7536:380::-;-1:-1:-1;;;;;7672:19:0;;7664:68;;;;-1:-1:-1;;;7664:68:0;;17663:2:1;7664:68:0;;;17645:21:1;17702:2;17682:18;;;17675:30;17741:34;17721:18;;;17714:62;-1:-1:-1;;;17792:18:1;;;17785:34;17836:19;;7664:68:0;17461:400:1;7664:68:0;-1:-1:-1;;;;;7751:21:0;;7743:68;;;;-1:-1:-1;;;7743:68:0;;18068:2:1;7743:68:0;;;18050:21:1;18107:2;18087:18;;;18080:30;18146:34;18126:18;;;18119:62;-1:-1:-1;;;18197:18:1;;;18190:32;18239:19;;7743:68:0;17866:398:1;7743:68:0;-1:-1:-1;;;;;7824:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7876:32;;160:25:1;;;7876:32:0;;133:18:1;7876:32:0;;;;;;;7536:380;;;:::o;15985:1919::-;-1:-1:-1;;;;;16117:18:0;;16109:68;;;;-1:-1:-1;;;16109:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16196:16:0;;16188:64;;;;-1:-1:-1;;;16188:64:0;;;;;;;:::i;:::-;16280:1;16271:6;:10;16263:52;;;;-1:-1:-1;;;16263:52:0;;19281:2:1;16263:52:0;;;19263:21:1;19320:2;19300:18;;;19293:30;19359:31;19339:18;;;19332:59;19408:18;;16263:52:0;19079:353:1;16263:52:0;16331:17;;16352:1;16331:22;16328:1330;;8533:6;;-1:-1:-1;;;;;16378:15:0;;;8533:6;;16378:15;;:32;;-1:-1:-1;8533:6:0;;-1:-1:-1;;;;;16397:13:0;;;8533:6;;16397:13;16378:32;:57;;;-1:-1:-1;;;;;;16414:21:0;;16430:4;16414:21;16378:57;:80;;;-1:-1:-1;;;;;;16439:19:0;;16453:4;16439:19;16378:80;16370:115;;;;-1:-1:-1;;;16370:115:0;;19639:2:1;16370:115:0;;;19621:21:1;19678:2;19658:18;;;19651:30;-1:-1:-1;;;19697:18:1;;;19690:52;19759:18;;16370:115:0;19437:346:1;16370:115:0;16500:33;16516:4;16522:2;16526:6;16500:15;:33::i;:::-;16328:1330;;;-1:-1:-1;;;;;16580:25:0;;;;;;:19;:25;;;;;;;;16579:26;:54;;;;-1:-1:-1;;;;;;16610:23:0;;;;;;:19;:23;;;;;;;;16609:24;16579:54;16575:1022;;;16654:12;16689:11;16703:13;:11;:13::i;:::-;16689:27;;16735:11;16749:12;:10;:12::i;:::-;-1:-1:-1;;;;;16786:9:0;;;;;;:5;:9;;;;;;16735:26;;-1:-1:-1;16786:9:0;;16782:447;;;16823:7;;16820:64;;16881:3;16865:12;16874:3;16865:6;:12;:::i;:::-;16864:20;;;;:::i;:::-;16857:27;;16820:64;-1:-1:-1;;;;;16914:22:0;;;;;;:16;:22;;;;;;;;16909:180;;-1:-1:-1;;;;;16965:22:0;;;;;;;:16;:22;;;;;;:29;;-1:-1:-1;;16965:29:0;16990:4;16965:29;;;17025:11;;:29;;-1:-1:-1;;;17025:29:0;;;;;11030:51:1;;;;11097:18;;;11090:34;;;;17025:11:0;;;;:20;;11003:18:1;;17025:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17021:45;;16782:447;;;17141:1;17135:3;:7;:22;;;;-1:-1:-1;;;;;;17146:11:0;;;;;;:5;:11;;;;;;;;17135:22;17131:98;;;17206:3;17190:12;17199:3;17190:6;:12;:::i;:::-;17189:20;;;;:::i;:::-;17182:27;;17131:98;17253:8;;17249:99;;17286:42;17302:4;17316;17323;17286:15;:42::i;:::-;17368:14;17378:4;17368:14;;:::i;:::-;17407:11;;17368:14;;-1:-1:-1;17407:11:0;;:24;;;;-1:-1:-1;17423:8:0;;;;17422:9;17407:24;:37;;;;-1:-1:-1;;;;;;17435:9:0;;;;;;:5;:9;;;;;;;;17407:37;17403:179;;;17469:8;:15;;-1:-1:-1;;17469:15:0;17480:4;17469:15;;;17507:16;17516:6;17507:8;:16::i;:::-;17546:8;:16;;-1:-1:-1;;17546:16:0;;;17403:179;16635:962;;;16575:1022;17613:33;17629:4;17635:2;17639:6;17613:15;:33::i;:::-;17670:30;17691:4;17697:2;17670:20;:30::i;:::-;-1:-1:-1;;;;;17717:22:0;;;;;;:16;:22;;;;;;;;17713:90;;17746:11;;-1:-1:-1;;;;;17746:11:0;:20;17767:4;17773:15;17767:4;-1:-1:-1;;;;;4769:18:0;4737:7;4769:18;;;;;;;;;;;;4618:177;17773:15;17746:43;;-1:-1:-1;;;;;;17746:43:0;;;;;;;-1:-1:-1;;;;;11048:32:1;;;17746:43:0;;;11030:51:1;11097:18;;;11090:34;11003:18;;17746:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17742:59;;-1:-1:-1;;;;;17817:20:0;;;;;;:16;:20;;;;;;;;17813:84;;17844:11;;-1:-1:-1;;;;;17844:11:0;:20;17865:2;17869:13;17865:2;-1:-1:-1;;;;;4769:18:0;4737:7;4769:18;;;;;;;;;;;;4618:177;17869:13;17844:39;;-1:-1:-1;;;;;;17844:39:0;;;;;;;-1:-1:-1;;;;;11048:32:1;;;17844:39:0;;;11030:51:1;11097:18;;;11090:34;11003:18;;17844:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17840:55;15985:1919;;;:::o;6877:651::-;-1:-1:-1;;;;;7017:20:0;;7009:70;;;;-1:-1:-1;;;7009:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7098:23:0;;7090:71;;;;-1:-1:-1;;;7090:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7198:17:0;;7174:21;7198:17;;;;;;;;;;;7248:23;;;;7226:111;;;;-1:-1:-1;;;7226:111:0;;19990:2:1;7226:111:0;;;19972:21:1;20029:2;20009:18;;;20002:30;20068:34;20048:18;;;20041:62;-1:-1:-1;;;20119:18:1;;;20112:36;20165:19;;7226:111:0;19788:402:1;7226:111:0;-1:-1:-1;;;;;7373:17:0;;;:9;:17;;;;;;;;;;;7393:22;;;7373:42;;7437:20;;;;;;;;:30;;7409:6;;7373:9;7437:30;;7409:6;;7437:30;:::i;:::-;;;;;;;;7502:9;-1:-1:-1;;;;;7485:35:0;7494:6;-1:-1:-1;;;;;7485:35:0;;7513:6;7485:35;;;;160:25:1;;148:2;133:18;;14:177;7485:35:0;;;;;;;;6998:530;6877:651;;;:::o;18336:725::-;18430:4;18389:20;4769:18;;;;;;;;;;;18466;;18451:33;;18447:46;;;18486:7;18336:725;:::o;18447:46::-;18522:13;;18507:12;:28;18503:62;;;-1:-1:-1;18552:13:0;;18503:62;18595:6;18580:12;:21;18576:48;;;-1:-1:-1;18618:6:0;18576:48;18639:12;18655:1;18639:17;18635:30;;18658:7;18336:725;:::o;18635:30::-;18698:21;18732:30;18749:12;18732:16;:30::i;:::-;18775:17;18795:34;18819:10;18795:21;:34;:::i;:::-;18775:54;-1:-1:-1;18845:13:0;;18842:212;;18875:14;18932:12;:10;:12::i;:::-;18920:9;18908:8;;18893:12;:10;:12::i;:::-;:23;;;;:::i;:::-;18892:37;;;;:::i;:::-;:52;;;;:::i;:::-;18875:69;-1:-1:-1;18962:10:0;;18959:84;;18995:11;;;;;;;;;-1:-1:-1;;;;;18995:11:0;-1:-1:-1;;;;;18995:19:0;;19022:6;18995:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18991:52;;;18860:194;18378:683;;;18336:725;:::o;22831:195::-;-1:-1:-1;;;;;22920:22:0;;;;;;:16;:22;;;;;;:27;;:44;;-1:-1:-1;8533:6:0;;-1:-1:-1;;;;;22951:13:0;;;8533:6;;22951:13;22920:44;22912:106;;;;-1:-1:-1;;;22912:106:0;;20397:2:1;22912:106:0;;;20379:21:1;20436:2;20416:18;;;20409:30;20475:34;20455:18;;;20448:62;-1:-1:-1;;;20526:18:1;;;20519:47;20583:19;;22912:106:0;20195:413:1;22912:106:0;22831:195;;:::o;17912:416::-;18002:16;;;18016:1;18002:16;;;;;;;;17978:21;;18002:16;;;;;;;;;;-1:-1:-1;18002:16:0;17978:40;;18047:4;18029;18034:1;18029:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18029:23:0;;;-1:-1:-1;;;;;18029:23:0;;;;;18073:9;-1:-1:-1;;;;;18073:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18063:4;18068:1;18063:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18063:26:0;;;:7;;;;;;;;;:26;18102:218;;-1:-1:-1;;;18102:218:0;;:9;:60;;;;;;:218;;18177:11;;18203:1;;18247:4;;18274;;18294:15;;18102:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;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;975:131::-;-1:-1:-1;;;;;1050:31:1;;1040:42;;1030:70;;1096:1;1093;1086:12;1030:70;975:131;:::o;1111:247::-;1170:6;1223:2;1211:9;1202:7;1198:23;1194:32;1191:52;;;1239:1;1236;1229:12;1191:52;1278:9;1265:23;1297:31;1322:5;1297:31;:::i;:::-;1347:5;1111:247;-1:-1:-1;;;1111:247:1:o;1363:315::-;1431:6;1439;1492:2;1480:9;1471:7;1467:23;1463:32;1460:52;;;1508:1;1505;1498:12;1460:52;1547:9;1534:23;1566:31;1591:5;1566:31;:::i;:::-;1616:5;1668:2;1653:18;;;;1640:32;;-1:-1:-1;;;1363:315:1:o;1875:367::-;1938:8;1948:6;2002:3;1995:4;1987:6;1983:17;1979:27;1969:55;;2020:1;2017;2010:12;1969:55;-1:-1:-1;2043:20:1;;2086:18;2075:30;;2072:50;;;2118:1;2115;2108:12;2072:50;2155:4;2147:6;2143:17;2131:29;;2215:3;2208:4;2198:6;2195:1;2191:14;2183:6;2179:27;2175:38;2172:47;2169:67;;;2232:1;2229;2222:12;2169:67;1875:367;;;;;:::o;2247:505::-;2342:6;2350;2358;2411:2;2399:9;2390:7;2386:23;2382:32;2379:52;;;2427:1;2424;2417:12;2379:52;2467:9;2454:23;2500:18;2492:6;2489:30;2486:50;;;2532:1;2529;2522:12;2486:50;2571:70;2633:7;2624:6;2613:9;2609:22;2571:70;:::i;:::-;2660:8;;2545:96;;-1:-1:-1;2742:2:1;2727:18;;;;2714:32;;2247:505;-1:-1:-1;;;;2247:505:1:o;2757:316::-;2834:6;2842;2850;2903:2;2891:9;2882:7;2878:23;2874:32;2871:52;;;2919:1;2916;2909:12;2871:52;-1:-1:-1;;2942:23:1;;;3012:2;2997:18;;2984:32;;-1:-1:-1;3063:2:1;3048:18;;;3035:32;;2757:316;-1:-1:-1;2757:316:1:o;3078:456::-;3155:6;3163;3171;3224:2;3212:9;3203:7;3199:23;3195:32;3192:52;;;3240:1;3237;3230:12;3192:52;3279:9;3266:23;3298:31;3323:5;3298:31;:::i;:::-;3348:5;-1:-1:-1;3405:2:1;3390:18;;3377:32;3418:33;3377:32;3418:33;:::i;:::-;3078:456;;3470:7;;-1:-1:-1;;;3524:2:1;3509:18;;;;3496:32;;3078:456::o;3936:248::-;4004:6;4012;4065:2;4053:9;4044:7;4040:23;4036:32;4033:52;;;4081:1;4078;4071:12;4033:52;-1:-1:-1;;4104:23:1;;;4174:2;4159:18;;;4146:32;;-1:-1:-1;3936:248:1:o;4189:160::-;4254:20;;4310:13;;4303:21;4293:32;;4283:60;;4339:1;4336;4329:12;4283:60;4189:160;;;:::o;4354:505::-;4446:6;4454;4462;4515:2;4503:9;4494:7;4490:23;4486:32;4483:52;;;4531:1;4528;4521:12;4483:52;4571:9;4558:23;4604:18;4596:6;4593:30;4590:50;;;4636:1;4633;4626:12;4590:50;4675:70;4737:7;4728:6;4717:9;4713:22;4675:70;:::i;:::-;4764:8;;-1:-1:-1;4649:96:1;-1:-1:-1;4818:35:1;;-1:-1:-1;4849:2:1;4834:18;;4818:35;:::i;:::-;4808:45;;4354:505;;;;;:::o;4864:315::-;4929:6;4937;4990:2;4978:9;4969:7;4965:23;4961:32;4958:52;;;5006:1;5003;4996:12;4958:52;5045:9;5032:23;5064:31;5089:5;5064:31;:::i;:::-;5114:5;-1:-1:-1;5138:35:1;5169:2;5154:18;;5138:35;:::i;:::-;5128:45;;4864:315;;;;;:::o;5652:841::-;5780:6;5788;5796;5804;5812;5865:2;5853:9;5844:7;5840:23;5836:32;5833:52;;;5881:1;5878;5871:12;5833:52;5921:9;5908:23;5950:18;5991:2;5983:6;5980:14;5977:34;;;6007:1;6004;5997:12;5977:34;6046:70;6108:7;6099:6;6088:9;6084:22;6046:70;:::i;:::-;6135:8;;-1:-1:-1;6020:96:1;-1:-1:-1;6223:2:1;6208:18;;6195:32;;-1:-1:-1;6239:16:1;;;6236:36;;;6268:1;6265;6258:12;6236:36;;6307:72;6371:7;6360:8;6349:9;6345:24;6307:72;:::i;:::-;6398:8;;-1:-1:-1;6281:98:1;-1:-1:-1;6452:35:1;;-1:-1:-1;6483:2:1;6468:18;;6452:35;:::i;:::-;6442:45;;5652:841;;;;;;;;:::o;7130:180::-;7189:6;7242:2;7230:9;7221:7;7217:23;7213:32;7210:52;;;7258:1;7255;7248:12;7210:52;-1:-1:-1;7281:23:1;;7130:180;-1:-1:-1;7130:180:1:o;7315:388::-;7383:6;7391;7444:2;7432:9;7423:7;7419:23;7415:32;7412:52;;;7460:1;7457;7450:12;7412:52;7499:9;7486:23;7518:31;7543:5;7518:31;:::i;:::-;7568:5;-1:-1:-1;7625:2:1;7610:18;;7597:32;7638:33;7597:32;7638:33;:::i;:::-;7690:7;7680:17;;;7315:388;;;;;:::o;7708:356::-;7910:2;7892:21;;;7929:18;;;7922:30;7988:34;7983:2;7968:18;;7961:62;8055:2;8040:18;;7708:356::o;8069:127::-;8130:10;8125:3;8121:20;8118:1;8111:31;8161:4;8158:1;8151:15;8185:4;8182:1;8175:15;8201:128;8268:9;;;8289:11;;;8286:37;;;8303:18;;:::i;8334:380::-;8413:1;8409:12;;;;8456;;;8477:61;;8531:4;8523:6;8519:17;8509:27;;8477:61;8584:2;8576:6;8573:14;8553:18;8550:38;8547:161;;8630:10;8625:3;8621:20;8618:1;8611:31;8665:4;8662:1;8655:15;8693:4;8690:1;8683:15;8547:161;;8334:380;;;:::o;8719:127::-;8780:10;8775:3;8771:20;8768:1;8761:31;8811:4;8808:1;8801:15;8835:4;8832:1;8825:15;8851:135;8890:3;8911:17;;;8908:43;;8931:18;;:::i;:::-;-1:-1:-1;8978:1:1;8967:13;;8851:135::o;9724:125::-;9789:9;;;9810:10;;;9807:36;;;9823:18;;:::i;9854:184::-;9924:6;9977:2;9965:9;9956:7;9952:23;9948:32;9945:52;;;9993:1;9990;9983:12;9945:52;-1:-1:-1;10016:16:1;;9854:184;-1:-1:-1;9854:184:1:o;10043:168::-;10116:9;;;10147;;10164:15;;;10158:22;;10144:37;10134:71;;10185:18;;:::i;10216:217::-;10256:1;10282;10272:132;;10326:10;10321:3;10317:20;10314:1;10307:31;10361:4;10358:1;10351:15;10389:4;10386:1;10379:15;10272:132;-1:-1:-1;10418:9:1;;10216:217::o;12585:422::-;12674:1;12717:5;12674:1;12731:270;12752:7;12742:8;12739:21;12731:270;;;12811:4;12807:1;12803:6;12799:17;12793:4;12790:27;12787:53;;;12820:18;;:::i;:::-;12870:7;12860:8;12856:22;12853:55;;;12890:16;;;;12853:55;12969:22;;;;12929:15;;;;12731:270;;;12735:3;12585:422;;;;;:::o;13012:806::-;13061:5;13091:8;13081:80;;-1:-1:-1;13132:1:1;13146:5;;13081:80;13180:4;13170:76;;-1:-1:-1;13217:1:1;13231:5;;13170:76;13262:4;13280:1;13275:59;;;;13348:1;13343:130;;;;13255:218;;13275:59;13305:1;13296:10;;13319:5;;;13343:130;13380:3;13370:8;13367:17;13364:43;;;13387:18;;:::i;:::-;-1:-1:-1;;13443:1:1;13429:16;;13458:5;;13255:218;;13557:2;13547:8;13544:16;13538:3;13532:4;13529:13;13525:36;13519:2;13509:8;13506:16;13501:2;13495:4;13492:12;13488:35;13485:77;13482:159;;;-1:-1:-1;13594:19:1;;;13626:5;;13482:159;13673:34;13698:8;13692:4;13673:34;:::i;:::-;13743:6;13739:1;13735:6;13731:19;13722:7;13719:32;13716:58;;;13754:18;;:::i;:::-;13792:20;;13012:806;-1:-1:-1;;;13012:806:1:o;13823:140::-;13881:5;13910:47;13951:4;13941:8;13937:19;13931:4;13910:47;:::i;14666:251::-;14736:6;14789:2;14777:9;14768:7;14764:23;14760:32;14757:52;;;14805:1;14802;14795:12;14757:52;14837:9;14831:16;14856:31;14881:5;14856:31;:::i;15843:306::-;15931:6;15939;15947;16000:2;15988:9;15979:7;15975:23;15971:32;15968:52;;;16016:1;16013;16006:12;15968:52;16045:9;16039:16;16029:26;;16095:2;16084:9;16080:18;16074:25;16064:35;;16139:2;16128:9;16124:18;16118:25;16108:35;;15843:306;;;;;:::o;18269:401::-;18471:2;18453:21;;;18510:2;18490:18;;;18483:30;18549:34;18544:2;18529:18;;18522:62;-1:-1:-1;;;18615:2:1;18600:18;;18593:35;18660:3;18645:19;;18269:401::o;18675:399::-;18877:2;18859:21;;;18916:2;18896:18;;;18889:30;18955:34;18950:2;18935:18;;18928:62;-1:-1:-1;;;19021:2:1;19006:18;;18999:33;19064:3;19049:19;;18675:399::o;20745:980::-;21007:4;21055:3;21044:9;21040:19;21086:6;21075:9;21068:25;21112:2;21150:6;21145:2;21134:9;21130:18;21123:34;21193:3;21188:2;21177:9;21173:18;21166:31;21217:6;21252;21246:13;21283:6;21275;21268:22;21321:3;21310:9;21306:19;21299:26;;21360:2;21352:6;21348:15;21334:29;;21381:1;21391:195;21405:6;21402:1;21399:13;21391:195;;;21470:13;;-1:-1:-1;;;;;21466:39:1;21454:52;;21561:15;;;;21526:12;;;;21502:1;21420:9;21391:195;;;-1:-1:-1;;;;;;;21642:32:1;;;;21637:2;21622:18;;21615:60;-1:-1:-1;;;21706:3:1;21691:19;21684:35;21603:3;20745:980;-1:-1:-1;;;20745:980:1:o

Swarm Source

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