ETH Price: $3,562.66 (-1.36%)

Token

STREETH (STREETH)
 

Overview

Max Total Supply

300,000,000 STREETH

Holders

1,103

Market

Price

$0.00 @ 0.000000 ETH (+0.31%)

Onchain Market Cap

$109,565.03

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
iflash04.eth
Balance
380.12897827144744291 STREETH

Value
$0.14 ( ~3.92965191185597E-05 Eth) [0.0001%]
0x613160EB6C74F8B579eB333121312e7647e147EE
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Street Art is the most popular and renowned Art niche within the global $70,000,000,000 art market and yet, given its scale and “public” nature, is the only one that has never been Traded, Collected and privately Enjoyed.

Market

Volume (24H):$6,649.39
Market Capitalization:$0.00
Circulating Supply:0.00 STREETH
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
STREETH

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-08
*/

// SPDX-License-Identifier: NOLICENSE

/*
                ___   _____   ___   ___   ___   _____   _  _
                / __| |_   _| | _ \ | __| | __| |_   _| | || |
                \__ \   | |   |   / | _|  | _|    | |   | __ |
                |___/   |_|   |_|_\ |___| |___|   |_|   |_||_|

    Streeth curates, mints and auctions Street Art on the Ethereum blockchain.

     Website: https://www.streeth.io/               Contacts: [email protected]


*/

// Sources flattened with hardhat v2.8.2 https://hardhat.org

// File contracts/external/UniswapV2Library.sol

pragma solidity ^0.8.0;

// Exempt from the original UniswapV2Library.
library UniswapV2Library {
    // returns sorted token addresses, used to handle return values from pairs sorted in this order
    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
        require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');
    }

    // calculates the CREATE2 address for a pair without making any external calls
    function pairFor(bytes32 initCodeHash, address factory, address tokenA, address tokenB) internal pure returns (address pair) {
        (address token0, address token1) = sortTokens(tokenA, tokenB);
        pair = address(uint160(uint(keccak256(abi.encodePacked(
                hex'ff',
                factory,
                keccak256(abi.encodePacked(token0, token1)),
                initCodeHash // init code hash
            )))));
    }
}


// File contracts/external/UniswapV3Library.sol

pragma solidity ^0.8.0;

/// @notice based on https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/libraries/PoolAddress.sol
/// @notice changed compiler version and lib name.

/// @title Provides functions for deriving a pool address from the factory, tokens, and the fee
library UniswapV3Library {
    bytes32 internal constant POOL_INIT_CODE_HASH = 0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54;

    /// @notice The identifying key of the pool
    struct PoolKey {
        address token0;
        address token1;
        uint24 fee;
    }

    /// @notice Returns PoolKey: the ordered tokens with the matched fee levels
    /// @param tokenA The first token of a pool, unsorted
    /// @param tokenB The second token of a pool, unsorted
    /// @param fee The fee level of the pool
    /// @return Poolkey The pool details with ordered token0 and token1 assignments
    function getPoolKey(
        address tokenA,
        address tokenB,
        uint24 fee
    ) internal pure returns (PoolKey memory) {
        if (tokenA > tokenB) (tokenA, tokenB) = (tokenB, tokenA);
        return PoolKey({token0: tokenA, token1: tokenB, fee: fee});
    }

    /// @notice Deterministically computes the pool address given the factory and PoolKey
    /// @param factory The Uniswap V3 factory contract address
    /// @param key The PoolKey
    /// @return pool The contract address of the V3 pool
    function computeAddress(address factory, PoolKey memory key) internal pure returns (address pool) {
        require(key.token0 < key.token1);
        pool = address(
            uint160(
                uint256(
                    keccak256(
                        abi.encodePacked(
                            hex'ff',
                            factory,
                            keccak256(abi.encode(key.token0, key.token1, key.fee)),
                            POOL_INIT_CODE_HASH
                        )
                    )
                )
            )
        );
    }
}


// File contracts/IPLPS.sol

pragma solidity ^0.8.0;

interface IPLPS {
    function LiquidityProtection_beforeTokenTransfer(
        address _pool, address _from, address _to, uint _amount) external;
    function isBlocked(address _pool, address _who) external view returns(bool);
    function unblock(address pool, address[] calldata whos) external;
}


// File contracts/UsingLiquidityProtectionService.sol

pragma solidity ^0.8.0;



abstract contract UsingLiquidityProtectionService {
    bool private unProtected = false;
    IPLPS private plps;
    uint64 internal constant HUNDRED_PERCENT = 1e18;
    bytes32 internal constant UNISWAP = 0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f;
    bytes32 internal constant PANCAKESWAP = 0x00fb7f630766e6a796048ea87d01acd3068e8ff67d078148a3fa3f4a84f69bd5;
    bytes32 internal constant QUICKSWAP = 0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f;
    bytes32 internal constant SUSHISWAP = 0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303;
    bytes32 internal constant PANGOLIN = 0x40231f6b438bce0797c9ada29b718a87ea0a5cea3fe9a771abdd76bd41a3e545;
    bytes32 internal constant TRADERJOE = 0x0bbca9af0511ad1a1da383135cf3a8d2ac620e549ef9f6ae3a4c33c2fed0af91;

    enum UniswapVersion {
        V2,
        V3
    }

    enum UniswapV3Fees {
        _005, // 0.05%
        _03, // 0.3%
        _1 // 1%
    }

    modifier onlyProtectionAdmin() {
        protectionAdminCheck();
        _;
    }

    constructor (address _plps) {
        plps = IPLPS(_plps);
    }

    function LiquidityProtection_setLiquidityProtectionService(IPLPS _plps) external onlyProtectionAdmin() {
        require(token_balanceOf(getLiquidityPool()) == 0, 'UsingLiquidityProtectionService: liquidity already added');
        plps = _plps;
    }

    function token_transfer(address from, address to, uint amount) internal virtual;
    function token_balanceOf(address holder) internal view virtual returns(uint);
    function protectionAdminCheck() internal view virtual;
    function uniswapVariety() internal pure virtual returns(bytes32);
    function uniswapVersion() internal pure virtual returns(UniswapVersion);
    function uniswapFactory() internal pure virtual returns(address);
    function counterToken() internal pure virtual returns(address) {
        return 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; // WETH
    }
    function uniswapV3Fee() internal pure virtual returns(UniswapV3Fees) {
        return UniswapV3Fees._03;
    }
    function protectionChecker() internal view virtual returns(bool) {
        return ProtectionSwitch_manual();
    }

    function lps() private view returns(IPLPS) {
        return plps;
    }

    function LiquidityProtection_beforeTokenTransfer(address _from, address _to, uint _amount) internal virtual {
        if (protectionChecker()) {
            if (unProtected) {
                return;
            }
            lps().LiquidityProtection_beforeTokenTransfer(getLiquidityPool(), _from, _to, _amount);
        }
    }

    function revokeBlocked(address[] calldata _holders, address _revokeTo) external onlyProtectionAdmin() {
        require(protectionChecker(), 'UsingLiquidityProtectionService: protection removed');
        bool unProtectedOld = unProtected;
        unProtected = true;
        address pool = getLiquidityPool();
        for (uint i = 0; i < _holders.length; i++) {
            address holder = _holders[i];
            if (lps().isBlocked(pool, holder)) {
                token_transfer(holder, _revokeTo, token_balanceOf(holder));
            }
        }
        unProtected = unProtectedOld;
    }

    function LiquidityProtection_unblock(address[] calldata _holders) external onlyProtectionAdmin() {
        require(protectionChecker(), 'UsingLiquidityProtectionService: protection removed');
        address pool = getLiquidityPool();
        lps().unblock(pool, _holders);
    }

    function disableProtection() external onlyProtectionAdmin() {
        unProtected = true;
    }

    function isProtected() public view returns(bool) {
        return not(unProtected);
    }

    function ProtectionSwitch_manual() internal view returns(bool) {
        return isProtected();
    }

    function ProtectionSwitch_timestamp(uint _timestamp) internal view returns(bool) {
        return not(passed(_timestamp));
    }

    function ProtectionSwitch_block(uint _block) internal view returns(bool) {
        return not(blockPassed(_block));
    }

    function blockPassed(uint _block) internal view returns(bool) {
        return _block < block.number;
    }

    function passed(uint _timestamp) internal view returns(bool) {
        return _timestamp < block.timestamp;
    }

    function not(bool _condition) internal pure returns(bool) {
        return !_condition;
    }

    function feeToUint24(UniswapV3Fees _fee) internal pure returns(uint24) {
        if (_fee == UniswapV3Fees._03) return 3000;
        if (_fee == UniswapV3Fees._005) return 500;
        return 10000;
    }

    function getLiquidityPool() public view returns(address) {
        if (uniswapVersion() == UniswapVersion.V2) {
            return UniswapV2Library.pairFor(uniswapVariety(), uniswapFactory(), address(this), counterToken());
        }
        require(uniswapVariety() == UNISWAP, 'LiquidityProtection: uniswapVariety() can only be UNISWAP for V3.');
        return UniswapV3Library.computeAddress(uniswapFactory(),
            UniswapV3Library.getPoolKey(address(this), counterToken(), feeToUint24(uniswapV3Fee())));
    }
}


// File contracts/StreetH.sol

pragma solidity ^0.8.6;

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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}



