ETH Price: $2,497.48 (+0.50%)

Token

Speculate (SPEC)
 

Overview

Max Total Supply

100,000,000 SPEC

Holders

201

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,380,507.642282686413479811 SPEC

Value
$0.00
0x4f7c070d38541514a3ff9e4cd25cefdbd31dae76
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xb3F55c5E...158CBE2BA
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
SPEC

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-31
*/

/*
   _____ ____  ____________
  / ___// __ \/ ____/ ____/
  \__ \/ /_/ / __/ / /     
 ___/ / ____/ /___/ /___   
/____/_/   /_____/\____/   
   _____                       __      __          ____  ___   ____ 
  / ___/____  ___  _______  __/ /___ _/ /____     / __ \/   | / __ \
  \__ \/ __ \/ _ \/ ___/ / / / / __ `/ __/ _ \   / / / / /| |/ / / /
 ___/ / /_/ /  __/ /__/ /_/ / / /_/ / /_/  __/  / /_/ / ___ / /_/ / 
/____/ .___/\___/\___/\__,_/_/\__,_/\__/\___/  /_____/_/  |_\____/

MULTIPLE STREAMS OF PASSIVE INCOME FROM CRYPTO? WELCOME TO SPECULATE DAO

TG: https://t.me/speculatedao
Website: https://SpeculateDAO.com
Medium: https://medium.com/@teamspeculate
Docs: https://speculate.gitbook.io/introduction/
Twitter: https://x.com/SpeculateDAO

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.24;

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

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

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

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

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

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

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

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract SPEC is Context, IERC20, Ownable {
    // Storage
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;

    // Constants
    uint256 private constant MAX_TAX_RATE = 5;
    uint8 private constant DECIMALS = 18;
    uint256 private constant TOTAL_SUPPLY = 100_000_000 * 10 ** DECIMALS;
    uint256 private constant TAX_DELIMITER = 100;
    uint256 private constant MIN_TAX_SWAP_THRESHOLD = (TOTAL_SUPPLY * 1) / 10000; // 0.01%
    uint256 private constant MAX_TAX_SWAP = (TOTAL_SUPPLY * 100) / 10000; // 1%
    string private constant NAME = unicode"Speculate";
    string private constant SYMBOL = unicode"SPEC";

    // Wallets
    address payable public marketingWallet;
    address payable public daoWallet;
    address private uniswapV2Pair;

    // Variables
    uint256 public marketingShare = 40; // Percentage of tax allocated to marketing wallet
    uint256 public daoShare = 60; // Percentage of tax allocated to DAO wallet
    uint256 public buyTax = MAX_TAX_RATE; // Buy tax rate as a percentage
    uint256 public sellTax = MAX_TAX_RATE; // Sell tax rate as a percentage
    uint256 public taxSwapThreshold = (TOTAL_SUPPLY * 5) / 10000; // Threshold to trigger token swap to ETH (0.05%)
    bool public tradingOpen;

    // State variables
    bool private inSwap = false; // Prevents re-entrancy during token swap

    // Interfaces
    IUniswapV2Router02 private uniswapV2Router;

    // Modifiers
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    // Events
    event TradingOpen();
    event TaxChanged(uint256 buyTax, uint256 sellTax);
    event RouterUpdated(address indexed newRouter, address indexed oldRouter);

    constructor(address _marketingWallet, address _daoWallet) {
        marketingWallet = payable(_marketingWallet);
        daoWallet = payable(_daoWallet);
        _balances[owner()] = TOTAL_SUPPLY;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[daoWallet] = true;
        emit Transfer(address(0), owner(), TOTAL_SUPPLY);
    }

    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 pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[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 override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "Transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }
        return true;
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "Transfer from the zero address");
        require(amount > 0, "Amount must be more than zero");
        uint256 taxAmount = 0;

        // Apply tax if neither sender nor recipient is excluded from fee
        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            // Buy transaction
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                taxAmount = amount * buyTax / TAX_DELIMITER;
            // Sell transaction
            } else if (to == uniswapV2Pair) {
                taxAmount = amount * sellTax / TAX_DELIMITER;
                uint256 contractTokenBalance = balanceOf(address(this));
                // Swap tokens for ETH if threshold is met
                if (!inSwap && contractTokenBalance > taxSwapThreshold) {
                    uint256 amountToSwap = (amount < contractTokenBalance && amount < MAX_TAX_SWAP) ? amount : (contractTokenBalance < MAX_TAX_SWAP) ? contractTokenBalance : MAX_TAX_SWAP;
                    swapTokensForEth(amountToSwap);
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] += taxAmount;
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] -= amount;
        _balances[to] += (amount - taxAmount);
        emit Transfer(from, to, amount - taxAmount);
    }

    // Swap tokens for ETH
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    // Distribute ETH to marketing and DAO wallets
    function sendETHToFee(uint256 amount) private {
        bool success;
        uint256 _marketingPart = amount * marketingShare / TAX_DELIMITER;
        if (_marketingPart > 0) {
            (success, ) = marketingWallet.call{value: _marketingPart}("");
            require(success, "Failed to send ETH");
        }
        uint256 _daoPart = amount - _marketingPart;
        if (_daoPart > 0){
            (success, ) = daoWallet.call{value: _daoPart}("");
            require(success, "Failed to send ETH");
        }
    }

    // Update DAO wallet address
    function setDaoWallet(address _daoWallet) external onlyOwner {
        daoWallet = payable(_daoWallet);
    }

    // Update marketing wallet address
    function setMarketingWallet(address _marketingWallet) external onlyOwner {
        marketingWallet = payable(_marketingWallet);
    }

    // Set tax distribution shares
    function setShareRatios(uint256 _marketingShare, uint256 _daoShare) external onlyOwner {
        require(_marketingShare + _daoShare == TAX_DELIMITER, "Shares must add up to 100");
        marketingShare = _marketingShare;
        daoShare = _daoShare;
    }

    // Set buy and sell tax rates
    function setTax(uint256 _buyTax, uint256 _sellTax) external onlyOwner {
        require(_buyTax <= MAX_TAX_RATE && _sellTax <= MAX_TAX_RATE, "Tax cannot be more than 5%");
        buyTax = _buyTax;
        sellTax = _sellTax;
        emit TaxChanged(_buyTax, _sellTax);
    }

    // Exclude or include account from fees
    function excludeFromFee(address account, bool value) external onlyOwner {
        _isExcludedFromFee[account] = value;
    }

    // Set threshold for token swap to ETH
    function setTaxSwapThreshold(uint256 threshold) external onlyOwner {
        require(threshold > MIN_TAX_SWAP_THRESHOLD, "Threshold cannot be less than 0.01%");
        require(threshold < MAX_TAX_SWAP, "Threshold cannot be more than 1%");
        taxSwapThreshold = threshold;
    }

    // Rescue ETH from contract
    function rescueETH() external onlyOwner {
        payable(owner()).transfer(address(this).balance);
    }

    // Rescue ERC20 tokens from contract
    function rescueToken(address tokenAddress) external onlyOwner {
        require(tokenAddress != address(this), "Cannot rescue contract's own tokens");
        IERC20 token = IERC20(tokenAddress);
        uint256 tokenBalance = token.balanceOf(address(this));
        require(tokenBalance > 0, "No tokens to rescue");
        bool success = token.transfer(owner(), tokenBalance);
        require(success, "ERC20 rescue failed");
    }

    // Open trading and add liquidity to Uniswap
    function openTrading() external onlyOwner {
        require(!tradingOpen, "Trading is already open");
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), type(uint256).max);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        tradingOpen = true;
        emit TradingOpen();
    }

    // Update the Uniswap router address
    function setRouterAddress(address newRouter) external onlyOwner {
        require(newRouter != address(0), "Router address cannot be zero address");
        address oldRouter = address(uniswapV2Router);
        uniswapV2Router = IUniswapV2Router02(newRouter);
        emit RouterUpdated(newRouter, oldRouter);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_daoWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newRouter","type":"address"},{"indexed":true,"internalType":"address","name":"oldRouter","type":"address"}],"name":"RouterUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"TaxChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daoShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daoWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_daoWallet","type":"address"}],"name":"setDaoWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingShare","type":"uint256"},{"internalType":"uint256","name":"_daoShare","type":"uint256"}],"name":"setShareRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"},{"internalType":"uint256","name":"_sellTax","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setTaxSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526028600755603c60085560056009556005600a556127106012600a6200002b919062000365565b6200003b906305f5e1006200037c565b620000489060056200037c565b62000054919062000396565b600b55600c805461ff00191690553480156200006e575f80fd5b50604051620022c1380380620022c18339810160408190526200009191620003d2565b5f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b038085166001600160a01b03199283161790925560058054928416929091169190911790556200010f6012600a62000365565b6200011f906305f5e1006200037c565b60015f620001345f546001600160a01b031690565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550600160035f6200016c6200024860201b60201c565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600454821684528284208054861682179055600554909116835291208054909216179055620001e65f546001600160a01b031690565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200021f6012600a62000365565b6200022f906305f5e1006200037c565b60405190815260200160405180910390a3505062000408565b5f546001600160a01b031690565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002aa57815f19048211156200028e576200028e62000256565b808516156200029c57918102915b93841c93908002906200026f565b509250929050565b5f82620002c2575060016200035f565b81620002d057505f6200035f565b8160018114620002e95760028114620002f45762000314565b60019150506200035f565b60ff84111562000308576200030862000256565b50506001821b6200035f565b5060208310610133831016604e8410600b841016171562000339575081810a6200035f565b6200034583836200026a565b805f19048211156200035b576200035b62000256565b0290505b92915050565b5f6200037560ff841683620002b2565b9392505050565b80820281158282048414176200035f576200035f62000256565b5f82620003b157634e487b7160e01b5f52601260045260245ffd5b500490565b80516001600160a01b0381168114620003cd575f80fd5b919050565b5f8060408385031215620003e4575f80fd5b620003ef83620003b6565b9150620003ff60208401620003b6565b90509250929050565b611eab80620004165f395ff3fe6080604052600436106101c8575f3560e01c8063698a5897116100f2578063a9059cbb11610092578063de2aa57d11610062578063de2aa57d14610537578063df8408fe14610556578063f2fde38b14610575578063ffb54a9914610594575f80fd5b8063a9059cbb146104ab578063c9567bf9146104ca578063cc1776d3146104de578063dd62ed3e146104f3575f80fd5b806375f0a874116100cd57806375f0a8741461042f57806388d19f1b1461044e5780638da5cb5b1461046357806395d89b411461047f575f80fd5b8063698a5897146103b057806370a08231146103e7578063715018a61461041b575f80fd5b806341cb87fc116101685780635d098b38116101385780635d098b381461033e5780635e7b655c1461035d57806364997e0114610372578063667f652614610391575f80fd5b806341cb87fc146102cc5780634460d3cf146102eb57806347d632001461030a5780634f7041a514610329575f80fd5b806318160ddd116101a357806318160ddd1461026857806320800a001461027c57806323b872dd14610292578063313ce567146102b1575f80fd5b806306fdde03146101d357806309218ee714610216578063095ea7b314610239575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b5060408051808201909152600981526853706563756c61746560b81b60208201525b60405161020d9190611a54565b60405180910390f35b348015610221575f80fd5b5061022b60075481565b60405190815260200161020d565b348015610244575f80fd5b50610258610253366004611ab4565b6105ad565b604051901515815260200161020d565b348015610273575f80fd5b5061022b6105c3565b348015610287575f80fd5b506102906105e3565b005b34801561029d575f80fd5b506102586102ac366004611ade565b61064f565b3480156102bc575f80fd5b506040516012815260200161020d565b3480156102d7575f80fd5b506102906102e6366004611b1c565b6106f8565b3480156102f6575f80fd5b50610290610305366004611b1c565b6107e1565b348015610315575f80fd5b50610290610324366004611b3e565b6109f9565b348015610334575f80fd5b5061022b60095481565b348015610349575f80fd5b50610290610358366004611b1c565b610a86565b348015610368575f80fd5b5061022b600b5481565b34801561037d575f80fd5b5061029061038c366004611b1c565b610ad1565b34801561039c575f80fd5b506102906103ab366004611b3e565b610b1c565b3480156103bb575f80fd5b506005546103cf906001600160a01b031681565b6040516001600160a01b03909116815260200161020d565b3480156103f2575f80fd5b5061022b610401366004611b1c565b6001600160a01b03165f9081526001602052604090205490565b348015610426575f80fd5b50610290610bea565b34801561043a575f80fd5b506004546103cf906001600160a01b031681565b348015610459575f80fd5b5061022b60085481565b34801561046e575f80fd5b505f546001600160a01b03166103cf565b34801561048a575f80fd5b506040805180820190915260048152635350454360e01b6020820152610200565b3480156104b6575f80fd5b506102586104c5366004611ab4565b610c5b565b3480156104d5575f80fd5b50610290610c67565b3480156104e9575f80fd5b5061022b600a5481565b3480156104fe575f80fd5b5061022b61050d366004611b5e565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610542575f80fd5b50610290610551366004611b95565b611035565b348015610561575f80fd5b50610290610570366004611bb9565b61116f565b348015610580575f80fd5b5061029061058f366004611b1c565b6111c2565b34801561059f575f80fd5b50600c546102589060ff1681565b5f6105b93384846111f4565b5060015b92915050565b5f6105d06012600a611cd9565b6105de906305f5e100611ce7565b905090565b5f546001600160a01b031633146106155760405162461bcd60e51b815260040161060c90611cfe565b60405180910390fd5b5f80546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561064c573d5f803e3d5ffd5b50565b5f61065b84848461132c565b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f1981146106ed57828110156106e05760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b606482015260840161060c565b6106ed85338584036111f4565b506001949350505050565b5f546001600160a01b031633146107215760405162461bcd60e51b815260040161060c90611cfe565b6001600160a01b0381166107855760405162461bcd60e51b815260206004820152602560248201527f526f7574657220616464726573732063616e6e6f74206265207a65726f206164604482015264647265737360d81b606482015260840161060c565b600c80546001600160a01b038381166201000081810262010000600160b01b03198516179094556040519390920416918291907f02dc5c233404867c793b749c6d644beb2277536d18a7e7974d3f238e4c6f1684905f90a35050565b5f546001600160a01b0316331461080a5760405162461bcd60e51b815260040161060c90611cfe565b306001600160a01b0382160361086e5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742072657363756520636f6e74726163742773206f776e20746f6b604482015262656e7360e81b606482015260840161060c565b6040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156108b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d89190611d33565b90505f811161091f5760405162461bcd60e51b81526020600482015260136024820152724e6f20746f6b656e7320746f2072657363756560681b604482015260640161060c565b5f826001600160a01b031663a9059cbb6109405f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af115801561098a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ae9190611d4a565b9050806109f35760405162461bcd60e51b8152602060048201526013602482015272115490cc8c081c995cd8dd594819985a5b1959606a1b604482015260640161060c565b50505050565b5f546001600160a01b03163314610a225760405162461bcd60e51b815260040161060c90611cfe565b6064610a2e8284611d65565b14610a7b5760405162461bcd60e51b815260206004820152601960248201527f536861726573206d7573742061646420757020746f2031303000000000000000604482015260640161060c565b600791909155600855565b5f546001600160a01b03163314610aaf5760405162461bcd60e51b815260040161060c90611cfe565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610afa5760405162461bcd60e51b815260040161060c90611cfe565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610b455760405162461bcd60e51b815260040161060c90611cfe565b60058211158015610b57575060058111155b610ba35760405162461bcd60e51b815260206004820152601a60248201527f5461782063616e6e6f74206265206d6f7265207468616e203525000000000000604482015260640161060c565b6009829055600a81905560408051838152602081018390527f4ac0d6b0d694ec6c120242feaca94cfb6fbfe646756cd7026301e3a5984f0450910160405180910390a15050565b5f546001600160a01b03163314610c135760405162461bcd60e51b815260040161060c90611cfe565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f6105b933848461132c565b5f546001600160a01b03163314610c905760405162461bcd60e51b815260040161060c90611cfe565b600c5460ff1615610ce35760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161060c565b600c805462010000600160b01b031916757a250d5630b4cf539739df2c5dacb4c659f2488d00001790819055610d2c9030906001600160a01b0362010000909104165f196111f4565b600c60029054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da19190611d78565b6001600160a01b031663c9c6539630600c60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e259190611d78565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610e6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e939190611d78565b600680546001600160a01b039283166001600160a01b0319909116179055600c546201000090041663f305d7194730610ee0816001600160a01b03165f9081526001602052604090205490565b5f80610ef35f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610f59573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f7e9190611d93565b5050600654600c5460405163095ea7b360e01b81526001600160a01b0362010000909204821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610fd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffd9190611d4a565b50600c805460ff191660011790556040517f08fd3d05bd9c1e39a2044b0a4e2fed4621113adaeeae8fc57e9f4a06777ecf07905f90a1565b5f546001600160a01b0316331461105e5760405162461bcd60e51b815260040161060c90611cfe565b61271061106d6012600a611cd9565b61107b906305f5e100611ce7565b611086906001611ce7565b6110909190611dbe565b81116110ea5760405162461bcd60e51b815260206004820152602360248201527f5468726573686f6c642063616e6e6f74206265206c657373207468616e20302e60448201526230312560e81b606482015260840161060c565b6127106110f96012600a611cd9565b611107906305f5e100611ce7565b611112906064611ce7565b61111c9190611dbe565b811061116a5760405162461bcd60e51b815260206004820181905260248201527f5468726573686f6c642063616e6e6f74206265206d6f7265207468616e203125604482015260640161060c565b600b55565b5f546001600160a01b031633146111985760405162461bcd60e51b815260040161060c90611cfe565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146111eb5760405162461bcd60e51b815260040161060c90611cfe565b61064c816116be565b6001600160a01b03831661124a5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f2061646472657373000000604482015260640161060c565b6001600160a01b0382166112a05760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f20616464726573730000000000604482015260640161060c565b6001600160a01b038084165f908152600260209081526040808320938616835292905220548114611327576001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b505050565b6001600160a01b0383166113825760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161060c565b5f81116113d15760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d757374206265206d6f7265207468616e207a65726f000000604482015260640161060c565b6001600160a01b0383165f9081526003602052604081205460ff1615801561141157506001600160a01b0383165f9081526003602052604090205460ff16155b156115a1576006546001600160a01b0385811691161480156114475750600c546001600160a01b03848116620100009092041614155b1561146d5760646009548361145c9190611ce7565b6114669190611dbe565b90506115a1565b6006546001600160a01b03908116908416036115a1576064600a54836114939190611ce7565b61149d9190611dbe565b305f90815260016020526040902054600c5491925090610100900460ff161580156114c95750600b5481115b1561159f575f818410801561150e57506127106114e86012600a611cd9565b6114f6906305f5e100611ce7565b611501906064611ce7565b61150b9190611dbe565b84105b611587576127106115216012600a611cd9565b61152f906305f5e100611ce7565b61153a906064611ce7565b6115449190611dbe565b8210611581576127106115596012600a611cd9565b611567906305f5e100611ce7565b611572906064611ce7565b61157c9190611dbe565b611589565b81611589565b835b90506115948161177c565b61159d476118ef565b505b505b801561160b57305f90815260016020526040812080548392906115c5908490611d65565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b0384165f9081526001602052604081208054849290611632908490611ddd565b9091555061164290508183611ddd565b6001600160a01b0384165f9081526001602052604081208054909190611669908490611d65565b90915550506001600160a01b038084169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6116a78486611ddd565b60405190815260200160405180910390a350505050565b6001600160a01b0381166117235760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b600c805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106117be576117be611df0565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190611d78565b8160018151811061186657611866611df0565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b8152620100009091049091169063791ac947906118b39085905f90869030904290600401611e04565b5f604051808303815f87803b1580156118ca575f80fd5b505af11580156118dc573d5f803e3d5ffd5b5050600c805461ff001916905550505050565b5f806064600754846119019190611ce7565b61190b9190611dbe565b905080156119aa576004546040516001600160a01b039091169082905f81818185875af1925050503d805f811461195d576040519150601f19603f3d011682016040523d82523d5f602084013e611962565b606091505b505080925050816119aa5760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b604482015260640161060c565b5f6119b58285611ddd565b905080156109f3576005546040516001600160a01b039091169082905f81818185875af1925050503d805f8114611a07576040519150601f19603f3d011682016040523d82523d5f602084013e611a0c565b606091505b505080935050826109f35760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b604482015260640161060c565b5f602080835283518060208501525f5b81811015611a8057858101830151858201604001528201611a64565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461064c575f80fd5b5f8060408385031215611ac5575f80fd5b8235611ad081611aa0565b946020939093013593505050565b5f805f60608486031215611af0575f80fd5b8335611afb81611aa0565b92506020840135611b0b81611aa0565b929592945050506040919091013590565b5f60208284031215611b2c575f80fd5b8135611b3781611aa0565b9392505050565b5f8060408385031215611b4f575f80fd5b50508035926020909101359150565b5f8060408385031215611b6f575f80fd5b8235611b7a81611aa0565b91506020830135611b8a81611aa0565b809150509250929050565b5f60208284031215611ba5575f80fd5b5035919050565b801515811461064c575f80fd5b5f8060408385031215611bca575f80fd5b8235611bd581611aa0565b91506020830135611b8a81611bac565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c3357815f1904821115611c1957611c19611be5565b80851615611c2657918102915b93841c9390800290611bfe565b509250929050565b5f82611c49575060016105bd565b81611c5557505f6105bd565b8160018114611c6b5760028114611c7557611c91565b60019150506105bd565b60ff841115611c8657611c86611be5565b50506001821b6105bd565b5060208310610133831016604e8410600b8410161715611cb4575081810a6105bd565b611cbe8383611bf9565b805f1904821115611cd157611cd1611be5565b029392505050565b5f611b3760ff841683611c3b565b80820281158282048414176105bd576105bd611be5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611d43575f80fd5b5051919050565b5f60208284031215611d5a575f80fd5b8151611b3781611bac565b808201808211156105bd576105bd611be5565b5f60208284031215611d88575f80fd5b8151611b3781611aa0565b5f805f60608486031215611da5575f80fd5b8351925060208401519150604084015190509250925092565b5f82611dd857634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105bd576105bd611be5565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611e545784516001600160a01b031683529383019391830191600101611e2f565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204d9f4d2da69909d6c9d0d785b8155c135ab772414ae459b0d9703c0ef8a0490c64736f6c63430008180033000000000000000000000000a94f2d31ea9931ae235dbe79b7667bbc1ef5236b000000000000000000000000192db7d02eaeed183d3638e6f185627ba9ffb1ab

Deployed Bytecode

0x6080604052600436106101c8575f3560e01c8063698a5897116100f2578063a9059cbb11610092578063de2aa57d11610062578063de2aa57d14610537578063df8408fe14610556578063f2fde38b14610575578063ffb54a9914610594575f80fd5b8063a9059cbb146104ab578063c9567bf9146104ca578063cc1776d3146104de578063dd62ed3e146104f3575f80fd5b806375f0a874116100cd57806375f0a8741461042f57806388d19f1b1461044e5780638da5cb5b1461046357806395d89b411461047f575f80fd5b8063698a5897146103b057806370a08231146103e7578063715018a61461041b575f80fd5b806341cb87fc116101685780635d098b38116101385780635d098b381461033e5780635e7b655c1461035d57806364997e0114610372578063667f652614610391575f80fd5b806341cb87fc146102cc5780634460d3cf146102eb57806347d632001461030a5780634f7041a514610329575f80fd5b806318160ddd116101a357806318160ddd1461026857806320800a001461027c57806323b872dd14610292578063313ce567146102b1575f80fd5b806306fdde03146101d357806309218ee714610216578063095ea7b314610239575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b5060408051808201909152600981526853706563756c61746560b81b60208201525b60405161020d9190611a54565b60405180910390f35b348015610221575f80fd5b5061022b60075481565b60405190815260200161020d565b348015610244575f80fd5b50610258610253366004611ab4565b6105ad565b604051901515815260200161020d565b348015610273575f80fd5b5061022b6105c3565b348015610287575f80fd5b506102906105e3565b005b34801561029d575f80fd5b506102586102ac366004611ade565b61064f565b3480156102bc575f80fd5b506040516012815260200161020d565b3480156102d7575f80fd5b506102906102e6366004611b1c565b6106f8565b3480156102f6575f80fd5b50610290610305366004611b1c565b6107e1565b348015610315575f80fd5b50610290610324366004611b3e565b6109f9565b348015610334575f80fd5b5061022b60095481565b348015610349575f80fd5b50610290610358366004611b1c565b610a86565b348015610368575f80fd5b5061022b600b5481565b34801561037d575f80fd5b5061029061038c366004611b1c565b610ad1565b34801561039c575f80fd5b506102906103ab366004611b3e565b610b1c565b3480156103bb575f80fd5b506005546103cf906001600160a01b031681565b6040516001600160a01b03909116815260200161020d565b3480156103f2575f80fd5b5061022b610401366004611b1c565b6001600160a01b03165f9081526001602052604090205490565b348015610426575f80fd5b50610290610bea565b34801561043a575f80fd5b506004546103cf906001600160a01b031681565b348015610459575f80fd5b5061022b60085481565b34801561046e575f80fd5b505f546001600160a01b03166103cf565b34801561048a575f80fd5b506040805180820190915260048152635350454360e01b6020820152610200565b3480156104b6575f80fd5b506102586104c5366004611ab4565b610c5b565b3480156104d5575f80fd5b50610290610c67565b3480156104e9575f80fd5b5061022b600a5481565b3480156104fe575f80fd5b5061022b61050d366004611b5e565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610542575f80fd5b50610290610551366004611b95565b611035565b348015610561575f80fd5b50610290610570366004611bb9565b61116f565b348015610580575f80fd5b5061029061058f366004611b1c565b6111c2565b34801561059f575f80fd5b50600c546102589060ff1681565b5f6105b93384846111f4565b5060015b92915050565b5f6105d06012600a611cd9565b6105de906305f5e100611ce7565b905090565b5f546001600160a01b031633146106155760405162461bcd60e51b815260040161060c90611cfe565b60405180910390fd5b5f80546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561064c573d5f803e3d5ffd5b50565b5f61065b84848461132c565b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f1981146106ed57828110156106e05760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b606482015260840161060c565b6106ed85338584036111f4565b506001949350505050565b5f546001600160a01b031633146107215760405162461bcd60e51b815260040161060c90611cfe565b6001600160a01b0381166107855760405162461bcd60e51b815260206004820152602560248201527f526f7574657220616464726573732063616e6e6f74206265207a65726f206164604482015264647265737360d81b606482015260840161060c565b600c80546001600160a01b038381166201000081810262010000600160b01b03198516179094556040519390920416918291907f02dc5c233404867c793b749c6d644beb2277536d18a7e7974d3f238e4c6f1684905f90a35050565b5f546001600160a01b0316331461080a5760405162461bcd60e51b815260040161060c90611cfe565b306001600160a01b0382160361086e5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742072657363756520636f6e74726163742773206f776e20746f6b604482015262656e7360e81b606482015260840161060c565b6040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156108b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d89190611d33565b90505f811161091f5760405162461bcd60e51b81526020600482015260136024820152724e6f20746f6b656e7320746f2072657363756560681b604482015260640161060c565b5f826001600160a01b031663a9059cbb6109405f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af115801561098a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ae9190611d4a565b9050806109f35760405162461bcd60e51b8152602060048201526013602482015272115490cc8c081c995cd8dd594819985a5b1959606a1b604482015260640161060c565b50505050565b5f546001600160a01b03163314610a225760405162461bcd60e51b815260040161060c90611cfe565b6064610a2e8284611d65565b14610a7b5760405162461bcd60e51b815260206004820152601960248201527f536861726573206d7573742061646420757020746f2031303000000000000000604482015260640161060c565b600791909155600855565b5f546001600160a01b03163314610aaf5760405162461bcd60e51b815260040161060c90611cfe565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610afa5760405162461bcd60e51b815260040161060c90611cfe565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610b455760405162461bcd60e51b815260040161060c90611cfe565b60058211158015610b57575060058111155b610ba35760405162461bcd60e51b815260206004820152601a60248201527f5461782063616e6e6f74206265206d6f7265207468616e203525000000000000604482015260640161060c565b6009829055600a81905560408051838152602081018390527f4ac0d6b0d694ec6c120242feaca94cfb6fbfe646756cd7026301e3a5984f0450910160405180910390a15050565b5f546001600160a01b03163314610c135760405162461bcd60e51b815260040161060c90611cfe565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f6105b933848461132c565b5f546001600160a01b03163314610c905760405162461bcd60e51b815260040161060c90611cfe565b600c5460ff1615610ce35760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161060c565b600c805462010000600160b01b031916757a250d5630b4cf539739df2c5dacb4c659f2488d00001790819055610d2c9030906001600160a01b0362010000909104165f196111f4565b600c60029054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da19190611d78565b6001600160a01b031663c9c6539630600c60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e259190611d78565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610e6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e939190611d78565b600680546001600160a01b039283166001600160a01b0319909116179055600c546201000090041663f305d7194730610ee0816001600160a01b03165f9081526001602052604090205490565b5f80610ef35f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610f59573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f7e9190611d93565b5050600654600c5460405163095ea7b360e01b81526001600160a01b0362010000909204821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610fd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffd9190611d4a565b50600c805460ff191660011790556040517f08fd3d05bd9c1e39a2044b0a4e2fed4621113adaeeae8fc57e9f4a06777ecf07905f90a1565b5f546001600160a01b0316331461105e5760405162461bcd60e51b815260040161060c90611cfe565b61271061106d6012600a611cd9565b61107b906305f5e100611ce7565b611086906001611ce7565b6110909190611dbe565b81116110ea5760405162461bcd60e51b815260206004820152602360248201527f5468726573686f6c642063616e6e6f74206265206c657373207468616e20302e60448201526230312560e81b606482015260840161060c565b6127106110f96012600a611cd9565b611107906305f5e100611ce7565b611112906064611ce7565b61111c9190611dbe565b811061116a5760405162461bcd60e51b815260206004820181905260248201527f5468726573686f6c642063616e6e6f74206265206d6f7265207468616e203125604482015260640161060c565b600b55565b5f546001600160a01b031633146111985760405162461bcd60e51b815260040161060c90611cfe565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146111eb5760405162461bcd60e51b815260040161060c90611cfe565b61064c816116be565b6001600160a01b03831661124a5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f2061646472657373000000604482015260640161060c565b6001600160a01b0382166112a05760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f20616464726573730000000000604482015260640161060c565b6001600160a01b038084165f908152600260209081526040808320938616835292905220548114611327576001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b505050565b6001600160a01b0383166113825760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161060c565b5f81116113d15760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d757374206265206d6f7265207468616e207a65726f000000604482015260640161060c565b6001600160a01b0383165f9081526003602052604081205460ff1615801561141157506001600160a01b0383165f9081526003602052604090205460ff16155b156115a1576006546001600160a01b0385811691161480156114475750600c546001600160a01b03848116620100009092041614155b1561146d5760646009548361145c9190611ce7565b6114669190611dbe565b90506115a1565b6006546001600160a01b03908116908416036115a1576064600a54836114939190611ce7565b61149d9190611dbe565b305f90815260016020526040902054600c5491925090610100900460ff161580156114c95750600b5481115b1561159f575f818410801561150e57506127106114e86012600a611cd9565b6114f6906305f5e100611ce7565b611501906064611ce7565b61150b9190611dbe565b84105b611587576127106115216012600a611cd9565b61152f906305f5e100611ce7565b61153a906064611ce7565b6115449190611dbe565b8210611581576127106115596012600a611cd9565b611567906305f5e100611ce7565b611572906064611ce7565b61157c9190611dbe565b611589565b81611589565b835b90506115948161177c565b61159d476118ef565b505b505b801561160b57305f90815260016020526040812080548392906115c5908490611d65565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b0384165f9081526001602052604081208054849290611632908490611ddd565b9091555061164290508183611ddd565b6001600160a01b0384165f9081526001602052604081208054909190611669908490611d65565b90915550506001600160a01b038084169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6116a78486611ddd565b60405190815260200160405180910390a350505050565b6001600160a01b0381166117235760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b600c805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106117be576117be611df0565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190611d78565b8160018151811061186657611866611df0565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b8152620100009091049091169063791ac947906118b39085905f90869030904290600401611e04565b5f604051808303815f87803b1580156118ca575f80fd5b505af11580156118dc573d5f803e3d5ffd5b5050600c805461ff001916905550505050565b5f806064600754846119019190611ce7565b61190b9190611dbe565b905080156119aa576004546040516001600160a01b039091169082905f81818185875af1925050503d805f811461195d576040519150601f19603f3d011682016040523d82523d5f602084013e611962565b606091505b505080925050816119aa5760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b604482015260640161060c565b5f6119b58285611ddd565b905080156109f3576005546040516001600160a01b039091169082905f81818185875af1925050503d805f8114611a07576040519150601f19603f3d011682016040523d82523d5f602084013e611a0c565b606091505b505080935050826109f35760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b604482015260640161060c565b5f602080835283518060208501525f5b81811015611a8057858101830151858201604001528201611a64565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461064c575f80fd5b5f8060408385031215611ac5575f80fd5b8235611ad081611aa0565b946020939093013593505050565b5f805f60608486031215611af0575f80fd5b8335611afb81611aa0565b92506020840135611b0b81611aa0565b929592945050506040919091013590565b5f60208284031215611b2c575f80fd5b8135611b3781611aa0565b9392505050565b5f8060408385031215611b4f575f80fd5b50508035926020909101359150565b5f8060408385031215611b6f575f80fd5b8235611b7a81611aa0565b91506020830135611b8a81611aa0565b809150509250929050565b5f60208284031215611ba5575f80fd5b5035919050565b801515811461064c575f80fd5b5f8060408385031215611bca575f80fd5b8235611bd581611aa0565b91506020830135611b8a81611bac565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c3357815f1904821115611c1957611c19611be5565b80851615611c2657918102915b93841c9390800290611bfe565b509250929050565b5f82611c49575060016105bd565b81611c5557505f6105bd565b8160018114611c6b5760028114611c7557611c91565b60019150506105bd565b60ff841115611c8657611c86611be5565b50506001821b6105bd565b5060208310610133831016604e8410600b8410161715611cb4575081810a6105bd565b611cbe8383611bf9565b805f1904821115611cd157611cd1611be5565b029392505050565b5f611b3760ff841683611c3b565b80820281158282048414176105bd576105bd611be5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611d43575f80fd5b5051919050565b5f60208284031215611d5a575f80fd5b8151611b3781611bac565b808201808211156105bd576105bd611be5565b5f60208284031215611d88575f80fd5b8151611b3781611aa0565b5f805f60608486031215611da5575f80fd5b8351925060208401519150604084015190509250925092565b5f82611dd857634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105bd576105bd611be5565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611e545784516001600160a01b031683529383019391830191600101611e2f565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204d9f4d2da69909d6c9d0d785b8155c135ab772414ae459b0d9703c0ef8a0490c64736f6c63430008180033

Deployed Bytecode Sourcemap

3710:10396:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6047:82;;;;;;;;;;-1:-1:-1;6117:4:0;;;;;;;;;;;;-1:-1:-1;;;6117:4:0;;;;6047:82;;;;;;;:::i;:::-;;;;;;;;4636:34;;;;;;;;;;;;;;;;;;;713:25:1;;;701:2;686:18;4636:34:0;567:177:1;6932:186:0;;;;;;;;;;-1:-1:-1;6932:186:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;6932:186:0;1205:187:1;6321:100:0;;;;;;;;;;;;;:::i;12206:107::-;;;;;;;;;;;;;:::i;:::-;;7126:554;;;;;;;;;;-1:-1:-1;7126:554:0;;;;;:::i;:::-;;:::i;6231:82::-;;;;;;;;;;-1:-1:-1;6231:82:0;;4061:2;2000:36:1;;1988:2;1973:18;6231:82:0;1858:184:1;13746:320:0;;;;;;;;;;-1:-1:-1;13746:320:0;;;;;:::i;:::-;;:::i;12363:440::-;;;;;;;;;;-1:-1:-1;12363:440:0;;;;;:::i;:::-;;:::i;11062:262::-;;;;;;;;;;-1:-1:-1;11062:262:0;;;;;:::i;:::-;;:::i;4808:36::-;;;;;;;;;;;;;;;;10883:135;;;;;;;;;;-1:-1:-1;10883:135:0;;;;;:::i;:::-;;:::i;4960:60::-;;;;;;;;;;;;;;;;10724:111;;;;;;;;;;-1:-1:-1;10724:111:0;;;;;:::i;:::-;;:::i;11367:280::-;;;;;;;;;;-1:-1:-1;11367:280:0;;;;;:::i;:::-;;:::i;4541:32::-;;;;;;;;;;-1:-1:-1;4541:32:0;;;;-1:-1:-1;;;;;4541:32:0;;;;;;-1:-1:-1;;;;;2732:32:1;;;2714:51;;2702:2;2687:18;4541:32:0;2552:219:1;6429:119:0;;;;;;;;;;-1:-1:-1;6429:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6522:18:0;6495:7;6522:18;;;:9;:18;;;;;;;6429:119;1928:148;;;;;;;;;;;;;:::i;4496:38::-;;;;;;;;;;-1:-1:-1;4496:38:0;;;;-1:-1:-1;;;;;4496:38:0;;;4728:28;;;;;;;;;;;;;;;;1323:79;;;;;;;;;;-1:-1:-1;1361:7:0;1388:6;-1:-1:-1;;;;;1388:6:0;1323:79;;6137:86;;;;;;;;;;-1:-1:-1;6209:6:0;;;;;;;;;;;;-1:-1:-1;;;6209:6:0;;;;6137:86;;6556:192;;;;;;;;;;-1:-1:-1;6556:192:0;;;;;:::i;:::-;;:::i;12861:835::-;;;;;;;;;;;;;:::i;4883:37::-;;;;;;;;;;;;;;;;6756:168;;;;;;;;;;-1:-1:-1;6756:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;6889:18:0;;;6862:7;6889:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6756:168;11878:287;;;;;;;;;;-1:-1:-1;11878:287:0;;;;;:::i;:::-;;:::i;11700:126::-;;;;;;;;;;-1:-1:-1;11700:126:0;;;;;:::i;:::-;;:::i;1537:109::-;;;;;;;;;;-1:-1:-1;1537:109:0;;;;;:::i;:::-;;:::i;5077:23::-;;;;;;;;;;-1:-1:-1;5077:23:0;;;;;;;;6932:186;7032:4;7049:39;954:10;7072:7;7081:6;7049:8;:39::i;:::-;-1:-1:-1;7106:4:0;6932:186;;;;;:::o;6321:100::-;6374:7;4124:14;4061:2;4124;:14;:::i;:::-;4110:28;;:11;:28;:::i;:::-;6394:19;;6321:100;:::o;12206:107::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;;;;;;;;;1361:7;1388:6;;12257:48:::1;::::0;-1:-1:-1;;;;;1388:6:0;;;;12283:21:::1;12257:48:::0;::::1;;;::::0;12283:21;;12257:48;1361:7;12257:48;12283:21;1388:6;12257:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12206:107::o:0;7126:554::-;7258:4;7275:36;7285:6;7293:9;7304:6;7275:9;:36::i;:::-;-1:-1:-1;;;;;7349:19:0;;7322:24;7349:19;;;:11;:19;;;;;;;;954:10;7349:33;;;;;;;;-1:-1:-1;;7397:37:0;;7393:258;;7479:6;7459:16;:26;;7451:72;;;;-1:-1:-1;;;7451:72:0;;6317:2:1;7451:72:0;;;6299:21:1;6356:2;6336:18;;;6329:30;6395:34;6375:18;;;6368:62;-1:-1:-1;;;6446:18:1;;;6439:31;6487:19;;7451:72:0;6115:397:1;7451:72:0;7567:57;7576:6;954:10;7617:6;7598:16;:25;7567:8;:57::i;:::-;-1:-1:-1;7668:4:0;;7126:554;-1:-1:-1;;;;7126:554:0:o;13746:320::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13829:23:0;::::1;13821:73;;;::::0;-1:-1:-1;;;13821:73:0;;6719:2:1;13821:73:0::1;::::0;::::1;6701:21:1::0;6758:2;6738:18;;;6731:30;6797:34;6777:18;;;6770:62;-1:-1:-1;;;6848:18:1;;;6841:35;6893:19;;13821:73:0::1;6517:401:1::0;13821:73:0::1;13933:15;::::0;;-1:-1:-1;;;;;13960:47:0;;::::1;13933:15:::0;13960:47;;::::1;-1:-1:-1::0;;;;;;13960:47:0;::::1;;::::0;;;14023:35:::1;::::0;13933:15;;;::::1;;::::0;;;13960:47;14023:35:::1;::::0;13905:17:::1;::::0;14023:35:::1;13810:256;13746:320:::0;:::o;12363:440::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;12468:4:::1;-1:-1:-1::0;;;;;12444:29:0;::::1;::::0;12436:77:::1;;;::::0;-1:-1:-1;;;12436:77:0;;7125:2:1;12436:77:0::1;::::0;::::1;7107:21:1::0;7164:2;7144:18;;;7137:30;7203:34;7183:18;;;7176:62;-1:-1:-1;;;7254:18:1;;;7247:33;7297:19;;12436:77:0::1;6923:399:1::0;12436:77:0::1;12593:30;::::0;-1:-1:-1;;;12593:30:0;;12617:4:::1;12593:30;::::0;::::1;2714:51:1::0;12546:12:0;;12524::::1;::::0;-1:-1:-1;;;;;12593:15:0;::::1;::::0;::::1;::::0;2687:18:1;;12593:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12570:53;;12657:1;12642:12;:16;12634:48;;;::::0;-1:-1:-1;;;12634:48:0;;7718:2:1;12634:48:0::1;::::0;::::1;7700:21:1::0;7757:2;7737:18;;;7730:30;-1:-1:-1;;;7776:18:1;;;7769:49;7835:18;;12634:48:0::1;7516:343:1::0;12634:48:0::1;12693:12;12708:5;-1:-1:-1::0;;;;;12708:14:0::1;;12723:7;1361::::0;1388:6;-1:-1:-1;;;;;1388:6:0;;1323:79;12723:7:::1;12708:37;::::0;-1:-1:-1;;;;;;12708:37:0::1;::::0;;;;;;-1:-1:-1;;;;;8056:32:1;;;12708:37:0::1;::::0;::::1;8038:51:1::0;8105:18;;;8098:34;;;8011:18;;12708:37:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12693:52;;12764:7;12756:39;;;::::0;-1:-1:-1;;;12756:39:0;;8595:2:1;12756:39:0::1;::::0;::::1;8577:21:1::0;8634:2;8614:18;;;8607:30;-1:-1:-1;;;8653:18:1;;;8646:49;8712:18;;12756:39:0::1;8393:343:1::0;12756:39:0::1;12425:378;;;12363:440:::0;:::o;11062:262::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;4186:3:::1;11168:27;11186:9:::0;11168:15;:27:::1;:::i;:::-;:44;11160:82;;;::::0;-1:-1:-1;;;11160:82:0;;9073:2:1;11160:82:0::1;::::0;::::1;9055:21:1::0;9112:2;9092:18;;;9085:30;9151:27;9131:18;;;9124:55;9196:18;;11160:82:0::1;8871:349:1::0;11160:82:0::1;11253:14;:32:::0;;;;11296:8:::1;:20:::0;11062:262::o;10883:135::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;10967:15:::1;:43:::0;;-1:-1:-1;;;;;;10967:43:0::1;-1:-1:-1::0;;;;;10967:43:0;;;::::1;::::0;;;::::1;::::0;;10883:135::o;10724:111::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;10796:9:::1;:31:::0;;-1:-1:-1;;;;;;10796:31:0::1;-1:-1:-1::0;;;;;10796:31:0;;;::::1;::::0;;;::::1;::::0;;10724:111::o;11367:280::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;4019:1:::1;11456:7;:23;;:51;;;;;4019:1;11483:8;:24;;11456:51;11448:90;;;::::0;-1:-1:-1;;;11448:90:0;;9427:2:1;11448:90:0::1;::::0;::::1;9409:21:1::0;9466:2;9446:18;;;9439:30;9505:28;9485:18;;;9478:56;9551:18;;11448:90:0::1;9225:350:1::0;11448:90:0::1;11549:6;:16:::0;;;11576:7:::1;:18:::0;;;11610:29:::1;::::0;;9754:25:1;;;9810:2;9795:18;;9788:34;;;11610:29:0::1;::::0;9727:18:1;11610:29:0::1;;;;;;;11367:280:::0;;:::o;1928:148::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;2035:1:::1;2019:6:::0;;1998:40:::1;::::0;-1:-1:-1;;;;;2019:6:0;;::::1;::::0;1998:40:::1;::::0;2035:1;;1998:40:::1;2066:1;2049:19:::0;;-1:-1:-1;;;;;;2049:19:0::1;::::0;;1928:148::o;6556:192::-;6659:4;6676:42;954:10;6700:9;6711:6;6676:9;:42::i;12861:835::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;12923:11:::1;::::0;::::1;;12922:12;12914:48;;;::::0;-1:-1:-1;;;12914:48:0;;10035:2:1;12914:48:0::1;::::0;::::1;10017:21:1::0;10074:2;10054:18;;;10047:30;10113:25;10093:18;;;10086:53;10156:18;;12914:48:0::1;9833:347:1::0;12914:48:0::1;12973:15;:104:::0;;-1:-1:-1;;;;;;12973:104:0::1;::::0;::::1;::::0;;;;13088:68:::1;::::0;13105:4:::1;::::0;-1:-1:-1;;;;;12973:104:0;13120:15;;::::1;;-1:-1:-1::0;;13088:8:0::1;:68::i;:::-;13201:15;;;;;;;;;-1:-1:-1::0;;;;;13201:15:0::1;-1:-1:-1::0;;;;;13201:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13183:55:0::1;;13261:4;13281:15;;;;;;;;;-1:-1:-1::0;;;;;13281:15:0::1;-1:-1:-1::0;;;;;13281:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13183:131;::::0;-1:-1:-1;;;;;;13183:131:0::1;::::0;;;;;;-1:-1:-1;;;;;10671:15:1;;;13183:131:0::1;::::0;::::1;10653:34:1::0;10723:15;;10703:18;;;10696:43;10588:18;;13183:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13167:13;:147:::0;;-1:-1:-1;;;;;13167:147:0;;::::1;-1:-1:-1::0;;;;;;13167:147:0;;::::1;;::::0;;13325:15:::1;::::0;;;::::1;;:31;13364:21;13409:4;13429:24;13409:4:::0;-1:-1:-1;;;;;6522:18:0;6495:7;6522:18;;;:9;:18;;;;;;;6429:119;13429:24:::1;13468:1;13484::::0;13500:7:::1;1361::::0;1388:6;-1:-1:-1;;;;;1388:6:0;;1323:79;13500:7:::1;13325:223;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13325:223:0;;;-1:-1:-1;;;;;11109:15:1;;;13325:223:0::1;::::0;::::1;11091:34:1::0;11141:18;;;11134:34;;;;11184:18;;;11177:34;;;;11227:18;;;11220:34;11291:15;;;11270:19;;;11263:44;13522:15:0::1;11323:19:1::0;;;11316:35;11025:19;;13325:223:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13566:13:0::1;::::0;13597:15:::1;::::0;13559:71:::1;::::0;-1:-1:-1;;;13559:71:0;;-1:-1:-1;;;;;13597:15:0;;;::::1;::::0;::::1;13559:71;::::0;::::1;8038:51:1::0;-1:-1:-1;;8105:18:1;;;8098:34;13566:13:0;::::1;::::0;-1:-1:-1;13559:29:0::1;::::0;8011:18:1;;13559:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13641:11:0::1;:18:::0;;-1:-1:-1;;13641:18:0::1;13655:4;13641:18;::::0;;13675:13:::1;::::0;::::1;::::0;13641:11:::1;::::0;13675:13:::1;12861:835::o:0;11878:287::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;4267:5:::1;4124:14;4061:2;4124;:14;:::i;:::-;4110:28;::::0;:11:::1;:28;:::i;:::-;4247:16;::::0;4262:1:::1;4247:16;:::i;:::-;4246:26;;;;:::i;:::-;11964:9;:34;11956:82;;;::::0;-1:-1:-1;;;11956:82:0;;12097:2:1;11956:82:0::1;::::0;::::1;12079:21:1::0;12136:2;12116:18;;;12109:30;12175:34;12155:18;;;12148:62;-1:-1:-1;;;12226:18:1;;;12219:33;12269:19;;11956:82:0::1;11895:399:1::0;11956:82:0::1;4351:5;4124:14;4061:2;4124;:14;:::i;:::-;4110:28;::::0;:11:::1;:28;:::i;:::-;4329:18;::::0;4344:3:::1;4329:18;:::i;:::-;4328:28;;;;:::i;:::-;12057:9;:24;12049:69;;;::::0;-1:-1:-1;;;12049:69:0;;12501:2:1;12049:69:0::1;::::0;::::1;12483:21:1::0;;;12520:18;;;12513:30;12579:34;12559:18;;;12552:62;12631:18;;12049:69:0::1;12299:356:1::0;12049:69:0::1;12129:16;:28:::0;11878:287::o;11700:126::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11783:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11783:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11700:126::o;1537:109::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;1610:28:::1;1629:8;1610:18;:28::i;7688:394::-:0;-1:-1:-1;;;;;7781:19:0;;7773:61;;;;-1:-1:-1;;;7773:61:0;;12862:2:1;7773:61:0;;;12844:21:1;12901:2;12881:18;;;12874:30;12940:31;12920:18;;;12913:59;12989:18;;7773:61:0;12660:353:1;7773:61:0;-1:-1:-1;;;;;7853:21:0;;7845:61;;;;-1:-1:-1;;;7845:61:0;;13220:2:1;7845:61:0;;;13202:21:1;13259:2;13239:18;;;13232:30;13298:29;13278:18;;;13271:57;13345:18;;7845:61:0;13018:351:1;7845:61:0;-1:-1:-1;;;;;7921:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;:37;;7917:158;;-1:-1:-1;;;;;7975:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8031:32;;713:25:1;;;8031:32:0;;686:18:1;8031:32:0;;;;;;;7917:158;7688:394;;;:::o;8090:1550::-;-1:-1:-1;;;;;8178:18:0;;8170:61;;;;-1:-1:-1;;;8170:61:0;;13576:2:1;8170:61:0;;;13558:21:1;13615:2;13595:18;;;13588:30;13654:32;13634:18;;;13627:60;13704:18;;8170:61:0;13374:354:1;8170:61:0;8259:1;8250:6;:10;8242:52;;;;-1:-1:-1;;;8242:52:0;;13935:2:1;8242:52:0;;;13917:21:1;13974:2;13954:18;;;13947:30;14013:31;13993:18;;;13986:59;14062:18;;8242:52:0;13733:353:1;8242:52:0;-1:-1:-1;;;;;8419:24:0;;8305:17;8419:24;;;:18;:24;;;;;;;;8418:25;:52;;;;-1:-1:-1;;;;;;8448:22:0;;;;;;:18;:22;;;;;;;;8447:23;8418:52;8414:926;;;8531:13;;-1:-1:-1;;;;;8523:21:0;;;8531:13;;8523:21;:55;;;;-1:-1:-1;8562:15:0;;-1:-1:-1;;;;;8548:30:0;;;8562:15;;;;;8548:30;;8523:55;8519:810;;;4186:3;8620:6;;8611;:15;;;;:::i;:::-;:31;;;;:::i;:::-;8599:43;;8519:810;;;8707:13;;-1:-1:-1;;;;;8707:13:0;;;8701:19;;;;8697:632;;4186:3;8762:7;;8753:6;:16;;;;:::i;:::-;:32;;;;:::i;:::-;8853:4;8804:28;6522:18;;;:9;:18;;;;;;8943:6;;8741:44;;-1:-1:-1;6522:18:0;8943:6;;;;;8942:7;:50;;;;;8976:16;;8953:20;:39;8942:50;8938:376;;;9017:20;9050;9041:6;:29;:54;;;;-1:-1:-1;4351:5:0;4124:14;4061:2;4124;:14;:::i;:::-;4110:28;;:11;:28;:::i;:::-;4329:18;;4344:3;4329:18;:::i;:::-;4328:28;;;;:::i;:::-;9074:6;:21;9041:54;9040:143;;4351:5;4124:14;4061:2;4124;:14;:::i;:::-;4110:28;;:11;:28;:::i;:::-;4329:18;;4344:3;4329:18;:::i;:::-;4328:28;;;;:::i;:::-;9109:20;:35;9108:75;;4351:5;4124:14;4061:2;4124;:14;:::i;:::-;4110:28;;:11;:28;:::i;:::-;4329:18;;4344:3;4329:18;:::i;:::-;4328:28;;;;:::i;:::-;9040:143;;9108:75;9148:20;9040:143;;;9099:6;9040:143;9017:166;;9206:30;9223:12;9206:16;:30::i;:::-;9259:35;9272:21;9259:12;:35::i;:::-;8994:320;8938:376;8722:607;8697:632;9356:13;;9352:143;;9404:4;9386:24;;;;:9;:24;;;;;:37;;9414:9;;9386:24;:37;;9414:9;;9386:37;:::i;:::-;;;;-1:-1:-1;;9443:40:0;;713:25:1;;;9466:4:0;;-1:-1:-1;;;;;9443:40:0;;;;;701:2:1;686:18;9443:40:0;;;;;;;9352:143;-1:-1:-1;;;;;9505:15:0;;;;;;:9;:15;;;;;:25;;9524:6;;9505:15;:25;;9524:6;;9505:25;:::i;:::-;;;;-1:-1:-1;9559:18:0;;-1:-1:-1;9568:9:0;9559:6;:18;:::i;:::-;-1:-1:-1;;;;;9541:13:0;;;;;;:9;:13;;;;;:37;;:13;;;:37;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;9594:38:0;;;;;;;9613:18;9622:9;9613:6;:18;:::i;:::-;9594:38;;713:25:1;;;701:2;686:18;9594:38:0;;;;;;;8159:1481;8090:1550;;;:::o;1654:266::-;-1:-1:-1;;;;;1742:22:0;;1720:110;;;;-1:-1:-1;;;1720:110:0;;14426:2:1;1720:110:0;;;14408:21:1;14465:2;14445:18;;;14438:30;14504:34;14484:18;;;14477:62;-1:-1:-1;;;14555:18:1;;;14548:36;14601:19;;1720:110:0;14224:402:1;1720:110:0;1867:6;;;1846:38;;-1:-1:-1;;;;;1846:38:0;;;;1867:6;;;1846:38;;;1895:6;:17;;-1:-1:-1;;;;;;1895:17:0;-1:-1:-1;;;;;1895:17:0;;;;;;;;;;1654:266::o;9676:410::-;5333:6;:13;;-1:-1:-1;;5333:13:0;;;;;9778:16:::1;::::0;;9792:1:::1;9778:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9778:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9778:16:0::1;9754:40;;9823:4;9805;9810:1;9805:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;9805:23:0::1;;;-1:-1:-1::0;;;;;9805:23:0::1;;;::::0;::::1;9849:15;;;;;;;;;-1:-1:-1::0;;;;;9849:15:0::1;-1:-1:-1::0;;;;;9849:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9839:4;9844:1;9839:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9839:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;9882:15:::1;::::0;:196:::1;::::0;-1:-1:-1;;;9882:196:0;;:15;;;::::1;::::0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;9963:11;;9989:1:::1;::::0;10005:4;;10032::::1;::::0;10052:15:::1;::::0;9882:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5369:6:0;:14;;-1:-1:-1;;5369:14:0;;;-1:-1:-1;;;;9676:410:0:o;10146:536::-;10203:12;10226:22;4186:3;10260:14;;10251:6;:23;;;;:::i;:::-;:39;;;;:::i;:::-;10226:64;-1:-1:-1;10305:18:0;;10301:165;;10354:15;;:47;;-1:-1:-1;;;;;10354:15:0;;;;10382:14;;10354:47;;;;10382:14;10354:15;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10340:61;;;;;10424:7;10416:38;;;;-1:-1:-1;;;10416:38:0;;16292:2:1;10416:38:0;;;16274:21:1;16331:2;16311:18;;;16304:30;-1:-1:-1;;;16350:18:1;;;16343:48;16408:18;;10416:38:0;16090:342:1;10416:38:0;10476:16;10495:23;10504:14;10495:6;:23;:::i;:::-;10476:42;-1:-1:-1;10533:12:0;;10529:146;;10575:9;;:35;;-1:-1:-1;;;;;10575:9:0;;;;10597:8;;10575:35;;;;10597:8;10575:9;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10561:49;;;;;10633:7;10625:38;;;;-1:-1:-1;;;10625:38:0;;16292:2:1;10625:38:0;;;16274:21:1;16331:2;16311:18;;;16304:30;-1:-1:-1;;;16350:18:1;;;16343:48;16408:18;;10625:38:0;16090:342:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;:::-;2283:5;2047:247;-1:-1:-1;;;2047:247:1:o;2299:248::-;2367:6;2375;2428:2;2416:9;2407:7;2403:23;2399:32;2396:52;;;2444:1;2441;2434:12;2396:52;-1:-1:-1;;2467:23:1;;;2537:2;2522:18;;;2509:32;;-1:-1:-1;2299:248:1:o;2984:388::-;3052:6;3060;3113:2;3101:9;3092:7;3088:23;3084:32;3081:52;;;3129:1;3126;3119:12;3081:52;3168:9;3155:23;3187:31;3212:5;3187:31;:::i;:::-;3237:5;-1:-1:-1;3294:2:1;3279:18;;3266:32;3307:33;3266:32;3307:33;:::i;:::-;3359:7;3349:17;;;2984:388;;;;;:::o;3377:180::-;3436:6;3489:2;3477:9;3468:7;3464:23;3460:32;3457:52;;;3505:1;3502;3495:12;3457:52;-1:-1:-1;3528:23:1;;3377:180;-1:-1:-1;3377:180:1:o;3562:118::-;3648:5;3641:13;3634:21;3627:5;3624:32;3614:60;;3670:1;3667;3660:12;3685:382;3750:6;3758;3811:2;3799:9;3790:7;3786:23;3782:32;3779:52;;;3827:1;3824;3817:12;3779:52;3866:9;3853:23;3885:31;3910:5;3885:31;:::i;:::-;3935:5;-1:-1:-1;3992:2:1;3977:18;;3964:32;4005:30;3964:32;4005:30;:::i;4072:127::-;4133:10;4128:3;4124:20;4121:1;4114:31;4164:4;4161:1;4154:15;4188:4;4185:1;4178:15;4204:416;4293:1;4330:5;4293:1;4344:270;4365:7;4355:8;4352:21;4344:270;;;4424:4;4420:1;4416:6;4412:17;4406:4;4403:27;4400:53;;;4433:18;;:::i;:::-;4483:7;4473:8;4469:22;4466:55;;;4503:16;;;;4466:55;4582:22;;;;4542:15;;;;4344:270;;;4348:3;4204:416;;;;;:::o;4625:806::-;4674:5;4704:8;4694:80;;-1:-1:-1;4745:1:1;4759:5;;4694:80;4793:4;4783:76;;-1:-1:-1;4830:1:1;4844:5;;4783:76;4875:4;4893:1;4888:59;;;;4961:1;4956:130;;;;4868:218;;4888:59;4918:1;4909:10;;4932:5;;;4956:130;4993:3;4983:8;4980:17;4977:43;;;5000:18;;:::i;:::-;-1:-1:-1;;5056:1:1;5042:16;;5071:5;;4868:218;;5170:2;5160:8;5157:16;5151:3;5145:4;5142:13;5138:36;5132:2;5122:8;5119:16;5114:2;5108:4;5105:12;5101:35;5098:77;5095:159;;;-1:-1:-1;5207:19:1;;;5239:5;;5095:159;5286:34;5311:8;5305:4;5286:34;:::i;:::-;5356:6;5352:1;5348:6;5344:19;5335:7;5332:32;5329:58;;;5367:18;;:::i;:::-;5405:20;;4625:806;-1:-1:-1;;;4625:806:1:o;5436:140::-;5494:5;5523:47;5564:4;5554:8;5550:19;5544:4;5523:47;:::i;5581:168::-;5654:9;;;5685;;5702:15;;;5696:22;;5682:37;5672:71;;5723:18;;:::i;5754:356::-;5956:2;5938:21;;;5975:18;;;5968:30;6034:34;6029:2;6014:18;;6007:62;6101:2;6086:18;;5754:356::o;7327:184::-;7397:6;7450:2;7438:9;7429:7;7425:23;7421:32;7418:52;;;7466:1;7463;7456:12;7418:52;-1:-1:-1;7489:16:1;;7327:184;-1:-1:-1;7327:184:1:o;8143:245::-;8210:6;8263:2;8251:9;8242:7;8238:23;8234:32;8231:52;;;8279:1;8276;8269:12;8231:52;8311:9;8305:16;8330:28;8352:5;8330:28;:::i;8741:125::-;8806:9;;;8827:10;;;8824:36;;;8840:18;;:::i;10185:251::-;10255:6;10308:2;10296:9;10287:7;10283:23;10279:32;10276:52;;;10324:1;10321;10314:12;10276:52;10356:9;10350:16;10375:31;10400:5;10375:31;:::i;11362:306::-;11450:6;11458;11466;11519:2;11507:9;11498:7;11494:23;11490:32;11487:52;;;11535:1;11532;11525:12;11487:52;11564:9;11558:16;11548:26;;11614:2;11603:9;11599:18;11593:25;11583:35;;11658:2;11647:9;11643:18;11637:25;11627:35;;11362:306;;;;;:::o;11673:217::-;11713:1;11739;11729:132;;11783:10;11778:3;11774:20;11771:1;11764:31;11818:4;11815:1;11808:15;11846:4;11843:1;11836:15;11729:132;-1:-1:-1;11875:9:1;;11673:217::o;14091:128::-;14158:9;;;14179:11;;;14176:37;;;14193:18;;:::i;14763:127::-;14824:10;14819:3;14815:20;14812:1;14805:31;14855:4;14852:1;14845:15;14879:4;14876:1;14869:15;14895:980;15157:4;15205:3;15194:9;15190:19;15236:6;15225:9;15218:25;15262:2;15300:6;15295:2;15284:9;15280:18;15273:34;15343:3;15338:2;15327:9;15323:18;15316:31;15367:6;15402;15396:13;15433:6;15425;15418:22;15471:3;15460:9;15456:19;15449:26;;15510:2;15502:6;15498:15;15484:29;;15531:1;15541:195;15555:6;15552:1;15549:13;15541:195;;;15620:13;;-1:-1:-1;;;;;15616:39:1;15604:52;;15711:15;;;;15676:12;;;;15652:1;15570:9;15541:195;;;-1:-1:-1;;;;;;;15792:32:1;;;;15787:2;15772:18;;15765:60;-1:-1:-1;;;15856:3:1;15841:19;15834:35;15753:3;14895:980;-1:-1:-1;;;14895:980:1:o

Swarm Source

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