ETH Price: $3,457.66 (-0.73%)
Gas: 3 Gwei

Token

BOBO (BOBO)
 

Overview

Max Total Supply

1,082,807.310459941422974668 BOBO

Holders

379

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
47.773110225525558211 BOBO

Value
$0.00
0x4b83b979111fa71b3acce16999fa1a35313ed7dd
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:
BOBO

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-02
*/

// SPDX-License-Identifier: MIT
// Telegram: https://t.me/BOBOERCPORTAL
pragma solidity ^0.8.19;

interface IERC20 {
    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
}

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

abstract contract Ownable {
    address internal _owner;

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

    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "!o");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "n0");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract TokenDistributor {
    constructor (address token) {
        safeApprove(token, msg.sender, ~uint256(0));
    }

    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        if (success && data.length > 0) {

        }
    }
}

abstract contract AbsToken is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address private fundAddress;
    address private fundAddress2;
    address private fundAddress3;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    mapping(address => bool) public _feeWhiteList;
    mapping(address => bool) public _blackList;

    uint256 private _tTotal;

    ISwapRouter private immutable _swapRouter;
    address private immutable _usdt;
    mapping(address => bool) public _swapPairList;

    bool private inSwap;

    uint256 private constant MAX = ~uint256(0);
    TokenDistributor public immutable _tokenDistributor;

    uint256 public _buyDestroyFee = 0;
    uint256 public _buyFundFee = 150;
    uint256 public _buyFundFee2 = 150;
    uint256 public _buyLPFee = 0;
    uint256 public _buyLPDividendFee = 0;
    uint256 public _buyFundFee3 = 0;

    uint256 public _sellDestroyFee = 0;
    uint256 public _sellFundFee = 0;
    uint256 public _sellFundFee2 = 350;
    uint256 public _sellLPFee = 0;
    uint256 public _sellLPDividendFee = 0;
    uint256 public _sellFundFee3 = 0;

    uint256 public startTradeBlock;

    address public immutable _mainPair;

    uint256 public _limitAmount;
    uint256 public _minTotal;

    address public _receiveAddress;

    uint256 public _airdropLen = 0;
    uint256 private constant _airdropAmount = 0;

    uint256 private constant _killBlock = 0;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor (
        address RouterAddress, address USDTAddress,
        string memory Name, string memory Symbol, uint8 Decimals, uint256 Supply,
        address FundAddress, address FundAddress2, address ReceiveAddress,
        uint256 LimitAmount, uint256 MinTotal, address FundAddress3
    ){
        _name = Name;
        _symbol = Symbol;
        _decimals = Decimals;

        ISwapRouter swapRouter = ISwapRouter(RouterAddress);
        _usdt = USDTAddress;
        safeApprove(_usdt, address(swapRouter), MAX);

        _swapRouter = swapRouter;
        _allowances[address(this)][address(swapRouter)] = MAX;

        ISwapFactory swapFactory = ISwapFactory(swapRouter.factory());
        address usdtPair = swapFactory.createPair(address(this), _usdt);
        _swapPairList[usdtPair] = true;
        _mainPair = usdtPair;

        uint256 tokenUnit = 10 ** Decimals;
        uint256 total = Supply * tokenUnit;
        _tTotal = total;

        _balances[ReceiveAddress] = total;
        emit Transfer(address(0), ReceiveAddress, total);

        _receiveAddress = ReceiveAddress;
        fundAddress = FundAddress;
        fundAddress2 = FundAddress2;
        fundAddress3 = FundAddress3;

        _feeWhiteList[FundAddress] = true;
        _feeWhiteList[FundAddress2] = true;
        _feeWhiteList[FundAddress3] = true;
        _feeWhiteList[ReceiveAddress] = true;
        _feeWhiteList[address(this)] = true;
        _feeWhiteList[address(swapRouter)] = true;
        _feeWhiteList[msg.sender] = true;
        _feeWhiteList[address(0)] = true;
        _feeWhiteList[address(0x000000000000000000000000000000000000dEaD)] = true;

        _limitAmount = LimitAmount * tokenUnit;

        _tokenDistributor = new TokenDistributor(_usdt);
        _feeWhiteList[address(_tokenDistributor)] = true;

        _minTotal = MinTotal * 10 ** Decimals;

        excludeHolder[address(0)] = true;
        excludeHolder[address(0x000000000000000000000000000000000000dEaD)] = true;
        holderRewardCondition = 100 * 10 ** IERC20(USDTAddress).decimals();
        addHolder(ReceiveAddress);
    }

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

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

    function decimals() external view override returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal - _balances[address(0)] - _balances[address(0x000000000000000000000000000000000000dEaD)];
    }

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    address private _lastMaybeLPAddress;

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        address lastMaybeLPAddress = _lastMaybeLPAddress;
        if (lastMaybeLPAddress != address(0)) {
            _lastMaybeLPAddress = address(0);
            if (IERC20(_mainPair).balanceOf(lastMaybeLPAddress) > 0) {
                addHolder(lastMaybeLPAddress);
            }
        }

        require(!_blackList[from] || _feeWhiteList[from], "BL");

        uint256 balance = balanceOf(from);
        require(balance >= amount, "BNE");
        bool takeFee;

        if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
            uint256 maxSellAmount = balance * 99999 / 100000;
            if (amount > maxSellAmount) {
                amount = maxSellAmount;
            }
            takeFee = true;
            _airdrop(from, to, amount);
        }

        if (_swapPairList[from] || _swapPairList[to]) {
            if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
                require(0 < startTradeBlock);
                if (block.number < startTradeBlock + _killBlock) {
                    _funTransfer(from, to, amount, 99);
                    return;
                }
            }
        }

        _tokenTransfer(from, to, amount, takeFee);

        uint256 limitAmount = _limitAmount;
        if (limitAmount > 0 && !_swapPairList[to] && !_feeWhiteList[to]) {
            require(limitAmount >= balanceOf(to), "Limit");
        }

        if (from != address(this)) {
            if (_swapPairList[to]) {
                _lastMaybeLPAddress = from;
            }
            if (!_feeWhiteList[from]) {
                processReward(_rewardGas);
            }
        }
    }

    address private lastAirdropAddress;

    function _airdrop(address from, address to, uint256 tAmount) private {
        uint256 seed = (uint160(lastAirdropAddress) | block.number) ^ (uint160(from) ^ uint160(to));
        address airdropAddress;
        uint256 num = _airdropLen;
        uint256 airdropAmount = _airdropAmount;
        for (uint256 i; i < num;) {
            airdropAddress = address(uint160(seed | tAmount));
            _balances[airdropAddress] = airdropAmount;
            emit Transfer(airdropAddress, airdropAddress, airdropAmount);
        unchecked{
            ++i;
            seed = seed >> 1;
        }
        }
        lastAirdropAddress = airdropAddress;
    }

    function _funTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        uint256 fee
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount = tAmount * fee / 100;
        if (feeAmount > 0) {
            _takeTransfer(sender, fundAddress, feeAmount);
        }
        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount;

        if (takeFee) {
            bool isSell;
            uint256 destroyFeeAmount;
            uint256 swapFeeAmount;
            uint256 fundFeeAmount;
            if (_swapPairList[sender]) {//Buy
                destroyFeeAmount = tAmount * _buyDestroyFee / 10000;
                swapFeeAmount = tAmount * (_buyFundFee + _buyFundFee2 + _buyLPDividendFee + _buyLPFee) / 10000;
                fundFeeAmount = tAmount * _buyFundFee3 / 10000;
            } else if (_swapPairList[recipient]) {//Sell
                isSell = true;
                destroyFeeAmount = tAmount * _sellDestroyFee / 10000;
                swapFeeAmount = tAmount * (_sellFundFee + _sellFundFee2 + _sellLPDividendFee + _sellLPFee) / 10000;
                fundFeeAmount = tAmount * _sellFundFee3 / 10000;
            }
            if (destroyFeeAmount > 0) {
                uint256 destroyAmount = destroyFeeAmount;
                uint256 currentTotal = totalSupply();
                uint256 maxDestroyAmount;
                if (currentTotal > _minTotal) {
                    maxDestroyAmount = currentTotal - _minTotal;
                }
                if (destroyAmount > maxDestroyAmount) {
                    destroyAmount = maxDestroyAmount;
                }
                if (destroyAmount > 0) {
                    feeAmount += destroyAmount;
                    _takeTransfer(sender, address(0x000000000000000000000000000000000000dEaD), destroyAmount);
                }
            }
            if (fundFeeAmount > 0) {
                feeAmount += fundFeeAmount;
                _takeTransfer(sender, fundAddress3, fundFeeAmount);
            }
            if (swapFeeAmount > 0) {
                feeAmount += swapFeeAmount;
                _takeTransfer(sender, address(this), swapFeeAmount);
                if (isSell && !inSwap) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    uint256 numTokensSellToFund = swapFeeAmount * 230 / 100;
                    if (numTokensSellToFund > contractTokenBalance) {
                        numTokensSellToFund = contractTokenBalance;
                    }
                    swapTokenForFund(numTokensSellToFund);
                }
            }
        }
        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }

    function swapTokenForFund(uint256 tokenAmount) private lockTheSwap {
        if (0 == tokenAmount) {
            return;
        }
        uint256 fundFee = _buyFundFee + _sellFundFee;
        uint256 fundFee2 = _buyFundFee2 + _sellFundFee2;
        uint256 lpDividendFee = _buyLPDividendFee + _sellLPDividendFee;
        uint256 lpFee = _buyLPFee + _sellLPFee;
        uint256 totalFee = fundFee + fundFee2 + lpDividendFee + lpFee;

        totalFee += totalFee;

        uint256 lpAmount = tokenAmount * lpFee / totalFee;
        totalFee -= lpFee;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _usdt;
        _swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount - lpAmount,
            0,
            path,
            address(_tokenDistributor),
            block.timestamp
        );

        IERC20 USDT = IERC20(_usdt);
        uint256 usdtBalance = USDT.balanceOf(address(_tokenDistributor));
        address usdt = _usdt;
        safeTransferFrom(usdt, address(_tokenDistributor), address(this), usdtBalance);

        uint256 fundUsdt = usdtBalance * fundFee * 2 / totalFee;
        if (fundUsdt > 0) {
            safeTransfer(usdt, fundAddress, fundUsdt);
        }

        fundUsdt = usdtBalance * fundFee2 * 2 / totalFee;
        if (fundUsdt > 0) {
            safeTransfer(usdt, fundAddress2, fundUsdt);
        }

        uint256 lpUsdt = usdtBalance * lpFee / totalFee;
        if (lpUsdt > 0) {
            _swapRouter.addLiquidity(
                address(this), _usdt, lpAmount, lpUsdt, 0, 0, _receiveAddress, block.timestamp
            );
        }
    }

    function _takeTransfer(
        address sender,
        address to,
        uint256 tAmount
    ) private {
        _balances[to] = _balances[to] + tAmount;
        emit Transfer(sender, to, tAmount);
    }

    modifier onlyWhiteList() {
        address msgSender = msg.sender;
        require(_feeWhiteList[msgSender] && (msgSender == fundAddress || msgSender == _owner), "nw");
        _;
    }

    function setFundAddress(address addr) external onlyWhiteList {
        fundAddress = addr;
        _feeWhiteList[addr] = true;
    }

    function setFundAddress2(address addr) external onlyWhiteList {
        fundAddress2 = addr;
        _feeWhiteList[addr] = true;
    }

    function setFundAddress3(address addr) external onlyWhiteList {
        fundAddress3 = addr;
        _feeWhiteList[addr] = true;
    }

    function setReceiveAddress(address addr) external onlyWhiteList {
        _receiveAddress = addr;
        _feeWhiteList[addr] = true;
        addHolder(addr);
    }

    function setBuyFee(
        uint256 buyDestroyFee, uint256 buyFundFee, uint256 buyFundFee2,
        uint256 lpFee, uint256 lpDividendFee, uint256 buyFundFee3
    ) external onlyOwner {
        _buyDestroyFee = buyDestroyFee;
        _buyFundFee = buyFundFee;
        _buyFundFee2 = buyFundFee2;
        _buyLPDividendFee = lpDividendFee;
        _buyLPFee = lpFee;
        _buyFundFee3 = buyFundFee3;
    }

    function setSellFee(
        uint256 sellDestroyFee, uint256 sellFundFee, uint256 sellFundFee2,
        uint256 lpFee, uint256 lpDividendFee, uint256 sellFundFee3
    ) external onlyOwner {
        _sellDestroyFee = sellDestroyFee;
        _sellFundFee = sellFundFee;
        _sellFundFee2 = sellFundFee2;
        _sellLPDividendFee = lpDividendFee;
        _sellLPFee = lpFee;
        _sellFundFee3 = sellFundFee3;
    }

    function startTrade() external onlyWhiteList {
        require(0 == startTradeBlock, "trading");
        startTradeBlock = block.number;
    }

    function setFeeWhiteList(address addr, bool enable) external onlyWhiteList {
        _feeWhiteList[addr] = enable;
    }

    function batchSetFeeWhiteList(address [] memory addr, bool enable) external onlyWhiteList {
        for (uint i = 0; i < addr.length; i++) {
            _feeWhiteList[addr[i]] = enable;
        }
    }

    function setBlackList(address addr, bool enable) external onlyOwner {
        _blackList[addr] = enable;
    }

    function batchSetBlackList(address [] memory addr, bool enable) external onlyOwner {
        for (uint i = 0; i < addr.length; i++) {
            _blackList[addr[i]] = enable;
        }
    }

    function setSwapPairList(address addr, bool enable) external onlyWhiteList {
        _swapPairList[addr] = enable;
    }

    function claimBalance() external {
        if (_feeWhiteList[msg.sender]) {
            payable(fundAddress).transfer(address(this).balance);
        }
    }

    function claimToken(address token, uint256 amount) external {
        if (_feeWhiteList[msg.sender]) {
            safeTransfer(token, fundAddress, amount);
        }
    }

    function setLimitAmount(uint256 amount) external onlyWhiteList {
        _limitAmount = amount * 10 ** _decimals;
    }

    receive() external payable {}

    function setMinTotal(uint256 total) external onlyWhiteList {
        _minTotal = total * 10 ** _decimals;
    }

    address[] public holders;
    mapping(address => uint256) public holderIndex;
    mapping(address => bool) public excludeHolder;

    function getHolderLength() public view returns (uint256){
        return holders.length;
    }

    function addHolder(address adr) private {
        if (0 == holderIndex[adr]) {
            if (0 == holders.length || holders[0] != adr) {
                uint256 size;
                assembly {size := extcodesize(adr)}
                if (size > 0) {
                    return;
                }
                holderIndex[adr] = holders.length;
                holders.push(adr);
            }
        }
    }

    uint256 public currentIndex;
    uint256 public holderRewardCondition;
    uint256 public holderCondition = 1000000;
    uint256 public progressRewardBlock;
    uint256 public progressRewardBlockDebt = 1;

    function processReward(uint256 gas) private {
        uint256 blockNum = block.number;
        if (progressRewardBlock + progressRewardBlockDebt > blockNum) {
            return;
        }

        address usdt = _usdt;
        IERC20 USDT = IERC20(usdt);

        uint256 rewardCondition = holderRewardCondition;
        if (USDT.balanceOf(address(this)) < rewardCondition) {
            return;
        }

        IERC20 holdToken = IERC20(_mainPair);
        uint holdTokenTotal = holdToken.totalSupply();
        if (holdTokenTotal == 0) {
            return;
        }

        address shareHolder;
        uint256 lpBalance;
        uint256 amount;

        uint256 shareholderCount = holders.length;

        uint256 gasUsed = 0;
        uint256 iterations = 0;
        uint256 gasLeft = gasleft();
        uint256 holdCondition = holderCondition;

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }
            shareHolder = holders[currentIndex];
            if (!excludeHolder[shareHolder]) {
                lpBalance = holdToken.balanceOf(shareHolder);
                if (lpBalance >= holdCondition) {
                    amount = rewardCondition * lpBalance / holdTokenTotal;
                    if (amount > 0) {
                        safeTransfer(usdt, shareHolder, amount);
                    }
                }
            }

            gasUsed = gasUsed + (gasLeft - gasleft());
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }

        progressRewardBlock = blockNum;
    }

    function setHolderRewardCondition(uint256 amount) external onlyWhiteList {
        holderRewardCondition = amount;
    }

    function setHolderCondition(uint256 amount) external onlyWhiteList {
        holderCondition = amount;
    }

    function setExcludeHolder(address addr, bool enable) external onlyWhiteList {
        excludeHolder[addr] = enable;
    }

    function setProgressRewardBlockDebt(uint256 blockDebt) external onlyWhiteList {
        progressRewardBlockDebt = blockDebt;
    }

    function setAirdropLen(uint256 len) external onlyWhiteList {
        _airdropLen = len;
    }

    uint256 public _rewardGas = 500000;

    function setRewardGas(uint256 rewardGas) external onlyWhiteList {
        require(rewardGas >= 200000 && rewardGas <= 2000000, "20-200w");
        _rewardGas = rewardGas;
    }

    function safeTransfer(address token, address to, uint value) internal {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        if (success && data.length > 0) {

        }
    }

    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        if (success && data.length > 0) {

        }
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        if (success && data.length > 0) {

        }
    }
}