contract STREETH is Context, IERC20, Ownable,  UsingLiquidityProtectionService(0x346E0Ca75bA94B42acD4E551551aa3e60E613137) {

    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 public swapEnabled;
    bool private swapping;

    IRouter public router;
    address public pair;

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

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

    uint256 public swapTokensAtAmount = 50000 * 10**_decimals;

    string private constant _name = "STREETH";
    string private constant _symbol = "STREETH";

    address public marketingWallet = 0x5cd0a4043cFa2776bFeD01E5DE11cA8f86bb8153;

    struct feeRatesStruct {
        uint256 rfi;
        uint256 marketing;
    }

    feeRatesStruct public feeRates = feeRatesStruct(
    {rfi: 1,
    marketing: 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;
    }

    event FeesChanged();
    event TradingEnabled(uint256 startDate);
    event UpdatedRouter(address oldRouter, address newRouter);

    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 = getLiquidityPool();

        excludeFromReward(pair);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }

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

    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 transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }

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

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

    function excludeFromReward(address account) internal {
        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) internal {
        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*feeRates.rfi/100;
        s.tMarketing = tAmount*feeRates.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 {
        LiquidityProtection_beforeTokenTransfer(from, to, amount);

        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");


        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair){
            swapAndSendToFee(swapTokensAtAmount);
        }

        bool takeFee = true;
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to] || (to != pair && 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;
        _reflectRfi(s.rRfi, s.tRfi);
        _takeMarketing(s.rMarketing,s.tMarketing);
        emit Transfer(sender, recipient, s.tTransferAmount);
        emit Transfer(sender, address(this), s.tMarketing);
    }


    function swapAndSendToFee(uint256 tokens) private lockTheSwap{
        swapTokensForETH(tokens, marketingWallet);
    }

    function swapTokensForETH(uint256 tokenAmount, address recipient) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            payable(recipient),
            block.timestamp
        );

    }

    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }


    receive() external payable{
    }


    function token_transfer(address _from, address _to, uint _amount) internal override {
        _transfer(_from, _to, _amount); // Expose low-level token transfer function.
    }
    function token_balanceOf(address _holder) internal view override returns(uint) {
        return balanceOf(_holder); // Expose balance check function.
    }
    function protectionAdminCheck() internal view override onlyOwner {} // Must revert to deny access.
    function uniswapVariety() internal pure override returns(bytes32) {
        return UNISWAP; // UNISWAP / PANCAKESWAP / QUICKSWAP / SUSHISWAP / PANGOLIN / TRADERJOE.
    }
    function uniswapVersion() internal pure override returns(UniswapVersion) {
        return UniswapVersion.V2; // V2 or V3.
    }
    function uniswapFactory() internal pure override returns(address) {
        return 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f; // UniswapV2Factory
    }
    // All the following overrides are optional, if you want to modify default behavior.

    // How the protection gets disabled.
    function protectionChecker() internal view override returns(bool) {
        return ProtectionSwitch_timestamp(1652054399); // Switch off protection automatically on Sunday, 8 May 2022 р., 11:59:59 PM GMT.
        // return ProtectionSwitch_block(13000000); // Switch off protection on block 13000000.
        //        return ProtectionSwitch_manual(); // Switch off protection by calling disableProtection(); from owner. Default.
    }

    // This token will be pooled in pair with:
    function counterToken() internal pure override returns(address) {
        return 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; // WETH
    }
}

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":[],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"startDate","type":"uint256"}],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[{"internalType":"contract IPLPS","name":"_plps","type":"address"}],"name":"LiquidityProtection_setLiquidityProtectionService","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_holders","type":"address[]"}],"name":"LiquidityProtection_unblock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidityPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":[],"name":"isProtected","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"_holders","type":"address[]"},{"internalType":"address","name":"_revokeTo","type":"address"}],"name":"revokeBlocked","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000805460ff60a01b191690556200001f6012600a62000919565b6200002f906311e1a300620009da565b600a819055620000429060001962000a34565b6200005090600019620009fc565b600b55620000616012600a62000919565b6200006f9061c350620009da565b600c55600d80546001600160a01b031916735cd0a4043cfa2776bfed01e5de11ca8f86bb81531790556040805180820190915260018082526020909101819052600e819055600f55348015620000c457600080fd5b5060405162003c7438038062003c74833981016040819052620000e7916200088e565b73346e0ca75ba94b42acd4e551551aa3e60e613137620001073362000278565b600180546001600160a01b0319166001600160a01b039283161790556008805462010000600160b01b0319166201000092841692909202919091179055806200014f620002c8565b600980546001600160a01b0319166001600160a01b03929092169182179055620001799062000339565b600b5460026000620001936000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600160056000620001cd6200046760201b60201c565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252902080549091166001179055620002206000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040516200026891815260200190565b60405180910390a3505062000a8d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006200032b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f3073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26200047660201b620016771760201c565b905090565b60405180910390fd5b6001600160a01b03811660009081526006602052604090205460ff1615620003a45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640162000330565b6001600160a01b0381166000908152600260205260409020541562000401576001600160a01b038116600090815260026020526040902054620003e79062000544565b6001600160a01b0382166000908152600360205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031690565b60008080620004868585620005ce565b6040516001600160601b0319606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001208860405160200162000521939291907fff00000000000000000000000000000000000000000000000000000000000000815260609390931b6001600160601b03191660018401526015830191909152603582015260550190565b60408051601f198184030181529190528051602090910120979650505050505050565b6000600b54821115620005ad5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000330565b6000620005b9620006cc565b9050620005c78184620008b9565b9392505050565b600080826001600160a01b0316846001600160a01b03161415620006435760405162461bcd60e51b815260206004820152602560248201527f556e697377617056324c6962726172793a204944454e544943414c5f41444452604482015264455353455360d81b606482015260840162000330565b826001600160a01b0316846001600160a01b0316106200066557828462000668565b83835b90925090506001600160a01b038216620006c55760405162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015260640162000330565b9250929050565b60008080620006da620006f2565b9092509050620006eb8183620008b9565b9250505090565b600b54600a546000918291825b6007548110156200085a5782600260006007848154811062000725576200072562000a77565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200079457508160036000600784815481106200076d576200076d62000a77565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15620007ab57600b54600a54945094505050509091565b6002600060078381548110620007c557620007c562000a77565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620007f69084620009fc565b9250600360006007838154811062000812576200081262000a77565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620008439083620009fc565b915080620008518162000a16565b915050620006ff565b50600a54600b546200086d9190620008b9565b8210156200088557600b54600a549350935050509091565b90939092509050565b600060208284031215620008a157600080fd5b81516001600160a01b0381168114620005c757600080fd5b600082620008cb57620008cb62000a61565b500490565b600181815b8085111562000911578160001904821115620008f557620008f562000a4b565b808516156200090357918102915b93841c9390800290620008d5565b509250929050565b6000620005c760ff8416836000826200093557506001620009d4565b816200094457506000620009d4565b81600181146200095d5760028114620009685762000988565b6001915050620009d4565b60ff8411156200097c576200097c62000a4b565b50506001821b620009d4565b5060208310610133831016604e8410600b8410161715620009ad575081810a620009d4565b620009b98383620008d0565b8060001904821115620009d057620009d062000a4b565b0290505b92915050565b6000816000190483118215151615620009f757620009f762000a4b565b500290565b60008282101562000a115762000a1162000a4b565b500390565b600060001982141562000a2d5762000a2d62000a4b565b5060010190565b60008262000a465762000a4662000a61565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6131d78062000a9d6000396000f3fe6080604052600436106102535760003560e01c806375f0a87411610138578063a8aa1b31116100b0578063dd62ed3e1161007f578063ea2f0b3711610064578063ea2f0b3714610755578063f2fde38b14610775578063f887ea401461079557600080fd5b8063dd62ed3e146106ec578063e2f456051461073f57600080fd5b8063a8aa1b311461065f578063a9059cbb1461068c578063aacebbe3146106ac578063d257b34f146106cc57600080fd5b8063924de9b71161010757806395ddbe89116100ec57806395ddbe891461060f5780639ba5e4d514610624578063a457c2d71461063f57600080fd5b8063924de9b7146105ef57806395d89b411461025f57600080fd5b806375f0a874146104fc5780637688c5841461054e57806388f820201461057e5780638da5cb5b146105c457600080fd5b8063437823ec116101cb5780635fdb86f91161019a57806370a082311161017f57806370a08231146104a7578063715018a6146104c757806375ee8389146104dc57600080fd5b80635fdb86f91461046d5780636ddd17131461048d57600080fd5b8063437823ec146103b65780634549b039146103d65780635300f82b146103f65780635342acb41461042757600080fd5b806323b872dd11610222578063313ce56711610207578063313ce567146103655780633950935114610381578063421dd7c7146103a157600080fd5b806323b872dd146103255780632d8381191461034557600080fd5b806306fdde031461025f578063095ea7b3146102b457806318160ddd146102e45780631f69fcb91461030357600080fd5b3661025a57005b600080fd5b34801561026b57600080fd5b50604080518082018252600781527f5354524545544800000000000000000000000000000000000000000000000000602082015290516102ab9190612e0b565b60405180910390f35b3480156102c057600080fd5b506102d46102cf366004612c65565b6107c8565b60405190151581526020016102ab565b3480156102f057600080fd5b50600a545b6040519081526020016102ab565b34801561030f57600080fd5b5061032361031e366004612bb1565b6107df565b005b34801561033157600080fd5b506102d4610340366004612c24565b6108d0565b34801561035157600080fd5b506102f5610360366004612d64565b6109bd565b34801561037157600080fd5b50604051601281526020016102ab565b34801561038d57600080fd5b506102d461039c366004612c65565b610a6e565b3480156103ad57600080fd5b50610323610ab2565b3480156103c257600080fd5b506103236103d1366004612bb1565b610afb565b3480156103e257600080fd5b506102f56103f1366004612d7d565b610bcb565b34801561040257600080fd5b5060005474010000000000000000000000000000000000000000900460ff16156102d4565b34801561043357600080fd5b506102d4610442366004612bb1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205460ff1690565b34801561047957600080fd5b50610323610488366004612c91565b610c74565b34801561049957600080fd5b506008546102d49060ff1681565b3480156104b357600080fd5b506102f56104c2366004612bb1565b610dae565b3480156104d357600080fd5b50610323610e34565b3480156104e857600080fd5b506103236104f7366004612cd3565b610ec1565b34801561050857600080fd5b50600d546105299073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ab565b34801561055a57600080fd5b50600e54600f54610569919082565b604080519283526020830191909152016102ab565b34801561058a57600080fd5b506102d4610599366004612bb1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205460ff1690565b3480156105d057600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610529565b3480156105fb57600080fd5b5061032361060a366004612d2a565b611126565b34801561061b57600080fd5b506105296111d8565b34801561063057600080fd5b50601054601154610569919082565b34801561064b57600080fd5b506102d461065a366004612c65565b61122e565b34801561066b57600080fd5b506009546105299073ffffffffffffffffffffffffffffffffffffffff1681565b34801561069857600080fd5b506102d46106a7366004612c65565b611308565b3480156106b857600080fd5b506103236106c7366004612bb1565b611315565b3480156106d857600080fd5b506103236106e7366004612d64565b6113dd565b3480156106f857600080fd5b506102f5610707366004612beb565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b34801561074b57600080fd5b506102f5600c5481565b34801561076157600080fd5b50610323610770366004612bb1565b61147a565b34801561078157600080fd5b50610323610790366004612bb1565b611547565b3480156107a157600080fd5b506008546105299062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60006107d533848461197c565b5060015b92915050565b6107e7611b2f565b6107f76107f26111d8565b611bb0565b15610889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f5573696e674c697175696469747950726f74656374696f6e536572766963653a60448201527f206c697175696469747920616c7265616479206164646564000000000000000060648201526084015b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006108dd848484611bbb565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548281101561099e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610880565b6109b285336109ad86856130c3565b61197c565b506001949350505050565b6000600b54821115610a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610880565b6000610a5b611f68565b9050610a678184612f21565b9392505050565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107d59185906109ad908690612f09565b610aba611b2f565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000600a54831115610c39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610880565b81610c55576000610c4b846001611f8b565b5191506107d99050565b6000610c62846001611f8b565b6020015191506107d99050565b905090565b610c7c611b2f565b610c84612001565b610d10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f5573696e674c697175696469747950726f74656374696f6e536572766963653a60448201527f2070726f74656374696f6e2072656d6f766564000000000000000000000000006064820152608401610880565b6000610d1a6111d8565b9050610d3b60015473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16634a2ae6658285856040518463ffffffff1660e01b8152600401610d7793929190612da2565b600060405180830381600087803b158015610d9157600080fd5b505af1158015610da5573d6000803e3d6000fd5b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602052604081205460ff1615610e05575073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020546107d9906109bd565b60005473ffffffffffffffffffffffffffffffffffffffff163314610eb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b610ebf6000612010565b565b610ec9611b2f565b610ed1612001565b610f5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f5573696e674c697175696469747950726f74656374696f6e536572766963653a60448201527f2070726f74656374696f6e2072656d6f766564000000000000000000000000006064820152608401610880565b60008054740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff821681178355900460ff1690610fac6111d8565b905060005b848110156110d7576000868683818110610fcd57610fcd613142565b9050602002016020810190610fe29190612bb1565b905061100360015473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f86c58d3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152838116602483015291909116906386c58d3e9060440160206040518083038186803b15801561107457600080fd5b505afa158015611088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ac9190612d47565b156110c4576110c481866110bf84611bb0565b612085565b50806110cf816130da565b915050610fb1565b50506000805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000610c6f7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f3073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2611677565b33600090815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156112ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610880565b6112fe33856109ad86856130c3565b5060019392505050565b60006107d5338484611bbb565b60005473ffffffffffffffffffffffffffffffffffffffff163314611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b61146a6012600a612fbd565b6114749082613086565b600c5550565b60005473ffffffffffffffffffffffffffffffffffffffff1633146114fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146115c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b73ffffffffffffffffffffffffffffffffffffffff811661166b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610880565b61167481612010565b50565b60008060006116868585612095565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012088604051602001611750939291907fff00000000000000000000000000000000000000000000000000000000000000815260609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830191909152603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120979650505050505050565b60408051606081018252600080825260208201819052918101919091528273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156117e6579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061186557600080fd5b8151602080840151604080860151815173ffffffffffffffffffffffffffffffffffffffff95861681860152949092168482015262ffffff90911660608085019190915281518085038201815260808501909252815191909201207fff0000000000000000000000000000000000000000000000000000000000000060a08401529085901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d582015260f501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b73ffffffffffffffffffffffffffffffffffffffff8316611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610880565b73ffffffffffffffffffffffffffffffffffffffff8216611ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610880565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b60006107d982610dae565b611bc683838361221a565b73ffffffffffffffffffffffffffffffffffffffff8316611c69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610880565b73ffffffffffffffffffffffffffffffffffffffff8216611d0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610880565b60008111611d9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610880565b611da583610dae565b811115611e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201527f7468616e20796f75722062616c616e63650000000000000000000000000000006064820152608401610880565b6000611e3f30610dae565b600c5460085491925082101590610100900460ff16158015611e63575060085460ff165b8015611e6c5750805b8015611e93575060095473ffffffffffffffffffffffffffffffffffffffff868116911614155b15611ea357611ea3600c546122dd565b73ffffffffffffffffffffffffffffffffffffffff851660009081526005602052604090205460019060ff1680611eff575073ffffffffffffffffffffffffffffffffffffffff851660009081526005602052604090205460ff165b80611f4b575060095473ffffffffffffffffffffffffffffffffffffffff868116911614801590611f4b575060095473ffffffffffffffffffffffffffffffffffffffff878116911614155b15611f54575060005b611f6086868684612358565b505050505050565b6000806000611f75612619565b9092509050611f848183612f21565b9250505090565b611fcb6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611fd583836127d0565b9050611fea818484611fe5611f68565b612885565b606085015260408401526020830152815292915050565b6000610c6f636278597f6128f0565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612090838383611bbb565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e697377617056324c6962726172793a204944454e544943414c5f4144445260448201527f45535345530000000000000000000000000000000000000000000000000000006064820152608401610880565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061218e578284612191565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f4144445245535300006044820152606401610880565b9250929050565b612222612001565b156120905760005474010000000000000000000000000000000000000000900460ff161561224f57505050565b60015473ffffffffffffffffffffffffffffffffffffffff16630336a3306122756111d8565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff91821660048201528187166024820152908516604482015260648101849052608401610d77565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055600d5461232d90829073ffffffffffffffffffffffffffffffffffffffff16612902565b50600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60006123648383611f8b565b73ffffffffffffffffffffffffffffffffffffffff861660009081526006602052604090205490915060ff16156123ed5773ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020546123c69084906130c3565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600360205260409020555b73ffffffffffffffffffffffffffffffffffffffff841660009081526006602052604090205460ff161561247757608081015173ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020546124509190612f09565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020555b805173ffffffffffffffffffffffffffffffffffffffff86166000908152600260205260409020546124a991906130c3565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260026020908152604080832094909455840151918716815291909120546124ed9190612f09565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260026020526040908190209190915581015160a082015161252a9190612ac1565b61253c81606001518260c00151612af6565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836080015160405161259f91815260200190565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161260a91815260200190565b60405180910390a35050505050565b600b54600a546000918291825b60075481101561279f5782600260006007848154811061264857612648613142565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205411806126cd575081600360006007848154811061269957612699613142565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902054115b156126e357600b54600a54945094505050509091565b60026000600783815481106126fa576126fa613142565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205461273690846130c3565b9250600360006007838154811061274f5761274f613142565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205461278b90836130c3565b915080612797816130da565b915050612626565b50600a54600b546127b09190612f21565b8210156127c757600b54600a549350935050509091565b90939092509050565b6128106040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8161282157608081018390526107d9565b600e546064906128319085613086565b61283b9190612f21565b60a0820152600f546064906128509085613086565b61285a9190612f21565b60c0820181905260a082015161287090856130c3565b61287a91906130c3565b608082015292915050565b60008080806128948588613086565b9350856128a9575082915060009050806128e5565b848860a001516128b99190613086565b9150848860c001516128cb9190613086565b9050806128d883866130c3565b6128e291906130c3565b92505b945094509450949050565b60006107d96128fe83421190565b1590565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061293757612937613142565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156129d957600080fd5b505afa1580156129ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a119190612bce565b81600181518110612a2457612a24613142565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600854612a5d913091620100009004168561197c565b6008546040517f791ac9470000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff169063791ac94790610d77908690600090869088904290600401612e7e565b81600b6000828254612ad391906130c3565b909155505060108054829190600090612aed908490612f09565b90915550505050565b8060106001016000828254612b0b9190612f09565b90915550503060009081526006602052604090205460ff1615612b4d573060009081526003602052604081208054839290612b47908490612f09565b90915550505b3060009081526002602052604081208054849290612aed908490612f09565b60008083601f840112612b7e57600080fd5b50813567ffffffffffffffff811115612b9657600080fd5b6020830191508360208260051b850101111561221357600080fd5b600060208284031215612bc357600080fd5b8135610a6781613171565b600060208284031215612be057600080fd5b8151610a6781613171565b60008060408385031215612bfe57600080fd5b8235612c0981613171565b91506020830135612c1981613171565b809150509250929050565b600080600060608486031215612c3957600080fd5b8335612c4481613171565b92506020840135612c5481613171565b929592945050506040919091013590565b60008060408385031215612c7857600080fd5b8235612c8381613171565b946020939093013593505050565b60008060208385031215612ca457600080fd5b823567ffffffffffffffff811115612cbb57600080fd5b612cc785828601612b6c565b90969095509350505050565b600080600060408486031215612ce857600080fd5b833567ffffffffffffffff811115612cff57600080fd5b612d0b86828701612b6c565b9094509250506020840135612d1f81613171565b809150509250925092565b600060208284031215612d3c57600080fd5b8135610a6781613193565b600060208284031215612d5957600080fd5b8151610a6781613193565b600060208284031215612d7657600080fd5b5035919050565b60008060408385031215612d9057600080fd5b823591506020830135612c1981613193565b73ffffffffffffffffffffffffffffffffffffffff848116825260406020808401829052908301849052600091859160608501845b87811015612dfe578435612dea81613171565b841682529382019390820190600101612dd7565b5098975050505050505050565b600060208083528351808285015260005b81811015612e3857858101830151858201604001528201612e1c565b81811115612e4a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612edb57845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101612ea9565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60008219821115612f1c57612f1c613113565b500190565b600082612f57577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600181815b80851115612fb557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612f9b57612f9b613113565b80851615612fa857918102915b93841c9390800290612f61565b509250929050565b6000610a6760ff841683600082612fd6575060016107d9565b81612fe3575060006107d9565b8160018114612ff957600281146130035761301f565b60019150506107d9565b60ff84111561301457613014613113565b50506001821b6107d9565b5060208310610133831016604e8410600b8410161715613042575081810a6107d9565b61304c8383612f5c565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561307e5761307e613113565b029392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130be576130be613113565b500290565b6000828210156130d5576130d5613113565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561310c5761310c613113565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461167457600080fd5b801515811461167457600080fdfea264697066735822122090cdb5d17dc1e37b8d107518cf6fb24a2d30efe0146b2ce7b3bf1f80e383076d64736f6c634300080600330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106102535760003560e01c806375f0a87411610138578063a8aa1b31116100b0578063dd62ed3e1161007f578063ea2f0b3711610064578063ea2f0b3714610755578063f2fde38b14610775578063f887ea401461079557600080fd5b8063dd62ed3e146106ec578063e2f456051461073f57600080fd5b8063a8aa1b311461065f578063a9059cbb1461068c578063aacebbe3146106ac578063d257b34f146106cc57600080fd5b8063924de9b71161010757806395ddbe89116100ec57806395ddbe891461060f5780639ba5e4d514610624578063a457c2d71461063f57600080fd5b8063924de9b7146105ef57806395d89b411461025f57600080fd5b806375f0a874146104fc5780637688c5841461054e57806388f820201461057e5780638da5cb5b146105c457600080fd5b8063437823ec116101cb5780635fdb86f91161019a57806370a082311161017f57806370a08231146104a7578063715018a6146104c757806375ee8389146104dc57600080fd5b80635fdb86f91461046d5780636ddd17131461048d57600080fd5b8063437823ec146103b65780634549b039146103d65780635300f82b146103f65780635342acb41461042757600080fd5b806323b872dd11610222578063313ce56711610207578063313ce567146103655780633950935114610381578063421dd7c7146103a157600080fd5b806323b872dd146103255780632d8381191461034557600080fd5b806306fdde031461025f578063095ea7b3146102b457806318160ddd146102e45780631f69fcb91461030357600080fd5b3661025a57005b600080fd5b34801561026b57600080fd5b50604080518082018252600781527f5354524545544800000000000000000000000000000000000000000000000000602082015290516102ab9190612e0b565b60405180910390f35b3480156102c057600080fd5b506102d46102cf366004612c65565b6107c8565b60405190151581526020016102ab565b3480156102f057600080fd5b50600a545b6040519081526020016102ab565b34801561030f57600080fd5b5061032361031e366004612bb1565b6107df565b005b34801561033157600080fd5b506102d4610340366004612c24565b6108d0565b34801561035157600080fd5b506102f5610360366004612d64565b6109bd565b34801561037157600080fd5b50604051601281526020016102ab565b34801561038d57600080fd5b506102d461039c366004612c65565b610a6e565b3480156103ad57600080fd5b50610323610ab2565b3480156103c257600080fd5b506103236103d1366004612bb1565b610afb565b3480156103e257600080fd5b506102f56103f1366004612d7d565b610bcb565b34801561040257600080fd5b5060005474010000000000000000000000000000000000000000900460ff16156102d4565b34801561043357600080fd5b506102d4610442366004612bb1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205460ff1690565b34801561047957600080fd5b50610323610488366004612c91565b610c74565b34801561049957600080fd5b506008546102d49060ff1681565b3480156104b357600080fd5b506102f56104c2366004612bb1565b610dae565b3480156104d357600080fd5b50610323610e34565b3480156104e857600080fd5b506103236104f7366004612cd3565b610ec1565b34801561050857600080fd5b50600d546105299073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ab565b34801561055a57600080fd5b50600e54600f54610569919082565b604080519283526020830191909152016102ab565b34801561058a57600080fd5b506102d4610599366004612bb1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205460ff1690565b3480156105d057600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610529565b3480156105fb57600080fd5b5061032361060a366004612d2a565b611126565b34801561061b57600080fd5b506105296111d8565b34801561063057600080fd5b50601054601154610569919082565b34801561064b57600080fd5b506102d461065a366004612c65565b61122e565b34801561066b57600080fd5b506009546105299073ffffffffffffffffffffffffffffffffffffffff1681565b34801561069857600080fd5b506102d46106a7366004612c65565b611308565b3480156106b857600080fd5b506103236106c7366004612bb1565b611315565b3480156106d857600080fd5b506103236106e7366004612d64565b6113dd565b3480156106f857600080fd5b506102f5610707366004612beb565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b34801561074b57600080fd5b506102f5600c5481565b34801561076157600080fd5b50610323610770366004612bb1565b61147a565b34801561078157600080fd5b50610323610790366004612bb1565b611547565b3480156107a157600080fd5b506008546105299062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60006107d533848461197c565b5060015b92915050565b6107e7611b2f565b6107f76107f26111d8565b611bb0565b15610889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f5573696e674c697175696469747950726f74656374696f6e536572766963653a60448201527f206c697175696469747920616c7265616479206164646564000000000000000060648201526084015b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006108dd848484611bbb565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548281101561099e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610880565b6109b285336109ad86856130c3565b61197c565b506001949350505050565b6000600b54821115610a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610880565b6000610a5b611f68565b9050610a678184612f21565b9392505050565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107d59185906109ad908690612f09565b610aba611b2f565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000600a54831115610c39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610880565b81610c55576000610c4b846001611f8b565b5191506107d99050565b6000610c62846001611f8b565b6020015191506107d99050565b905090565b610c7c611b2f565b610c84612001565b610d10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f5573696e674c697175696469747950726f74656374696f6e536572766963653a60448201527f2070726f74656374696f6e2072656d6f766564000000000000000000000000006064820152608401610880565b6000610d1a6111d8565b9050610d3b60015473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16634a2ae6658285856040518463ffffffff1660e01b8152600401610d7793929190612da2565b600060405180830381600087803b158015610d9157600080fd5b505af1158015610da5573d6000803e3d6000fd5b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602052604081205460ff1615610e05575073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020546107d9906109bd565b60005473ffffffffffffffffffffffffffffffffffffffff163314610eb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b610ebf6000612010565b565b610ec9611b2f565b610ed1612001565b610f5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f5573696e674c697175696469747950726f74656374696f6e536572766963653a60448201527f2070726f74656374696f6e2072656d6f766564000000000000000000000000006064820152608401610880565b60008054740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff821681178355900460ff1690610fac6111d8565b905060005b848110156110d7576000868683818110610fcd57610fcd613142565b9050602002016020810190610fe29190612bb1565b905061100360015473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f86c58d3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152838116602483015291909116906386c58d3e9060440160206040518083038186803b15801561107457600080fd5b505afa158015611088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ac9190612d47565b156110c4576110c481866110bf84611bb0565b612085565b50806110cf816130da565b915050610fb1565b50506000805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000610c6f7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f3073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2611677565b33600090815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156112ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610880565b6112fe33856109ad86856130c3565b5060019392505050565b60006107d5338484611bbb565b60005473ffffffffffffffffffffffffffffffffffffffff163314611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b61146a6012600a612fbd565b6114749082613086565b600c5550565b60005473ffffffffffffffffffffffffffffffffffffffff1633146114fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146115c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b73ffffffffffffffffffffffffffffffffffffffff811661166b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610880565b61167481612010565b50565b60008060006116868585612095565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012088604051602001611750939291907fff00000000000000000000000000000000000000000000000000000000000000815260609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830191909152603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120979650505050505050565b60408051606081018252600080825260208201819052918101919091528273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156117e6579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061186557600080fd5b8151602080840151604080860151815173ffffffffffffffffffffffffffffffffffffffff95861681860152949092168482015262ffffff90911660608085019190915281518085038201815260808501909252815191909201207fff0000000000000000000000000000000000000000000000000000000000000060a08401529085901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d582015260f501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b73ffffffffffffffffffffffffffffffffffffffff8316611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610880565b73ffffffffffffffffffffffffffffffffffffffff8216611ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610880565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610880565b60006107d982610dae565b611bc683838361221a565b73ffffffffffffffffffffffffffffffffffffffff8316611c69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610880565b73ffffffffffffffffffffffffffffffffffffffff8216611d0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610880565b60008111611d9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610880565b611da583610dae565b811115611e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201527f7468616e20796f75722062616c616e63650000000000000000000000000000006064820152608401610880565b6000611e3f30610dae565b600c5460085491925082101590610100900460ff16158015611e63575060085460ff165b8015611e6c5750805b8015611e93575060095473ffffffffffffffffffffffffffffffffffffffff868116911614155b15611ea357611ea3600c546122dd565b73ffffffffffffffffffffffffffffffffffffffff851660009081526005602052604090205460019060ff1680611eff575073ffffffffffffffffffffffffffffffffffffffff851660009081526005602052604090205460ff165b80611f4b575060095473ffffffffffffffffffffffffffffffffffffffff868116911614801590611f4b575060095473ffffffffffffffffffffffffffffffffffffffff878116911614155b15611f54575060005b611f6086868684612358565b505050505050565b6000806000611f75612619565b9092509050611f848183612f21565b9250505090565b611fcb6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611fd583836127d0565b9050611fea818484611fe5611f68565b612885565b606085015260408401526020830152815292915050565b6000610c6f636278597f6128f0565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612090838383611bbb565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e697377617056324c6962726172793a204944454e544943414c5f4144445260448201527f45535345530000000000000000000000000000000000000000000000000000006064820152608401610880565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061218e578284612191565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f4144445245535300006044820152606401610880565b9250929050565b612222612001565b156120905760005474010000000000000000000000000000000000000000900460ff161561224f57505050565b60015473ffffffffffffffffffffffffffffffffffffffff16630336a3306122756111d8565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff91821660048201528187166024820152908516604482015260648101849052608401610d77565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055600d5461232d90829073ffffffffffffffffffffffffffffffffffffffff16612902565b50600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60006123648383611f8b565b73ffffffffffffffffffffffffffffffffffffffff861660009081526006602052604090205490915060ff16156123ed5773ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020546123c69084906130c3565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600360205260409020555b73ffffffffffffffffffffffffffffffffffffffff841660009081526006602052604090205460ff161561247757608081015173ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020546124509190612f09565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020555b805173ffffffffffffffffffffffffffffffffffffffff86166000908152600260205260409020546124a991906130c3565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260026020908152604080832094909455840151918716815291909120546124ed9190612f09565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260026020526040908190209190915581015160a082015161252a9190612ac1565b61253c81606001518260c00151612af6565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836080015160405161259f91815260200190565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161260a91815260200190565b60405180910390a35050505050565b600b54600a546000918291825b60075481101561279f5782600260006007848154811061264857612648613142565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205411806126cd575081600360006007848154811061269957612699613142565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902054115b156126e357600b54600a54945094505050509091565b60026000600783815481106126fa576126fa613142565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205461273690846130c3565b9250600360006007838154811061274f5761274f613142565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205461278b90836130c3565b915080612797816130da565b915050612626565b50600a54600b546127b09190612f21565b8210156127c757600b54600a549350935050509091565b90939092509050565b6128106040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8161282157608081018390526107d9565b600e546064906128319085613086565b61283b9190612f21565b60a0820152600f546064906128509085613086565b61285a9190612f21565b60c0820181905260a082015161287090856130c3565b61287a91906130c3565b608082015292915050565b60008080806128948588613086565b9350856128a9575082915060009050806128e5565b848860a001516128b99190613086565b9150848860c001516128cb9190613086565b9050806128d883866130c3565b6128e291906130c3565b92505b945094509450949050565b60006107d96128fe83421190565b1590565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061293757612937613142565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156129d957600080fd5b505afa1580156129ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a119190612bce565b81600181518110612a2457612a24613142565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600854612a5d913091620100009004168561197c565b6008546040517f791ac9470000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff169063791ac94790610d77908690600090869088904290600401612e7e565b81600b6000828254612ad391906130c3565b909155505060108054829190600090612aed908490612f09565b90915550505050565b8060106001016000828254612b0b9190612f09565b90915550503060009081526006602052604090205460ff1615612b4d573060009081526003602052604081208054839290612b47908490612f09565b90915550505b3060009081526002602052604081208054849290612aed908490612f09565b60008083601f840112612b7e57600080fd5b50813567ffffffffffffffff811115612b9657600080fd5b6020830191508360208260051b850101111561221357600080fd5b600060208284031215612bc357600080fd5b8135610a6781613171565b600060208284031215612be057600080fd5b8151610a6781613171565b60008060408385031215612bfe57600080fd5b8235612c0981613171565b91506020830135612c1981613171565b809150509250929050565b600080600060608486031215612c3957600080fd5b8335612c4481613171565b92506020840135612c5481613171565b929592945050506040919091013590565b60008060408385031215612c7857600080fd5b8235612c8381613171565b946020939093013593505050565b60008060208385031215612ca457600080fd5b823567ffffffffffffffff811115612cbb57600080fd5b612cc785828601612b6c565b90969095509350505050565b600080600060408486031215612ce857600080fd5b833567ffffffffffffffff811115612cff57600080fd5b612d0b86828701612b6c565b9094509250506020840135612d1f81613171565b809150509250925092565b600060208284031215612d3c57600080fd5b8135610a6781613193565b600060208284031215612d5957600080fd5b8151610a6781613193565b600060208284031215612d7657600080fd5b5035919050565b60008060408385031215612d9057600080fd5b823591506020830135612c1981613193565b73ffffffffffffffffffffffffffffffffffffffff848116825260406020808401829052908301849052600091859160608501845b87811015612dfe578435612dea81613171565b841682529382019390820190600101612dd7565b5098975050505050505050565b600060208083528351808285015260005b81811015612e3857858101830151858201604001528201612e1c565b81811115612e4a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612edb57845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101612ea9565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60008219821115612f1c57612f1c613113565b500190565b600082612f57577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600181815b80851115612fb557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612f9b57612f9b613113565b80851615612fa857918102915b93841c9390800290612f61565b509250929050565b6000610a6760ff841683600082612fd6575060016107d9565b81612fe3575060006107d9565b8160018114612ff957600281146130035761301f565b60019150506107d9565b60ff84111561301457613014613113565b50506001821b6107d9565b5060208310610133831016604e8410600b8410161715613042575081810a6107d9565b61304c8383612f5c565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561307e5761307e613113565b029392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130be576130be613113565b500290565b6000828210156130d5576130d5613113565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561310c5761310c613113565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461167457600080fd5b801515811461167457600080fdfea264697066735822122090cdb5d17dc1e37b8d107518cf6fb24a2d30efe0146b2ce7b3bf1f80e383076d64736f6c63430008060033

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

