ETH Price: $2,437.72 (+3.39%)

Token

ERC20 ***
 

Overview

Max Total Supply

1,000,000 ERC20 ***

Holders

51

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,286.129039865 ERC20 ***

Value
$0.00
0x28Df858BcaBA12196901366c1310C123986B117e
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:
RedAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-26
*/

/**
twitter:https://twitter.com/RedAi_coin
website:https://redai.shop/
t.me:https://t.me/REDAIMOON
                                                                 
*/                                                                 


// SPDX-License-Identifier: UNLICENSE
pragma solidity ^0.8.17;

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    function WETH() external pure returns (address);

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

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

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

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

contract RedAI is Context, IERC20, Ownable {
    using Address for address payable;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;

    address[] private _excluded;

    bool private swapping;

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 1_000_000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = 20_0 * 10**_decimals;

    address public deadWallet = 0x000000000000000000000000000000000000dEaD;
    address public marketingWallet = 0xb39786f7866F4F325a4765b18D71E18ABA85bc30;

    string private constant _name = "Red AI";
    string private constant _symbol = "RedAI";

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
    }
    // tax 1% reflection, 1% mkt
    Taxes public taxes = Taxes(1, 1);

    struct TotFeesPaidStruct {
        uint256 rfi;
        uint256 marketing;
    }

    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues {
        uint256 rAmount;
        uint256 rTransferAmount;
        uint256 rRfi;
        uint256 rMarketing;
        uint256 tTransferAmount;
        uint256 tRfi;
        uint256 tMarketing;
    }

    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    constructor(address routerAddress) {
        IRouter _router = IRouter(routerAddress);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;

        excludeFromReward(pair);
        excludeFromReward(deadWallet);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[deadWallet] = true;
        emit Transfer(address(0), owner(), _tTotal);
    }

    //std ERC20:
    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

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

    //override ERC20:
    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    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(_msgSender(), spender, amount);
        return true;
    }

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

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

        return true;
    }

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns (uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate = _getRate();
        return rAmount / currentRate;
    }

    //@dev kept original RFI naming -> "reward" as in reflection
    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -= rRfi;
        totFeesPaid.rfi += tRfi;
    }


    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing += tMarketing;

        if (_isExcluded[address(this)]) {
            _tOwned[address(this)] += tMarketing;
        }
        _rOwned[address(this)] += rMarketing;
    }


    function _getValues(
        uint256 tAmount,
        bool takeFee
    ) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee);
        (
            to_return.rAmount,
            to_return.rTransferAmount,
            to_return.rRfi,
            to_return.rMarketing
        ) = _getRValues(to_return, tAmount, takeFee, _getRate());

        return to_return;
    }

    function _getTValues(
        uint256 tAmount,
        bool takeFee
    ) private view returns (valuesFromGetValues memory s) {
        if (!takeFee) {
            s.tTransferAmount = tAmount;
            return s;
        }

        s.tRfi = (tAmount * taxes.rfi) / 100;
        s.tMarketing = (tAmount * taxes.marketing) / 100;
        s.tTransferAmount =
            tAmount -
            s.tRfi -
            s.tMarketing;
        return s;
    }

    function _getRValues(
        valuesFromGetValues memory s,
        uint256 tAmount,
        bool takeFee,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rRfi,
            uint256 rMarketing
        )
    {
        rAmount = tAmount * currentRate;

        if (!takeFee) {
            return (rAmount, rAmount, 0, 0);
        }

        rRfi = s.tRfi * currentRate;
        rMarketing = s.tMarketing * currentRate;
        rTransferAmount =
            rAmount -
            rRfi -
            rMarketing;
        return (rAmount, rTransferAmount, rRfi, rMarketing);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply / tSupply;
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply)
                return (_rTotal, _tTotal);
            rSupply = rSupply - _rOwned[_excluded[i]];
            tSupply = tSupply - _tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            amount <= balanceOf(from),
            "You are trying to transfer more than your balance"
        );

        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if (
            !swapping &&
            canSwap &&
            from != pair &&
            !_isExcludedFromFee[from] &&
            !_isExcludedFromFee[to]
        ) {
            swapAndLiquify();
        }
        bool takeFee = true;
        if (swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to] || from == pair) takeFee = false;
  
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee
    ) private {

        valuesFromGetValues memory s = _getValues(tAmount, takeFee);

        if (_isExcluded[sender]) {
            //from excluded
            _tOwned[sender] = _tOwned[sender] - tAmount;
        }
        if (_isExcluded[recipient]) {
            //to excluded
            _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender] - s.rAmount;
        _rOwned[recipient] = _rOwned[recipient] + s.rTransferAmount;

        if (s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if (s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        emit Transfer(sender, recipient, s.tTransferAmount);
    }

    function swapAndLiquify() private lockTheSwap {
       
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForBNB(contractBalance);
        uint256 deltaBalance = address(this).balance;
       
        if (deltaBalance > 0) {
            payable(marketingWallet).sendValue(deltaBalance);
        }

    }

    function swapTokensForBNB(uint256 tokenAmount) private {
        // generate the pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

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

    function bulkExcludeFee(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = state;
        }
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        marketingWallet = newWallet;
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner {
        require(amount >= 100_000 && amount <= 10_000_000, "Cannot set swap threshold amount higher than 1% of tokens");
        swapTokensAtAmount = amount * 1e9;
    }

    function manualSwap(uint256 tokens) public {
        require(msg.sender == owner() || msg.sender == marketingWallet, "Only owner or marketing wallet can call this.");
        uint256 caBalance = balanceOf(address(this));
        uint256 convertedTokens = tokens * 1e9;
        require(caBalance >= 1*1e9 && tokens >= 1, "Contract should have at least 1 token and tokens should be equal or above 1.");
        swapTokensForBNB(convertedTokens);
        payable(msg.sender).sendValue(address(this).balance);
    }

    //Use this in case BNB are sent to the contract by mistake
    function rescueBNB() external {
        require(msg.sender == owner() || msg.sender == marketingWallet, "Only owner or marketing wallet can call this.");
        require(address(this).balance > 0, "insufficient BNB balance");
        payable(msg.sender).transfer(address(this).balance);
    }

    //Use this in case ERC20 Tokens are sent to the contract by mistake
    function rescueAnyERC20Tokens(address _tokenAddr) public {
        require(msg.sender == owner() || msg.sender == marketingWallet, "Only owner or marketing wallet can call this.");
        require(_tokenAddr != address(this), "Owner can't claim contract's balance of its own tokens");
        uint256 caBalance = IERC20(_tokenAddr).balanceOf(address(this));
        IERC20(_tokenAddr).transfer(msg.sender, caBalance);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"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":[{"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":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"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"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200091b565b6200002190620f42406200092c565b600981905562000034906000196200095c565b620000429060001962000973565b600a556009600a6200005591906200091b565b620000629060c86200092c565b600b55600c80546001600160a01b031990811661dead17909155600d805490911673b39786f7866f4f325a4765b18d71e18aba85bc301790556040805180820190915260018082526020909101819052600e819055600f55348015620000c757600080fd5b5060405162002fa938038062002fa9833981016040819052620000ea9162000989565b620000f533620003dc565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200013b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000161919062000989565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d5919062000989565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000223573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000249919062000989565b600780546001600160a01b0380861661010002610100600160a81b031990921691909117909155600880549183166001600160a01b03199092168217905590915062000295906200042c565b600c54620002ac906001600160a01b03166200042c565b600a5460016000620002c66000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526004918290528220805460ff1916600190811790915591620003156000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600d54821681526004909352818320805485166001908117909155600c54909116835291208054909216179055620003836000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620003cb91815260200190565b60405180910390a3505050620009fd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031633146200048c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620004f75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640162000483565b6001600160a01b0381166000908152600160205260409020541562000554576001600160a01b0381166000908152600160205260409020546200053a90620005ba565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000600a54821115620006235760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000483565b60006200062f62000644565b90506200063d8184620009b4565b9392505050565b60008080620006526200066a565b9092509050620006638183620009b4565b9250505090565b600a546009546000918291825b600654811015620007d2578260016000600684815481106200069d576200069d620009cb565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200070c5750816002600060068481548110620006e557620006e5620009cb565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200072357600a54600954945094505050509091565b60016000600683815481106200073d576200073d620009cb565b60009182526020808320909101546001600160a01b031683528201929092526040019020546200076e908462000973565b925060026000600683815481106200078a576200078a620009cb565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620007bb908362000973565b915080620007c981620009e1565b91505062000677565b50600954600a54620007e59190620009b4565b821015620007fd57600a546009549350935050509091565b90939092509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200085d57816000190482111562000841576200084162000806565b808516156200084f57918102915b93841c939080029062000821565b509250929050565b600082620008765750600162000915565b81620008855750600062000915565b81600181146200089e5760028114620008a957620008c9565b600191505062000915565b60ff841115620008bd57620008bd62000806565b50506001821b62000915565b5060208310610133831016604e8410600b8410161715620008ee575081810a62000915565b620008fa83836200081c565b806000190482111562000911576200091162000806565b0290505b92915050565b60006200063d60ff84168362000865565b808202811582820484141762000915576200091562000806565b634e487b7160e01b600052601260045260246000fd5b6000826200096e576200096e62000946565b500690565b8181038181111562000915576200091562000806565b6000602082840312156200099c57600080fd5b81516001600160a01b03811681146200063d57600080fd5b600082620009c657620009c662000946565b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201620009f657620009f662000806565b5060010190565b61259c8062000a0d6000396000f3fe6080604052600436106102085760003560e01c806385141a7711610118578063aacebbe3116100a0578063e2f456051161006f578063e2f456051461067e578063ea2f0b3714610694578063f25f136c146106b4578063f2fde38b146106c9578063f887ea40146106e957600080fd5b8063aacebbe3146105d8578063b70143c9146105f8578063d257b34f14610618578063dd62ed3e1461063857600080fd5b806395d89b41116100e757806395d89b411461052f5780639ba5e4d51461055d578063a457c2d714610578578063a8aa1b3114610598578063a9059cbb146105b857600080fd5b806385141a771461049857806388f82020146104b85780638da5cb5b146104f15780638e2839ff1461050f57600080fd5b8063437823ec1161019b5780636dec1ed91161016a5780636dec1ed9146103db57806370a08231146103fb578063715018a61461041b578063728f8eea1461043057806375f0a8741461046057600080fd5b8063437823ec146103425780634549b0391461036257806352390c02146103825780635342acb4146103a257600080fd5b80632d838119116101d75780632d838119146102c4578063313ce567146102e45780633685d41914610300578063395093511461032257600080fd5b806306fdde0314610214578063095ea7b31461025557806318160ddd1461028557806323b872dd146102a457600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5060408051808201909152600681526552656420414960d01b60208201525b60405161024c91906120ec565b60405180910390f35b34801561026157600080fd5b5061027561027036600461215f565b61070e565b604051901515815260200161024c565b34801561029157600080fd5b506009545b60405190815260200161024c565b3480156102b057600080fd5b506102756102bf36600461218b565b610725565b3480156102d057600080fd5b506102966102df3660046121cc565b6107db565b3480156102f057600080fd5b506040516009815260200161024c565b34801561030c57600080fd5b5061032061031b3660046121e5565b61085f565b005b34801561032e57600080fd5b5061027561033d36600461215f565b610a15565b34801561034e57600080fd5b5061032061035d3660046121e5565b610a4c565b34801561036e57600080fd5b5061029661037d36600461221b565b610a9a565b34801561038e57600080fd5b5061032061039d3660046121e5565b610b24565b3480156103ae57600080fd5b506102756103bd3660046121e5565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156103e757600080fd5b506103206103f63660046121e5565b610c77565b34801561040757600080fd5b506102966104163660046121e5565b610e11565b34801561042757600080fd5b50610320610e70565b34801561043c57600080fd5b50600e54600f5461044b919082565b6040805192835260208301919091520161024c565b34801561046c57600080fd5b50600d54610480906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b3480156104a457600080fd5b50600c54610480906001600160a01b031681565b3480156104c457600080fd5b506102756104d33660046121e5565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104fd57600080fd5b506000546001600160a01b0316610480565b34801561051b57600080fd5b5061032061052a366004612261565b610ea6565b34801561053b57600080fd5b50604080518082019091526005815264526564414960d81b602082015261023f565b34801561056957600080fd5b5060105460115461044b919082565b34801561058457600080fd5b5061027561059336600461215f565b610f37565b3480156105a457600080fd5b50600854610480906001600160a01b031681565b3480156105c457600080fd5b506102756105d336600461215f565b610fd2565b3480156105e457600080fd5b506103206105f33660046121e5565b610fdf565b34801561060457600080fd5b506103206106133660046121cc565b61108c565b34801561062457600080fd5b506103206106333660046121cc565b611199565b34801561064457600080fd5b50610296610653366004612338565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561068a57600080fd5b50610296600b5481565b3480156106a057600080fd5b506103206106af3660046121e5565b61125f565b3480156106c057600080fd5b506103206112aa565b3480156106d557600080fd5b506103206106e43660046121e5565b611368565b3480156106f557600080fd5b506007546104809061010090046001600160a01b031681565b600061071b338484611400565b5060015b92915050565b6000610732848484611524565b6001600160a01b0384166000908152600360209081526040808320338452909152902054828110156107bc5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107d085336107cb868561237c565b611400565b506001949350505050565b6000600a548211156108425760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107b3565b600061084c6117d5565b9050610858818461238f565b9392505050565b6000546001600160a01b031633146108895760405162461bcd60e51b81526004016107b3906123b1565b6001600160a01b03811660009081526005602052604090205460ff166108f15760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016107b3565b60005b600654811015610a1157816001600160a01b03166006828154811061091b5761091b6123e6565b6000918252602090912001546001600160a01b0316036109ff57600680546109459060019061237c565b81548110610955576109556123e6565b600091825260209091200154600680546001600160a01b039092169183908110610981576109816123e6565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff1916905560068054806109d9576109d96123fc565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610a0981612412565b9150506108f4565b5050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161071b9185906107cb90869061242b565b6000546001600160a01b03163314610a765760405162461bcd60e51b81526004016107b3906123b1565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600954831115610aee5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016107b3565b81610b0a576000610b008460016117f8565b51915061071f9050565b6000610b178460016117f8565b60200151915061071f9050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016107b3906123b1565b6001600160a01b03811660009081526005602052604090205460ff1615610bb75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016107b3565b6001600160a01b03811660009081526001602052604090205415610c11576001600160a01b038116600090815260016020526040902054610bf7906107db565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b0316331480610c9a5750600d546001600160a01b031633145b610cb65760405162461bcd60e51b81526004016107b39061243e565b306001600160a01b03821603610d2d5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016107b3565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d98919061248b565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0c91906124a4565b505050565b6001600160a01b03811660009081526005602052604081205460ff1615610e4e57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461071f906107db565b6000546001600160a01b03163314610e9a5760405162461bcd60e51b81526004016107b3906123b1565b610ea4600061186e565b565b6000546001600160a01b03163314610ed05760405162461bcd60e51b81526004016107b3906123b1565b60005b8251811015610e0c578160046000858481518110610ef357610ef36123e6565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610f2f81612412565b915050610ed3565b3360009081526003602090815260408083206001600160a01b038616845290915281205482811015610fb95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107b3565b610fc833856107cb868561237c565b5060019392505050565b600061071b338484611524565b6000546001600160a01b031633146110095760405162461bcd60e51b81526004016107b3906123b1565b6001600160a01b03811661106a5760405162461bcd60e51b815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b60648201526084016107b3565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314806110af5750600d546001600160a01b031633145b6110cb5760405162461bcd60e51b81526004016107b39061243e565b60006110d630610e11565b905060006110e883633b9aca006124c1565b9050633b9aca0082101580156110ff575060018310155b6111865760405162461bcd60e51b815260206004820152604c60248201527f436f6e74726163742073686f756c642068617665206174206c6561737420312060448201527f746f6b656e20616e6420746f6b656e732073686f756c6420626520657175616c60648201526b1037b91030b137bb3290189760a11b608482015260a4016107b3565b61118f816118be565b610e0c3347611a3b565b6000546001600160a01b031633146111c35760405162461bcd60e51b81526004016107b3906123b1565b620186a081101580156111d95750629896808111155b61124b5760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f20686967686572207468616e203125206f6620746f6b656e730000000000000060648201526084016107b3565b61125981633b9aca006124c1565b600b5550565b6000546001600160a01b031633146112895760405162461bcd60e51b81526004016107b3906123b1565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314806112cd5750600d546001600160a01b031633145b6112e95760405162461bcd60e51b81526004016107b39061243e565b600047116113395760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e6365000000000000000060448201526064016107b3565b60405133904780156108fc02916000818181858888f19350505050158015611365573d6000803e3d6000fd5b50565b6000546001600160a01b031633146113925760405162461bcd60e51b81526004016107b3906123b1565b6001600160a01b0381166113f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b3565b6113658161186e565b6001600160a01b0383166114625760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107b3565b6001600160a01b0382166114c35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107b3565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b3565b6001600160a01b0382166115ea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b3565b6000811161164c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107b3565b61165583610e11565b8111156116be5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016107b3565b6000600b546116cc30610e11565b600754911115915060ff161580156116e15750805b80156116fb57506008546001600160a01b03858116911614155b801561172057506001600160a01b03841660009081526004602052604090205460ff16155b801561174557506001600160a01b03831660009081526004602052604090205460ff16155b1561175257611752611b54565b60075460019060ff168061177e57506001600160a01b03851660009081526004602052604090205460ff165b806117a157506001600160a01b03841660009081526004602052604090205460ff165b806117b957506008546001600160a01b038681169116145b156117c2575060005b6117ce85858584611ba2565b5050505050565b60008060006117e2611d9e565b90925090506117f1818361238f565b9250505090565b6118386040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6118428383611f21565b90506118578184846118526117d5565b611fd6565b606085015260408401526020830152815292915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106118f3576118f36123e6565b60200260200101906001600160a01b031690816001600160a01b031681525050600760019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198a91906124d8565b8160018151811061199d5761199d6123e6565b6001600160a01b0392831660209182029290920101526007546119c891309161010090041684611400565b60075460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790611a059085906000908690309042906004016124f5565b600060405180830381600087803b158015611a1f57600080fd5b505af1158015611a33573d6000803e3d6000fd5b505050505050565b80471015611a8b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107b3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ad8576040519150601f19603f3d011682016040523d82523d6000602084013e611add565b606091505b5050905080610e0c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107b3565b6007805460ff191660011790556000611b6c30610e11565b9050611b77816118be565b478015611b9457600d54611b94906001600160a01b031682611a3b565b50506007805460ff19169055565b6000611bae83836117f8565b6001600160a01b03861660009081526005602052604090205490915060ff1615611c10576001600160a01b038516600090815260026020526040902054611bf690849061237c565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b03841660009081526005602052604090205460ff1615611c735760808101516001600160a01b038516600090815260026020526040902054611c59919061242b565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b038616600090815260016020526040902054611c98919061237c565b6001600160a01b0380871660009081526001602090815260408083209490945584015191871681529190912054611ccf919061242b565b6001600160a01b0385166000908152600160205260409081902091909155810151151580611d01575060008160a00151115b15611d1857611d1881604001518260a00151612041565b600081606001511180611d2f575060008160c00151115b15611d4657611d4681606001518260c00151612076565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360800151604051611d8f91815260200190565b60405180910390a35050505050565b600a546009546000918291825b600654811015611ef057826001600060068481548110611dcd57611dcd6123e6565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611e385750816002600060068481548110611e1157611e116123e6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611e4e57600a54600954945094505050509091565b6001600060068381548110611e6557611e656123e6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611e94908461237c565b92506002600060068381548110611ead57611ead6123e6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611edc908361237c565b915080611ee881612412565b915050611dab565b50600954600a54611f01919061238f565b821015611f1857600a546009549350935050509091565b90939092509050565b611f616040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81611f72576080810183905261071f565b600e54606490611f8290856124c1565b611f8c919061238f565b60a0820152600f54606490611fa190856124c1565b611fab919061238f565b60c0820181905260a0820151611fc1908561237c565b611fcb919061237c565b608082015292915050565b6000808080611fe585886124c1565b935085611ffa57508291506000905080612036565b848860a0015161200a91906124c1565b9150848860c0015161201c91906124c1565b905080612029838661237c565b612033919061237c565b92505b945094509450949050565b81600a6000828254612053919061237c565b90915550506010805482919060009061206d90849061242b565b90915550505050565b806010600101600082825461208b919061242b565b90915550503060009081526005602052604090205460ff16156120cd5730600090815260026020526040812080548392906120c790849061242b565b90915550505b306000908152600160205260408120805484929061206d90849061242b565b600060208083528351808285015260005b81811015612119578581018301518582016040015282016120fd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461136557600080fd5b803561215a8161213a565b919050565b6000806040838503121561217257600080fd5b823561217d8161213a565b946020939093013593505050565b6000806000606084860312156121a057600080fd5b83356121ab8161213a565b925060208401356121bb8161213a565b929592945050506040919091013590565b6000602082840312156121de57600080fd5b5035919050565b6000602082840312156121f757600080fd5b81356108588161213a565b801515811461136557600080fd5b803561215a81612202565b6000806040838503121561222e57600080fd5b82359150602083013561224081612202565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561227457600080fd5b823567ffffffffffffffff8082111561228c57600080fd5b818501915085601f8301126122a057600080fd5b81356020828211156122b4576122b461224b565b8160051b604051601f19603f830116810181811086821117156122d9576122d961224b565b6040529283528183019350848101820192898411156122f757600080fd5b948201945b8386101561231c5761230d8661214f565b855294820194938201936122fc565b965061232b9050878201612210565b9450505050509250929050565b6000806040838503121561234b57600080fd5b82356123568161213a565b915060208301356122408161213a565b634e487b7160e01b600052601160045260246000fd5b8181038181111561071f5761071f612366565b6000826123ac57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006001820161242457612424612366565b5060010190565b8082018082111561071f5761071f612366565b6020808252602d908201527f4f6e6c79206f776e6572206f72206d61726b6574696e672077616c6c6574206360408201526c30b71031b0b636103a3434b99760991b606082015260800190565b60006020828403121561249d57600080fd5b5051919050565b6000602082840312156124b657600080fd5b815161085881612202565b808202811582820484141761071f5761071f612366565b6000602082840312156124ea57600080fd5b81516108588161213a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125455784516001600160a01b031683529383019391830191600101612520565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e298e37dbaa98a6643245c5742526e5b77fe12cb9d48163a0683e858684264a264736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106102085760003560e01c806385141a7711610118578063aacebbe3116100a0578063e2f456051161006f578063e2f456051461067e578063ea2f0b3714610694578063f25f136c146106b4578063f2fde38b146106c9578063f887ea40146106e957600080fd5b8063aacebbe3146105d8578063b70143c9146105f8578063d257b34f14610618578063dd62ed3e1461063857600080fd5b806395d89b41116100e757806395d89b411461052f5780639ba5e4d51461055d578063a457c2d714610578578063a8aa1b3114610598578063a9059cbb146105b857600080fd5b806385141a771461049857806388f82020146104b85780638da5cb5b146104f15780638e2839ff1461050f57600080fd5b8063437823ec1161019b5780636dec1ed91161016a5780636dec1ed9146103db57806370a08231146103fb578063715018a61461041b578063728f8eea1461043057806375f0a8741461046057600080fd5b8063437823ec146103425780634549b0391461036257806352390c02146103825780635342acb4146103a257600080fd5b80632d838119116101d75780632d838119146102c4578063313ce567146102e45780633685d41914610300578063395093511461032257600080fd5b806306fdde0314610214578063095ea7b31461025557806318160ddd1461028557806323b872dd146102a457600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5060408051808201909152600681526552656420414960d01b60208201525b60405161024c91906120ec565b60405180910390f35b34801561026157600080fd5b5061027561027036600461215f565b61070e565b604051901515815260200161024c565b34801561029157600080fd5b506009545b60405190815260200161024c565b3480156102b057600080fd5b506102756102bf36600461218b565b610725565b3480156102d057600080fd5b506102966102df3660046121cc565b6107db565b3480156102f057600080fd5b506040516009815260200161024c565b34801561030c57600080fd5b5061032061031b3660046121e5565b61085f565b005b34801561032e57600080fd5b5061027561033d36600461215f565b610a15565b34801561034e57600080fd5b5061032061035d3660046121e5565b610a4c565b34801561036e57600080fd5b5061029661037d36600461221b565b610a9a565b34801561038e57600080fd5b5061032061039d3660046121e5565b610b24565b3480156103ae57600080fd5b506102756103bd3660046121e5565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156103e757600080fd5b506103206103f63660046121e5565b610c77565b34801561040757600080fd5b506102966104163660046121e5565b610e11565b34801561042757600080fd5b50610320610e70565b34801561043c57600080fd5b50600e54600f5461044b919082565b6040805192835260208301919091520161024c565b34801561046c57600080fd5b50600d54610480906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b3480156104a457600080fd5b50600c54610480906001600160a01b031681565b3480156104c457600080fd5b506102756104d33660046121e5565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104fd57600080fd5b506000546001600160a01b0316610480565b34801561051b57600080fd5b5061032061052a366004612261565b610ea6565b34801561053b57600080fd5b50604080518082019091526005815264526564414960d81b602082015261023f565b34801561056957600080fd5b5060105460115461044b919082565b34801561058457600080fd5b5061027561059336600461215f565b610f37565b3480156105a457600080fd5b50600854610480906001600160a01b031681565b3480156105c457600080fd5b506102756105d336600461215f565b610fd2565b3480156105e457600080fd5b506103206105f33660046121e5565b610fdf565b34801561060457600080fd5b506103206106133660046121cc565b61108c565b34801561062457600080fd5b506103206106333660046121cc565b611199565b34801561064457600080fd5b50610296610653366004612338565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561068a57600080fd5b50610296600b5481565b3480156106a057600080fd5b506103206106af3660046121e5565b61125f565b3480156106c057600080fd5b506103206112aa565b3480156106d557600080fd5b506103206106e43660046121e5565b611368565b3480156106f557600080fd5b506007546104809061010090046001600160a01b031681565b600061071b338484611400565b5060015b92915050565b6000610732848484611524565b6001600160a01b0384166000908152600360209081526040808320338452909152902054828110156107bc5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107d085336107cb868561237c565b611400565b506001949350505050565b6000600a548211156108425760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107b3565b600061084c6117d5565b9050610858818461238f565b9392505050565b6000546001600160a01b031633146108895760405162461bcd60e51b81526004016107b3906123b1565b6001600160a01b03811660009081526005602052604090205460ff166108f15760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016107b3565b60005b600654811015610a1157816001600160a01b03166006828154811061091b5761091b6123e6565b6000918252602090912001546001600160a01b0316036109ff57600680546109459060019061237c565b81548110610955576109556123e6565b600091825260209091200154600680546001600160a01b039092169183908110610981576109816123e6565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff1916905560068054806109d9576109d96123fc565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610a0981612412565b9150506108f4565b5050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161071b9185906107cb90869061242b565b6000546001600160a01b03163314610a765760405162461bcd60e51b81526004016107b3906123b1565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600954831115610aee5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016107b3565b81610b0a576000610b008460016117f8565b51915061071f9050565b6000610b178460016117f8565b60200151915061071f9050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016107b3906123b1565b6001600160a01b03811660009081526005602052604090205460ff1615610bb75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016107b3565b6001600160a01b03811660009081526001602052604090205415610c11576001600160a01b038116600090815260016020526040902054610bf7906107db565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b0316331480610c9a5750600d546001600160a01b031633145b610cb65760405162461bcd60e51b81526004016107b39061243e565b306001600160a01b03821603610d2d5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016107b3565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d98919061248b565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0c91906124a4565b505050565b6001600160a01b03811660009081526005602052604081205460ff1615610e4e57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461071f906107db565b6000546001600160a01b03163314610e9a5760405162461bcd60e51b81526004016107b3906123b1565b610ea4600061186e565b565b6000546001600160a01b03163314610ed05760405162461bcd60e51b81526004016107b3906123b1565b60005b8251811015610e0c578160046000858481518110610ef357610ef36123e6565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610f2f81612412565b915050610ed3565b3360009081526003602090815260408083206001600160a01b038616845290915281205482811015610fb95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107b3565b610fc833856107cb868561237c565b5060019392505050565b600061071b338484611524565b6000546001600160a01b031633146110095760405162461bcd60e51b81526004016107b3906123b1565b6001600160a01b03811661106a5760405162461bcd60e51b815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b60648201526084016107b3565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314806110af5750600d546001600160a01b031633145b6110cb5760405162461bcd60e51b81526004016107b39061243e565b60006110d630610e11565b905060006110e883633b9aca006124c1565b9050633b9aca0082101580156110ff575060018310155b6111865760405162461bcd60e51b815260206004820152604c60248201527f436f6e74726163742073686f756c642068617665206174206c6561737420312060448201527f746f6b656e20616e6420746f6b656e732073686f756c6420626520657175616c60648201526b1037b91030b137bb3290189760a11b608482015260a4016107b3565b61118f816118be565b610e0c3347611a3b565b6000546001600160a01b031633146111c35760405162461bcd60e51b81526004016107b3906123b1565b620186a081101580156111d95750629896808111155b61124b5760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f20686967686572207468616e203125206f6620746f6b656e730000000000000060648201526084016107b3565b61125981633b9aca006124c1565b600b5550565b6000546001600160a01b031633146112895760405162461bcd60e51b81526004016107b3906123b1565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314806112cd5750600d546001600160a01b031633145b6112e95760405162461bcd60e51b81526004016107b39061243e565b600047116113395760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e6365000000000000000060448201526064016107b3565b60405133904780156108fc02916000818181858888f19350505050158015611365573d6000803e3d6000fd5b50565b6000546001600160a01b031633146113925760405162461bcd60e51b81526004016107b3906123b1565b6001600160a01b0381166113f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b3565b6113658161186e565b6001600160a01b0383166114625760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107b3565b6001600160a01b0382166114c35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107b3565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b3565b6001600160a01b0382166115ea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b3565b6000811161164c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107b3565b61165583610e11565b8111156116be5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016107b3565b6000600b546116cc30610e11565b600754911115915060ff161580156116e15750805b80156116fb57506008546001600160a01b03858116911614155b801561172057506001600160a01b03841660009081526004602052604090205460ff16155b801561174557506001600160a01b03831660009081526004602052604090205460ff16155b1561175257611752611b54565b60075460019060ff168061177e57506001600160a01b03851660009081526004602052604090205460ff165b806117a157506001600160a01b03841660009081526004602052604090205460ff165b806117b957506008546001600160a01b038681169116145b156117c2575060005b6117ce85858584611ba2565b5050505050565b60008060006117e2611d9e565b90925090506117f1818361238f565b9250505090565b6118386040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6118428383611f21565b90506118578184846118526117d5565b611fd6565b606085015260408401526020830152815292915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106118f3576118f36123e6565b60200260200101906001600160a01b031690816001600160a01b031681525050600760019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198a91906124d8565b8160018151811061199d5761199d6123e6565b6001600160a01b0392831660209182029290920101526007546119c891309161010090041684611400565b60075460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790611a059085906000908690309042906004016124f5565b600060405180830381600087803b158015611a1f57600080fd5b505af1158015611a33573d6000803e3d6000fd5b505050505050565b80471015611a8b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107b3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ad8576040519150601f19603f3d011682016040523d82523d6000602084013e611add565b606091505b5050905080610e0c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107b3565b6007805460ff191660011790556000611b6c30610e11565b9050611b77816118be565b478015611b9457600d54611b94906001600160a01b031682611a3b565b50506007805460ff19169055565b6000611bae83836117f8565b6001600160a01b03861660009081526005602052604090205490915060ff1615611c10576001600160a01b038516600090815260026020526040902054611bf690849061237c565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b03841660009081526005602052604090205460ff1615611c735760808101516001600160a01b038516600090815260026020526040902054611c59919061242b565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b038616600090815260016020526040902054611c98919061237c565b6001600160a01b0380871660009081526001602090815260408083209490945584015191871681529190912054611ccf919061242b565b6001600160a01b0385166000908152600160205260409081902091909155810151151580611d01575060008160a00151115b15611d1857611d1881604001518260a00151612041565b600081606001511180611d2f575060008160c00151115b15611d4657611d4681606001518260c00151612076565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360800151604051611d8f91815260200190565b60405180910390a35050505050565b600a546009546000918291825b600654811015611ef057826001600060068481548110611dcd57611dcd6123e6565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611e385750816002600060068481548110611e1157611e116123e6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611e4e57600a54600954945094505050509091565b6001600060068381548110611e6557611e656123e6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611e94908461237c565b92506002600060068381548110611ead57611ead6123e6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611edc908361237c565b915080611ee881612412565b915050611dab565b50600954600a54611f01919061238f565b821015611f1857600a546009549350935050509091565b90939092509050565b611f616040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81611f72576080810183905261071f565b600e54606490611f8290856124c1565b611f8c919061238f565b60a0820152600f54606490611fa190856124c1565b611fab919061238f565b60c0820181905260a0820151611fc1908561237c565b611fcb919061237c565b608082015292915050565b6000808080611fe585886124c1565b935085611ffa57508291506000905080612036565b848860a0015161200a91906124c1565b9150848860c0015161201c91906124c1565b905080612029838661237c565b612033919061237c565b92505b945094509450949050565b81600a6000828254612053919061237c565b90915550506010805482919060009061206d90849061242b565b90915550505050565b806010600101600082825461208b919061242b565b90915550503060009081526005602052604090205460ff16156120cd5730600090815260026020526040812080548392906120c790849061242b565b90915550505b306000908152600160205260408120805484929061206d90849061242b565b600060208083528351808285015260005b81811015612119578581018301518582016040015282016120fd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461136557600080fd5b803561215a8161213a565b919050565b6000806040838503121561217257600080fd5b823561217d8161213a565b946020939093013593505050565b6000806000606084860312156121a057600080fd5b83356121ab8161213a565b925060208401356121bb8161213a565b929592945050506040919091013590565b6000602082840312156121de57600080fd5b5035919050565b6000602082840312156121f757600080fd5b81356108588161213a565b801515811461136557600080fd5b803561215a81612202565b6000806040838503121561222e57600080fd5b82359150602083013561224081612202565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561227457600080fd5b823567ffffffffffffffff8082111561228c57600080fd5b818501915085601f8301126122a057600080fd5b81356020828211156122b4576122b461224b565b8160051b604051601f19603f830116810181811086821117156122d9576122d961224b565b6040529283528183019350848101820192898411156122f757600080fd5b948201945b8386101561231c5761230d8661214f565b855294820194938201936122fc565b965061232b9050878201612210565b9450505050509250929050565b6000806040838503121561234b57600080fd5b82356123568161213a565b915060208301356122408161213a565b634e487b7160e01b600052601160045260246000fd5b8181038181111561071f5761071f612366565b6000826123ac57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006001820161242457612424612366565b5060010190565b8082018082111561071f5761071f612366565b6020808252602d908201527f4f6e6c79206f776e6572206f72206d61726b6574696e672077616c6c6574206360408201526c30b71031b0b636103a3434b99760991b606082015260800190565b60006020828403121561249d57600080fd5b5051919050565b6000602082840312156124b657600080fd5b815161085881612202565b808202811582820484141761071f5761071f612366565b6000602082840312156124ea57600080fd5b81516108588161213a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125455784516001600160a01b031683529383019391830191600101612520565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e298e37dbaa98a6643245c5742526e5b77fe12cb9d48163a0683e858684264a264736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

3562:14746:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5861:83;;;;;;;;;;-1:-1:-1;5931:5:0;;;;;;;;;;;;-1:-1:-1;;;5931:5:0;;;;5861:83;;;;;;;:::i;:::-;;;;;;;;6621:161;;;;;;;;;;-1:-1:-1;6621:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;6621:161:0;1162:187:1;6161:95:0;;;;;;;;;;-1:-1:-1;6241:7:0;;6161:95;;;1500:25:1;;;1488:2;1473:18;6161:95:0;1354:177:1;6790:448:0;;;;;;;;;;-1:-1:-1;6790:448:0;;;;;:::i;:::-;;:::i;8659:250::-;;;;;;;;;;-1:-1:-1;8659:250:0;;;;;:::i;:::-;;:::i;6047:83::-;;;;;;;;;;-1:-1:-1;6047:83:0;;4096:1;2324:36:1;;2312:2;2297:18;6047:83:0;2182:184:1;9323:473:0;;;;;;;;;;-1:-1:-1;9323:473:0;;;;;:::i;:::-;;:::i;:::-;;7246:207;;;;;;;;;;-1:-1:-1;7246:207:0;;;;;:::i;:::-;;:::i;9804:111::-;;;;;;;;;;-1:-1:-1;9804:111:0;;;;;:::i;:::-;;:::i;8162:489::-;;;;;;;;;;-1:-1:-1;8162:489:0;;;;;:::i;:::-;;:::i;8983:332::-;;;;;;;;;;-1:-1:-1;8983:332:0;;;;;:::i;:::-;;:::i;10041:124::-;;;;;;;;;;-1:-1:-1;10041:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;10130:27:0;10106:4;10130:27;;;:18;:27;;;;;;;;;10041:124;17840:428;;;;;;;;;;-1:-1:-1;17840:428:0;;;;;:::i;:::-;;:::i;6264:198::-;;;;;;;;;;-1:-1:-1;6264:198:0;;;;;:::i;:::-;;:::i;1876:94::-;;;;;;;;;;;;;:::i;4705:32::-;;;;;;;;;;-1:-1:-1;4705:32:0;;;;;;;;;;;;;3367:25:1;;;3423:2;3408:18;;3401:34;;;;3340:18;4705:32:0;3193:248:1;4413:75:0;;;;;;;;;;-1:-1:-1;4413:75:0;;;;-1:-1:-1;;;;;4413:75:0;;;;;;-1:-1:-1;;;;;3610:32:1;;;3592:51;;3580:2;3565:18;4413:75:0;3446:203:1;4336:70:0;;;;;;;;;;-1:-1:-1;4336:70:0;;;;-1:-1:-1;;;;;4336:70:0;;;8034:120;;;;;;;;;;-1:-1:-1;8034:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;8126:20:0;8102:4;8126:20;;;:11;:20;;;;;;;;;8034:120;1653:87;;;;;;;;;;-1:-1:-1;1699:7:0;1726:6;-1:-1:-1;;;;;1726:6:0;1653:87;;16199:212;;;;;;;;;;-1:-1:-1;16199:212:0;;;;;:::i;:::-;;:::i;5952:87::-;;;;;;;;;;-1:-1:-1;6024:7:0;;;;;;;;;;;;-1:-1:-1;;;6024:7:0;;;;5952:87;;4837:36;;;;;;;;;;-1:-1:-1;4837:36:0;;;;;;;;;7461:392;;;;;;;;;;-1:-1:-1;7461:392:0;;;;;:::i;:::-;;:::i;4033:19::-;;;;;;;;;;-1:-1:-1;4033:19:0;;;;-1:-1:-1;;;;;4033:19:0;;;7861:165;;;;;;;;;;-1:-1:-1;7861:165:0;;;;;:::i;:::-;;:::i;16419:195::-;;;;;;;;;;-1:-1:-1;16419:195:0;;;;;:::i;:::-;;:::i;16873:518::-;;;;;;;;;;-1:-1:-1;16873:518:0;;;;;:::i;:::-;;:::i;16622:243::-;;;;;;;;;;-1:-1:-1;16622:243:0;;;;;:::i;:::-;;:::i;6470:143::-;;;;;;;;;;-1:-1:-1;6470:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6578:18:0;;;6551:7;6578:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6470:143;4271:56;;;;;;;;;;;;;;;;9923:110;;;;;;;;;;-1:-1:-1;9923:110:0;;;;;:::i;:::-;;:::i;17463:296::-;;;;;;;;;;;;;:::i;1978:192::-;;;;;;;;;;-1:-1:-1;1978:192:0;;;;;:::i;:::-;;:::i;4005:21::-;;;;;;;;;;-1:-1:-1;4005:21:0;;;;;;;-1:-1:-1;;;;;4005:21:0;;;6621:161;6696:4;6713:39;1154:10;6736:7;6745:6;6713:8;:39::i;:::-;-1:-1:-1;6770:4:0;6621:161;;;;;:::o;6790:448::-;6922:4;6939:36;6949:6;6957:9;6968:6;6939:9;:36::i;:::-;-1:-1:-1;;;;;7015:19:0;;6988:24;7015:19;;;:11;:19;;;;;;;;1154:10;7015:33;;;;;;;;7067:26;;;;7059:79;;;;-1:-1:-1;;;7059:79:0;;5800:2:1;7059:79:0;;;5782:21:1;5839:2;5819:18;;;5812:30;5878:34;5858:18;;;5851:62;-1:-1:-1;;;5929:18:1;;;5922:38;5977:19;;7059:79:0;;;;;;;;;7149:57;7158:6;1154:10;7180:25;7199:6;7180:16;:25;:::i;:::-;7149:8;:57::i;:::-;-1:-1:-1;7226:4:0;;6790:448;-1:-1:-1;;;;6790:448:0:o;8659:250::-;8726:7;8765;;8754;:18;;8746:73;;;;-1:-1:-1;;;8746:73:0;;6474:2:1;8746:73:0;;;6456:21:1;6513:2;6493:18;;;6486:30;6552:34;6532:18;;;6525:62;-1:-1:-1;;;6603:18:1;;;6596:40;6653:19;;8746:73:0;6272:406:1;8746:73:0;8830:19;8852:10;:8;:10::i;:::-;8830:32;-1:-1:-1;8880:21:0;8830:32;8880:7;:21;:::i;:::-;8873:28;8659:250;-1:-1:-1;;;8659:250:0:o;9323:473::-;1699:7;1726:6;-1:-1:-1;;;;;1726:6:0;1154:10;1788:23;1780:68;;;;-1:-1:-1;;;1780:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9403:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9395:56;;;::::0;-1:-1:-1;;;9395:56:0;;7468:2:1;9395:56:0::1;::::0;::::1;7450:21:1::0;7507:2;7487:18;;;7480:30;7546:25;7526:18;;;7519:53;7589:18;;9395:56:0::1;7266:347:1::0;9395:56:0::1;9467:9;9462:327;9486:9;:16:::0;9482:20;::::1;9462:327;;;9544:7;-1:-1:-1::0;;;;;9528:23:0::1;:9;9538:1;9528:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;9528:12:0::1;:23:::0;9524:254:::1;;9587:9;9597:16:::0;;:20:::1;::::0;9616:1:::1;::::0;9597:20:::1;:::i;:::-;9587:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;9572:9:::1;:12:::0;;-1:-1:-1;;;;;9587:31:0;;::::1;::::0;9582:1;;9572:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;9572:46:0::1;-1:-1:-1::0;;;;;9572:46:0;;::::1;;::::0;;9637:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;9676:11:::1;:20:::0;;;;:28;;-1:-1:-1;;9676:28:0::1;::::0;;9723:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;9723:15:0;;;;;-1:-1:-1;;;;;;9723:15:0::1;::::0;;;;;9462:327:::1;9323:473:::0;:::o;9524:254::-:1;9504:3:::0;::::1;::::0;::::1;:::i;:::-;;;;9462:327;;;;9323:473:::0;:::o;7246:207::-;1154:10;7326:4;7375:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7375:34:0;;;;;;;;;;7326:4;;7343:80;;7366:7;;7375:47;;7412:10;;7375:47;:::i;9804:111::-;1699:7;1726:6;-1:-1:-1;;;;;1726:6:0;1154:10;1788:23;1780:68;;;;-1:-1:-1;;;1780:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9873:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;9873:34:0::1;9903:4;9873:34;::::0;;9804:111::o;8162:489::-;8280:7;8324;;8313;:18;;8305:62;;;;-1:-1:-1;;;8305:62:0;;8354:2:1;8305:62:0;;;8336:21:1;8393:2;8373:18;;;8366:30;8432:33;8412:18;;;8405:61;8483:18;;8305:62:0;8152:355:1;8305:62:0;8383:17;8378:266;;8417:28;8448:25;8459:7;8468:4;8448:10;:25::i;:::-;8495:9;;-1:-1:-1;8488:16:0;;-1:-1:-1;8488:16:0;8378:266;8537:28;8568:25;8579:7;8588:4;8568:10;:25::i;:::-;8615:17;;;;-1:-1:-1;8608:24:0;;-1:-1:-1;8608:24:0;8983:332;1699:7;1726:6;-1:-1:-1;;;;;1726:6:0;1154:10;1788:23;1780:68;;;;-1:-1:-1;;;1780:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9064:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9063:21;9055:61;;;::::0;-1:-1:-1;;;9055:61:0;;8714:2:1;9055:61:0::1;::::0;::::1;8696:21:1::0;8753:2;8733:18;;;8726:30;8792:29;8772:18;;;8765:57;8839:18;;9055:61:0::1;8512:351:1::0;9055:61:0::1;-1:-1:-1::0;;;;;9131:16:0;::::1;9150:1;9131:16:::0;;;:7:::1;:16;::::0;;;;;:20;9127:109:::1;;-1:-1:-1::0;;;;;9207:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;9187:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;9168:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;9127:109:::1;-1:-1:-1::0;;;;;9246:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;9246:27:0::1;9269:4;9246:27:::0;;::::1;::::0;;;9284:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;9284:23:0::1;::::0;;::::1;::::0;;8983:332::o;17840:428::-;1699:7;1726:6;-1:-1:-1;;;;;1726:6:0;17916:10;:21;;:54;;-1:-1:-1;17955:15:0;;-1:-1:-1;;;;;17955:15:0;17941:10;:29;17916:54;17908:112;;;;-1:-1:-1;;;17908:112:0;;;;;;;:::i;:::-;18061:4;-1:-1:-1;;;;;18039:27:0;;;18031:94;;;;-1:-1:-1;;;18031:94:0;;9484:2:1;18031:94:0;;;9466:21:1;9523:2;9503:18;;;9496:30;9562:34;9542:18;;;9535:62;-1:-1:-1;;;9613:18:1;;;9606:52;9675:19;;18031:94:0;9282:418:1;18031:94:0;18156:43;;-1:-1:-1;;;18156:43:0;;18193:4;18156:43;;;3592:51:1;18136:17:0;;-1:-1:-1;;;;;18156:28:0;;;;;3565:18:1;;18156:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18210:50;;-1:-1:-1;;;18210:50:0;;18238:10;18210:50;;;10068:51:1;10135:18;;;10128:34;;;18136:63:0;;-1:-1:-1;;;;;;18210:27:0;;;;;10041:18:1;;18210:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17897:371;17840:428;:::o;6264:198::-;-1:-1:-1;;;;;6354:20:0;;6330:7;6354:20;;;:11;:20;;;;;;;;6350:49;;;-1:-1:-1;;;;;;6383:16:0;;;;;:7;:16;;;;;;;6264:198::o;6350:49::-;-1:-1:-1;;;;;6437:16:0;;;;;;:7;:16;;;;;;6417:37;;:19;:37::i;1876:94::-;1699:7;1726:6;-1:-1:-1;;;;;1726:6:0;1154:10;1788:23;1780:68;;;;-1:-1:-1;;;1780:68:0;;;;;;;:::i;:::-;1941:21:::1;1959:1;1941:9;:21::i;:::-;1876:94::o:0;16199:212::-;1699:7;1726:6;-1:-1:-1;;;;;1726:6:0;1154:10;1788:23;1780:68;;;;-1:-1:-1;;;1780:68:0;;;;;;;:::i;:::-;16297:9:::1;16292:112;16316:8;:15;16312:1;:19;16292:112;;;16387:5;16353:18;:31;16372:8;16381:1;16372:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;16353:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;16353:31:0;:39;;-1:-1:-1;;16353:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16333:3;::::1;::::0;::::1;:::i;:::-;;;;16292:112;;7461:392:::0;1154:10;7564:4;7613:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7613:34:0;;;;;;;;;;7666:35;;;;7658:85;;;;-1:-1:-1;;;7658:85:0;;10625:2:1;7658:85:0;;;10607:21:1;10664:2;10644:18;;;10637:30;10703:34;10683:18;;;10676:62;-1:-1:-1;;;10754:18:1;;;10747:35;10799:19;;7658:85:0;10423:401:1;7658:85:0;7754:67;1154:10;7777:7;7786:34;7805:15;7786:16;:34;:::i;7754:67::-;-1:-1:-1;7841:4:0;;7461:392;-1:-1:-1;;;7461:392:0:o;7861:165::-;7939:4;7956:40;7966:10;7978:9;7989:6;7956:9;:40::i;16419:195::-;1699:7;1726:6;-1:-1:-1;;;;;1726:6:0;1154:10;1788:23;1780:68;;;;-1:-1:-1;;;1780:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16507:23:0;::::1;16499:69;;;::::0;-1:-1:-1;;;16499:69:0;;11031:2:1;16499:69:0::1;::::0;::::1;11013:21:1::0;11070:2;11050:18;;;11043:30;11109:34;11089:18;;;11082:62;-1:-1:-1;;;11160:18:1;;;11153:32;11202:19;;16499:69:0::1;10829:398:1::0;16499:69:0::1;16579:15;:27:::0;;-1:-1:-1;;;;;;16579:27:0::1;-1:-1:-1::0;;;;;16579:27:0;;;::::1;::::0;;;::::1;::::0;;16419:195::o;16873:518::-;1699:7;1726:6;-1:-1:-1;;;;;1726:6:0;16935:10;:21;;:54;;-1:-1:-1;16974:15:0;;-1:-1:-1;;;;;16974:15:0;16960:10;:29;16935:54;16927:112;;;;-1:-1:-1;;;16927:112:0;;;;;;;:::i;:::-;17050:17;17070:24;17088:4;17070:9;:24::i;:::-;17050:44;-1:-1:-1;17105:23:0;17131:12;:6;17140:3;17131:12;:::i;:::-;17105:38;;17175:5;17162:9;:18;;:33;;;;;17194:1;17184:6;:11;;17162:33;17154:122;;;;-1:-1:-1;;;17154:122:0;;11607:2:1;17154:122:0;;;11589:21:1;11646:2;11626:18;;;11619:30;11685:34;11665:18;;;11658:62;11756:34;11736:18;;;11729:62;-1:-1:-1;;;11807:19:1;;;11800:43;11860:19;;17154:122:0;11405:480:1;17154:122:0;17287:33;17304:15;17287:16;:33::i;:::-;17331:52;17339:10;17361:21;17331:29;:52::i;16622:243::-;1699:7;1726:6;-1:-1:-1;;;;;1726:6:0;1154:10;1788:23;1780:68;;;;-1:-1:-1;;;1780:68:0;;;;;;;:::i;:::-;16720:7:::1;16710:6;:17;;:41;;;;;16741:10;16731:6;:20;;16710:41;16702:111;;;::::0;-1:-1:-1;;;16702:111:0;;12092:2:1;16702:111:0::1;::::0;::::1;12074:21:1::0;12131:2;12111:18;;;12104:30;12170:34;12150:18;;;12143:62;12241:27;12221:18;;;12214:55;12286:19;;16702:111:0::1;11890:421:1::0;16702:111:0::1;16845:12;:6:::0;16854:3:::1;16845:12;:::i;:::-;16824:18;:33:::0;-1:-1:-1;16622:243:0:o;9923:110::-;1699:7;1726:6;-1:-1:-1;;;;;1726:6:0;1154:10;1788:23;1780:68;;;;-1:-1:-1;;;1780:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9990:27:0::1;10020:5;9990:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;9990:35:0::1;::::0;;9923:110::o;17463:296::-;1699:7;1726:6;-1:-1:-1;;;;;1726:6:0;17512:10;:21;;:54;;-1:-1:-1;17551:15:0;;-1:-1:-1;;;;;17551:15:0;17537:10;:29;17512:54;17504:112;;;;-1:-1:-1;;;17504:112:0;;;;;;;:::i;:::-;17659:1;17635:21;:25;17627:62;;;;-1:-1:-1;;;17627:62:0;;12518:2:1;17627:62:0;;;12500:21:1;12557:2;12537:18;;;12530:30;12596:26;12576:18;;;12569:54;12640:18;;17627:62:0;12316:348:1;17627:62:0;17700:51;;17708:10;;17729:21;17700:51;;;;;;;;;17729:21;17708:10;17700:51;;;;;;;;;;;;;;;;;;;;;17463:296::o;1978:192::-;1699:7;1726:6;-1:-1:-1;;;;;1726:6:0;1154:10;1788:23;1780:68;;;;-1:-1:-1;;;1780:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2067:22:0;::::1;2059:73;;;::::0;-1:-1:-1;;;2059:73:0;;12871:2:1;2059:73:0::1;::::0;::::1;12853:21:1::0;12910:2;12890:18;;;12883:30;12949:34;12929:18;;;12922:62;-1:-1:-1;;;13000:18:1;;;12993:36;13046:19;;2059:73:0::1;12669:402:1::0;2059:73:0::1;2143:19;2153:8;2143:9;:19::i;12987:369::-:0;-1:-1:-1;;;;;13114:19:0;;13106:68;;;;-1:-1:-1;;;13106:68:0;;13278:2:1;13106:68:0;;;13260:21:1;13317:2;13297:18;;;13290:30;13356:34;13336:18;;;13329:62;-1:-1:-1;;;13407:18:1;;;13400:34;13451:19;;13106:68:0;13076:400:1;13106:68:0;-1:-1:-1;;;;;13193:21:0;;13185:68;;;;-1:-1:-1;;;13185:68:0;;13683:2:1;13185:68:0;;;13665:21:1;13722:2;13702:18;;;13695:30;13761:34;13741:18;;;13734:62;-1:-1:-1;;;13812:18:1;;;13805:32;13854:19;;13185:68:0;13481:398:1;13185:68:0;-1:-1:-1;;;;;13264:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13316:32;;1500:25:1;;;13316:32:0;;1473:18:1;13316:32:0;;;;;;;12987:369;;;:::o;13364:972::-;-1:-1:-1;;;;;13486:18:0;;13478:68;;;;-1:-1:-1;;;13478:68:0;;14086:2:1;13478:68:0;;;14068:21:1;14125:2;14105:18;;;14098:30;14164:34;14144:18;;;14137:62;-1:-1:-1;;;14215:18:1;;;14208:35;14260:19;;13478:68:0;13884:401:1;13478:68:0;-1:-1:-1;;;;;13565:16:0;;13557:64;;;;-1:-1:-1;;;13557:64:0;;14492:2:1;13557:64:0;;;14474:21:1;14531:2;14511:18;;;14504:30;14570:34;14550:18;;;14543:62;-1:-1:-1;;;14621:18:1;;;14614:33;14664:19;;13557:64:0;14290:399:1;13557:64:0;13649:1;13640:6;:10;13632:64;;;;-1:-1:-1;;;13632:64:0;;14896:2:1;13632:64:0;;;14878:21:1;14935:2;14915:18;;;14908:30;14974:34;14954:18;;;14947:62;-1:-1:-1;;;15025:18:1;;;15018:39;15074:19;;13632:64:0;14694:405:1;13632:64:0;13739:15;13749:4;13739:9;:15::i;:::-;13729:6;:25;;13707:124;;;;-1:-1:-1;;;13707:124:0;;15306:2:1;13707:124:0;;;15288:21:1;15345:2;15325:18;;;15318:30;15384:34;15364:18;;;15357:62;-1:-1:-1;;;15435:18:1;;;15428:47;15492:19;;13707:124:0;15104:413:1;13707:124:0;13844:12;13887:18;;13859:24;13877:4;13859:9;:24::i;:::-;13935:8;;13859:46;-1:-1:-1;13859:46:0;;-1:-1:-1;13935:8:0;;13934:9;:33;;;;;13960:7;13934:33;:62;;;;-1:-1:-1;13992:4:0;;-1:-1:-1;;;;;13984:12:0;;;13992:4;;13984:12;;13934:62;:104;;;;-1:-1:-1;;;;;;14014:24:0;;;;;;:18;:24;;;;;;;;14013:25;13934:104;:144;;;;-1:-1:-1;;;;;;14056:22:0;;;;;;:18;:22;;;;;;;;14055:23;13934:144;13916:217;;;14105:16;:14;:16::i;:::-;14177:8;;14158:4;;14177:8;;;:36;;-1:-1:-1;;;;;;14189:24:0;;;;;;:18;:24;;;;;;;;14177:36;:62;;;-1:-1:-1;;;;;;14217:22:0;;;;;;:18;:22;;;;;;;;14177:62;:78;;;-1:-1:-1;14251:4:0;;-1:-1:-1;;;;;14243:12:0;;;14251:4;;14243:12;14177:78;14173:99;;;-1:-1:-1;14267:5:0;14173:99;14287:41;14302:4;14308:2;14312:6;14320:7;14287:14;:41::i;:::-;13467:869;;13364:972;;;:::o;12246:161::-;12288:7;12309:15;12326;12345:19;:17;:19::i;:::-;12308:56;;-1:-1:-1;12308:56:0;-1:-1:-1;12382:17:0;12308:56;;12382:17;:::i;:::-;12375:24;;;;12246:161;:::o;10598:438::-;10696:36;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10696:36:0;10757:29;10769:7;10778;10757:11;:29::i;:::-;10745:41;;10947:52;10959:9;10970:7;10979;10988:10;:8;:10::i;:::-;10947:11;:52::i;:::-;10913:20;;;10797:202;10884:14;;;10797:202;10844:25;;;10797:202;;;10598:438;;;;:::o;2178:173::-;2234:16;2253:6;;-1:-1:-1;;;;;2270:17:0;;;-1:-1:-1;;;;;;2270:17:0;;;;;;2303:40;;2253:6;;;;;;;2303:40;;2234:16;2303:40;2223:128;2178:173;:::o;15637:554::-;15779:16;;;15793:1;15779:16;;;;;;;;15755:21;;15779:16;;;;;;;;;;-1:-1:-1;15779:16:0;15755:40;;15824:4;15806;15811:1;15806:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15806:23:0;;;-1:-1:-1;;;;;15806:23:0;;;;;15850:6;;;;;;;;;-1:-1:-1;;;;;15850:6:0;-1:-1:-1;;;;;15850:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15840:4;15845:1;15840:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15840:23:0;;;:7;;;;;;;;;:23;15908:6;;15876:53;;15893:4;;15908:6;;;;15917:11;15876:8;:53::i;:::-;15968:6;;:215;;-1:-1:-1;;;15968:215:0;;:6;;;;-1:-1:-1;;;;;15968:6:0;;:57;;:215;;16040:11;;16066:1;;16110:4;;16137;;16157:15;;15968:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15692:499;15637:554;:::o;3236:319::-;3351:6;3326:21;:31;;3318:73;;;;-1:-1:-1;;;3318:73:0;;16965:2:1;3318:73:0;;;16947:21:1;17004:2;16984:18;;;16977:30;17043:31;17023:18;;;17016:59;17092:18;;3318:73:0;16763:353:1;3318:73:0;3405:12;3423:9;-1:-1:-1;;;;;3423:14:0;3446:6;3423:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3404:54;;;3477:7;3469:78;;;;-1:-1:-1;;;3469:78:0;;17533:2:1;3469:78:0;;;17515:21:1;17572:2;17552:18;;;17545:30;17611:34;17591:18;;;17584:62;17682:28;17662:18;;;17655:56;17728:19;;3469:78:0;17331:422:1;15288:341:0;5157:8;:15;;-1:-1:-1;;5157:15:0;5168:4;5157:15;;;:8;15380:24:::1;15398:4;15380:9;:24::i;:::-;15354:50;;15415:33;15432:15;15415:16;:33::i;:::-;15482:21;15527:16:::0;;15523:97:::1;;15568:15;::::0;15560:48:::1;::::0;-1:-1:-1;;;;;15568:15:0::1;15595:12:::0;15560:34:::1;:48::i;:::-;-1:-1:-1::0;;5195:8:0;:16;;-1:-1:-1;;5195:16:0;;;15288:341::o;14417:863::-;14571:28;14602;14613:7;14622;14602:10;:28::i;:::-;-1:-1:-1;;;;;14647:19:0;;;;;;:11;:19;;;;;;14571:59;;-1:-1:-1;14647:19:0;;14643:124;;;-1:-1:-1;;;;;14730:15:0;;;;;;:7;:15;;;;;;:25;;14748:7;;14730:25;:::i;:::-;-1:-1:-1;;;;;14712:15:0;;;;;;:7;:15;;;;;:43;14643:124;-1:-1:-1;;;;;14781:22:0;;;;;;:11;:22;;;;;;;;14777:141;;;14889:17;;;;-1:-1:-1;;;;;14868:18:0;;;;;;:7;:18;;;;;;:38;;14889:17;14868:38;:::i;:::-;-1:-1:-1;;;;;14847:18:0;;;;;;:7;:18;;;;;:59;14777:141;14966:9;;-1:-1:-1;;;;;14948:15:0;;14966:9;14948:15;;;:7;:15;;;;;;:27;;14966:9;14948:27;:::i;:::-;-1:-1:-1;;;;;14930:15:0;;;;;;;:7;:15;;;;;;;;:45;;;;15028:17;;;15007:18;;;;;;;;;;:38;;15028:17;15007:38;:::i;:::-;-1:-1:-1;;;;;14986:18:0;;;;;;:7;:18;;;;;;;:59;;;;15062:6;;;:10;;;:24;;;15085:1;15076;:6;;;:10;15062:24;15058:57;;;15088:27;15100:1;:6;;;15108:1;:6;;;15088:11;:27::i;:::-;15145:1;15130;:12;;;:16;:36;;;;15165:1;15150;:12;;;:16;15130:36;15126:84;;;15168:42;15183:1;:12;;;15197:1;:12;;;15168:14;:42::i;:::-;15243:9;-1:-1:-1;;;;;15226:46:0;15235:6;-1:-1:-1;;;;;15226:46:0;;15254:1;:17;;;15226:46;;;;1500:25:1;;1488:2;1473:18;;1354:177;15226:46:0;;;;;;;;14558:722;14417:863;;;;:::o;12415:564::-;12513:7;;12549;;12466;;;;;12567:300;12591:9;:16;12587:20;;12567:300;;;12657:7;12633;:21;12641:9;12651:1;12641:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;12641:12:0;12633:21;;;;;;;;;;;;;:31;;:66;;;12692:7;12668;:21;12676:9;12686:1;12676:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;12676:12:0;12668:21;;;;;;;;;;;;;:31;12633:66;12629:114;;;12726:7;;12735;;12718:25;;;;;;;12415:564;;:::o;12629:114::-;12778:7;:21;12786:9;12796:1;12786:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;12786:12:0;12778:21;;;;;;;;;;;;;12768:31;;:7;:31;:::i;:::-;12758:41;;12834:7;:21;12842:9;12852:1;12842:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;12842:12:0;12834:21;;;;;;;;;;;;;12824:31;;:7;:31;:::i;:::-;12814:41;-1:-1:-1;12609:3:0;;;;:::i;:::-;;;;12567:300;;;;12901:7;;12891;;:17;;;;:::i;:::-;12881:7;:27;12877:58;;;12918:7;;12927;;12910:25;;;;;;12415:564;;:::o;12877:58::-;12954:7;;12963;;-1:-1:-1;12415:564:0;-1:-1:-1;12415:564:0:o;11044:466::-;11143:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11143:28:0;11189:7;11184:91;;11213:17;;;:27;;;11255:8;;11184:91;11307:5;:9;11320:3;;11297:19;;:7;:19;:::i;:::-;11296:27;;;;:::i;:::-;11287:6;;;:36;11360:15;;11379:3;;11350:25;;:7;:25;:::i;:::-;11349:33;;;;:::i;:::-;11334:12;;;:48;;;11449:6;;;;11426:29;;:7;:29;:::i;:::-;:57;;;;:::i;:::-;11393:17;;;:90;11044:466;;;;:::o;11518:720::-;11727:15;;;;11878:21;11888:11;11878:7;:21;:::i;:::-;11868:31;;11917:7;11912:72;;-1:-1:-1;11949:7:0;;-1:-1:-1;11967:1:0;;-1:-1:-1;11967:1:0;11941:31;;11912:72;12012:11;12003:1;:6;;;:20;;;;:::i;:::-;11996:27;;12062:11;12047:1;:12;;;:26;;;;:::i;:::-;12034:39;-1:-1:-1;12034:39:0;12115:27;12138:4;12115:7;:27;:::i;:::-;:53;;;;:::i;:::-;12084:84;;11518:720;;;;;;;;;;:::o;10173:125::-;10252:4;10241:7;;:15;;;;;;;:::i;:::-;;;;-1:-1:-1;;10267:11:0;:23;;10286:4;;10267:11;:15;;:23;;10286:4;;10267:23;:::i;:::-;;;;-1:-1:-1;;;;10173:125:0:o;10308:280::-;10416:10;10391:11;:21;;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;10463:4:0;10443:26;;;;:11;:26;;;;;;;;10439:95;;;10502:4;10486:22;;;;:7;:22;;;;;:36;;10512:10;;10486:22;:36;;10512:10;;10486:36;:::i;:::-;;;;-1:-1:-1;;10439:95:0;10560:4;10544:22;;;;:7;:22;;;;;:36;;10570:10;;10544:22;:36;;10570:10;;10544:36;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;1997:180::-;2056:6;2109:2;2097:9;2088:7;2084:23;2080:32;2077:52;;;2125:1;2122;2115:12;2077:52;-1:-1:-1;2148:23:1;;1997:180;-1:-1:-1;1997:180:1:o;2371:247::-;2430:6;2483:2;2471:9;2462:7;2458:23;2454:32;2451:52;;;2499:1;2496;2489:12;2451:52;2538:9;2525:23;2557:31;2582:5;2557:31;:::i;2623:118::-;2709:5;2702:13;2695:21;2688:5;2685:32;2675:60;;2731:1;2728;2721:12;2746:128;2811:20;;2840:28;2811:20;2840:28;:::i;2879:309::-;2944:6;2952;3005:2;2993:9;2984:7;2980:23;2976:32;2973:52;;;3021:1;3018;3011:12;2973:52;3057:9;3044:23;3034:33;;3117:2;3106:9;3102:18;3089:32;3130:28;3152:5;3130:28;:::i;:::-;3177:5;3167:15;;;2879:309;;;;;:::o;3654:127::-;3715:10;3710:3;3706:20;3703:1;3696:31;3746:4;3743:1;3736:15;3770:4;3767:1;3760:15;3786:1191;3876:6;3884;3937:2;3925:9;3916:7;3912:23;3908:32;3905:52;;;3953:1;3950;3943:12;3905:52;3993:9;3980:23;4022:18;4063:2;4055:6;4052:14;4049:34;;;4079:1;4076;4069:12;4049:34;4117:6;4106:9;4102:22;4092:32;;4162:7;4155:4;4151:2;4147:13;4143:27;4133:55;;4184:1;4181;4174:12;4133:55;4220:2;4207:16;4242:4;4265:2;4261;4258:10;4255:36;;;4271:18;;:::i;:::-;4317:2;4314:1;4310:10;4349:2;4343:9;4412:2;4408:7;4403:2;4399;4395:11;4391:25;4383:6;4379:38;4467:6;4455:10;4452:22;4447:2;4435:10;4432:18;4429:46;4426:72;;;4478:18;;:::i;:::-;4514:2;4507:22;4564:18;;;4598:15;;;;-1:-1:-1;4640:11:1;;;4636:20;;;4668:19;;;4665:39;;;4700:1;4697;4690:12;4665:39;4724:11;;;;4744:148;4760:6;4755:3;4752:15;4744:148;;;4826:23;4845:3;4826:23;:::i;:::-;4814:36;;4777:12;;;;4870;;;;4744:148;;;4911:6;-1:-1:-1;4936:35:1;;-1:-1:-1;4952:18:1;;;4936:35;:::i;:::-;4926:45;;;;;;3786:1191;;;;;:::o;4982:388::-;5050:6;5058;5111:2;5099:9;5090:7;5086:23;5082:32;5079:52;;;5127:1;5124;5117:12;5079:52;5166:9;5153:23;5185:31;5210:5;5185:31;:::i;:::-;5235:5;-1:-1:-1;5292:2:1;5277:18;;5264:32;5305:33;5264:32;5305:33;:::i;6007:127::-;6068:10;6063:3;6059:20;6056:1;6049:31;6099:4;6096:1;6089:15;6123:4;6120:1;6113:15;6139:128;6206:9;;;6227:11;;;6224:37;;;6241:18;;:::i;6683:217::-;6723:1;6749;6739:132;;6793:10;6788:3;6784:20;6781:1;6774:31;6828:4;6825:1;6818:15;6856:4;6853:1;6846:15;6739:132;-1:-1:-1;6885:9:1;;6683:217::o;6905:356::-;7107:2;7089:21;;;7126:18;;;7119:30;7185:34;7180:2;7165:18;;7158:62;7252:2;7237:18;;6905:356::o;7618:127::-;7679:10;7674:3;7670:20;7667:1;7660:31;7710:4;7707:1;7700:15;7734:4;7731:1;7724:15;7750:127;7811:10;7806:3;7802:20;7799:1;7792:31;7842:4;7839:1;7832:15;7866:4;7863:1;7856:15;7882:135;7921:3;7942:17;;;7939:43;;7962:18;;:::i;:::-;-1:-1:-1;8009:1:1;7998:13;;7882:135::o;8022:125::-;8087:9;;;8108:10;;;8105:36;;;8121:18;;:::i;8868:409::-;9070:2;9052:21;;;9109:2;9089:18;;;9082:30;9148:34;9143:2;9128:18;;9121:62;-1:-1:-1;;;9214:2:1;9199:18;;9192:43;9267:3;9252:19;;8868:409::o;9705:184::-;9775:6;9828:2;9816:9;9807:7;9803:23;9799:32;9796:52;;;9844:1;9841;9834:12;9796:52;-1:-1:-1;9867:16:1;;9705:184;-1:-1:-1;9705:184:1:o;10173:245::-;10240:6;10293:2;10281:9;10272:7;10268:23;10264:32;10261:52;;;10309:1;10306;10299:12;10261:52;10341:9;10335:16;10360:28;10382:5;10360:28;:::i;11232:168::-;11305:9;;;11336;;11353:15;;;11347:22;;11333:37;11323:71;;11374:18;;:::i;15522:251::-;15592:6;15645:2;15633:9;15624:7;15620:23;15616:32;15613:52;;;15661:1;15658;15651:12;15613:52;15693:9;15687:16;15712:31;15737:5;15712:31;:::i;15778:980::-;16040:4;16088:3;16077:9;16073:19;16119:6;16108:9;16101:25;16145:2;16183:6;16178:2;16167:9;16163:18;16156:34;16226:3;16221:2;16210:9;16206:18;16199:31;16250:6;16285;16279:13;16316:6;16308;16301:22;16354:3;16343:9;16339:19;16332:26;;16393:2;16385:6;16381:15;16367:29;;16414:1;16424:195;16438:6;16435:1;16432:13;16424:195;;;16503:13;;-1:-1:-1;;;;;16499:39:1;16487:52;;16594:15;;;;16559:12;;;;16535:1;16453:9;16424:195;;;-1:-1:-1;;;;;;;16675:32:1;;;;16670:2;16655:18;;16648:60;-1:-1:-1;;;16739:3:1;16724:19;16717:35;16636:3;15778:980;-1:-1:-1;;;15778:980:1:o

Swarm Source

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