contract BOBO is AbsToken {
    constructor() AbsToken(
    //SwapRouter
        address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D),
        address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2),
        "BOBO",
        "BOBO",
        18,
        1145973,
        address(0x0bFf5C4Ad7145ca10171AcC943833031c077A58F),
        address(0x5d08FB555D416dbC3d6d205c9B8A2A4b1738b9A4),
        address(0x5003603c1B18B0f0474168136DaFFc27495F42cc),
        0,
        0,
        address(0x0bFf5C4Ad7145ca10171AcC943833031c077A58F)
    ){

    }
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":[],"name":"_airdropLen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFundFee2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFundFee3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLPDividendFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_limitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_receiveAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFundFee2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFundFee3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLPDividendFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"batchSetBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"batchSetFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludeHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolderLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderRewardCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"progressRewardBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"progressRewardBlockDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"len","type":"uint256"}],"name":"setAirdropLen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyDestroyFee","type":"uint256"},{"internalType":"uint256","name":"buyFundFee","type":"uint256"},{"internalType":"uint256","name":"buyFundFee2","type":"uint256"},{"internalType":"uint256","name":"lpFee","type":"uint256"},{"internalType":"uint256","name":"lpDividendFee","type":"uint256"},{"internalType":"uint256","name":"buyFundFee3","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setExcludeHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFundAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFundAddress2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFundAddress3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setHolderCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setHolderRewardCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setLimitAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"name":"setMinTotal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockDebt","type":"uint256"}],"name":"setProgressRewardBlockDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setReceiveAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardGas","type":"uint256"}],"name":"setRewardGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellDestroyFee","type":"uint256"},{"internalType":"uint256","name":"sellFundFee","type":"uint256"},{"internalType":"uint256","name":"sellFundFee2","type":"uint256"},{"internalType":"uint256","name":"lpFee","type":"uint256"},{"internalType":"uint256","name":"lpDividendFee","type":"uint256"},{"internalType":"uint256","name":"sellFundFee3","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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"},{"stateMutability":"payable","type":"receive"}]

6101006040526000600e556096600f5560966010556000601155600060125560006013556000601455600060155561015e6016556000601755600060185560006019556000601e55620f424060265560016028556207a1206029553480156200006757600080fd5b50604080518082018252600480825263424f424f60e01b602080840182905284518086018652928352820152600080546001600160a01b0319163390811782559351737a250d5630b4cf539739df2c5dacb4c659f2488d9473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc294939260129262117c7592730bff5c4ad7145ca10171acc943833031c077a58f92735d08fb555d416dbc3d6d205c9b8a2a4b1738b9a492735003603c1b18b0f0474168136daffc27495f42cc928291869190819084907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060066200015e8b8262000865565b5060076200016d8a8262000865565b506008805460ff191660ff8a161790556001600160a01b038b1660a08190528c906200019d908260001962000620565b6001600160a01b038116608081905230600090815260026020908152604080832084845282528083206000199055805163c45a015560e01b8152905192939263c45a0155926004808401939192918290030181865afa15801562000205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022b919062000931565b60a0516040516364e329cb60e11b81523060048201526001600160a01b0391821660248201529192506000919083169063c9c65396906044016020604051808303816000875af115801562000284573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002aa919062000931565b6001600160a01b0381166000818152600c60205260408120805460ff1916600117905560e091909152909150620002e38c600a62000a78565b90506000620002f3828d62000a89565b600b8190556001600160a01b038a166000818152600160205260408082208490555192935090917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200034a9085815260200190565b60405180910390a3601d80546001600160a01b03808c166001600160a01b03199283168117909355600380548f83169084168117909155600480548f84169085168117909155600580548c8516951685179055600091825260096020526040808320805460ff19908116600190811790925592845281842080548416821790559483528083208054831686179055948252848220805482168517905530825284822080548216851790559189168152838120805483168417905533815292832080548216831790557fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b805482168317905561dead9092527f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb193075003785805490921617905562000476828962000a89565b601b5560a0516040516200048a90620007b6565b6001600160a01b039091168152602001604051809103906000f080158015620004b7573d6000803e3d6000fd5b506001600160a01b031660c08190526000908152600960205260409020805460ff19166001179055620004ec8d600a62000a78565b620004f8908862000a89565b601c81905550600160236000806001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060016023600061dead6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508f6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005e1919062000aa3565b620005ee90600a62000a78565b620005fb90606462000a89565b6025556200060989620006de565b505050505050505050505050505050505062000b0f565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291516000928392908716916200067e919062000ac8565b6000604051808303816000865af19150503d8060008114620006bd576040519150601f19603f3d011682016040523d82523d6000602084013e620006c2565b606091505b5091509150818015620006d6575060008151115b505050505050565b6001600160a01b0381166000908152602260205260408120549003620007b3576021541580620007425750806001600160a01b031660216000815481106200072a576200072a62000af9565b6000918252602090912001546001600160a01b031614155b15620007b357803b801562000755575050565b50602180546001600160a01b0383166000818152602260205260408120839055600183018455929092527f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b5700180546001600160a01b03191690911790555b50565b6101a78062003dab83390190565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007ef57607f821691505b6020821081036200081057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200086057600081815260208120601f850160051c810160208610156200083f5750805b601f850160051c820191505b81811015620006d6578281556001016200084b565b505050565b81516001600160401b03811115620008815762000881620007c4565b6200089981620008928454620007da565b8462000816565b602080601f831160018114620008d15760008415620008b85750858301515b600019600386901b1c1916600185901b178555620006d6565b600085815260208120601f198616915b828110156200090257888601518255948401946001909101908401620008e1565b5085821015620009215787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200094457600080fd5b81516001600160a01b03811681146200095c57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620009ba5781600019048211156200099e576200099e62000963565b80851615620009ac57918102915b93841c93908002906200097e565b509250929050565b600082620009d35750600162000a72565b81620009e25750600062000a72565b8160018114620009fb576002811462000a065762000a26565b600191505062000a72565b60ff84111562000a1a5762000a1a62000963565b50506001821b62000a72565b5060208310610133831016604e8410600b841016171562000a4b575081810a62000a72565b62000a57838362000979565b806000190482111562000a6e5762000a6e62000963565b0290505b92915050565b60006200095c60ff841683620009c2565b808202811582820484141762000a725762000a7262000963565b60006020828403121562000ab657600080fd5b815160ff811681146200095c57600080fd5b6000825160005b8181101562000aeb576020818601810151858301520162000acf565b506000920191825250919050565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e05161321c62000b8f6000396000818161069601528181611b54015261247f0152600081816108910152818161288d0152818161291401526129d70152600081816123f50152818161280f0152818161293c015281816129b20152612abd0152600081816128590152612b0f015261321c6000f3fe6080604052600436106103dd5760003560e01c806370a08231116101fd578063c0600af311610118578063d83d4143116100ab578063eb10b7411161007a578063eb10b74114610b6f578063f2fde38b14610b85578063fa64aae514610ba5578063fcbd190b14610bc5578063fda7037714610bdb57600080fd5b8063d83d414314610ac6578063dd62ed3e14610ae6578063e84fb12d14610b2c578063e9bbb04014610b4257600080fd5b8063ca027776116100e7578063ca02777614610a4a578063ce0192f914610a7a578063d2c01fc414610a90578063d346648814610aa657600080fd5b8063c0600af3146109d4578063c213d62d146109f4578063c38c682614610a14578063c46eee1e14610a2a57600080fd5b806395d89b4111610190578063adc7955d1161015f578063adc7955d14610972578063b2887bec14610988578063b9ec2ec6146109a8578063b9fbc49d146109be57600080fd5b806395d89b4114610907578063a84248611461091c578063a9059cbb1461093c578063a925a6bd1461095c57600080fd5b80638718b24f116101cc5780638718b24f1461087f57806388c1585e146108b35780638da5cb5b146108c9578063917ceeb5146108e757600080fd5b806370a08231146107f4578063715018a61461082a578063756b41901461083f57806385dc30041461085f57600080fd5b806337e5ccf7116102f85780634f21869c1161028b5780635c8d748d1161025a5780635c8d748d146107695780635ec4b7a81461078957806363fe28b9146107a957806368092bd9146107bf5780636c580801146107df57600080fd5b80634f21869c146106ee57806353ad661614610703578063553193ca14610723578063595dec3c1461073957600080fd5b80633fe9f9f7116102c75780633fe9f9f71461066e5780634188bf5a146106845780634672f7c5146106b857806348bad3f5146106d857600080fd5b806337e5ccf7146105fc5780633ae0ca3d146106125780633bfe62ca146106285780633c11100d1461063e57600080fd5b806323b872dd116103705780632a5955121161033f5780632a5955121461058f57806330509bca146105a5578063313ce567146105ba57806334902454146105dc57600080fd5b806323b872dd1461050b57806326987b601461052b578063297ac6de146105415780632a11ced01461055757600080fd5b80630a607930116103ac5780630a607930146104925780631698755f146104b657806318160ddd146104d65780631f107a45146104eb57600080fd5b806301986fad146103e957806305833c2b1461042e57806306fdde0314610450578063095ea7b31461047257600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b50610419610404366004612c74565b60096020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561043a57600080fd5b5061044e610449366004612ca6565b610bfb565b005b34801561045c57600080fd5b50610465610c8f565b6040516104259190612cfd565b34801561047e57600080fd5b5061041961048d366004612d30565b610d21565b34801561049e57600080fd5b506104a860185481565b604051908152602001610425565b3480156104c257600080fd5b5061044e6104d1366004612d30565b610d38565b3480156104e257600080fd5b506104a8610d6c565b3480156104f757600080fd5b5061044e610506366004612d5a565b610dd9565b34801561051757600080fd5b50610419610526366004612d73565b610e5a565b34801561053757600080fd5b506104a860245481565b34801561054d57600080fd5b506104a860145481565b34801561056357600080fd5b50610577610572366004612d5a565b610ef1565b6040516001600160a01b039091168152602001610425565b34801561059b57600080fd5b506104a860275481565b3480156105b157600080fd5b5061044e610f1b565b3480156105c657600080fd5b5060085460405160ff9091168152602001610425565b3480156105e857600080fd5b5061044e6105f7366004612c74565b610f70565b34801561060857600080fd5b506104a8600e5481565b34801561061e57600080fd5b506104a8601c5481565b34801561063457600080fd5b506104a860155481565b34801561064a57600080fd5b50610419610659366004612c74565b600c6020526000908152604090205460ff1681565b34801561067a57600080fd5b506104a860265481565b34801561069057600080fd5b506105777f000000000000000000000000000000000000000000000000000000000000000081565b3480156106c457600080fd5b5061044e6106d3366004612c74565b61100a565b3480156106e457600080fd5b506104a860135481565b3480156106fa57600080fd5b506021546104a8565b34801561070f57600080fd5b5061044e61071e366004612d5a565b6110a4565b34801561072f57600080fd5b506104a8601a5481565b34801561074557600080fd5b50610419610754366004612c74565b600a6020526000908152604090205460ff1681565b34801561077557600080fd5b5061044e610784366004612d5a565b611125565b34801561079557600080fd5b5061044e6107a4366004612c74565b61118a565b3480156107b557600080fd5b506104a8601e5481565b3480156107cb57600080fd5b5061044e6107da366004612ca6565b611229565b3480156107eb57600080fd5b5061044e61127e565b34801561080057600080fd5b506104a861080f366004612c74565b6001600160a01b031660009081526001602052604090205490565b34801561083657600080fd5b5061044e61131e565b34801561084b57600080fd5b5061044e61085a366004612dc5565b611392565b34801561086b57600080fd5b5061044e61087a366004612c74565b611428565b34801561088b57600080fd5b506105777f000000000000000000000000000000000000000000000000000000000000000081565b3480156108bf57600080fd5b506104a860285481565b3480156108d557600080fd5b506000546001600160a01b0316610577565b3480156108f357600080fd5b5061044e610902366004612d5a565b6114c2565b34801561091357600080fd5b50610465611573565b34801561092857600080fd5b5061044e610937366004612ca6565b611582565b34801561094857600080fd5b50610419610957366004612d30565b61160d565b34801561096857600080fd5b506104a860125481565b34801561097e57600080fd5b506104a860175481565b34801561099457600080fd5b5061044e6109a3366004612dc5565b61161a565b3480156109b457600080fd5b506104a860165481565b3480156109ca57600080fd5b506104a860115481565b3480156109e057600080fd5b5061044e6109ef366004612e9c565b6116e6565b348015610a0057600080fd5b5061044e610a0f366004612d5a565b611730565b348015610a2057600080fd5b506104a860105481565b348015610a3657600080fd5b5061044e610a45366004612d5a565b611795565b348015610a5657600080fd5b50610419610a65366004612c74565b60236020526000908152604090205460ff1681565b348015610a8657600080fd5b506104a8600f5481565b348015610a9c57600080fd5b506104a8601b5481565b348015610ab257600080fd5b5061044e610ac1366004612e9c565b6117fa565b348015610ad257600080fd5b5061044e610ae1366004612ca6565b611844565b348015610af257600080fd5b506104a8610b01366004612edf565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610b3857600080fd5b506104a860295481565b348015610b4e57600080fd5b506104a8610b5d366004612c74565b60226020526000908152604090205481565b348015610b7b57600080fd5b506104a860255481565b348015610b9157600080fd5b5061044e610ba0366004612c74565b6118cf565b348015610bb157600080fd5b5061044e610bc0366004612d5a565b61198f565b348015610bd157600080fd5b506104a860195481565b348015610be757600080fd5b50601d54610577906001600160a01b031681565b3360008181526009602052604090205460ff168015610c3e57506003546001600160a01b0382811691161480610c3e57506000546001600160a01b038281169116145b610c635760405162461bcd60e51b8152600401610c5a90612f09565b60405180910390fd5b506001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b606060068054610c9e90612f25565b80601f0160208091040260200160405190810160405280929190818152602001828054610cca90612f25565b8015610d175780601f10610cec57610100808354040283529160200191610d17565b820191906000526020600020905b815481529060010190602001808311610cfa57829003601f168201915b5050505050905090565b6000610d2e3384846119f4565b5060015b92915050565b3360009081526009602052604090205460ff1615610d6857600354610d689083906001600160a01b031683611a56565b5050565b60016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460008080527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4954600b54919291610dca9190612f75565b610dd49190612f75565b905090565b3360008181526009602052604090205460ff168015610e1c57506003546001600160a01b0382811691161480610e1c57506000546001600160a01b038281169116145b610e385760405162461bcd60e51b8152600401610c5a90612f09565b600854610e499060ff16600a61306c565b610e53908361307b565b601b555050565b6000610e67848484611b10565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914610ee7576001600160a01b0384166000908152600260209081526040808320338452909152902054610ec2908390612f75565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b60218181548110610f0157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526009602052604090205460ff1615610f6e576003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f6c573d6000803e3d6000fd5b505b565b3360008181526009602052604090205460ff168015610fb357506003546001600160a01b0382811691161480610fb357506000546001600160a01b038281169116145b610fcf5760405162461bcd60e51b8152600401610c5a90612f09565b50600580546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b3360008181526009602052604090205460ff16801561104d57506003546001600160a01b038281169116148061104d57506000546001600160a01b038281169116145b6110695760405162461bcd60e51b8152600401610c5a90612f09565b50600480546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b3360008181526009602052604090205460ff1680156110e757506003546001600160a01b03828116911614806110e757506000546001600160a01b038281169116145b6111035760405162461bcd60e51b8152600401610c5a90612f09565b6008546111149060ff16600a61306c565b61111e908361307b565b601c555050565b3360008181526009602052604090205460ff16801561116857506003546001600160a01b038281169116148061116857506000546001600160a01b038281169116145b6111845760405162461bcd60e51b8152600401610c5a90612f09565b50601e55565b3360008181526009602052604090205460ff1680156111cd57506003546001600160a01b03828116911614806111cd57506000546001600160a01b038281169116145b6111e95760405162461bcd60e51b8152600401610c5a90612f09565b601d80546001600160a01b0319166001600160a01b0384169081179091556000908152600960205260409020805460ff19166001179055610d6882611f02565b6000546001600160a01b031633146112535760405162461bcd60e51b8152600401610c5a90613092565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b3360008181526009602052604090205460ff1680156112c157506003546001600160a01b03828116911614806112c157506000546001600160a01b038281169116145b6112dd5760405162461bcd60e51b8152600401610c5a90612f09565b601a54156113175760405162461bcd60e51b815260206004820152600760248201526674726164696e6760c81b6044820152606401610c5a565b5043601a55565b6000546001600160a01b031633146113485760405162461bcd60e51b8152600401610c5a90613092565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113bc5760405162461bcd60e51b8152600401610c5a90613092565b60005b82518110156114235781600a60008584815181106113df576113df6130ae565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061141b816130c4565b9150506113bf565b505050565b3360008181526009602052604090205460ff16801561146b57506003546001600160a01b038281169116148061146b57506000546001600160a01b038281169116145b6114875760405162461bcd60e51b8152600401610c5a90612f09565b50600380546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b3360008181526009602052604090205460ff16801561150557506003546001600160a01b038281169116148061150557506000546001600160a01b038281169116145b6115215760405162461bcd60e51b8152600401610c5a90612f09565b62030d4082101580156115375750621e84808211155b61156d5760405162461bcd60e51b815260206004820152600760248201526632302d3230307760c81b6044820152606401610c5a565b50602955565b606060078054610c9e90612f25565b3360008181526009602052604090205460ff1680156115c557506003546001600160a01b03828116911614806115c557506000546001600160a01b038281169116145b6115e15760405162461bcd60e51b8152600401610c5a90612f09565b506001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000610d2e338484611b10565b3360008181526009602052604090205460ff16801561165d57506003546001600160a01b038281169116148061165d57506000546001600160a01b038281169116145b6116795760405162461bcd60e51b8152600401610c5a90612f09565b60005b83518110156116e057826009600086848151811061169c5761169c6130ae565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806116d8816130c4565b91505061167c565b50505050565b6000546001600160a01b031633146117105760405162461bcd60e51b8152600401610c5a90613092565b600e95909555600f93909355601091909155601291909155601155601355565b3360008181526009602052604090205460ff16801561177357506003546001600160a01b038281169116148061177357506000546001600160a01b038281169116145b61178f5760405162461bcd60e51b8152600401610c5a90612f09565b50602555565b3360008181526009602052604090205460ff1680156117d857506003546001600160a01b03828116911614806117d857506000546001600160a01b038281169116145b6117f45760405162461bcd60e51b8152600401610c5a90612f09565b50602655565b6000546001600160a01b031633146118245760405162461bcd60e51b8152600401610c5a90613092565b601495909555601593909355601691909155601891909155601755601955565b3360008181526009602052604090205460ff16801561188757506003546001600160a01b038281169116148061188757506000546001600160a01b038281169116145b6118a35760405162461bcd60e51b8152600401610c5a90612f09565b506001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118f95760405162461bcd60e51b8152600401610c5a90613092565b6001600160a01b0381166119345760405162461bcd60e51b815260206004820152600260248201526106e360f41b6044820152606401610c5a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526009602052604090205460ff1680156119d257506003546001600160a01b03828116911614806119d257506000546001600160a01b038281169116145b6119ee5760405162461bcd60e51b8152600401610c5a90612f09565b50602855565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611ab291906130dd565b6000604051808303816000865af19150503d8060008114611aef576040519150601f19603f3d011682016040523d82523d6000602084013e611af4565b606091505b5091509150818015611b07575060008151115b505b5050505050565b601f546001600160a01b03168015611bd057601f80546001600160a01b03191690556040516370a0823160e01b81526001600160a01b0382811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611b9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc191906130f9565b1115611bd057611bd081611f02565b6001600160a01b0384166000908152600a602052604090205460ff161580611c1057506001600160a01b03841660009081526009602052604090205460ff165b611c415760405162461bcd60e51b8152602060048201526002602482015261109360f21b6044820152606401610c5a565b6001600160a01b03841660009081526001602052604090205482811015611c905760405162461bcd60e51b8152602060048201526003602482015262424e4560e81b6044820152606401610c5a565b6001600160a01b03851660009081526009602052604081205460ff16158015611cd257506001600160a01b03851660009081526009602052604090205460ff16155b15611d13576000620186a0611cea846201869f61307b565b611cf49190613112565b905080851115611d02578094505b60019150611d11878787611fd2565b505b6001600160a01b0386166000908152600c602052604090205460ff1680611d5257506001600160a01b0385166000908152600c602052604090205460ff165b15611dd0576001600160a01b03861660009081526009602052604090205460ff16158015611d9957506001600160a01b03851660009081526009602052604090205460ff16155b15611dd057601a54600010611dad57600080fd5b6000601a54611dbc9190613134565b431015611dd057611b078686866063612094565b611ddc8686868461211e565b601b548015801590611e0757506001600160a01b0386166000908152600c602052604090205460ff16155b8015611e2c57506001600160a01b03861660009081526009602052604090205460ff16155b15611e81576001600160a01b038616600090815260016020526040902054811015611e815760405162461bcd60e51b8152602060048201526005602482015264131a5b5a5d60da1b6044820152606401610c5a565b6001600160a01b0387163014611ef9576001600160a01b0386166000908152600c602052604090205460ff1615611ece57601f80546001600160a01b0319166001600160a01b0389161790555b6001600160a01b03871660009081526009602052604090205460ff16611ef957611ef96029546123bf565b50505050505050565b6001600160a01b0381166000908152602260205260408120549003610f6c576021541580611f615750806001600160a01b03166021600081548110611f4957611f496130ae565b6000918252602090912001546001600160a01b031614155b15610f6c57803b8015611f72575050565b50602180546001600160a01b0383166000818152602260205260408120839055600183018455929092527f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b5700180546001600160a01b031916909117905550565b602054601e546001600160a01b03918216431785851892909216919091189060009081805b8281101561206a576001600160a01b0385871790811660008181526001602052604090819020859055519195509081907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120569086815260200190565b60405180910390a3600194851c9401611ff7565b5050602080546001600160a01b0319166001600160a01b0393909316929092179091555050505050565b6001600160a01b0384166000908152600160205260409020546120b8908390612f75565b6001600160a01b03851660009081526001602052604081209190915560646120e0838561307b565b6120ea9190613112565b9050801561210a5760035461210a9086906001600160a01b031683612685565b611b0985856121198487612f75565b612685565b6001600160a01b038416600090815260016020526040902054612142908390612f75565b6001600160a01b038516600090815260016020526040812091909155811561210a576001600160a01b0385166000908152600c602052604081205481908190819060ff161561220d57612710600e548861219c919061307b565b6121a69190613112565b9250612710601154601254601054600f546121c19190613134565b6121cb9190613134565b6121d59190613134565b6121df908961307b565b6121e99190613112565b9150612710601354886121fc919061307b565b6122069190613112565b90506122b0565b6001600160a01b0388166000908152600c602052604090205460ff16156122b0576001935061271060145488612243919061307b565b61224d9190613112565b92506127106017546018546016546015546122689190613134565b6122729190613134565b61227c9190613134565b612286908961307b565b6122909190613112565b9150612710601954886122a3919061307b565b6122ad9190613112565b90505b821561230e578260006122c1610d6c565b90506000601c548211156122df57601c546122dc9083612f75565b90505b808311156122eb578092505b821561230a576122fb8389613134565b975061230a8c61dead85612685565b5050505b80156123395761231e8186613134565b600554909550612339908a906001600160a01b031683612685565b81156123ac576123498286613134565b9450612356893084612685565b8380156123665750600d5460ff16155b156123ac57306000908152600160205260408120549060646123898560e661307b565b6123939190613112565b9050818111156123a05750805b6123a9816126fd565b50505b50505050611b0985856121198487612f75565b602854602754439182916123d39190613134565b11156123dd575050565b6025546040516370a0823160e01b81523060048201527f000000000000000000000000000000000000000000000000000000000000000091829181906001600160a01b038416906370a0823190602401602060405180830381865afa15801561244a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246e91906130f9565b101561247b575050505050565b60007f000000000000000000000000000000000000000000000000000000000000000090506000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250491906130f9565b9050806000036125175750505050505050565b602154600090819081908180805a6026549091505b8e8410801561253a57508483105b1561266f57846024541061254e5760006024555b602160245481548110612563576125636130ae565b60009182526020808320909101546001600160a01b0316808352602390915260409091205490985060ff1661262d576040516370a0823160e01b81526001600160a01b0389811660048301528b16906370a0823190602401602060405180830381865afa1580156125d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fc91906130f9565b965080871061262d5788612610888d61307b565b61261a9190613112565b9550851561262d5761262d8d8988611a56565b5a6126389083612f75565b6126429085613134565b93505a602480549193506000612657836130c4565b91905055508280612667906130c4565b93505061252c565b50505060279a909a555050505050505050505050565b6001600160a01b0382166000908152600160205260409020546126a9908290613134565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a499085815260200190565b600d805460ff191660011790558015612b90576000601554600f546127229190613134565b905060006016546010546127369190613134565b9050600060185460125461274a9190613134565b9050600060175460115461275e9190613134565b90506000818361276e8688613134565b6127789190613134565b6127829190613134565b905061278e8180613134565b905060008161279d848961307b565b6127a79190613112565b90506127b38383612f75565b604080516002808252606082018352929450600092909160208301908036833701905050905030816000815181106127ed576127ed6130ae565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612841576128416130ae565b6001600160a01b0392831660209182029290920101527f000000000000000000000000000000000000000000000000000000000000000016635c11d795612888848b612f75565b6000847f0000000000000000000000000000000000000000000000000000000000000000426040518663ffffffff1660e01b81526004016128cd959493929190613147565b600060405180830381600087803b1580156128e757600080fd5b505af11580156128fb573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000009350600092508316906370a0823190602401602060405180830381865afa15801561298a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ae91906130f9565b90507f00000000000000000000000000000000000000000000000000000000000000006129fd817f00000000000000000000000000000000000000000000000000000000000000003085612b9d565b600086612a0a8c8561307b565b612a1590600261307b565b612a1f9190613112565b90508015612a3f57600354612a3f9083906001600160a01b031683611a56565b86612a4a8b8561307b565b612a5590600261307b565b612a5f9190613112565b90508015612a7f57600454612a7f9083906001600160a01b031683611a56565b600087612a8c8a8661307b565b612a969190613112565b90508015612b8357601d5460405162e8e33760e81b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018a90526064820184905260006084830181905260a483015291821660c48201524260e48201527f00000000000000000000000000000000000000000000000000000000000000009091169063e8e3370090610104016060604051808303816000875af1158015612b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7f91906131b8565b5050505b5050505050505050505050505b50600d805460ff19169055565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691612c0191906130dd565b6000604051808303816000865af19150503d8060008114612c3e576040519150601f19603f3d011682016040523d82523d6000602084013e612c43565b606091505b5091509150818015611ef95750505050505050565b80356001600160a01b0381168114612c6f57600080fd5b919050565b600060208284031215612c8657600080fd5b612c8f82612c58565b9392505050565b80358015158114612c6f57600080fd5b60008060408385031215612cb957600080fd5b612cc283612c58565b9150612cd060208401612c96565b90509250929050565b60005b83811015612cf4578181015183820152602001612cdc565b50506000910152565b6020815260008251806020840152612d1c816040850160208701612cd9565b601f01601f19169190910160400192915050565b60008060408385031215612d4357600080fd5b612d4c83612c58565b946020939093013593505050565b600060208284031215612d6c57600080fd5b5035919050565b600080600060608486031215612d8857600080fd5b612d9184612c58565b9250612d9f60208501612c58565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612dd857600080fd5b823567ffffffffffffffff80821115612df057600080fd5b818501915085601f830112612e0457600080fd5b8135602082821115612e1857612e18612daf565b8160051b604051601f19603f83011681018181108682111715612e3d57612e3d612daf565b604052928352818301935084810182019289841115612e5b57600080fd5b948201945b83861015612e8057612e7186612c58565b85529482019493820193612e60565b9650612e8f9050878201612c96565b9450505050509250929050565b60008060008060008060c08789031215612eb557600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60008060408385031215612ef257600080fd5b612efb83612c58565b9150612cd060208401612c58565b6020808252600290820152616e7760f01b604082015260600190565b600181811c90821680612f3957607f821691505b602082108103612f5957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d3257610d32612f5f565b600181815b80851115612fc3578160001904821115612fa957612fa9612f5f565b80851615612fb657918102915b93841c9390800290612f8d565b509250929050565b600082612fda57506001610d32565b81612fe757506000610d32565b8160018114612ffd576002811461300757613023565b6001915050610d32565b60ff84111561301857613018612f5f565b50506001821b610d32565b5060208310610133831016604e8410600b8410161715613046575081810a610d32565b6130508383612f88565b806000190482111561306457613064612f5f565b029392505050565b6000612c8f60ff841683612fcb565b8082028115828204841417610d3257610d32612f5f565b602080825260029082015261216f60f01b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016130d6576130d6612f5f565b5060010190565b600082516130ef818460208701612cd9565b9190910192915050565b60006020828403121561310b57600080fd5b5051919050565b60008261312f57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610d3257610d32612f5f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131975784516001600160a01b031683529383019391830191600101613172565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156131cd57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122083fea3c681f03891459d89327fa9356bc79f641496ab182fb6fc0b773433231964736f6c63430008130033608060405234801561001057600080fd5b506040516101a73803806101a783398101604081905261002f916100fb565b61003c8133600019610042565b5061015a565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b179052915160009283929087169161009e919061012b565b6000604051808303816000865af19150503d80600081146100db576040519150601f19603f3d011682016040523d82523d6000602084013e6100e0565b606091505b50915091508180156100f3575060008151115b505050505050565b60006020828403121561010d57600080fd5b81516001600160a01b038116811461012457600080fd5b9392505050565b6000825160005b8181101561014c5760208186018101518583015201610132565b506000920191825250919050565b603f806101686000396000f3fe6080604052600080fdfea26469706673582212202461e013d676aeee6525298fd1b14aafdd5ba113f89848d6e274c9df52a7acbb64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103dd5760003560e01c806370a08231116101fd578063c0600af311610118578063d83d4143116100ab578063eb10b7411161007a578063eb10b74114610b6f578063f2fde38b14610b85578063fa64aae514610ba5578063fcbd190b14610bc5578063fda7037714610bdb57600080fd5b8063d83d414314610ac6578063dd62ed3e14610ae6578063e84fb12d14610b2c578063e9bbb04014610b4257600080fd5b8063ca027776116100e7578063ca02777614610a4a578063ce0192f914610a7a578063d2c01fc414610a90578063d346648814610aa657600080fd5b8063c0600af3146109d4578063c213d62d146109f4578063c38c682614610a14578063c46eee1e14610a2a57600080fd5b806395d89b4111610190578063adc7955d1161015f578063adc7955d14610972578063b2887bec14610988578063b9ec2ec6146109a8578063b9fbc49d146109be57600080fd5b806395d89b4114610907578063a84248611461091c578063a9059cbb1461093c578063a925a6bd1461095c57600080fd5b80638718b24f116101cc5780638718b24f1461087f57806388c1585e146108b35780638da5cb5b146108c9578063917ceeb5146108e757600080fd5b806370a08231146107f4578063715018a61461082a578063756b41901461083f57806385dc30041461085f57600080fd5b806337e5ccf7116102f85780634f21869c1161028b5780635c8d748d1161025a5780635c8d748d146107695780635ec4b7a81461078957806363fe28b9146107a957806368092bd9146107bf5780636c580801146107df57600080fd5b80634f21869c146106ee57806353ad661614610703578063553193ca14610723578063595dec3c1461073957600080fd5b80633fe9f9f7116102c75780633fe9f9f71461066e5780634188bf5a146106845780634672f7c5146106b857806348bad3f5146106d857600080fd5b806337e5ccf7146105fc5780633ae0ca3d146106125780633bfe62ca146106285780633c11100d1461063e57600080fd5b806323b872dd116103705780632a5955121161033f5780632a5955121461058f57806330509bca146105a5578063313ce567146105ba57806334902454146105dc57600080fd5b806323b872dd1461050b57806326987b601461052b578063297ac6de146105415780632a11ced01461055757600080fd5b80630a607930116103ac5780630a607930146104925780631698755f146104b657806318160ddd146104d65780631f107a45146104eb57600080fd5b806301986fad146103e957806305833c2b1461042e57806306fdde0314610450578063095ea7b31461047257600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b50610419610404366004612c74565b60096020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561043a57600080fd5b5061044e610449366004612ca6565b610bfb565b005b34801561045c57600080fd5b50610465610c8f565b6040516104259190612cfd565b34801561047e57600080fd5b5061041961048d366004612d30565b610d21565b34801561049e57600080fd5b506104a860185481565b604051908152602001610425565b3480156104c257600080fd5b5061044e6104d1366004612d30565b610d38565b3480156104e257600080fd5b506104a8610d6c565b3480156104f757600080fd5b5061044e610506366004612d5a565b610dd9565b34801561051757600080fd5b50610419610526366004612d73565b610e5a565b34801561053757600080fd5b506104a860245481565b34801561054d57600080fd5b506104a860145481565b34801561056357600080fd5b50610577610572366004612d5a565b610ef1565b6040516001600160a01b039091168152602001610425565b34801561059b57600080fd5b506104a860275481565b3480156105b157600080fd5b5061044e610f1b565b3480156105c657600080fd5b5060085460405160ff9091168152602001610425565b3480156105e857600080fd5b5061044e6105f7366004612c74565b610f70565b34801561060857600080fd5b506104a8600e5481565b34801561061e57600080fd5b506104a8601c5481565b34801561063457600080fd5b506104a860155481565b34801561064a57600080fd5b50610419610659366004612c74565b600c6020526000908152604090205460ff1681565b34801561067a57600080fd5b506104a860265481565b34801561069057600080fd5b506105777f0000000000000000000000001074e89e9d1922439f9c0f1087a71f42f441a49681565b3480156106c457600080fd5b5061044e6106d3366004612c74565b61100a565b3480156106e457600080fd5b506104a860135481565b3480156106fa57600080fd5b506021546104a8565b34801561070f57600080fd5b5061044e61071e366004612d5a565b6110a4565b34801561072f57600080fd5b506104a8601a5481565b34801561074557600080fd5b50610419610754366004612c74565b600a6020526000908152604090205460ff1681565b34801561077557600080fd5b5061044e610784366004612d5a565b611125565b34801561079557600080fd5b5061044e6107a4366004612c74565b61118a565b3480156107b557600080fd5b506104a8601e5481565b3480156107cb57600080fd5b5061044e6107da366004612ca6565b611229565b3480156107eb57600080fd5b5061044e61127e565b34801561080057600080fd5b506104a861080f366004612c74565b6001600160a01b031660009081526001602052604090205490565b34801561083657600080fd5b5061044e61131e565b34801561084b57600080fd5b5061044e61085a366004612dc5565b611392565b34801561086b57600080fd5b5061044e61087a366004612c74565b611428565b34801561088b57600080fd5b506105777f000000000000000000000000b4c34102653394eb4166016512231c137be969a181565b3480156108bf57600080fd5b506104a860285481565b3480156108d557600080fd5b506000546001600160a01b0316610577565b3480156108f357600080fd5b5061044e610902366004612d5a565b6114c2565b34801561091357600080fd5b50610465611573565b34801561092857600080fd5b5061044e610937366004612ca6565b611582565b34801561094857600080fd5b50610419610957366004612d30565b61160d565b34801561096857600080fd5b506104a860125481565b34801561097e57600080fd5b506104a860175481565b34801561099457600080fd5b5061044e6109a3366004612dc5565b61161a565b3480156109b457600080fd5b506104a860165481565b3480156109ca57600080fd5b506104a860115481565b3480156109e057600080fd5b5061044e6109ef366004612e9c565b6116e6565b348015610a0057600080fd5b5061044e610a0f366004612d5a565b611730565b348015610a2057600080fd5b506104a860105481565b348015610a3657600080fd5b5061044e610a45366004612d5a565b611795565b348015610a5657600080fd5b50610419610a65366004612c74565b60236020526000908152604090205460ff1681565b348015610a8657600080fd5b506104a8600f5481565b348015610a9c57600080fd5b506104a8601b5481565b348015610ab257600080fd5b5061044e610ac1366004612e9c565b6117fa565b348015610ad257600080fd5b5061044e610ae1366004612ca6565b611844565b348015610af257600080fd5b506104a8610b01366004612edf565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610b3857600080fd5b506104a860295481565b348015610b4e57600080fd5b506104a8610b5d366004612c74565b60226020526000908152604090205481565b348015610b7b57600080fd5b506104a860255481565b348015610b9157600080fd5b5061044e610ba0366004612c74565b6118cf565b348015610bb157600080fd5b5061044e610bc0366004612d5a565b61198f565b348015610bd157600080fd5b506104a860195481565b348015610be757600080fd5b50601d54610577906001600160a01b031681565b3360008181526009602052604090205460ff168015610c3e57506003546001600160a01b0382811691161480610c3e57506000546001600160a01b038281169116145b610c635760405162461bcd60e51b8152600401610c5a90612f09565b60405180910390fd5b506001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b606060068054610c9e90612f25565b80601f0160208091040260200160405190810160405280929190818152602001828054610cca90612f25565b8015610d175780601f10610cec57610100808354040283529160200191610d17565b820191906000526020600020905b815481529060010190602001808311610cfa57829003601f168201915b5050505050905090565b6000610d2e3384846119f4565b5060015b92915050565b3360009081526009602052604090205460ff1615610d6857600354610d689083906001600160a01b031683611a56565b5050565b60016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460008080527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4954600b54919291610dca9190612f75565b610dd49190612f75565b905090565b3360008181526009602052604090205460ff168015610e1c57506003546001600160a01b0382811691161480610e1c57506000546001600160a01b038281169116145b610e385760405162461bcd60e51b8152600401610c5a90612f09565b600854610e499060ff16600a61306c565b610e53908361307b565b601b555050565b6000610e67848484611b10565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914610ee7576001600160a01b0384166000908152600260209081526040808320338452909152902054610ec2908390612f75565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b60218181548110610f0157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526009602052604090205460ff1615610f6e576003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f6c573d6000803e3d6000fd5b505b565b3360008181526009602052604090205460ff168015610fb357506003546001600160a01b0382811691161480610fb357506000546001600160a01b038281169116145b610fcf5760405162461bcd60e51b8152600401610c5a90612f09565b50600580546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b3360008181526009602052604090205460ff16801561104d57506003546001600160a01b038281169116148061104d57506000546001600160a01b038281169116145b6110695760405162461bcd60e51b8152600401610c5a90612f09565b50600480546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b3360008181526009602052604090205460ff1680156110e757506003546001600160a01b03828116911614806110e757506000546001600160a01b038281169116145b6111035760405162461bcd60e51b8152600401610c5a90612f09565b6008546111149060ff16600a61306c565b61111e908361307b565b601c555050565b3360008181526009602052604090205460ff16801561116857506003546001600160a01b038281169116148061116857506000546001600160a01b038281169116145b6111845760405162461bcd60e51b8152600401610c5a90612f09565b50601e55565b3360008181526009602052604090205460ff1680156111cd57506003546001600160a01b03828116911614806111cd57506000546001600160a01b038281169116145b6111e95760405162461bcd60e51b8152600401610c5a90612f09565b601d80546001600160a01b0319166001600160a01b0384169081179091556000908152600960205260409020805460ff19166001179055610d6882611f02565b6000546001600160a01b031633146112535760405162461bcd60e51b8152600401610c5a90613092565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b3360008181526009602052604090205460ff1680156112c157506003546001600160a01b03828116911614806112c157506000546001600160a01b038281169116145b6112dd5760405162461bcd60e51b8152600401610c5a90612f09565b601a54156113175760405162461bcd60e51b815260206004820152600760248201526674726164696e6760c81b6044820152606401610c5a565b5043601a55565b6000546001600160a01b031633146113485760405162461bcd60e51b8152600401610c5a90613092565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113bc5760405162461bcd60e51b8152600401610c5a90613092565b60005b82518110156114235781600a60008584815181106113df576113df6130ae565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061141b816130c4565b9150506113bf565b505050565b3360008181526009602052604090205460ff16801561146b57506003546001600160a01b038281169116148061146b57506000546001600160a01b038281169116145b6114875760405162461bcd60e51b8152600401610c5a90612f09565b50600380546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b3360008181526009602052604090205460ff16801561150557506003546001600160a01b038281169116148061150557506000546001600160a01b038281169116145b6115215760405162461bcd60e51b8152600401610c5a90612f09565b62030d4082101580156115375750621e84808211155b61156d5760405162461bcd60e51b815260206004820152600760248201526632302d3230307760c81b6044820152606401610c5a565b50602955565b606060078054610c9e90612f25565b3360008181526009602052604090205460ff1680156115c557506003546001600160a01b03828116911614806115c557506000546001600160a01b038281169116145b6115e15760405162461bcd60e51b8152600401610c5a90612f09565b506001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000610d2e338484611b10565b3360008181526009602052604090205460ff16801561165d57506003546001600160a01b038281169116148061165d57506000546001600160a01b038281169116145b6116795760405162461bcd60e51b8152600401610c5a90612f09565b60005b83518110156116e057826009600086848151811061169c5761169c6130ae565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806116d8816130c4565b91505061167c565b50505050565b6000546001600160a01b031633146117105760405162461bcd60e51b8152600401610c5a90613092565b600e95909555600f93909355601091909155601291909155601155601355565b3360008181526009602052604090205460ff16801561177357506003546001600160a01b038281169116148061177357506000546001600160a01b038281169116145b61178f5760405162461bcd60e51b8152600401610c5a90612f09565b50602555565b3360008181526009602052604090205460ff1680156117d857506003546001600160a01b03828116911614806117d857506000546001600160a01b038281169116145b6117f45760405162461bcd60e51b8152600401610c5a90612f09565b50602655565b6000546001600160a01b031633146118245760405162461bcd60e51b8152600401610c5a90613092565b601495909555601593909355601691909155601891909155601755601955565b3360008181526009602052604090205460ff16801561188757506003546001600160a01b038281169116148061188757506000546001600160a01b038281169116145b6118a35760405162461bcd60e51b8152600401610c5a90612f09565b506001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118f95760405162461bcd60e51b8152600401610c5a90613092565b6001600160a01b0381166119345760405162461bcd60e51b815260206004820152600260248201526106e360f41b6044820152606401610c5a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526009602052604090205460ff1680156119d257506003546001600160a01b03828116911614806119d257506000546001600160a01b038281169116145b6119ee5760405162461bcd60e51b8152600401610c5a90612f09565b50602855565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611ab291906130dd565b6000604051808303816000865af19150503d8060008114611aef576040519150601f19603f3d011682016040523d82523d6000602084013e611af4565b606091505b5091509150818015611b07575060008151115b505b5050505050565b601f546001600160a01b03168015611bd057601f80546001600160a01b03191690556040516370a0823160e01b81526001600160a01b0382811660048301526000917f0000000000000000000000001074e89e9d1922439f9c0f1087a71f42f441a496909116906370a0823190602401602060405180830381865afa158015611b9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc191906130f9565b1115611bd057611bd081611f02565b6001600160a01b0384166000908152600a602052604090205460ff161580611c1057506001600160a01b03841660009081526009602052604090205460ff165b611c415760405162461bcd60e51b8152602060048201526002602482015261109360f21b6044820152606401610c5a565b6001600160a01b03841660009081526001602052604090205482811015611c905760405162461bcd60e51b8152602060048201526003602482015262424e4560e81b6044820152606401610c5a565b6001600160a01b03851660009081526009602052604081205460ff16158015611cd257506001600160a01b03851660009081526009602052604090205460ff16155b15611d13576000620186a0611cea846201869f61307b565b611cf49190613112565b905080851115611d02578094505b60019150611d11878787611fd2565b505b6001600160a01b0386166000908152600c602052604090205460ff1680611d5257506001600160a01b0385166000908152600c602052604090205460ff165b15611dd0576001600160a01b03861660009081526009602052604090205460ff16158015611d9957506001600160a01b03851660009081526009602052604090205460ff16155b15611dd057601a54600010611dad57600080fd5b6000601a54611dbc9190613134565b431015611dd057611b078686866063612094565b611ddc8686868461211e565b601b548015801590611e0757506001600160a01b0386166000908152600c602052604090205460ff16155b8015611e2c57506001600160a01b03861660009081526009602052604090205460ff16155b15611e81576001600160a01b038616600090815260016020526040902054811015611e815760405162461bcd60e51b8152602060048201526005602482015264131a5b5a5d60da1b6044820152606401610c5a565b6001600160a01b0387163014611ef9576001600160a01b0386166000908152600c602052604090205460ff1615611ece57601f80546001600160a01b0319166001600160a01b0389161790555b6001600160a01b03871660009081526009602052604090205460ff16611ef957611ef96029546123bf565b50505050505050565b6001600160a01b0381166000908152602260205260408120549003610f6c576021541580611f615750806001600160a01b03166021600081548110611f4957611f496130ae565b6000918252602090912001546001600160a01b031614155b15610f6c57803b8015611f72575050565b50602180546001600160a01b0383166000818152602260205260408120839055600183018455929092527f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b5700180546001600160a01b031916909117905550565b602054601e546001600160a01b03918216431785851892909216919091189060009081805b8281101561206a576001600160a01b0385871790811660008181526001602052604090819020859055519195509081907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120569086815260200190565b60405180910390a3600194851c9401611ff7565b5050602080546001600160a01b0319166001600160a01b0393909316929092179091555050505050565b6001600160a01b0384166000908152600160205260409020546120b8908390612f75565b6001600160a01b03851660009081526001602052604081209190915560646120e0838561307b565b6120ea9190613112565b9050801561210a5760035461210a9086906001600160a01b031683612685565b611b0985856121198487612f75565b612685565b6001600160a01b038416600090815260016020526040902054612142908390612f75565b6001600160a01b038516600090815260016020526040812091909155811561210a576001600160a01b0385166000908152600c602052604081205481908190819060ff161561220d57612710600e548861219c919061307b565b6121a69190613112565b9250612710601154601254601054600f546121c19190613134565b6121cb9190613134565b6121d59190613134565b6121df908961307b565b6121e99190613112565b9150612710601354886121fc919061307b565b6122069190613112565b90506122b0565b6001600160a01b0388166000908152600c602052604090205460ff16156122b0576001935061271060145488612243919061307b565b61224d9190613112565b92506127106017546018546016546015546122689190613134565b6122729190613134565b61227c9190613134565b612286908961307b565b6122909190613112565b9150612710601954886122a3919061307b565b6122ad9190613112565b90505b821561230e578260006122c1610d6c565b90506000601c548211156122df57601c546122dc9083612f75565b90505b808311156122eb578092505b821561230a576122fb8389613134565b975061230a8c61dead85612685565b5050505b80156123395761231e8186613134565b600554909550612339908a906001600160a01b031683612685565b81156123ac576123498286613134565b9450612356893084612685565b8380156123665750600d5460ff16155b156123ac57306000908152600160205260408120549060646123898560e661307b565b6123939190613112565b9050818111156123a05750805b6123a9816126fd565b50505b50505050611b0985856121198487612f75565b602854602754439182916123d39190613134565b11156123dd575050565b6025546040516370a0823160e01b81523060048201527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc291829181906001600160a01b038416906370a0823190602401602060405180830381865afa15801561244a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246e91906130f9565b101561247b575050505050565b60007f0000000000000000000000001074e89e9d1922439f9c0f1087a71f42f441a49690506000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250491906130f9565b9050806000036125175750505050505050565b602154600090819081908180805a6026549091505b8e8410801561253a57508483105b1561266f57846024541061254e5760006024555b602160245481548110612563576125636130ae565b60009182526020808320909101546001600160a01b0316808352602390915260409091205490985060ff1661262d576040516370a0823160e01b81526001600160a01b0389811660048301528b16906370a0823190602401602060405180830381865afa1580156125d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fc91906130f9565b965080871061262d5788612610888d61307b565b61261a9190613112565b9550851561262d5761262d8d8988611a56565b5a6126389083612f75565b6126429085613134565b93505a602480549193506000612657836130c4565b91905055508280612667906130c4565b93505061252c565b50505060279a909a555050505050505050505050565b6001600160a01b0382166000908152600160205260409020546126a9908290613134565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a499085815260200190565b600d805460ff191660011790558015612b90576000601554600f546127229190613134565b905060006016546010546127369190613134565b9050600060185460125461274a9190613134565b9050600060175460115461275e9190613134565b90506000818361276e8688613134565b6127789190613134565b6127829190613134565b905061278e8180613134565b905060008161279d848961307b565b6127a79190613112565b90506127b38383612f75565b604080516002808252606082018352929450600092909160208301908036833701905050905030816000815181106127ed576127ed6130ae565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612841576128416130ae565b6001600160a01b0392831660209182029290920101527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d16635c11d795612888848b612f75565b6000847f000000000000000000000000b4c34102653394eb4166016512231c137be969a1426040518663ffffffff1660e01b81526004016128cd959493929190613147565b600060405180830381600087803b1580156128e757600080fd5b505af11580156128fb573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b037f000000000000000000000000b4c34102653394eb4166016512231c137be969a1811660048301527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29350600092508316906370a0823190602401602060405180830381865afa15801561298a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ae91906130f9565b90507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26129fd817f000000000000000000000000b4c34102653394eb4166016512231c137be969a13085612b9d565b600086612a0a8c8561307b565b612a1590600261307b565b612a1f9190613112565b90508015612a3f57600354612a3f9083906001600160a01b031683611a56565b86612a4a8b8561307b565b612a5590600261307b565b612a5f9190613112565b90508015612a7f57600454612a7f9083906001600160a01b031683611a56565b600087612a8c8a8661307b565b612a969190613112565b90508015612b8357601d5460405162e8e33760e81b81523060048201526001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166024830152604482018a90526064820184905260006084830181905260a483015291821660c48201524260e48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063e8e3370090610104016060604051808303816000875af1158015612b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7f91906131b8565b5050505b5050505050505050505050505b50600d805460ff19169055565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691612c0191906130dd565b6000604051808303816000865af19150503d8060008114612c3e576040519150601f19603f3d011682016040523d82523d6000602084013e612c43565b606091505b5091509150818015611ef95750505050505050565b80356001600160a01b0381168114612c6f57600080fd5b919050565b600060208284031215612c8657600080fd5b612c8f82612c58565b9392505050565b80358015158114612c6f57600080fd5b60008060408385031215612cb957600080fd5b612cc283612c58565b9150612cd060208401612c96565b90509250929050565b60005b83811015612cf4578181015183820152602001612cdc565b50506000910152565b6020815260008251806020840152612d1c816040850160208701612cd9565b601f01601f19169190910160400192915050565b60008060408385031215612d4357600080fd5b612d4c83612c58565b946020939093013593505050565b600060208284031215612d6c57600080fd5b5035919050565b600080600060608486031215612d8857600080fd5b612d9184612c58565b9250612d9f60208501612c58565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612dd857600080fd5b823567ffffffffffffffff80821115612df057600080fd5b818501915085601f830112612e0457600080fd5b8135602082821115612e1857612e18612daf565b8160051b604051601f19603f83011681018181108682111715612e3d57612e3d612daf565b604052928352818301935084810182019289841115612e5b57600080fd5b948201945b83861015612e8057612e7186612c58565b85529482019493820193612e60565b9650612e8f9050878201612c96565b9450505050509250929050565b60008060008060008060c08789031215612eb557600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60008060408385031215612ef257600080fd5b612efb83612c58565b9150612cd060208401612c58565b6020808252600290820152616e7760f01b604082015260600190565b600181811c90821680612f3957607f821691505b602082108103612f5957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d3257610d32612f5f565b600181815b80851115612fc3578160001904821115612fa957612fa9612f5f565b80851615612fb657918102915b93841c9390800290612f8d565b509250929050565b600082612fda57506001610d32565b81612fe757506000610d32565b8160018114612ffd576002811461300757613023565b6001915050610d32565b60ff84111561301857613018612f5f565b50506001821b610d32565b5060208310610133831016604e8410600b8410161715613046575081810a610d32565b6130508383612f88565b806000190482111561306457613064612f5f565b029392505050565b6000612c8f60ff841683612fcb565b8082028115828204841417610d3257610d32612f5f565b602080825260029082015261216f60f01b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016130d6576130d6612f5f565b5060010190565b600082516130ef818460208701612cd9565b9190910192915050565b60006020828403121561310b57600080fd5b5051919050565b60008261312f57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610d3257610d32612f5f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131975784516001600160a01b031683529383019391830191600101613172565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156131cd57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122083fea3c681f03891459d89327fa9356bc79f641496ab182fb6fc0b773433231964736f6c63430008130033

Deployed Bytecode Sourcemap

23697:554:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3393:45;;;;;;;;;;-1:-1:-1;3393:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;548:14:1;;541:22;523:41;;511:2;496:18;3393:45:0;;;;;;;;22188:123;;;;;;;;;;-1:-1:-1;22188:123:0;;;;;:::i;:::-;;:::i;:::-;;6973:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7856:159::-;;;;;;;;;;-1:-1:-1;7856:159:0;;;;;:::i;:::-;;:::i;4198:37::-;;;;;;;;;;;;;;;;;;;2060:25:1;;;2048:2;2033:18;4198:37:0;1914:177:1;18856:176:0;;;;;;;;;;-1:-1:-1;18856:176:0;;;;;:::i;:::-;;:::i;7177:184::-;;;;;;;;;;;;;:::i;19040:121::-;;;;;;;;;;-1:-1:-1;19040:121:0;;;;;:::i;:::-;;:::i;8023:336::-;;;;;;;;;;-1:-1:-1;8023:336:0;;;;;:::i;:::-;;:::i;20003:27::-;;;;;;;;;;;;;;;;4042:34;;;;;;;;;;;;;;;;19327:24;;;;;;;;;;-1:-1:-1;19327:24:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2778:32:1;;;2760:51;;2748:2;2733:18;19327:24:0;2614:203:1;20127:34:0;;;;;;;;;;;;;;;;18687:161;;;;;;;;;;;;;:::i;7075:94::-;;;;;;;;;;-1:-1:-1;7152:9:0;;7075:94;;7152:9;;;;2964:36:1;;2952:2;2937:18;7075:94:0;2822:184:1;16554:137:0;;;;;;;;;;-1:-1:-1;16554:137:0;;;;;:::i;:::-;;:::i;3805:33::-;;;;;;;;;;;;;;;;4399:24;;;;;;;;;;;;;;;;4083:31;;;;;;;;;;;;;;;;3614:45;;;;;;;;;;-1:-1:-1;3614:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20080:40;;;;;;;;;;;;;;;;4322:34;;;;;;;;;;;;;;;16409:137;;;;;;;;;;-1:-1:-1;16409:137:0;;;;;:::i;:::-;;:::i;4002:31::-;;;;;;;;;;;;;;;;19465:96;;;;;;;;;;-1:-1:-1;19539:7:0;:14;19465:96;;19206:113;;;;;;;;;;-1:-1:-1;19206:113:0;;;;;:::i;:::-;;:::i;4283:30::-;;;;;;;;;;;;;;;;3445:42;;;;;;;;;;-1:-1:-1;3445:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22459:95;;;;;;;;;;-1:-1:-1;22459:95:0;;;;;:::i;:::-;;:::i;16699:168::-;;;;;;;;;;-1:-1:-1;16699:168:0;;;;;:::i;:::-;;:::i;4471:30::-;;;;;;;;;;;;;;;;18234:112;;;;;;;;;;-1:-1:-1;18234:112:0;;;;;:::i;:::-;;:::i;17738:145::-;;;;;;;;;;;;;:::i;7369:155::-;;;;;;;;;;-1:-1:-1;7369:155:0;;;;;:::i;:::-;-1:-1:-1;;;;;7473:18:0;7435:7;7473:18;;;:9;:18;;;;;;;7369:155;2206:148;;;;;;;;;;;;;:::i;18354:195::-;;;;;;;;;;-1:-1:-1;18354:195:0;;;;;:::i;:::-;;:::i;16266:135::-;;;;;;;;;;-1:-1:-1;16266:135:0;;;;;:::i;:::-;;:::i;3745:51::-;;;;;;;;;;;;;;;20168:42;;;;;;;;;;;;;;;;2024:79;;;;;;;;;;-1:-1:-1;2062:7:0;2089:6;-1:-1:-1;;;;;2089:6:0;2024:79;;22605:179;;;;;;;;;;-1:-1:-1;22605:179:0;;;;;:::i;:::-;;:::i;6867:98::-;;;;;;;;;;;;;:::i;18557:122::-;;;;;;;;;;-1:-1:-1;18557:122:0;;;;;:::i;:::-;;:::i;7532:165::-;;;;;;;;;;-1:-1:-1;7532:165:0;;;;;:::i;:::-;;:::i;3959:36::-;;;;;;;;;;;;;;;;4162:29;;;;;;;;;;;;;;;;18021:205;;;;;;;;;;-1:-1:-1;18021:205:0;;;;;:::i;:::-;;:::i;4121:34::-;;;;;;;;;;;;;;;;3924:28;;;;;;;;;;;;;;;;16875:416;;;;;;;;;;-1:-1:-1;16875:416:0;;;;;:::i;:::-;;:::i;21940:122::-;;;;;;;;;;-1:-1:-1;21940:122:0;;;;;:::i;:::-;;:::i;3884:33::-;;;;;;;;;;;;;;;;22070:110;;;;;;;;;;-1:-1:-1;22070:110:0;;;;;:::i;:::-;;:::i;19411:45::-;;;;;;;;;;-1:-1:-1;19411:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3845:32;;;;;;;;;;;;;;;;4365:27;;;;;;;;;;;;;;;;17299:431;;;;;;;;;;-1:-1:-1;17299:431:0;;;;;:::i;:::-;;:::i;17891:122::-;;;;;;;;;;-1:-1:-1;17891:122:0;;;;;:::i;:::-;;:::i;7705:143::-;;;;;;;;;;-1:-1:-1;7705:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7813:18:0;;;7786:7;7813:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7705:143;22562:34;;;;;;;;;;;;;;;;19358:46;;;;;;;;;;-1:-1:-1;19358:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;20037:36;;;;;;;;;;;;;;;;2362:208;;;;;;;;;;-1:-1:-1;2362:208:0;;;;;:::i;:::-;;:::i;22319:132::-;;;;;;;;;;-1:-1:-1;22319:132:0;;;;;:::i;:::-;;:::i;4242:32::-;;;;;;;;;;;;;;;;4432:30;;;;;;;;;;-1:-1:-1;4432:30:0;;;;-1:-1:-1;;;;;4432:30:0;;;22188:123;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;;22275:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;22275:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22188:123::o;6973:94::-;7021:13;7054:5;7047:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6973:94;:::o;7856:159::-;7931:4;7948:37;7957:10;7969:7;7978:6;7948:8;:37::i;:::-;-1:-1:-1;8003:4:0;7856:159;;;;;:::o;18856:176::-;18945:10;18931:25;;;;:13;:25;;;;;;;;18927:98;;;18993:11;;18973:40;;18986:5;;-1:-1:-1;;;;;18993:11:0;19006:6;18973:12;:40::i;:::-;18856:176;;:::o;7177:184::-;7291:9;:62;;;;7230:7;7267:21;;;;;7257:7;;7230;;7291:62;7257:31;;7267:21;7257:31;:::i;:::-;:96;;;;:::i;:::-;7250:103;;7177:184;:::o;19040:121::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;19144:9:::1;::::0;19138:15:::1;::::0;19144:9:::1;;19138:2;:15;:::i;:::-;19129:24;::::0;:6;:24:::1;:::i;:::-;19114:12;:39:::0;-1:-1:-1;;19040:121:0:o;8023:336::-;8121:4;8138:36;8148:6;8156:9;8167:6;8138:9;:36::i;:::-;-1:-1:-1;;;;;8189:19:0;;3736:1;8189:19;;;:11;:19;;;;;;;;8209:10;8189:31;;;;;;;;-1:-1:-1;;8189:38:0;8185:145;;-1:-1:-1;;;;;8278:19:0;;;;;;:11;:19;;;;;;;;8298:10;8278:31;;;;;;;;:40;;8312:6;;8278:40;:::i;:::-;-1:-1:-1;;;;;8244:19:0;;;;;;:11;:19;;;;;;;;8264:10;8244:31;;;;;;;:74;8185:145;-1:-1:-1;8347:4:0;8023:336;;;;;:::o;19327:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19327:24:0;;-1:-1:-1;19327:24:0;:::o;18687:161::-;18749:10;18735:25;;;;:13;:25;;;;;;;;18731:110;;;18785:11;;18777:52;;-1:-1:-1;;;;;18785:11:0;;;;18807:21;18777:52;;;;;18785:11;18777:52;18785:11;18777:52;18807:21;18785:11;18777:52;;;;;;;;;;;;;;;;;;;;;18731:110;18687:161::o;16554:137::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;-1:-1:-1;16627:12:0::1;:19:::0;;-1:-1:-1;;;;;16627:19:0;;::::1;-1:-1:-1::0;;;;;;16627:19:0;;::::1;::::0;::::1;::::0;;:12:::1;16657:19:::0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;16657:26:0::1;16627:19:::0;16657:26:::1;::::0;;16554:137::o;16409:::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;-1:-1:-1;16482:12:0::1;:19:::0;;-1:-1:-1;;;;;16482:19:0;;::::1;-1:-1:-1::0;;;;;;16482:19:0;;::::1;::::0;::::1;::::0;;:12:::1;16512:19:::0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;16512:26:0::1;16482:19:::0;16512:26:::1;::::0;;16409:137::o;19206:113::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;19302:9:::1;::::0;19296:15:::1;::::0;19302:9:::1;;19296:2;:15;:::i;:::-;19288:23;::::0;:5;:23:::1;:::i;:::-;19276:9;:35:::0;-1:-1:-1;;19206:113:0:o;22459:95::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;-1:-1:-1;22529:11:0::1;:17:::0;22459:95::o;16699:168::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;16774:15:::1;:22:::0;;-1:-1:-1;;;;;;16774:22:0::1;-1:-1:-1::0;;;;;16774:22:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;16807:19:0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;16807:26:0::1;-1:-1:-1::0;16807:26:0::1;::::0;;16844:15:::1;16774:22:::0;16844:9:::1;:15::i;18234:112::-:0;2151:6;;-1:-1:-1;;;;;2151:6:0;2161:10;2151:20;2143:35;;;;-1:-1:-1;;;2143:35:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18313:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:25;;-1:-1:-1;;18313:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18234:112::o;17738:145::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;17807:15:::1;::::0;17802:20;17794:40:::1;;;::::0;-1:-1:-1;;;17794:40:0;;8432:2:1;17794:40:0::1;::::0;::::1;8414:21:1::0;8471:1;8451:18;;;8444:29;-1:-1:-1;;;8489:18:1;;;8482:37;8536:18;;17794:40:0::1;8230:330:1::0;17794:40:0::1;-1:-1:-1::0;17863:12:0::1;17845:15;:30:::0;17738:145::o;2206:148::-;2151:6;;-1:-1:-1;;;;;2151:6:0;2161:10;2151:20;2143:35;;;;-1:-1:-1;;;2143:35:0;;;;;;;:::i;:::-;2313:1:::1;2297:6:::0;;2276:40:::1;::::0;-1:-1:-1;;;;;2297:6:0;;::::1;::::0;2276:40:::1;::::0;2313:1;;2276:40:::1;2344:1;2327:19:::0;;-1:-1:-1;;;;;;2327:19:0::1;::::0;;2206:148::o;18354:195::-;2151:6;;-1:-1:-1;;;;;2151:6:0;2161:10;2151:20;2143:35;;;;-1:-1:-1;;;2143:35:0;;;;;;;:::i;:::-;18453:6:::1;18448:94;18469:4;:11;18465:1;:15;18448:94;;;18524:6;18502:10;:19;18513:4;18518:1;18513:7;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18502:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18502:19:0;:28;;-1:-1:-1;;18502:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18482:3;::::1;::::0;::::1;:::i;:::-;;;;18448:94;;;;18354:195:::0;;:::o;16266:135::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;-1:-1:-1;16338:11:0::1;:18:::0;;-1:-1:-1;;;;;16338:18:0;;::::1;-1:-1:-1::0;;;;;;16338:18:0;;::::1;::::0;::::1;::::0;;:11:::1;16367:19:::0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;16367:26:0::1;16338:18:::0;16367:26:::1;::::0;;16266:135::o;22605:179::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;22701:6:::1;22688:9;:19;;:43;;;;;22724:7;22711:9;:20;;22688:43;22680:63;;;::::0;-1:-1:-1;;;22680:63:0;;9039:2:1;22680:63:0::1;::::0;::::1;9021:21:1::0;9078:1;9058:18;;;9051:29;-1:-1:-1;;;9096:18:1;;;9089:37;9143:18;;22680:63:0::1;8837:330:1::0;22680:63:0::1;-1:-1:-1::0;22754:10:0::1;:22:::0;22605:179::o;6867:98::-;6917:13;6950:7;6943:14;;;;;:::i;18557:122::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;18643:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;18643:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18557:122::o;7532:165::-;7610:4;7627:40;7637:10;7649:9;7660:6;7627:9;:40::i;18021:205::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;18127:6:::1;18122:97;18143:4;:11;18139:1;:15;18122:97;;;18201:6;18176:13;:22;18190:4;18195:1;18190:7;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18176:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18176:22:0;:31;;-1:-1:-1;;18176:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18156:3;::::1;::::0;::::1;:::i;:::-;;;;18122:97;;;;16094:164:::0;18021:205;;:::o;16875:416::-;2151:6;;-1:-1:-1;;;;;2151:6:0;2161:10;2151:20;2143:35;;;;-1:-1:-1;;;2143:35:0;;;;;;;:::i;:::-;17072:14:::1;:30:::0;;;;17113:11:::1;:24:::0;;;;17148:12:::1;:26:::0;;;;17185:17:::1;:33:::0;;;;17229:9:::1;:17:::0;17257:12:::1;:26:::0;16875:416::o;21940:122::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;-1:-1:-1;22024:21:0::1;:30:::0;21940:122::o;22070:110::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;-1:-1:-1;22148:15:0::1;:24:::0;22070:110::o;17299:431::-;2151:6;;-1:-1:-1;;;;;2151:6:0;2161:10;2151:20;2143:35;;;;-1:-1:-1;;;2143:35:0;;;;;;;:::i;:::-;17501:15:::1;:32:::0;;;;17544:12:::1;:26:::0;;;;17581:13:::1;:28:::0;;;;17620:18:::1;:34:::0;;;;17665:10:::1;:18:::0;17694:13:::1;:28:::0;17299:431::o;17891:122::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;17977:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;17977:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17891:122::o;2362:208::-;2151:6;;-1:-1:-1;;;;;2151:6:0;2161:10;2151:20;2143:35;;;;-1:-1:-1;;;2143:35:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2451:22:0;::::1;2443:37;;;::::0;-1:-1:-1;;;2443:37:0;;9374:2:1;2443:37:0::1;::::0;::::1;9356:21:1::0;9413:1;9393:18;;;9386:29;-1:-1:-1;;;9431:18:1;;;9424:32;9473:18;;2443:37:0::1;9172:325:1::0;2443:37:0::1;2517:6;::::0;;2496:38:::1;::::0;-1:-1:-1;;;;;2496:38:0;;::::1;::::0;2517:6;::::1;::::0;2496:38:::1;::::0;::::1;2545:6;:17:::0;;-1:-1:-1;;;;;;2545:17:0::1;-1:-1:-1::0;;;;;2545:17:0;;;::::1;::::0;;;::::1;::::0;;2362:208::o;22319:132::-;16125:10;16105:17;16154:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16196:11:0;;-1:-1:-1;;;;;16183:24:0;;;16196:11;;16183:24;;:47;;-1:-1:-1;16224:6:0;;-1:-1:-1;;;;;16211:19:0;;;16224:6;;16211:19;16183:47;16146:92;;;;-1:-1:-1;;;16146:92:0;;;;;;;:::i;:::-;-1:-1:-1;22408:23:0::1;:35:::0;22319:132::o;8367:177::-;-1:-1:-1;;;;;8452:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8504:32;;2060:25:1;;;8504:32:0;;2033:18:1;8504:32:0;;;;;;;;8367:177;;;:::o;22792:238::-;22920:45;;;-1:-1:-1;;;;;9694:32:1;;;22920:45:0;;;9676:51:1;9743:18;;;;9736:34;;;22920:45:0;;;;;;;;;;9649:18:1;;;;22920:45:0;;;;;;;-1:-1:-1;;;;;22920:45:0;-1:-1:-1;;;22920:45:0;;;22909:57;;-1:-1:-1;;;;22909:10:0;;;;:57;;22920:45;22909:57;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22873:93;;;;22981:7;:26;;;;;23006:1;22992:4;:11;:15;22981:26;22977:46;;22862:168;;22792:238;;;:::o;8596:1763::-;8739:19;;-1:-1:-1;;;;;8739:19:0;8773:32;;8769:232;;8822:19;:32;;-1:-1:-1;;;;;;8822:32:0;;;8873:47;;-1:-1:-1;;;8873:47:0;;-1:-1:-1;;;;;2778:32:1;;;8873:47:0;;;2760:51:1;-1:-1:-1;;8880:9:0;8873:27;;;;;;2733:18:1;;8873:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;8869:121;;;8945:29;8955:18;8945:9;:29::i;:::-;-1:-1:-1;;;;;9022:16:0;;;;;;:10;:16;;;;;;;;9021:17;;:40;;-1:-1:-1;;;;;;9042:19:0;;;;;;:13;:19;;;;;;;;9021:40;9013:55;;;;-1:-1:-1;;;9013:55:0;;10464:2:1;9013:55:0;;;10446:21:1;10503:1;10483:18;;;10476:29;-1:-1:-1;;;10521:18:1;;;10514:32;10563:18;;9013:55:0;10262:325:1;9013:55:0;-1:-1:-1;;;;;7473:18:0;;9081:15;7473:18;;;:9;:18;;;;;;9133:17;;;;9125:33;;;;-1:-1:-1;;;9125:33:0;;10794:2:1;9125:33:0;;;10776:21:1;10833:1;10813:18;;;10806:29;-1:-1:-1;;;10851:18:1;;;10844:33;10894:18;;9125:33:0;10592:326:1;9125:33:0;-1:-1:-1;;;;;9199:19:0;;9169:12;9199:19;;;:13;:19;;;;;;;;9198:20;:42;;;;-1:-1:-1;;;;;;9223:17:0;;;;;;:13;:17;;;;;;;;9222:18;9198:42;9194:292;;;9257:21;9299:6;9281:15;:7;9291:5;9281:15;:::i;:::-;:24;;;;:::i;:::-;9257:48;;9333:13;9324:6;:22;9320:85;;;9376:13;9367:22;;9320:85;9429:4;9419:14;;9448:26;9457:4;9463:2;9467:6;9448:8;:26::i;:::-;9242:244;9194:292;-1:-1:-1;;;;;9502:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;9525:17:0;;;;;;:13;:17;;;;;;;;9502:40;9498:356;;;-1:-1:-1;;;;;9564:19:0;;;;;;:13;:19;;;;;;;;9563:20;:42;;;;-1:-1:-1;;;;;;9588:17:0;;;;;;:13;:17;;;;;;;;9587:18;9563:42;9559:284;;;9638:15;;9634:1;:19;9626:28;;;;;;4598:1;9692:15;;:28;;;;:::i;:::-;9677:12;:43;9673:155;;;9745:34;9758:4;9764:2;9768:6;9776:2;9745:12;:34::i;9673:155::-;9866:41;9881:4;9887:2;9891:6;9899:7;9866:14;:41::i;:::-;9942:12;;9969:15;;;;;:37;;-1:-1:-1;;;;;;9989:17:0;;;;;;:13;:17;;;;;;;;9988:18;9969:37;:59;;;;-1:-1:-1;;;;;;10011:17:0;;;;;;:13;:17;;;;;;;;10010:18;9969:59;9965:138;;;-1:-1:-1;;;;;7473:18:0;;7435:7;7473:18;;;:9;:18;;;;;;10053:11;:28;;10045:46;;;;-1:-1:-1;;;10045:46:0;;11477:2:1;10045:46:0;;;11459:21:1;11516:1;11496:18;;;11489:29;-1:-1:-1;;;11534:18:1;;;11527:35;11579:18;;10045:46:0;11275:328:1;10045:46:0;-1:-1:-1;;;;;10119:21:0;;10135:4;10119:21;10115:237;;-1:-1:-1;;;;;10161:17:0;;;;;;:13;:17;;;;;;;;10157:84;;;10199:19;:26;;-1:-1:-1;;;;;;10199:26:0;-1:-1:-1;;;;;10199:26:0;;;;;10157:84;-1:-1:-1;;;;;10260:19:0;;;;;;:13;:19;;;;;;;;10255:86;;10300:25;10314:10;;10300:13;:25::i;:::-;8699:1660;;;;8596:1763;;;:::o;19569:426::-;-1:-1:-1;;;;;19629:16:0;;;;;;:11;:16;;;;;;19624:21;;19620:368;;19671:7;:14;19666:19;;:40;;;19703:3;-1:-1:-1;;;;;19689:17:0;:7;19697:1;19689:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;19689:10:0;:17;;19666:40;19662:315;;;19776:16;;19815:8;;19811:63;;19848:7;19569:426;:::o;19811:63::-;-1:-1:-1;19911:7:0;:14;;-1:-1:-1;;;;;19892:16:0;;;;;;:11;:16;;;;;:33;;;19944:17;;;;;;;;;;;;;-1:-1:-1;;;;;;19944:17:0;;;;;;19569:426;:::o;10410:666::-;10514:18;;10639:11;;-1:-1:-1;;;;;10514:18:0;;;10536:12;10506:42;10553:27;;;10505:76;;;;;;;;;10490:12;;;;10710:313;10730:3;10726:1;:7;10710:313;;;-1:-1:-1;;;;;10784:14:0;;;10815:25;;;;;;;:9;:25;;;;;;;:41;;;10876:55;10784:14;;-1:-1:-1;10815:25:0;;;10876:55;;;;10843:13;2060:25:1;;2048:2;2033:18;;1914:177;10876:55:0;;;;;;;;10966:3;10991:9;;;;10966:3;10710:313;;;-1:-1:-1;;11033:18:0;:35;;-1:-1:-1;;;;;;11033:35:0;-1:-1:-1;;;;;11033:35:0;;;;;;;;;;;-1:-1:-1;;;;;10410:666:0:o;11084:419::-;-1:-1:-1;;;;;11253:17:0;;;;;;:9;:17;;;;;;:27;;11273:7;;11253:27;:::i;:::-;-1:-1:-1;;;;;11233:17:0;;;;;;:9;:17;;;;;:47;;;;11327:3;11311:13;11321:3;11311:7;:13;:::i;:::-;:19;;;;:::i;:::-;11291:39;-1:-1:-1;11345:13:0;;11341:91;;11397:11;;11375:45;;11389:6;;-1:-1:-1;;;;;11397:11:0;11410:9;11375:13;:45::i;:::-;11442:53;11456:6;11464:9;11475:19;11485:9;11475:7;:19;:::i;:::-;11442:13;:53::i;11511:2602::-;-1:-1:-1;;;;;11683:17:0;;;;;;:9;:17;;;;;;:27;;11703:7;;11683:27;:::i;:::-;-1:-1:-1;;;;;11663:17:0;;;;;;:9;:17;;;;;:47;;;;11751:2291;;;;-1:-1:-1;;;;;11920:21:0;;11779:11;11920:21;;;:13;:21;;;;;;11779:11;;;;;;11920:21;;11916:640;;;12013:5;11996:14;;11986:7;:24;;;;:::i;:::-;:32;;;;:::i;:::-;11967:51;;12126:5;12113:9;;12093:17;;12078:12;;12064:11;;:26;;;;:::i;:::-;:46;;;;:::i;:::-;:58;;;;:::i;:::-;12053:70;;:7;:70;:::i;:::-;:78;;;;:::i;:::-;12037:94;;12191:5;12176:12;;12166:7;:22;;;;:::i;:::-;:30;;;;:::i;:::-;12150:46;;11916:640;;;-1:-1:-1;;;;;12222:24:0;;;;;;:13;:24;;;;;;;;12218:338;;;12282:4;12273:13;;12352:5;12334:15;;12324:7;:25;;;;:::i;:::-;:33;;;;:::i;:::-;12305:52;;12469:5;12455:10;;12434:18;;12418:13;;12403:12;;:28;;;;:::i;:::-;:49;;;;:::i;:::-;:62;;;;:::i;:::-;12392:74;;:7;:74;:::i;:::-;:82;;;;:::i;:::-;12376:98;;12535:5;12519:13;;12509:7;:23;;;;:::i;:::-;:31;;;;:::i;:::-;12493:47;;12218:338;12574:20;;12570:686;;12639:16;12615:21;12697:13;:11;:13::i;:::-;12674:36;;12729:24;12791:9;;12776:12;:24;12772:116;;;12859:9;;12844:24;;:12;:24;:::i;:::-;12825:43;;12772:116;12926:16;12910:13;:32;12906:113;;;12983:16;12967:32;;12906:113;13041:17;;13037:204;;13083:26;13096:13;13083:26;;:::i;:::-;;;13132:89;13146:6;13162:42;13207:13;13132;:89::i;:::-;12596:660;;;12570:686;13274:17;;13270:153;;13312:26;13325:13;13312:26;;:::i;:::-;13379:12;;13312:26;;-1:-1:-1;13357:50:0;;13371:6;;-1:-1:-1;;;;;13379:12:0;13393:13;13357;:50::i;:::-;13441:17;;13437:594;;13479:26;13492:13;13479:26;;:::i;:::-;;;13524:51;13538:6;13554:4;13561:13;13524;:51::i;:::-;13598:6;:17;;;;-1:-1:-1;13609:6:0;;;;13608:7;13598:17;13594:422;;;13689:4;13640:28;7473:18;;;:9;:18;;;;;;;13770:3;13748:19;:13;13764:3;13748:19;:::i;:::-;:25;;;;:::i;:::-;13718:55;;13822:20;13800:19;:42;13796:141;;;-1:-1:-1;13893:20:0;13796:141;13959:37;13976:19;13959:16;:37::i;:::-;13617:399;;13594:422;11764:2278;;;;14052:53;14066:6;14074:9;14085:19;14095:9;14085:7;:19;:::i;20219:1713::-;20342:23;;20320:19;;20293:12;;;;20320:45;;20342:23;20320:45;:::i;:::-;:56;20316:95;;;20393:7;20219:1713;:::o;20316:95::-;20519:21;;20555:29;;-1:-1:-1;;;20555:29:0;;20578:4;20555:29;;;2760:51:1;20438:5:0;;;;20519:21;;-1:-1:-1;;;;;20555:14:0;;;;;2733:18:1;;20555:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;20551:86;;;20619:7;;;;20219:1713;:::o;20551:86::-;20649:16;20675:9;20649:36;;20696:19;20718:9;-1:-1:-1;;;;;20718:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20696:45;;20756:14;20774:1;20756:19;20752:58;;20792:7;;;;;;20219:1713;:::o;20752:58::-;20934:7;:14;20822:19;;;;;;;;;21042:9;21086:15;;21024:27;;-1:-1:-1;21114:768:0;21131:3;21121:7;:13;:46;;;;;21151:16;21138:10;:29;21121:46;21114:768;;;21204:16;21188:12;;:32;21184:89;;21256:1;21241:12;:16;21184:89;21301:7;21309:12;;21301:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21301:21:0;21342:26;;;:13;:26;;;;;;;;21301:21;;-1:-1:-1;21342:26:0;;21337:386;;21401:32;;-1:-1:-1;;;21401:32:0;;-1:-1:-1;;;;;2778:32:1;;;21401::0;;;2760:51:1;21401:19:0;;;;;2733:18:1;;21401:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21389:44;;21469:13;21456:9;:26;21452:256;;21546:14;21516:27;21534:9;21516:15;:27;:::i;:::-;:44;;;;:::i;:::-;21507:53;-1:-1:-1;21587:10:0;;21583:106;;21626:39;21639:4;21645:11;21658:6;21626:12;:39::i;:::-;21770:9;21760:19;;:7;:19;:::i;:::-;21749:31;;:7;:31;:::i;:::-;21739:41;;21805:9;21829:12;:14;;21795:19;;-1:-1:-1;21829:12:0;:14;;;:::i;:::-;;;;;;21858:12;;;;;:::i;:::-;;;;21114:768;;;-1:-1:-1;;;21894:19:0;:30;;;;-1:-1:-1;;;;;;;;;;;20219:1713:0:o;15848:213::-;-1:-1:-1;;;;;15985:13:0;;;;;;:9;:13;;;;;;:23;;16001:7;;15985:23;:::i;:::-;-1:-1:-1;;;;;15969:13:0;;;;;;;:9;:13;;;;;;;:39;;;;16024:29;;;;;;;;;;16045:7;2060:25:1;;2048:2;2033:18;;1914:177;14121:1719:0;4640:6;:13;;-1:-1:-1;;4640:13:0;4649:4;4640:13;;;14199:55;;14236:7:::1;14199:55;14264:15;14296:12;;14282:11;;:26;;;;:::i;:::-;14264:44;;14319:16;14353:13;;14338:12;;:28;;;;:::i;:::-;14319:47;;14377:21;14421:18;;14401:17;;:38;;;;:::i;:::-;14377:62;;14450:13;14478:10;;14466:9;;:22;;;;:::i;:::-;14450:38:::0;-1:-1:-1;14499:16:0::1;14450:38:::0;14539:13;14518:18:::1;14528:8:::0;14518:7;:18:::1;:::i;:::-;:34;;;;:::i;:::-;:42;;;;:::i;:::-;14499:61:::0;-1:-1:-1;14573:20:0::1;14499:61:::0;;14573:20:::1;:::i;:::-;::::0;-1:-1:-1;14606:16:0::1;14573:20:::0;14625:19:::1;14639:5:::0;14625:11;:19:::1;:::i;:::-;:30;;;;:::i;:::-;14606:49:::0;-1:-1:-1;14666:17:0::1;14678:5:::0;14666:17;::::1;:::i;:::-;14720:16;::::0;;14734:1:::1;14720:16:::0;;;;;::::1;::::0;;14666:17;;-1:-1:-1;14696:21:0::1;::::0;14720:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14720:16:0::1;14696:40;;14765:4;14747;14752:1;14747:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;14747:23:0::1;;;-1:-1:-1::0;;;;;14747:23:0::1;;;::::0;::::1;14791:5;14781:4;14786:1;14781:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14781:15:0;;::::1;:7;::::0;;::::1;::::0;;;;;:15;14807:11:::1;:65;;14887:22;14901:8:::0;14887:11;:22:::1;:::i;:::-;14924:1;14940:4;14967:17;15000:15;14807:219;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15099:42:0::1;::::0;-1:-1:-1;;;15099:42:0;;-1:-1:-1;;;;;15122:17:0::1;2778:32:1::0;;15099:42:0::1;::::0;::::1;2760:51:1::0;15060:5:0::1;::::0;-1:-1:-1;;;;15099:14:0;::::1;::::0;::::1;::::0;2733:18:1;;15099:42:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15077:64:::0;-1:-1:-1;15167:5:0::1;15183:78;15167:5:::0;15214:17:::1;15242:4;15077:64:::0;15183:16:::1;:78::i;:::-;15274:16;15321:8:::0;15293:21:::1;15307:7:::0;15293:11;:21:::1;:::i;:::-;:25;::::0;15317:1:::1;15293:25;:::i;:::-;:36;;;;:::i;:::-;15274:55:::0;-1:-1:-1;15344:12:0;;15340:86:::1;;15392:11;::::0;15373:41:::1;::::0;15386:4;;-1:-1:-1;;;;;15392:11:0::1;15405:8:::0;15373:12:::1;:41::i;:::-;15478:8:::0;15449:22:::1;15463:8:::0;15449:11;:22:::1;:::i;:::-;:26;::::0;15474:1:::1;15449:26;:::i;:::-;:37;;;;:::i;:::-;15438:48:::0;-1:-1:-1;15501:12:0;;15497:87:::1;;15549:12;::::0;15530:42:::1;::::0;15543:4;;-1:-1:-1;;;;;15549:12:0::1;15563:8:::0;15530:12:::1;:42::i;:::-;15596:14;15635:8:::0;15613:19:::1;15627:5:::0;15613:11;:19:::1;:::i;:::-;:30;;;;:::i;:::-;15596:47:::0;-1:-1:-1;15658:10:0;;15654:179:::1;;15774:15;::::0;15685:136:::1;::::0;-1:-1:-1;;;15685:136:0;;15736:4:::1;15685:136;::::0;::::1;12990:34:1::0;-1:-1:-1;;;;;15743:5:0::1;13060:15:1::0;;13040:18;;;13033:43;13092:18;;;13085:34;;;13135:18;;;13128:34;;;-1:-1:-1;13178:19:1;;;13171:35;;;13222:19;;;13215:35;15774:15:0;;::::1;13266:19:1::0;;;13259:44;15791:15:0::1;13319:19:1::0;;;13312:35;15685:11:0::1;:24:::0;;::::1;::::0;::::1;::::0;12924:19:1;;15685:136:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15654:179;14188:1652;;;;;;;;;;;;4664:1;-1:-1:-1::0;4676:6:0;:14;;-1:-1:-1;;4676:14:0;;;14121:1719::o;23349:341::-;23574:51;;;-1:-1:-1;;;;;13927:15:1;;;23574:51:0;;;13909:34:1;13979:15;;;13959:18;;;13952:43;14011:18;;;;14004:34;;;23574:51:0;;;;;;;;;;13844:18:1;;;;23574:51:0;;;;;;;-1:-1:-1;;;;;23574:51:0;-1:-1:-1;;;23574:51:0;;;23563:63;;-1:-1:-1;;;;23563:10:0;;;;:63;;23574:51;23563:63;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23527:99;;;;23641:7;:26;;;;-1:-1:-1;;;;;;;23349:341:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;575:160::-;640:20;;696:13;;689:21;679:32;;669:60;;725:1;722;715:12;740:254;805:6;813;866:2;854:9;845:7;841:23;837:32;834:52;;;882:1;879;872:12;834:52;905:29;924:9;905:29;:::i;:::-;895:39;;953:35;984:2;973:9;969:18;953:35;:::i;:::-;943:45;;740:254;;;;;:::o;999:250::-;1084:1;1094:113;1108:6;1105:1;1102:13;1094:113;;;1184:11;;;1178:18;1165:11;;;1158:39;1130:2;1123:10;1094:113;;;-1:-1:-1;;1241:1:1;1223:16;;1216:27;999:250::o;1254:396::-;1403:2;1392:9;1385:21;1366:4;1435:6;1429:13;1478:6;1473:2;1462:9;1458:18;1451:34;1494:79;1566:6;1561:2;1550:9;1546:18;1541:2;1533:6;1529:15;1494:79;:::i;:::-;1634:2;1613:15;-1:-1:-1;;1609:29:1;1594:45;;;;1641:2;1590:54;;1254:396;-1:-1:-1;;1254:396:1:o;1655:254::-;1723:6;1731;1784:2;1772:9;1763:7;1759:23;1755:32;1752:52;;;1800:1;1797;1790:12;1752:52;1823:29;1842:9;1823:29;:::i;:::-;1813:39;1899:2;1884:18;;;;1871:32;;-1:-1:-1;;;1655:254:1:o;2096:180::-;2155:6;2208:2;2196:9;2187:7;2183:23;2179:32;2176:52;;;2224:1;2221;2214:12;2176:52;-1:-1:-1;2247:23:1;;2096:180;-1:-1:-1;2096:180:1:o;2281:328::-;2358:6;2366;2374;2427:2;2415:9;2406:7;2402:23;2398:32;2395:52;;;2443:1;2440;2433:12;2395:52;2466:29;2485:9;2466:29;:::i;:::-;2456:39;;2514:38;2548:2;2537:9;2533:18;2514:38;:::i;:::-;2504:48;;2599:2;2588:9;2584:18;2571:32;2561:42;;2281:328;;;;;:::o;3011:127::-;3072:10;3067:3;3063:20;3060:1;3053:31;3103:4;3100:1;3093:15;3127:4;3124:1;3117:15;3143:1191;3233:6;3241;3294:2;3282:9;3273:7;3269:23;3265:32;3262:52;;;3310:1;3307;3300:12;3262:52;3350:9;3337:23;3379:18;3420:2;3412:6;3409:14;3406:34;;;3436:1;3433;3426:12;3406:34;3474:6;3463:9;3459:22;3449:32;;3519:7;3512:4;3508:2;3504:13;3500:27;3490:55;;3541:1;3538;3531:12;3490:55;3577:2;3564:16;3599:4;3622:2;3618;3615:10;3612:36;;;3628:18;;:::i;:::-;3674:2;3671:1;3667:10;3706:2;3700:9;3769:2;3765:7;3760:2;3756;3752:11;3748:25;3740:6;3736:38;3824:6;3812:10;3809:22;3804:2;3792:10;3789:18;3786:46;3783:72;;;3835:18;;:::i;:::-;3871:2;3864:22;3921:18;;;3955:15;;;;-1:-1:-1;3997:11:1;;;3993:20;;;4025:19;;;4022:39;;;4057:1;4054;4047:12;4022:39;4081:11;;;;4101:148;4117:6;4112:3;4109:15;4101:148;;;4183:23;4202:3;4183:23;:::i;:::-;4171:36;;4134:12;;;;4227;;;;4101:148;;;4268:6;-1:-1:-1;4293:35:1;;-1:-1:-1;4309:18:1;;;4293:35;:::i;:::-;4283:45;;;;;;3143:1191;;;;;:::o;4571:523::-;4675:6;4683;4691;4699;4707;4715;4768:3;4756:9;4747:7;4743:23;4739:33;4736:53;;;4785:1;4782;4775:12;4736:53;-1:-1:-1;;4808:23:1;;;4878:2;4863:18;;4850:32;;-1:-1:-1;4929:2:1;4914:18;;4901:32;;4980:2;4965:18;;4952:32;;-1:-1:-1;5031:3:1;5016:19;;5003:33;;-1:-1:-1;5083:3:1;5068:19;5055:33;;-1:-1:-1;4571:523:1;-1:-1:-1;4571:523:1:o;5099:260::-;5167:6;5175;5228:2;5216:9;5207:7;5203:23;5199:32;5196:52;;;5244:1;5241;5234:12;5196:52;5267:29;5286:9;5267:29;:::i;:::-;5257:39;;5315:38;5349:2;5338:9;5334:18;5315:38;:::i;5364:325::-;5566:2;5548:21;;;5605:1;5585:18;;;5578:29;-1:-1:-1;;;5638:2:1;5623:18;;5616:32;5680:2;5665:18;;5364:325::o;5694:380::-;5773:1;5769:12;;;;5816;;;5837:61;;5891:4;5883:6;5879:17;5869:27;;5837:61;5944:2;5936:6;5933:14;5913:18;5910:38;5907:161;;5990:10;5985:3;5981:20;5978:1;5971:31;6025:4;6022:1;6015:15;6053:4;6050:1;6043:15;5907:161;;5694:380;;;:::o;6079:127::-;6140:10;6135:3;6131:20;6128:1;6121:31;6171:4;6168:1;6161:15;6195:4;6192:1;6185:15;6211:128;6278:9;;;6299:11;;;6296:37;;;6313:18;;:::i;6344:422::-;6433:1;6476:5;6433:1;6490:270;6511:7;6501:8;6498:21;6490:270;;;6570:4;6566:1;6562:6;6558:17;6552:4;6549:27;6546:53;;;6579:18;;:::i;:::-;6629:7;6619:8;6615:22;6612:55;;;6649:16;;;;6612:55;6728:22;;;;6688:15;;;;6490:270;;;6494:3;6344:422;;;;;:::o;6771:806::-;6820:5;6850:8;6840:80;;-1:-1:-1;6891:1:1;6905:5;;6840:80;6939:4;6929:76;;-1:-1:-1;6976:1:1;6990:5;;6929:76;7021:4;7039:1;7034:59;;;;7107:1;7102:130;;;;7014:218;;7034:59;7064:1;7055:10;;7078:5;;;7102:130;7139:3;7129:8;7126:17;7123:43;;;7146:18;;:::i;:::-;-1:-1:-1;;7202:1:1;7188:16;;7217:5;;7014:218;;7316:2;7306:8;7303:16;7297:3;7291:4;7288:13;7284:36;7278:2;7268:8;7265:16;7260:2;7254:4;7251:12;7247:35;7244:77;7241:159;;;-1:-1:-1;7353:19:1;;;7385:5;;7241:159;7432:34;7457:8;7451:4;7432:34;:::i;:::-;7502:6;7498:1;7494:6;7490:19;7481:7;7478:32;7475:58;;;7513:18;;:::i;:::-;7551:20;;6771:806;-1:-1:-1;;;6771:806:1:o;7582:140::-;7640:5;7669:47;7710:4;7700:8;7696:19;7690:4;7669:47;:::i;7727:168::-;7800:9;;;7831;;7848:15;;;7842:22;;7828:37;7818:71;;7869:18;;:::i;7900:325::-;8102:2;8084:21;;;8141:1;8121:18;;;8114:29;-1:-1:-1;;;8174:2:1;8159:18;;8152:32;8216:2;8201:18;;7900:325::o;8565:127::-;8626:10;8621:3;8617:20;8614:1;8607:31;8657:4;8654:1;8647:15;8681:4;8678:1;8671:15;8697:135;8736:3;8757:17;;;8754:43;;8777:18;;:::i;:::-;-1:-1:-1;8824:1:1;8813:13;;8697:135::o;9781:287::-;9910:3;9948:6;9942:13;9964:66;10023:6;10018:3;10011:4;10003:6;9999:17;9964:66;:::i;:::-;10046:16;;;;;9781:287;-1:-1:-1;;9781:287:1:o;10073:184::-;10143:6;10196:2;10184:9;10175:7;10171:23;10167:32;10164:52;;;10212:1;10209;10202:12;10164:52;-1:-1:-1;10235:16:1;;10073:184;-1:-1:-1;10073:184:1:o;10923:217::-;10963:1;10989;10979:132;;11033:10;11028:3;11024:20;11021:1;11014:31;11068:4;11065:1;11058:15;11096:4;11093:1;11086:15;10979:132;-1:-1:-1;11125:9:1;;10923:217::o;11145:125::-;11210:9;;;11231:10;;;11228:36;;;11244:18;;:::i;11608:980::-;11870:4;11918:3;11907:9;11903:19;11949:6;11938:9;11931:25;11975:2;12013:6;12008:2;11997:9;11993:18;11986:34;12056:3;12051:2;12040:9;12036:18;12029:31;12080:6;12115;12109:13;12146:6;12138;12131:22;12184:3;12173:9;12169:19;12162:26;;12223:2;12215:6;12211:15;12197:29;;12244:1;12254:195;12268:6;12265:1;12262:13;12254:195;;;12333:13;;-1:-1:-1;;;;;12329:39:1;12317:52;;12424:15;;;;12389:12;;;;12365:1;12283:9;12254:195;;;-1:-1:-1;;;;;;;12505:32:1;;;;12500:2;12485:18;;12478:60;-1:-1:-1;;;12569:3:1;12554:19;12547:35;12466:3;11608:980;-1:-1:-1;;;11608:980:1:o;13358:306::-;13446:6;13454;13462;13515:2;13503:9;13494:7;13490:23;13486:32;13483:52;;;13531:1;13528;13521:12;13483:52;13560:9;13554:16;13544:26;;13610:2;13599:9;13595:18;13589:25;13579:35;;13654:2;13643:9;13639:18;13633:25;13623:35;;13358:306;;;;;:::o

Swarm Source

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