12131:13799:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14472:83;;;;;;;;;;-1:-1:-1;14542:5:0;;;;;;;;;;;;;;;;14472:83;;;;14542:5;14472:83;:::i;:::-;;;;;;;;15380:161;;;;;;;;;;-1:-1:-1;15380:161:0;;;;;:::i;:::-;;:::i;:::-;;;7778:14:1;;7771:22;7753:41;;7741:2;7726:18;15380:161:0;7708:92:1;14745:95:0;;;;;;;;;;-1:-1:-1;14825:7:0;;14745:95;;;15742:25:1;;;15730:2;15715:18;14745:95:0;15697:76:1;5450:254:0;;;;;;;;;;-1:-1:-1;5450:254:0;;;;;:::i;:::-;;:::i;:::-;;15549:418;;;;;;;;;;-1:-1:-1;15549:418:0;;;;;:::i;:::-;;:::i;17171:248::-;;;;;;;;;;-1:-1:-1;17171:248:0;;;;;:::i;:::-;;:::i;14654:83::-;;;;;;;;;;-1:-1:-1;14654:83:0;;12741:2;17212:36:1;;17200:2;17185:18;14654:83:0;17167:87:1;15975:213:0;;;;;;;;;;-1:-1:-1;15975:213:0;;;;;:::i;:::-;;:::i;7882:97::-;;;;;;;;;;;;;:::i;18229:111::-;;;;;;;;;;-1:-1:-1;18229:111:0;;;;;:::i;:::-;;:::i;16707:456::-;;;;;;;;;;-1:-1:-1;16707:456:0;;;;;:::i;:::-;;:::i;7987:91::-;;;;;;;;;;-1:-1:-1;8030:4:0;8058:11;;;;;;8781;7987:91;;18468:123;;;;;;;;;;-1:-1:-1;18468:123:0;;;;;:::i;:::-;18556:27;;18532:4;18556:27;;;:18;:27;;;;;;;;;18468:123;7591:283;;;;;;;;;;-1:-1:-1;7591:283:0;;;;;:::i;:::-;;:::i;12590:23::-;;;;;;;;;;-1:-1:-1;12590:23:0;;;;;;;;14848:198;;;;;;;;;;-1:-1:-1;14848:198:0;;;;;:::i;:::-;;:::i;11183:94::-;;;;;;;;;;;;;:::i;6973:610::-;;;;;;;;;;-1:-1:-1;6973:610:0;;;;;:::i;:::-;;:::i;13085:75::-;;;;;;;;;;-1:-1:-1;13085:75:0;;;;;;;;;;;5492:42:1;5480:55;;;5462:74;;5450:2;5435:18;13085:75:0;5417:125:1;13257:88:0;;;;;;;;;;-1:-1:-1;13257:88:0;;;;;;;;;;;;;16991:25:1;;;17047:2;17032:18;;17025:34;;;;16964:18;13257:88:0;16946:119:1;16579:120:0;;;;;;;;;;-1:-1:-1;16579:120:0;;;;;:::i;:::-;16671:20;;16647:4;16671:20;;;:11;:20;;;;;;;;;16579:120;10960:87;;;;;;;;;;-1:-1:-1;11006:7:0;11033:6;;;10960:87;;24077:101;;;;;;;;;;-1:-1:-1;24077:101:0;;;;;:::i;:::-;;:::i;9024:528::-;;;;;;;;;;;;;:::i;13442:36::-;;;;;;;;;;-1:-1:-1;13442:36:0;;;;;;;;;16196:375;;;;;;;;;;-1:-1:-1;16196:375:0;;;;;:::i;:::-;;:::i;12678:19::-;;;;;;;;;;-1:-1:-1;12678:19:0;;;;;;;;15054:167;;;;;;;;;;-1:-1:-1;15054:167:0;;;;;:::i;:::-;;:::i;23817:114::-;;;;;;;;;;-1:-1:-1;23817:114:0;;;;;:::i;:::-;;:::i;23939:130::-;;;;;;;;;;-1:-1:-1;23939:130:0;;;;;:::i;:::-;;:::i;15229:143::-;;;;;;;;;;-1:-1:-1;15229:143:0;;;;;:::i;:::-;15337:18;;;;15310:7;15337:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15229:143;12919:57;;;;;;;;;;;;;;;;18348:110;;;;;;;;;;-1:-1:-1;18348:110:0;;;;;:::i;:::-;;:::i;11285:192::-;;;;;;;;;;-1:-1:-1;11285:192:0;;;;;:::i;:::-;;:::i;12650:21::-;;;;;;;;;;-1:-1:-1;12650:21:0;;;;;;;;;;;15380:161;15455:4;15472:39;10461:10;15495:7;15504:6;15472:8;:39::i;:::-;-1:-1:-1;15529:4:0;15380:161;;;;;:::o;5450:254::-;5326:22;:20;:22::i;:::-;5572:35:::1;5588:18;:16;:18::i;:::-;5572:15;:35::i;:::-;:40:::0;5564:109:::1;;;::::0;::::1;::::0;;15373:2:1;5564:109:0::1;::::0;::::1;15355:21:1::0;15412:2;15392:18;;;15385:30;15451:34;15431:18;;;15424:62;15522:26;15502:18;;;15495:54;15566:19;;5564:109:0::1;;;;;;;;;5684:4;:12:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;5450:254::o;15549:418::-;15655:4;15672:36;15682:6;15690:9;15701:6;15672:9;:36::i;:::-;15746:19;;;15719:24;15746:19;;;:11;:19;;;;;;;;10461:10;15746:33;;;;;;;;15798:26;;;;15790:79;;;;;;;12617:2:1;15790:79:0;;;12599:21:1;12656:2;12636:18;;;12629:30;12695:34;12675:18;;;12668:62;12766:10;12746:18;;;12739:38;12794:19;;15790:79:0;12589:230:1;15790:79:0;15880:57;15889:6;10461:10;15911:25;15930:6;15911:16;:25;:::i;:::-;15880:8;:57::i;:::-;-1:-1:-1;15955:4:0;;15549:418;-1:-1:-1;;;;15549:418:0:o;17171:248::-;17237:7;17276;;17265;:18;;17257:73;;;;;;;10156:2:1;17257:73:0;;;10138:21:1;10195:2;10175:18;;;10168:30;10234:34;10214:18;;;10207:62;10305:12;10285:18;;;10278:40;10335:19;;17257:73:0;10128:232:1;17257:73:0;17341:19;17364:10;:8;:10::i;:::-;17341:33;-1:-1:-1;17392:19:0;17341:33;17392:7;:19;:::i;:::-;17385:26;17171:248;-1:-1:-1;;;17171:248:0:o;15975:213::-;10461:10;16063:4;16112:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;16063:4;;16080:78;;16103:7;;16112:45;;16147:10;;16112:45;:::i;7882:97::-;5326:22;:20;:22::i;:::-;7953:11:::1;:18:::0;;;::::1;::::0;::::1;::::0;;7882:97::o;18229:111::-;11006:7;11033:6;11095:23;11033:6;10461:10;11095:23;11087:68;;;;;;;13026:2:1;11087:68:0;;;13008:21:1;;;13045:18;;;13038:30;13104:34;13084:18;;;13077:62;13156:18;;11087:68:0;12998:182:1;11087:68:0;18298:27:::1;;;::::0;;;:18:::1;:27;::::0;;;;:34;;;::::1;18328:4;18298:34;::::0;;18229:111::o;16707:456::-;16797:7;16836;;16825;:18;;16817:62;;;;;;;12257:2:1;16817:62:0;;;12239:21:1;12296:2;12276:18;;;12269:30;12335:33;12315:18;;;12308:61;12386:18;;16817:62:0;12229:181:1;16817:62:0;16895:17;16890:266;;16929:28;16960:25;16971:7;16980:4;16960:10;:25::i;:::-;17007:9;;-1:-1:-1;17000:16:0;;-1:-1:-1;17000:16:0;16890:266;17049:28;17080:25;17091:7;17100:4;17080:10;:25::i;:::-;17127:17;;;;-1:-1:-1;17120:24:0;;-1:-1:-1;17120:24:0;8054:16;8047:23;;7987:91;:::o;7591:283::-;5326:22;:20;:22::i;:::-;7707:19:::1;:17;:19::i;:::-;7699:83;;;::::0;::::1;::::0;;9318:2:1;7699:83:0::1;::::0;::::1;9300:21:1::0;9357:2;9337:18;;;9330:30;9396:34;9376:18;;;9369:62;9467:21;9447:18;;;9440:49;9506:19;;7699:83:0::1;9290:241:1::0;7699:83:0::1;7793:12;7808:18;:16;:18::i;:::-;7793:33;;7837:5;6609:4:::0;;;;;6548:73;7837:5:::1;:13;;;7851:4;7857:8;;7837:29;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7688:186;7591:283:::0;;:::o;14848:198::-;14938:20;;;14914:7;14938:20;;;:11;:20;;;;;;;;14934:49;;;-1:-1:-1;14967:16:0;;;;;;:7;:16;;;;;;;14848:198::o;14934:49::-;15021:16;;;;;;;:7;:16;;;;;;15001:37;;:19;:37::i;11183:94::-;11006:7;11033:6;11095:23;11033:6;10461:10;11095:23;11087:68;;;;;;;13026:2:1;11087:68:0;;;13008:21:1;;;13045:18;;;13038:30;13104:34;13084:18;;;13077:62;13156:18;;11087:68:0;12998:182:1;11087:68:0;11248:21:::1;11266:1;11248:9;:21::i;:::-;11183:94::o:0;6973:610::-;5326:22;:20;:22::i;:::-;7094:19:::1;:17;:19::i;:::-;7086:83;;;::::0;::::1;::::0;;9318:2:1;7086:83:0::1;::::0;::::1;9300:21:1::0;9357:2;9337:18;;;9330:30;9396:34;9376:18;;;9369:62;9467:21;9447:18;;;9440:49;9506:19;;7086:83:0::1;9290:241:1::0;7086:83:0::1;7180:19;7202:11:::0;;;7224:18;;::::1;::::0;::::1;::::0;;7202:11;::::1;;;::::0;7268:18:::1;:16;:18::i;:::-;7253:33;;7302:6;7297:240;7314:19:::0;;::::1;7297:240;;;7355:14;7372:8;;7381:1;7372:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;7355:28;;7402:5;6609:4:::0;;;;;6548:73;7402:5:::1;:29;::::0;;;;:15:::1;5800::1::0;;;7402:29:0::1;::::0;::::1;5782:34:1::0;5852:15;;;5832:18;;;5825:43;7402:15:0;;;::::1;::::0;::::1;::::0;5694:18:1;;7402:29:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7398:128;;;7452:58;7467:6;7475:9;7486:23;7502:6;7486:15;:23::i;:::-;7452:14;:58::i;:::-;-1:-1:-1::0;7335:3:0;::::1;::::0;::::1;:::i;:::-;;;;7297:240;;;-1:-1:-1::0;;7547:11:0::1;:28:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;6973:610:0:o;24077:101::-;11006:7;11033:6;11095:23;11033:6;10461:10;11095:23;11087:68;;;;;;;13026:2:1;11087:68:0;;;13008:21:1;;;13045:18;;;13038:30;13104:34;13084:18;;;13077:62;13156:18;;11087:68:0;12998:182:1;11087:68:0;24148:11:::1;:22:::0;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;24077:101::o;9024:528::-;9072:7;9157:91;4493:66;25080:42;9226:4;25869:42;9157:24;:91::i;16196:375::-;10461:10;16289:4;16333:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;16386:35;;;;16378:85;;;;;;;14967:2:1;16378:85:0;;;14949:21:1;15006:2;14986:18;;;14979:30;15045:34;15025:18;;;15018:62;15116:7;15096:18;;;15089:35;15141:19;;16378:85:0;14939:227:1;16378:85:0;16474:67;10461:10;16497:7;16506:34;16525:15;16506:16;:34;:::i;16474:67::-;-1:-1:-1;16559:4:0;;16196:375;-1:-1:-1;;;16196:375:0:o;15054:167::-;15132:4;15149:42;10461:10;15173:9;15184:6;15149:9;:42::i;23817:114::-;11006:7;11033:6;11095:23;11033:6;10461:10;11095:23;11087:68;;;;;;;13026:2:1;11087:68:0;;;13008:21:1;;;13045:18;;;13038:30;13104:34;13084:18;;;13077:62;13156:18;;11087:68:0;12998:182:1;11087:68:0;23896:15:::1;:27:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;23817:114::o;23939:130::-;11006:7;11033:6;11095:23;11033:6;10461:10;11095:23;11087:68;;;;;;;13026:2:1;11087:68:0;;;13008:21:1;;;13045:18;;;13038:30;13104:34;13084:18;;;13077:62;13156:18;;11087:68:0;12998:182:1;11087:68:0;24048:13:::1;12741:2;24048;:13;:::i;:::-;24039:22;::::0;:6;:22:::1;:::i;:::-;24018:18;:43:::0;-1:-1:-1;23939:130:0:o;18348:110::-;11006:7;11033:6;11095:23;11033:6;10461:10;11095:23;11087:68;;;;;;;13026:2:1;11087:68:0;;;13008:21:1;;;13045:18;;;13038:30;13104:34;13084:18;;;13077:62;13156:18;;11087:68:0;12998:182:1;11087:68:0;18415:27:::1;;18445:5;18415:27:::0;;;:18:::1;:27;::::0;;;;:35;;;::::1;::::0;;18348:110::o;11285:192::-;11006:7;11033:6;11095:23;11033:6;10461:10;11095:23;11087:68;;;;;;;13026:2:1;11087:68:0;;;13008:21:1;;;13045:18;;;13038:30;13104:34;13084:18;;;13077:62;13156:18;;11087:68:0;12998:182:1;11087:68:0;11374:22:::1;::::0;::::1;11366:73;;;::::0;::::1;::::0;;11041:2:1;11366:73:0::1;::::0;::::1;11023:21:1::0;11080:2;11060:18;;;11053:30;11119:34;11099:18;;;11092:62;11190:8;11170:18;;;11163:36;11216:19;;11366:73:0::1;11013:228:1::0;11366:73:0::1;11450:19;11460:8;11450:9;:19::i;:::-;11285:192:::0;:::o;1235:452::-;1346:12;1372:14;1388;1406:26;1417:6;1425;1406:10;:26::i;:::-;1578:32;;4514:66:1;4609:2;4605:15;;;4601:24;;1578:32:0;;;4589:37:1;4660:15;;;4656:24;4642:12;;;4635:46;1371:61:0;;-1:-1:-1;1371:61:0;-1:-1:-1;1542:7:0;;4697:12:1;;1578:32:0;;;;;;;;;;;;1568:43;;;;;;1630:12;1481:194;;;;;;;;;5018:66:1;5006:79;;5122:2;5118:15;;;;5135:66;5114:88;5110:1;5101:11;;5094:109;5228:2;5219:12;;5212:28;;;;5265:2;5256:12;;5249:28;5302:2;5293:12;;4996:315;1481:194:0;;;;;;;;;;;;;;1471:205;;1481:194;1471:205;;;;;1235:452;-1:-1:-1;;;;;;;1235:452:0:o;2680:281::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;2841:6:0;2832:15;;:6;:15;;;2828:56;;;2869:6;;2877;2828:56;-1:-1:-1;2902:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2680:281::o;3214:603::-;3298:12;3344:3;:10;;;3331:23;;:3;:10;;;:23;;;3323:32;;;;;;3631:10;;3643;;;;;3655:7;;;;;3620:43;;6573:42:1;6642:15;;;3620:43:0;;;6624:34:1;6694:15;;;;6674:18;;;6667:43;6758:8;6746:21;;;6726:18;;;;6719:49;;;;3620:43:0;;;;;;;;;6536:18:1;;;3620:43:0;;;3610:54;;;;;;;5018:66:1;3487:254:0;;;5006:79:1;5118:15;;;;5135:66;5114:88;5101:11;;;5094:109;5219:12;;;5212:28;2123:66:0;5256:12:1;;;5249:28;5293:12;;3487:254:0;;;;;;;;;;;;;3451:313;;3487:254;3451:313;;;;;3214:603;-1:-1:-1;;;3214:603:0:o;21031:335::-;21124:19;;;21116:68;;;;;;;14203:2:1;21116:68:0;;;14185:21:1;14242:2;14222:18;;;14215:30;14281:34;14261:18;;;14254:62;14352:6;14332:18;;;14325:34;14376:19;;21116:68:0;14175:226:1;21116:68:0;21203:21;;;21195:68;;;;;;;11448:2:1;21195:68:0;;;11430:21:1;11487:2;11467:18;;;11460:30;11526:34;11506:18;;;11499:62;11597:4;11577:18;;;11570:32;11619:19;;21195:68:0;11420:224:1;21195:68:0;21274:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21326:32;;15742:25:1;;;21326:32:0;;15715:18:1;21326:32:0;;;;;;;21031:335;;;:::o;24579:67::-;11006:7;11033:6;11095:23;11033:6;10461:10;11095:23;11087:68;;;;;;;13026:2:1;11087:68:0;;;13008:21:1;;;13045:18;;;13038:30;13104:34;13084:18;;;13077:62;13156:18;;11087:68:0;12998:182:1;24416:157:0;24489:4;24513:18;24523:7;24513:9;:18::i;21374:963::-;21454:57;21494:4;21500:2;21504:6;21454:39;:57::i;:::-;21532:18;;;21524:68;;;;;;;13797:2:1;21524:68:0;;;13779:21:1;13836:2;13816:18;;;13809:30;13875:34;13855:18;;;13848:62;13946:7;13926:18;;;13919:35;13971:19;;21524:68:0;13769:227:1;21524:68:0;21611:16;;;21603:64;;;;;;;8914:2:1;21603:64:0;;;8896:21:1;8953:2;8933:18;;;8926:30;8992:34;8972:18;;;8965:62;9063:5;9043:18;;;9036:33;9086:19;;21603:64:0;8886:225:1;21603:64:0;21695:1;21686:6;:10;21678:64;;;;;;;13387:2:1;21678:64:0;;;13369:21:1;13426:2;13406:18;;;13399:30;13465:34;13445:18;;;13438:62;13536:11;13516:18;;;13509:39;13565:19;;21678:64:0;13359:231:1;21678:64:0;21771:15;21781:4;21771:9;:15::i;:::-;21761:6;:25;;21753:86;;;;;;;9738:2:1;21753:86:0;;;9720:21:1;9777:2;9757:18;;;9750:30;9816:34;9796:18;;;9789:62;9887:19;9867:18;;;9860:47;9924:19;;21753:86:0;9710:239:1;21753:86:0;21854:28;21885:24;21903:4;21885:9;:24::i;:::-;21959:18;;21992:8;;21854:55;;-1:-1:-1;21935:42:0;;;;21992:8;;;;;21991:9;:24;;;;-1:-1:-1;22004:11:0;;;;21991:24;:35;;;;;22019:7;21991:35;:51;;;;-1:-1:-1;22038:4:0;;;22030:12;;;22038:4;;22030:12;;21991:51;21988:118;;;22058:36;22075:18;;22058:16;:36::i;:::-;22151:24;;;22118:12;22151:24;;;:18;:24;;;;;;22133:4;;22151:24;;;:50;;-1:-1:-1;22179:22:0;;;;;;;:18;:22;;;;;;;;22151:50;:82;;;-1:-1:-1;22212:4:0;;;22206:10;;;22212:4;;22206:10;;;;:26;;-1:-1:-1;22228:4:0;;;22220:12;;;22228:4;;22220:12;;22206:26;22148:128;;;-1:-1:-1;22259:5:0;22148:128;22288:41;22303:4;22309:2;22313:6;22321:7;22288:14;:41::i;:::-;21443:894;;;21374:963;;;:::o;20317:158::-;20358:7;20379:15;20396;20415:19;:17;:19::i;:::-;20378:56;;-1:-1:-1;20378:56:0;-1:-1:-1;20452:15:0;20378:56;;20452:15;:::i;:::-;20445:22;;;;20317:158;:::o;19024:348::-;19097:36;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19097:36:0;19158:29;19170:7;19179;19158:11;:29::i;:::-;19146:41;;19285:52;19297:9;19308:7;19317;19326:10;:8;:10::i;:::-;19285:11;:52::i;:::-;19261:20;;;19198:139;19245:14;;;19198:139;19218:25;;;19198:139;;;19024:348;;;;:::o;25290:441::-;25350:4;25374:38;25401:10;25374:26;:38::i;11485:173::-;11541:16;11560:6;;;11577:17;;;;;;;;;;11610:40;;11560:6;;;;;;;11610:40;;11541:16;11610:40;11530:128;11485:173;:::o;24232:178::-;24327:30;24337:5;24344:3;24349:7;24327:9;:30::i;:::-;24232:178;;;:::o;794:349::-;869:14;885;930:6;920:16;;:6;:16;;;;912:66;;;;;;;11851:2:1;912:66:0;;;11833:21:1;11890:2;11870:18;;;11863:30;11929:34;11909:18;;;11902:62;12000:7;11980:18;;;11973:35;12025:19;;912:66:0;11823:227:1;912:66:0;1017:6;1008:15;;:6;:15;;;:53;;1046:6;1054;1008:53;;;1027:6;1035;1008:53;989:72;;-1:-1:-1;989:72:0;-1:-1:-1;1080:20:0;;;1072:63;;;;;;;14608:2:1;1072:63:0;;;14590:21:1;14647:2;14627:18;;;14620:30;14686:32;14666:18;;;14659:60;14736:18;;1072:63:0;14580:180:1;1072:63:0;794:349;;;;;:::o;6629:336::-;6752:19;:17;:19::i;:::-;6748:210;;;6792:11;;;;;;;6788:58;;;6629:336;;;:::o;6788:58::-;6609:4;;;;6860:45;6906:18;:16;:18::i;:::-;6860:86;;;;;;;;;;6120:42:1;6189:15;;;6860:86:0;;;6171:34:1;6241:15;;;6221:18;;;6214:43;6293:15;;;6273:18;;;6266:43;6325:18;;;6318:34;;;6082:19;;6860:86:0;6064:294:1;23206:121:0;13897:8;:15;;;;;;;;23303::::1;::::0;23278:41:::1;::::0;23295:6;;23303:15:::1;;23278:16;:41::i;:::-;-1:-1:-1::0;13935:8:0;:16;;;;;;23206:121::o;22420:776::-;22531:28;22562;22573:7;22582;22562:10;:28::i;:::-;22609:19;;;;;;;:11;:19;;;;;;22531:59;;-1:-1:-1;22609:19:0;;22605:111;;;22681:15;;;;;;;:7;:15;;;;;;:23;;22697:7;;22681:23;:::i;:::-;22663:15;;;;;;;:7;:15;;;;;:41;22605:111;22730:22;;;;;;;:11;:22;;;;;;;;22726:126;;;22823:17;;;;22804:18;;;;;;;:7;:18;;;;;;:36;;22823:17;22804:36;:::i;:::-;22783:18;;;;;;;:7;:18;;;;;:57;22726:126;22898:9;;22882:15;;;22898:9;22882:15;;;:7;:15;;;;;;:25;;22898:9;22882:25;:::i;:::-;22864:15;;;;;;;;:7;:15;;;;;;;;:43;;;;22958:17;;;22939:18;;;;;;;;;;:36;;22958:17;22939:36;:::i;:::-;22918:18;;;;;;;:7;:18;;;;;;;:57;;;;22998:6;;;23006;;;;22986:27;;22998:6;22986:11;:27::i;:::-;23024:41;23039:1;:12;;;23052:1;:12;;;23024:14;:41::i;:::-;23098:9;23081:46;;23090:6;23081:46;;;23109:1;:17;;;23081:46;;;;15742:25:1;;15730:2;15715:18;;15697:76;23081:46:0;;;;;;;;23168:4;23143:45;;23152:6;23143:45;;;23175:1;:12;;;23143:45;;;;15742:25:1;;15730:2;15715:18;;15697:76;23143:45:0;;;;;;;;22518:678;22420:776;;;;:::o;20483:540::-;20580:7;;20616;;20533;;;;;20634:279;20658:9;:16;20654:20;;20634:279;;;20724:7;20700;:21;20708:9;20718:1;20708:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;20700:21;;;;;;;;;;;;;:31;;:66;;;20759:7;20735;:21;20743:9;20753:1;20743:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;20735:21;;;;;;;;;;;;;:31;20700:66;20696:97;;;20776:7;;20785;;20768:25;;;;;;;20483:540;;:::o;20696:97::-;20826:7;:21;20834:9;20844:1;20834:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;20826:21;;;;;;;;;;;;;20818:29;;:7;:29;:::i;:::-;20808:39;;20880:7;:21;20888:9;20898:1;20888:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;20880:21;;;;;;;;;;;;;20872:29;;:7;:29;:::i;:::-;20862:39;-1:-1:-1;20676:3:0;;;;:::i;:::-;;;;20634:279;;;;20945:7;;20937;;:15;;;;:::i;:::-;20927:7;:25;20923:56;;;20962:7;;20971;;20954:25;;;;;;20483:540;;:::o;20923:56::-;20998:7;;21007;;-1:-1:-1;20483:540:0;-1:-1:-1;20483:540:0:o;19380:391::-;19454:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19454:28:0;19501:7;19497:90;;19525:17;;;:27;;;19567:8;;19497:90;19614:8;:12;19627:3;;19606:20;;:7;:20;:::i;:::-;:24;;;;:::i;:::-;19597:6;;;:33;19664:18;;19683:3;;19656:26;;:7;:26;:::i;:::-;:30;;;;:::i;:::-;19641:12;;;:45;;;19725:6;;;;19717:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;19697:17;;;:47;19380:391;;;;:::o;19779:530::-;19904:15;;;;20001:19;20009:11;20001:7;:19;:::i;:::-;19991:29;;20037:7;20033:69;;-1:-1:-1;20068:7:0;;-1:-1:-1;20086:1:0;;-1:-1:-1;20086:1:0;20061:29;;20033:69;20128:11;20121:1;:6;;;:18;;;;:::i;:::-;20114:25;;20176:11;20163:1;:12;;;:24;;;;:::i;:::-;20150:37;-1:-1:-1;20150:37:0;20217:12;20225:4;20217:7;:12;:::i;:::-;:23;;;;:::i;:::-;20198:42;;19779:530;;;;;;;;;;:::o;8196:130::-;8271:4;8295:23;8299:18;8306:10;8674:15;-1:-1:-1;8661:28:0;8582:115;8299:18;8781:11;;8705:95;23335:474;23444:16;;;23458:1;23444:16;;;;;;;;23420:21;;23444:16;;;;;;;;;;-1:-1:-1;23444:16:0;23420:40;;23489:4;23471;23476:1;23471:7;;;;;;;;:::i;:::-;;;;;;:23;;;;;;;;;;;23515:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23505:4;23510:1;23505:7;;;;;;;;:::i;:::-;:23;;;;:7;;;;;;;;;:23;23573:6;;23541:53;;23558:4;;23573:6;;;;23582:11;23541:8;:53::i;:::-;23607:6;;:192;;;;;:6;;;;;;;:57;;:192;;23679:11;;23705:1;;23721:4;;23748:9;;23773:15;;23607:192;;;:::i;18599:123::-;18677:4;18667:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;18692:11:0;:22;;18710:4;;18692:11;:15;;:22;;18710:4;;18692:22;:::i;:::-;;;;-1:-1:-1;;;;18599:123:0:o;18732:284::-;18839:10;18815:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;18885:4:0;18865:26;;;;:11;:26;;;;;;;;18862:101;;;18933:4;18917:22;;;;:7;:22;;;;;:34;;18941:10;;18917:22;:34;;18941:10;;18917:34;:::i;:::-;;;;-1:-1:-1;;18862:101:0;18989:4;18973:22;;;;:7;:22;;;;;:35;;18998:10;;18973:22;:35;;18998:10;;18973:35;:::i;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:2;;159:1;156;149:12;108:2;-1:-1:-1;182:20:1;;225:18;214:30;;211:2;;;257:1;254;247:12;211:2;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:2;;;371:1;368;361:12;386:247;445:6;498:2;486:9;477:7;473:23;469:32;466:2;;;514:1;511;504:12;466:2;553:9;540:23;572:31;597:5;572:31;:::i;638:251::-;708:6;761:2;749:9;740:7;736:23;732:32;729:2;;;777:1;774;767:12;729:2;809:9;803:16;828:31;853:5;828:31;:::i;894:388::-;962:6;970;1023:2;1011:9;1002:7;998:23;994:32;991:2;;;1039:1;1036;1029:12;991:2;1078:9;1065:23;1097:31;1122:5;1097:31;:::i;:::-;1147:5;-1:-1:-1;1204:2:1;1189:18;;1176:32;1217:33;1176:32;1217:33;:::i;:::-;1269:7;1259:17;;;981:301;;;;;:::o;1287:456::-;1364:6;1372;1380;1433:2;1421:9;1412:7;1408:23;1404:32;1401:2;;;1449:1;1446;1439:12;1401:2;1488:9;1475:23;1507:31;1532:5;1507:31;:::i;:::-;1557:5;-1:-1:-1;1614:2:1;1599:18;;1586:32;1627:33;1586:32;1627:33;:::i;:::-;1391:352;;1679:7;;-1:-1:-1;;;1733:2:1;1718:18;;;;1705:32;;1391:352::o;1748:315::-;1816:6;1824;1877:2;1865:9;1856:7;1852:23;1848:32;1845:2;;;1893:1;1890;1883:12;1845:2;1932:9;1919:23;1951:31;1976:5;1951:31;:::i;:::-;2001:5;2053:2;2038:18;;;;2025:32;;-1:-1:-1;;;1835:228:1:o;2068:437::-;2154:6;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:2;;;2231:1;2228;2221:12;2183:2;2271:9;2258:23;2304:18;2296:6;2293:30;2290:2;;;2336:1;2333;2326:12;2290:2;2375:70;2437:7;2428:6;2417:9;2413:22;2375:70;:::i;:::-;2464:8;;2349:96;;-1:-1:-1;2173:332:1;-1:-1:-1;;;;2173:332:1:o;2510:572::-;2605:6;2613;2621;2674:2;2662:9;2653:7;2649:23;2645:32;2642:2;;;2690:1;2687;2680:12;2642:2;2730:9;2717:23;2763:18;2755:6;2752:30;2749:2;;;2795:1;2792;2785:12;2749:2;2834:70;2896:7;2887:6;2876:9;2872:22;2834:70;:::i;:::-;2923:8;;-1:-1:-1;2808:96:1;-1:-1:-1;;3008:2:1;2993:18;;2980:32;3021:31;2980:32;3021:31;:::i;:::-;3071:5;3061:15;;;2632:450;;;;;:::o;3087:241::-;3143:6;3196:2;3184:9;3175:7;3171:23;3167:32;3164:2;;;3212:1;3209;3202:12;3164:2;3251:9;3238:23;3270:28;3292:5;3270:28;:::i;3333:245::-;3400:6;3453:2;3441:9;3432:7;3428:23;3424:32;3421:2;;;3469:1;3466;3459:12;3421:2;3501:9;3495:16;3520:28;3542:5;3520:28;:::i;3848:180::-;3907:6;3960:2;3948:9;3939:7;3935:23;3931:32;3928:2;;;3976:1;3973;3966:12;3928:2;-1:-1:-1;3999:23:1;;3918:110;-1:-1:-1;3918:110:1:o;4033:309::-;4098:6;4106;4159:2;4147:9;4138:7;4134:23;4130:32;4127:2;;;4175:1;4172;4165:12;4127:2;4211:9;4198:23;4188:33;;4271:2;4260:9;4256:18;4243:32;4284:28;4306:5;4284:28;:::i;6779:829::-;7029:42;7098:15;;;7080:34;;7007:2;7133;7151:18;;;7144:30;;;6992:18;;;7209:22;;;6959:4;;7288:6;;7262:2;7247:18;;6959:4;7322:260;7336:6;7333:1;7330:13;7322:260;;;7411:6;7398:20;7431:31;7456:5;7431:31;:::i;:::-;7487:14;;7475:27;;7557:15;;;;7522:12;;;;7358:1;7351:9;7322:260;;;-1:-1:-1;7599:3:1;6968:640;-1:-1:-1;;;;;;;;6968:640:1:o;8051:656::-;8163:4;8192:2;8221;8210:9;8203:21;8253:6;8247:13;8296:6;8291:2;8280:9;8276:18;8269:34;8321:1;8331:140;8345:6;8342:1;8339:13;8331:140;;;8440:14;;;8436:23;;8430:30;8406:17;;;8425:2;8402:26;8395:66;8360:10;;8331:140;;;8489:6;8486:1;8483:13;8480:2;;;8559:1;8554:2;8545:6;8534:9;8530:22;8526:31;8519:42;8480:2;-1:-1:-1;8623:2:1;8611:15;8628:66;8607:88;8592:104;;;;8698:2;8588:113;;8172:535;-1:-1:-1;;;8172:535:1:o;15778:1034::-;16048:4;16096:3;16085:9;16081:19;16127:6;16116:9;16109:25;16153:2;16191:6;16186:2;16175:9;16171:18;16164:34;16234:3;16229:2;16218:9;16214:18;16207:31;16258:6;16293;16287:13;16324:6;16316;16309:22;16362:3;16351:9;16347:19;16340:26;;16401:2;16393:6;16389:15;16375:29;;16422:1;16432:218;16446:6;16443:1;16440:13;16432:218;;;16511:13;;16526:42;16507:62;16495:75;;16625:15;;;;16590:12;;;;16468:1;16461:9;16432:218;;;-1:-1:-1;;16718:42:1;16706:55;;;;16701:2;16686:18;;16679:83;-1:-1:-1;;;16793:3:1;16778:19;16771:35;16667:3;16057:755;-1:-1:-1;;;16057:755:1:o;17259:128::-;17299:3;17330:1;17326:6;17323:1;17320:13;17317:2;;;17336:18;;:::i;:::-;-1:-1:-1;17372:9:1;;17307:80::o;17392:274::-;17432:1;17458;17448:2;;17493:77;17490:1;17483:88;17594:4;17591:1;17584:15;17622:4;17619:1;17612:15;17448:2;-1:-1:-1;17651:9:1;;17438:228::o;17671:482::-;17760:1;17803:5;17760:1;17817:330;17838:7;17828:8;17825:21;17817:330;;;17957:4;17889:66;17885:77;17879:4;17876:87;17873:2;;;17966:18;;:::i;:::-;18016:7;18006:8;18002:22;17999:2;;;18036:16;;;;17999:2;18115:22;;;;18075:15;;;;17817:330;;;17821:3;17735:418;;;;;:::o;18158:140::-;18216:5;18245:47;18286:4;18276:8;18272:19;18266:4;18352:5;18382:8;18372:2;;-1:-1:-1;18423:1:1;18437:5;;18372:2;18471:4;18461:2;;-1:-1:-1;18508:1:1;18522:5;;18461:2;18553:4;18571:1;18566:59;;;;18639:1;18634:130;;;;18546:218;;18566:59;18596:1;18587:10;;18610:5;;;18634:130;18671:3;18661:8;18658:17;18655:2;;;18678:18;;:::i;:::-;-1:-1:-1;;18734:1:1;18720:16;;18749:5;;18546:218;;18848:2;18838:8;18835:16;18829:3;18823:4;18820:13;18816:36;18810:2;18800:8;18797:16;18792:2;18786:4;18783:12;18779:35;18776:77;18773:2;;;-1:-1:-1;18885:19:1;;;18917:5;;18773:2;18964:34;18989:8;18983:4;18964:34;:::i;:::-;19094:6;19026:66;19022:79;19013:7;19010:92;19007:2;;;19105:18;;:::i;:::-;19143:20;;18362:807;-1:-1:-1;;;18362:807:1:o;19174:228::-;19214:7;19340:1;19272:66;19268:74;19265:1;19262:81;19257:1;19250:9;19243:17;19239:105;19236:2;;;19347:18;;:::i;:::-;-1:-1:-1;19387:9:1;;19226:176::o;19407:125::-;19447:4;19475:1;19472;19469:8;19466:2;;;19480:18;;:::i;:::-;-1:-1:-1;19517:9:1;;19456:76::o;19537:195::-;19576:3;19607:66;19600:5;19597:77;19594:2;;;19677:18;;:::i;:::-;-1:-1:-1;19724:1:1;19713:13;;19584:148::o;19737:184::-;19789:77;19786:1;19779:88;19886:4;19883:1;19876:15;19910:4;19907:1;19900:15;20115:184;20167:77;20164:1;20157:88;20264:4;20261:1;20254:15;20288:4;20285:1;20278:15;20493:154;20579:42;20572:5;20568:54;20561:5;20558:65;20548:2;;20637:1;20634;20627:12;20652:118;20738:5;20731:13;20724:21;20717:5;20714:32;20704:2;;20760:1;20757;20750:12

Swarm Source

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