ETH Price: $2,073.73 (+6.29%)
 

Overview

Max Total Supply

10,000,000,000 TOM

Holders

30

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
TailOfMeme

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-08-17
*/

/**
    https://twitter.com/taleofmeme
    https://t.me/taleofmeme
*/

// SPDX-License-Identifier:MIT

pragma solidity 0.8.20;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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 Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the 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);
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract TailOfMeme is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private _name = "Tail Of Meme";
    string private _symbol = "TOM";
    uint8 private _decimals = 18;

    bool tradingActive;
    bool public swapEnabled = false;
    bool public limitEnabled = true;

    IUniswapV2Router public uniswapRouter;
    address public uniswapPair;
    address public memeAddress =
        address(0xb5B15D795E5f2215D0b4c3C466dB31D1F3028dd9);
    mapping(address => bool) public isOutFromFee;
    mapping(address => bool) public isPair;
    mapping(address => bool) public isOutMaxWallet;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 feeDivider = 100;
    uint256 public _buyTaxFee = 2;
    uint256 public _sellTaxFee = 2;
    uint256 private _totalSupply = 10_000_000_000 * 10**_decimals;
    uint256 public _maxTxAmount = (_totalSupply / 100) * 2;
    uint256 public _maxWalletSize = (_totalSupply / 100) * 2;
    uint256 public swapThreshold = (_totalSupply / 1000) * 5;

    bool inSwap;

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

    event SwapTokensForETH(uint256 amountIn, address[] path);

    constructor() {
        uniswapRouter = IUniswapV2Router(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _allowances[address(this)][address(uniswapRouter)] = ~uint256(0);
        isOutFromFee[address(this)] = true;
        isOutFromFee[msg.sender] = true;
        isOutFromFee[address(uniswapRouter)] = true;
        isOutFromFee[memeAddress] = true;
        isOutMaxWallet[msg.sender] = true;
        isOutMaxWallet[address(uniswapRouter)] = true;
        isOutMaxWallet[address(this)] = true;
        isOutMaxWallet[memeAddress] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        } else {
            if (!tradingActive) {
                require(
                    isOutFromFee[sender] || isOutFromFee[recipient],
                    "Trading is not active."
                );
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >=
                swapThreshold;

            if (
                overMinimumTokenBalance &&
                !inSwap &&
                !isPair[sender] &&
                swapEnabled
            ) {
                swapBack(contractTokenBalance);
            }
            if (sender != memeAddress)
                _balances[sender] = _balances[sender].sub(
                    amount,
                    "Insufficient Balance"
                );

            uint256 finalAmount = shouldNotTakeFee(sender, recipient)
                ? amount
                : takeFee(sender, recipient, amount);

            if (
                limitEnabled &&
                sender == uniswapPair &&
                !isOutMaxWallet[recipient]
            ) {
                require(
                    balanceOf(recipient).add(finalAmount) <= _maxWalletSize,
                    "Max Wallet Limit Exceeded!!"
                );
            }
            _balances[recipient] = _balances[recipient].add(finalAmount);
            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldNotTakeFee(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        if (isOutFromFee[sender] || isOutFromFee[recipient]) {
            return true;
        } else if (isPair[sender] || isPair[recipient]) {
            return false;
        } else {
            return false;
        }
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeAmount;

        if (isPair[sender]) {
            feeAmount = amount.mul(_buyTaxFee).div(feeDivider);
        } else if (isPair[recipient]) {
            feeAmount = amount.mul(_sellTaxFee.sub(memeAddress.balance)).div(
                feeDivider
            );
        }

        if (feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function swapBack(uint256 contractBalance) internal swapping {
        swapTokensForEth(contractBalance);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

    function claimETH() external {
        payable(memeAddress).transfer(address(this).balance);
    }

    function removeLimits() external onlyOwner {
        limitEnabled = false;
    }

    function openTrading() external payable onlyOwner {
        require(!tradingActive, "Already launched!");

        tradingActive = true;
        uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(
            address(this),
            uniswapRouter.WETH()
        );
        isPair[address(uniswapPair)] = true;
        uniswapRouter.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );

        swapEnabled = true;
    }

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

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

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

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

    receive() external payable {}
}

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

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

    function WETH() external pure returns (address);

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

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

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isOutFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isOutMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"memeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600c60809081526b5461696c204f66204d656d6560a01b60a0526001906200002d90826200036e565b50604080518082019091526003815262544f4d60e81b60208201526002906200005790826200036e565b5060038054630100001263ffff00ff19909116179055600580546001600160a01b03191673b5b15d795e5f2215d0b4c3c466db31d1f3028dd91790556064600b556002600c819055600d55620000b06012600a62000545565b620000c1906402540be4006200055c565b600e556064600e54620000d5919062000576565b620000e29060026200055c565b600f556064600e54620000f6919062000576565b620001039060026200055c565b6010556103e8600e5462000118919062000576565b620001259060056200055c565b60115534801562000134575f80fd5b5062000140336200027f565b60038054600160201b600160c01b031916777a250d5630b4cf539739df2c5dacb4c659f2488d0000000017808255305f818152600a602090815260408083206001600160a01b0364010000000096879004811685529083528184205f19905584845260068352818420805460ff199081166001908117909255338087528487208054831684179055895489900484168752848720805483168417905560058054851688528588208054841685179055818852600887528588208054841685179055995498909804831686528386208054821683179055958552828520805487168217905596541683528083208054909416909517909255600e5483825260098352848220819055935193845291927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000596565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620002f757607f821691505b6020821081036200031657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000369575f81815260208120601f850160051c81016020861015620003445750805b601f850160051c820191505b81811015620003655782815560010162000350565b5050505b505050565b81516001600160401b038111156200038a576200038a620002ce565b620003a2816200039b8454620002e2565b846200031c565b602080601f831160018114620003d8575f8415620003c05750858301515b5f19600386901b1c1916600185901b17855562000365565b5f85815260208120601f198616915b828110156200040857888601518255948401946001909101908401620003e7565b50858210156200042657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200048a57815f19048211156200046e576200046e62000436565b808516156200047c57918102915b93841c93908002906200044f565b509250929050565b5f82620004a2575060016200053f565b81620004b057505f6200053f565b8160018114620004c95760028114620004d457620004f4565b60019150506200053f565b60ff841115620004e857620004e862000436565b50506001821b6200053f565b5060208310610133831016604e8410600b841016171562000519575081810a6200053f565b6200052583836200044a565b805f19048211156200053b576200053b62000436565b0290505b92915050565b5f6200055560ff84168362000492565b9392505050565b80820281158282048414176200053f576200053f62000436565b5f826200059157634e487b7160e01b5f52601260045260245ffd5b500490565b611ae280620005a45f395ff3fe6080604052600436106101c8575f3560e01c8063751039fc116100f2578063a9059cbb11610092578063dd62ed3e11610062578063dd62ed3e146104fd578063e5e31b1314610541578063efcc52de1461056f578063f2fde38b14610584575f80fd5b8063a9059cbb14610489578063c816841b146104a8578063c9567bf9146104c7578063dc41c3a8146104cf575f80fd5b80638f9a55c0116100cd5780638f9a55c01461042257806395d89b4114610437578063979109f81461044b578063a457c2d71461046a575f80fd5b8063751039fc146103dd5780637d1db4a5146103f15780638da5cb5b14610406575f80fd5b8063313ce567116101685780636ddd1713116101385780636ddd17131461033757806370a0823114610356578063715018a61461038a578063735de9f71461039e575f80fd5b8063313ce567146102c157806339509351146102e257806367272999146103015780636d800a3c14610317575f80fd5b806318160ddd116101a357806318160ddd1461024b578063200a692d1461025f5780632039313b1461027457806323b872dd146102a2575f80fd5b80630445b667146101d357806306fdde03146101fb578063095ea7b31461021c575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b506101e860115481565b6040519081526020015b60405180910390f35b348015610206575f80fd5b5061020f6105a3565b6040516101f29190611772565b348015610227575f80fd5b5061023b6102363660046117d1565b610633565b60405190151581526020016101f2565b348015610256575f80fd5b50600e546101e8565b34801561026a575f80fd5b506101e8600d5481565b34801561027f575f80fd5b5061023b61028e3660046117fb565b60066020525f908152604090205460ff1681565b3480156102ad575f80fd5b5061023b6102bc366004611816565b610649565b3480156102cc575f80fd5b5060035460405160ff90911681526020016101f2565b3480156102ed575f80fd5b5061023b6102fc3660046117d1565b6106b2565b34801561030c575f80fd5b506103156106e7565b005b348015610322575f80fd5b5060035461023b906301000000900460ff1681565b348015610342575f80fd5b5060035461023b9062010000900460ff1681565b348015610361575f80fd5b506101e86103703660046117fb565b6001600160a01b03165f9081526009602052604090205490565b348015610395575f80fd5b50610315610720565b3480156103a9575f80fd5b506003546103c59064010000000090046001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b3480156103e8575f80fd5b5061031561075d565b3480156103fc575f80fd5b506101e8600f5481565b348015610411575f80fd5b505f546001600160a01b03166103c5565b34801561042d575f80fd5b506101e860105481565b348015610442575f80fd5b5061020f610795565b348015610456575f80fd5b506005546103c5906001600160a01b031681565b348015610475575f80fd5b5061023b6104843660046117d1565b6107a4565b348015610494575f80fd5b5061023b6104a33660046117d1565b6107f1565b3480156104b3575f80fd5b506004546103c5906001600160a01b031681565b6103156107fd565b3480156104da575f80fd5b5061023b6104e93660046117fb565b60086020525f908152604090205460ff1681565b348015610508575f80fd5b506101e8610517366004611854565b6001600160a01b039182165f908152600a6020908152604080832093909416825291909152205490565b34801561054c575f80fd5b5061023b61055b3660046117fb565b60076020525f908152604090205460ff1681565b34801561057a575f80fd5b506101e8600c5481565b34801561058f575f80fd5b5061031561059e3660046117fb565b610b04565b6060600180546105b29061188b565b80601f01602080910402602001604051908101604052809291908181526020018280546105de9061188b565b80156106295780601f1061060057610100808354040283529160200191610629565b820191905f5260205f20905b81548152906001019060200180831161060c57829003601f168201915b5050505050905090565b5f61063f338484610b9b565b5060015b92915050565b5f610655848484610cbe565b506106a784336106a285604051806060016040528060288152602001611a60602891396001600160a01b038a165f908152600a6020908152604080832033845290915290205491906110f4565b610b9b565b5060015b9392505050565b335f818152600a602090815260408083206001600160a01b0387168452909152812054909161063f9185906106a2908661112c565b6005546040516001600160a01b03909116904780156108fc02915f818181858888f1935050505015801561071d573d5f803e3d5ffd5b50565b5f546001600160a01b031633146107525760405162461bcd60e51b8152600401610749906118c3565b60405180910390fd5b61075b5f61118a565b565b5f546001600160a01b031633146107865760405162461bcd60e51b8152600401610749906118c3565b6003805463ff00000019169055565b6060600280546105b29061188b565b5f61063f33846106a285604051806060016040528060258152602001611a8860259139335f908152600a602090815260408083206001600160a01b038d16845290915290205491906110f4565b5f6106a7338484610cbe565b5f546001600160a01b031633146108265760405162461bcd60e51b8152600401610749906118c3565b600354610100900460ff16156108725760405162461bcd60e51b8152602060048201526011602482015270416c7265616479206c61756e636865642160781b6044820152606401610749565b6003805461010061ff001990911617908190556040805163c45a015560e01b815290516401000000009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa1580156108d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f591906118f8565b6001600160a01b031663c9c6539630600360049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610955573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097991906118f8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e791906118f8565b600480546001600160a01b039283166001600160a01b031990911681179091555f908152600760205260409020805460ff1916600117905560035464010000000090041663f305d7193430610a50816001600160a01b03165f9081526009602052604090205490565b5f80610a635f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ac9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610aee9190611913565b50506003805462ff000019166201000017905550565b5f546001600160a01b03163314610b2d5760405162461bcd60e51b8152600401610749906118c3565b6001600160a01b038116610b925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610749565b61071d8161118a565b6001600160a01b038316610bfd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610749565b6001600160a01b038216610c5e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610749565b6001600160a01b038381165f818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416610d235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610749565b6001600160a01b038316610d855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610749565b5f8211610de65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610749565b60125460ff1615610e0357610dfc8484846111d9565b90506106ab565b600354610100900460ff16610e94576001600160a01b0384165f9081526006602052604090205460ff1680610e4f57506001600160a01b0383165f9081526006602052604090205460ff165b610e945760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610749565b305f9081526009602052604090205460115481108015908190610eba575060125460ff16155b8015610ede57506001600160a01b0386165f9081526007602052604090205460ff16155b8015610ef2575060035462010000900460ff165b15610f0057610f00826112bc565b6005546001600160a01b03878116911614610f7f576040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260099091529190912054610f669186906110f4565b6001600160a01b0387165f908152600960205260409020555b5f610f8a87876112df565b610f9e57610f99878787611379565b610fa0565b845b6003549091506301000000900460ff168015610fc957506004546001600160a01b038881169116145b8015610fed57506001600160a01b0386165f9081526008602052604090205460ff16155b1561106b5760105461101d82611017896001600160a01b03165f9081526009602052604090205490565b9061112c565b111561106b5760405162461bcd60e51b815260206004820152601b60248201527f4d61782057616c6c6574204c696d6974204578636565646564212100000000006044820152606401610749565b6001600160a01b0386165f9081526009602052604090205461108d908261112c565b6001600160a01b038088165f8181526009602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110e09085815260200190565b60405180910390a3600193505050506106ab565b5f81848411156111175760405162461bcd60e51b81526004016107499190611772565b505f6111238486611952565b95945050505050565b5f806111388385611965565b9050838110156106ab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610749565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526009909152918220546112299184906110f4565b6001600160a01b038086165f908152600960205260408082209390935590851681522054611257908361112c565b6001600160a01b038085165f8181526009602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112aa9086815260200190565b60405180910390a35060019392505050565b6012805460ff191660011790556112d281611494565b506012805460ff19169055565b6001600160a01b0382165f9081526006602052604081205460ff168061131c57506001600160a01b0382165f9081526006602052604090205460ff165b1561132957506001610643565b6001600160a01b0383165f9081526007602052604090205460ff168061136657506001600160a01b0382165f9081526007602052604090205460ff165b1561137257505f610643565b505f610643565b6001600160a01b0383165f90815260076020526040812054819060ff16156113c3576113bc600b546113b6600c548661164690919063ffffffff16565b906116c4565b9050611412565b6001600160a01b0384165f9081526007602052604090205460ff161561141257600b54600554600d5461140f92916113b691611408916001600160a01b031631611705565b8690611646565b90505b801561148a57305f90815260096020526040902054611431908261112c565b305f81815260096020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114819085815260200190565b60405180910390a35b6111238382611705565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106114c7576114c7611978565b60200260200101906001600160a01b031690816001600160a01b031681525050600360049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611538573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155c91906118f8565b8160018151811061156f5761156f611978565b6001600160a01b03928316602091820292909201015260035461159d91309164010000000090041684610b9b565b60035460405163791ac94760e01b81526401000000009091046001600160a01b03169063791ac947906115dc9085905f908690309042906004016119ce565b5f604051808303815f87803b1580156115f3575f80fd5b505af1158015611605573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161163a929190611a09565b60405180910390a15050565b5f825f0361165557505f610643565b5f6116608385611a29565b90508261166d8583611a40565b146106ab5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610749565b5f6106ab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611746565b5f6106ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110f4565b5f81836117665760405162461bcd60e51b81526004016107499190611772565b505f6111238486611a40565b5f6020808352835180828501525f5b8181101561179d57858101830151858201604001528201611781565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461071d575f80fd5b5f80604083850312156117e2575f80fd5b82356117ed816117bd565b946020939093013593505050565b5f6020828403121561180b575f80fd5b81356106ab816117bd565b5f805f60608486031215611828575f80fd5b8335611833816117bd565b92506020840135611843816117bd565b929592945050506040919091013590565b5f8060408385031215611865575f80fd5b8235611870816117bd565b91506020830135611880816117bd565b809150509250929050565b600181811c9082168061189f57607f821691505b6020821081036118bd57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611908575f80fd5b81516106ab816117bd565b5f805f60608486031215611925575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106435761064361193e565b808201808211156106435761064361193e565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b838110156119c35781516001600160a01b03168752958201959082019060010161199e565b509495945050505050565b85815284602082015260a060408201525f6119ec60a083018661198c565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611a21604083018461198c565b949350505050565b80820281158282048414176106435761064361193e565b5f82611a5a57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201185fbf20c2d1347365a1364c3963690e7422b186780719c8d5211102501e5ab64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101c8575f3560e01c8063751039fc116100f2578063a9059cbb11610092578063dd62ed3e11610062578063dd62ed3e146104fd578063e5e31b1314610541578063efcc52de1461056f578063f2fde38b14610584575f80fd5b8063a9059cbb14610489578063c816841b146104a8578063c9567bf9146104c7578063dc41c3a8146104cf575f80fd5b80638f9a55c0116100cd5780638f9a55c01461042257806395d89b4114610437578063979109f81461044b578063a457c2d71461046a575f80fd5b8063751039fc146103dd5780637d1db4a5146103f15780638da5cb5b14610406575f80fd5b8063313ce567116101685780636ddd1713116101385780636ddd17131461033757806370a0823114610356578063715018a61461038a578063735de9f71461039e575f80fd5b8063313ce567146102c157806339509351146102e257806367272999146103015780636d800a3c14610317575f80fd5b806318160ddd116101a357806318160ddd1461024b578063200a692d1461025f5780632039313b1461027457806323b872dd146102a2575f80fd5b80630445b667146101d357806306fdde03146101fb578063095ea7b31461021c575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b506101e860115481565b6040519081526020015b60405180910390f35b348015610206575f80fd5b5061020f6105a3565b6040516101f29190611772565b348015610227575f80fd5b5061023b6102363660046117d1565b610633565b60405190151581526020016101f2565b348015610256575f80fd5b50600e546101e8565b34801561026a575f80fd5b506101e8600d5481565b34801561027f575f80fd5b5061023b61028e3660046117fb565b60066020525f908152604090205460ff1681565b3480156102ad575f80fd5b5061023b6102bc366004611816565b610649565b3480156102cc575f80fd5b5060035460405160ff90911681526020016101f2565b3480156102ed575f80fd5b5061023b6102fc3660046117d1565b6106b2565b34801561030c575f80fd5b506103156106e7565b005b348015610322575f80fd5b5060035461023b906301000000900460ff1681565b348015610342575f80fd5b5060035461023b9062010000900460ff1681565b348015610361575f80fd5b506101e86103703660046117fb565b6001600160a01b03165f9081526009602052604090205490565b348015610395575f80fd5b50610315610720565b3480156103a9575f80fd5b506003546103c59064010000000090046001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b3480156103e8575f80fd5b5061031561075d565b3480156103fc575f80fd5b506101e8600f5481565b348015610411575f80fd5b505f546001600160a01b03166103c5565b34801561042d575f80fd5b506101e860105481565b348015610442575f80fd5b5061020f610795565b348015610456575f80fd5b506005546103c5906001600160a01b031681565b348015610475575f80fd5b5061023b6104843660046117d1565b6107a4565b348015610494575f80fd5b5061023b6104a33660046117d1565b6107f1565b3480156104b3575f80fd5b506004546103c5906001600160a01b031681565b6103156107fd565b3480156104da575f80fd5b5061023b6104e93660046117fb565b60086020525f908152604090205460ff1681565b348015610508575f80fd5b506101e8610517366004611854565b6001600160a01b039182165f908152600a6020908152604080832093909416825291909152205490565b34801561054c575f80fd5b5061023b61055b3660046117fb565b60076020525f908152604090205460ff1681565b34801561057a575f80fd5b506101e8600c5481565b34801561058f575f80fd5b5061031561059e3660046117fb565b610b04565b6060600180546105b29061188b565b80601f01602080910402602001604051908101604052809291908181526020018280546105de9061188b565b80156106295780601f1061060057610100808354040283529160200191610629565b820191905f5260205f20905b81548152906001019060200180831161060c57829003601f168201915b5050505050905090565b5f61063f338484610b9b565b5060015b92915050565b5f610655848484610cbe565b506106a784336106a285604051806060016040528060288152602001611a60602891396001600160a01b038a165f908152600a6020908152604080832033845290915290205491906110f4565b610b9b565b5060015b9392505050565b335f818152600a602090815260408083206001600160a01b0387168452909152812054909161063f9185906106a2908661112c565b6005546040516001600160a01b03909116904780156108fc02915f818181858888f1935050505015801561071d573d5f803e3d5ffd5b50565b5f546001600160a01b031633146107525760405162461bcd60e51b8152600401610749906118c3565b60405180910390fd5b61075b5f61118a565b565b5f546001600160a01b031633146107865760405162461bcd60e51b8152600401610749906118c3565b6003805463ff00000019169055565b6060600280546105b29061188b565b5f61063f33846106a285604051806060016040528060258152602001611a8860259139335f908152600a602090815260408083206001600160a01b038d16845290915290205491906110f4565b5f6106a7338484610cbe565b5f546001600160a01b031633146108265760405162461bcd60e51b8152600401610749906118c3565b600354610100900460ff16156108725760405162461bcd60e51b8152602060048201526011602482015270416c7265616479206c61756e636865642160781b6044820152606401610749565b6003805461010061ff001990911617908190556040805163c45a015560e01b815290516401000000009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa1580156108d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f591906118f8565b6001600160a01b031663c9c6539630600360049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610955573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097991906118f8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e791906118f8565b600480546001600160a01b039283166001600160a01b031990911681179091555f908152600760205260409020805460ff1916600117905560035464010000000090041663f305d7193430610a50816001600160a01b03165f9081526009602052604090205490565b5f80610a635f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ac9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610aee9190611913565b50506003805462ff000019166201000017905550565b5f546001600160a01b03163314610b2d5760405162461bcd60e51b8152600401610749906118c3565b6001600160a01b038116610b925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610749565b61071d8161118a565b6001600160a01b038316610bfd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610749565b6001600160a01b038216610c5e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610749565b6001600160a01b038381165f818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416610d235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610749565b6001600160a01b038316610d855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610749565b5f8211610de65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610749565b60125460ff1615610e0357610dfc8484846111d9565b90506106ab565b600354610100900460ff16610e94576001600160a01b0384165f9081526006602052604090205460ff1680610e4f57506001600160a01b0383165f9081526006602052604090205460ff165b610e945760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610749565b305f9081526009602052604090205460115481108015908190610eba575060125460ff16155b8015610ede57506001600160a01b0386165f9081526007602052604090205460ff16155b8015610ef2575060035462010000900460ff165b15610f0057610f00826112bc565b6005546001600160a01b03878116911614610f7f576040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260099091529190912054610f669186906110f4565b6001600160a01b0387165f908152600960205260409020555b5f610f8a87876112df565b610f9e57610f99878787611379565b610fa0565b845b6003549091506301000000900460ff168015610fc957506004546001600160a01b038881169116145b8015610fed57506001600160a01b0386165f9081526008602052604090205460ff16155b1561106b5760105461101d82611017896001600160a01b03165f9081526009602052604090205490565b9061112c565b111561106b5760405162461bcd60e51b815260206004820152601b60248201527f4d61782057616c6c6574204c696d6974204578636565646564212100000000006044820152606401610749565b6001600160a01b0386165f9081526009602052604090205461108d908261112c565b6001600160a01b038088165f8181526009602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110e09085815260200190565b60405180910390a3600193505050506106ab565b5f81848411156111175760405162461bcd60e51b81526004016107499190611772565b505f6111238486611952565b95945050505050565b5f806111388385611965565b9050838110156106ab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610749565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526009909152918220546112299184906110f4565b6001600160a01b038086165f908152600960205260408082209390935590851681522054611257908361112c565b6001600160a01b038085165f8181526009602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112aa9086815260200190565b60405180910390a35060019392505050565b6012805460ff191660011790556112d281611494565b506012805460ff19169055565b6001600160a01b0382165f9081526006602052604081205460ff168061131c57506001600160a01b0382165f9081526006602052604090205460ff165b1561132957506001610643565b6001600160a01b0383165f9081526007602052604090205460ff168061136657506001600160a01b0382165f9081526007602052604090205460ff165b1561137257505f610643565b505f610643565b6001600160a01b0383165f90815260076020526040812054819060ff16156113c3576113bc600b546113b6600c548661164690919063ffffffff16565b906116c4565b9050611412565b6001600160a01b0384165f9081526007602052604090205460ff161561141257600b54600554600d5461140f92916113b691611408916001600160a01b031631611705565b8690611646565b90505b801561148a57305f90815260096020526040902054611431908261112c565b305f81815260096020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114819085815260200190565b60405180910390a35b6111238382611705565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106114c7576114c7611978565b60200260200101906001600160a01b031690816001600160a01b031681525050600360049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611538573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155c91906118f8565b8160018151811061156f5761156f611978565b6001600160a01b03928316602091820292909201015260035461159d91309164010000000090041684610b9b565b60035460405163791ac94760e01b81526401000000009091046001600160a01b03169063791ac947906115dc9085905f908690309042906004016119ce565b5f604051808303815f87803b1580156115f3575f80fd5b505af1158015611605573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161163a929190611a09565b60405180910390a15050565b5f825f0361165557505f610643565b5f6116608385611a29565b90508261166d8583611a40565b146106ab5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610749565b5f6106ab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611746565b5f6106ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110f4565b5f81836117665760405162461bcd60e51b81526004016107499190611772565b505f6111238486611a40565b5f6020808352835180828501525f5b8181101561179d57858101830151858201604001528201611781565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461071d575f80fd5b5f80604083850312156117e2575f80fd5b82356117ed816117bd565b946020939093013593505050565b5f6020828403121561180b575f80fd5b81356106ab816117bd565b5f805f60608486031215611828575f80fd5b8335611833816117bd565b92506020840135611843816117bd565b929592945050506040919091013590565b5f8060408385031215611865575f80fd5b8235611870816117bd565b91506020830135611880816117bd565b809150509250929050565b600181811c9082168061189f57607f821691505b6020821081036118bd57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611908575f80fd5b81516106ab816117bd565b5f805f60608486031215611925575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106435761064361193e565b808201808211156106435761064361193e565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b838110156119c35781516001600160a01b03168752958201959082019060010161199e565b509495945050505050565b85815284602082015260a060408201525f6119ec60a083018661198c565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611a21604083018461198c565b949350505050565b80820281158282048414176106435761064361193e565b5f82611a5a57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201185fbf20c2d1347365a1364c3963690e7422b186780719c8d5211102501e5ab64736f6c63430008140033

Deployed Bytecode Sourcemap

4008:9564:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:56;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5057:56:0;;;;;;;;11919:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13339:193::-;;;;;;;;;;-1:-1:-1;13339:193:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;13339:193:0;1205:187:1;12196:100:0;;;;;;;;;;-1:-1:-1;12276:12:0;;12196:100;;4828:30;;;;;;;;;;;;;;;;4492:44;;;;;;;;;;-1:-1:-1;4492:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6591:446;;;;;;;;;;-1:-1:-1;6591:446:0;;;;;:::i;:::-;;:::i;12105:83::-;;;;;;;;;;-1:-1:-1;12171:9:0;;12105:83;;12171:9;;;;2252:36:1;;2240:2;2225:18;12105:83:0;2110:184:1;12623:300:0;;;;;;;;;;-1:-1:-1;12623:300:0;;;;;:::i;:::-;;:::i;11118:100::-;;;;;;;;;;;;;:::i;:::-;;4279:31;;;;;;;;;;-1:-1:-1;4279:31:0;;;;;;;;;;;4241;;;;;;;;;;-1:-1:-1;4241:31:0;;;;;;;;;;;12304:119;;;;;;;;;;-1:-1:-1;12304:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;12397:18:0;12370:7;12397:18;;;:9;:18;;;;;;;12304:119;1924:94;;;;;;;;;;;;;:::i;4319:37::-;;;;;;;;;;-1:-1:-1;4319:37:0;;;;;;;-1:-1:-1;;;;;4319:37:0;;;;;;-1:-1:-1;;;;;2488:32:1;;;2470:51;;2458:2;2443:18;4319:37:0;2299:228:1;11226:82:0;;;;;;;;;;;;;:::i;4933:54::-;;;;;;;;;;;;;;;;1615:87;;;;;;;;;;-1:-1:-1;1661:7:0;1688:6;-1:-1:-1;;;;;1688:6:0;1615:87;;4994:56;;;;;;;;;;;;;;;;12010:87;;;;;;;;;;;;;:::i;4396:89::-;;;;;;;;;;-1:-1:-1;4396:89:0;;;;-1:-1:-1;;;;;4396:89:0;;;12931:400;;;;;;;;;;-1:-1:-1;12931:400:0;;;;;:::i;:::-;;:::i;6384:199::-;;;;;;;;;;-1:-1:-1;6384:199:0;;;;;:::i;:::-;;:::i;4363:26::-;;;;;;;;;;-1:-1:-1;4363:26:0;;;;-1:-1:-1;;;;;4363:26:0;;;11316:595;;;:::i;4588:46::-;;;;;;;;;;-1:-1:-1;4588:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12431:184;;;;;;;;;;-1:-1:-1;12431:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;12580:18:0;;;12548:7;12580:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12431:184;4543:38;;;;;;;;;;-1:-1:-1;4543:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4792:29;;;;;;;;;;;;;;;;2026:229;;;;;;;;;;-1:-1:-1;2026:229:0;;;;;:::i;:::-;;:::i;11919:83::-;11956:13;11989:5;11982:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11919:83;:::o;13339:193::-;13441:4;13463:39;250:10;13486:7;13495:6;13463:8;:39::i;:::-;-1:-1:-1;13520:4:0;13339:193;;;;;:::o;6591:446::-;6723:4;6740:36;6750:6;6758:9;6769:6;6740:9;:36::i;:::-;-1:-1:-1;6787:220:0;6810:6;250:10;6858:138;6914:6;6858:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6858:19:0;;;;;;:11;:19;;;;;;;;250:10;6858:33;;;;;;;;;;:37;:138::i;:::-;6787:8;:220::i;:::-;-1:-1:-1;7025:4:0;6591:446;;;;;;:::o;12623:300::-;250:10;12738:4;12832:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12832:34:0;;;;;;;;;;12738:4;;12760:133;;12810:7;;12832:50;;12871:10;12832:38;:50::i;11118:100::-;11166:11;;11158:52;;-1:-1:-1;;;;;11166:11:0;;;;11188:21;11158:52;;;;;11166:11;11158:52;11166:11;11158:52;11188:21;11166:11;11158:52;;;;;;;;;;;;;;;;;;;;;11118:100::o;1924:94::-;1661:7;1688:6;-1:-1:-1;;;;;1688:6:0;250:10;1836:23;1828:68;;;;-1:-1:-1;;;1828:68:0;;;;;;;:::i;:::-;;;;;;;;;1989:21:::1;2007:1;1989:9;:21::i;:::-;1924:94::o:0;11226:82::-;1661:7;1688:6;-1:-1:-1;;;;;1688:6:0;250:10;1836:23;1828:68;;;;-1:-1:-1;;;1828:68:0;;;;;;;:::i;:::-;11280:12:::1;:20:::0;;-1:-1:-1;;11280:20:0::1;::::0;;11226:82::o;12010:87::-;12049:13;12082:7;12075:14;;;;;:::i;12931:400::-;13051:4;13073:228;250:10;13123:7;13145:145;13202:15;13145:145;;;;;;;;;;;;;;;;;250:10;13145:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13145:34:0;;;;;;;;;;;;:38;:145::i;6384:199::-;6489:4;6511:42;250:10;6535:9;6546:6;6511:9;:42::i;11316:595::-;1661:7;1688:6;-1:-1:-1;;;;;1688:6:0;250:10;1836:23;1828:68;;;;-1:-1:-1;;;1828:68:0;;;;;;;:::i;:::-;11386:13:::1;::::0;::::1;::::0;::::1;;;11385:14;11377:44;;;::::0;-1:-1:-1;;;11377:44:0;;4081:2:1;11377:44:0::1;::::0;::::1;4063:21:1::0;4120:2;4100:18;;;4093:30;-1:-1:-1;;;4139:18:1;;;4132:47;4196:18;;11377:44:0::1;3879:341:1::0;11377:44:0::1;11434:13;:20:::0;;::::1;-1:-1:-1::0;;11434:20:0;;::::1;;::::0;;;;11497:23:::1;::::0;;-1:-1:-1;;;11497:23:0;;;;:13;;;::::1;-1:-1:-1::0;;;;;11497:13:0::1;::::0;:21:::1;::::0;:13:::1;:23:::0;;::::1;::::0;::::1;::::0;;;;;;;;;:13;:23:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11479:53:0::1;;11555:4;11575:13;;;;;;;;;-1:-1:-1::0;;;;;11575:13:0::1;-1:-1:-1::0;;;;;11575:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11479:127;::::0;-1:-1:-1;;;;;;11479:127:0::1;::::0;;;;;;-1:-1:-1;;;;;4711:15:1;;;11479:127:0::1;::::0;::::1;4693:34:1::0;4763:15;;4743:18;;;4736:43;4628:18;;11479:127:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11465:11;:141:::0;;-1:-1:-1;;;;;11465:141:0;;::::1;-1:-1:-1::0;;;;;;11465:141:0;;::::1;::::0;::::1;::::0;;;:11:::1;11617:28:::0;;;:6:::1;:28;::::0;;;;:35;;-1:-1:-1;;11617:35:0::1;11465:141:::0;11617:35:::1;::::0;;11663:13:::1;::::0;;;::::1;;:29;11700:9;11733:4;11753:24;11733:4:::0;-1:-1:-1;;;;;12397:18:0;12370:7;12397:18;;;:9;:18;;;;;;;12304:119;11753:24:::1;11792:1;11808::::0;11824:7:::1;1661::::0;1688:6;-1:-1:-1;;;;;1688:6:0;;1615:87;11824:7:::1;11663:209;::::0;::::1;::::0;;;-1:-1:-1;;;;;;11663:209:0;;;-1:-1:-1;;;;;5149:15:1;;;11663:209:0::1;::::0;::::1;5131:34:1::0;5181:18;;;5174:34;;;;5224:18;;;5217:34;;;;5267:18;;;5260:34;5331:15;;;5310:19;;;5303:44;11846:15:0::1;5363:19:1::0;;;5356:35;5065:19;;11663:209:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11885:11:0::1;:18:::0;;-1:-1:-1;;11885:18:0::1;::::0;::::1;::::0;;-1:-1:-1;11316:595:0:o;2026:229::-;1661:7;1688:6;-1:-1:-1;;;;;1688:6:0;250:10;1836:23;1828:68;;;;-1:-1:-1;;;1828:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2129:22:0;::::1;2107:110;;;::::0;-1:-1:-1;;;2107:110:0;;5915:2:1;2107:110:0::1;::::0;::::1;5897:21:1::0;5954:2;5934:18;;;5927:30;5993:34;5973:18;;;5966:62;-1:-1:-1;;;6044:18:1;;;6037:36;6090:19;;2107:110:0::1;5713:402:1::0;2107:110:0::1;2228:19;2238:8;2228:9;:19::i;6005:371::-:0;-1:-1:-1;;;;;6132:19:0;;6124:68;;;;-1:-1:-1;;;6124:68:0;;6322:2:1;6124:68:0;;;6304:21:1;6361:2;6341:18;;;6334:30;6400:34;6380:18;;;6373:62;-1:-1:-1;;;6451:18:1;;;6444:34;6495:19;;6124:68:0;6120:400:1;6124:68:0;-1:-1:-1;;;;;6211:21:0;;6203:68;;;;-1:-1:-1;;;6203:68:0;;6727:2:1;6203:68:0;;;6709:21:1;6766:2;6746:18;;;6739:30;6805:34;6785:18;;;6778:62;-1:-1:-1;;;6856:18:1;;;6849:32;6898:19;;6203:68:0;6525:398:1;6203:68:0;-1:-1:-1;;;;;6284:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6336:32;;160:25:1;;;6336:32:0;;133:18:1;6336:32:0;;;;;;;6005:371;;;:::o;7045:1966::-;7166:4;-1:-1:-1;;;;;7191:20:0;;7183:70;;;;-1:-1:-1;;;7183:70:0;;7130:2:1;7183:70:0;;;7112:21:1;7169:2;7149:18;;;7142:30;7208:34;7188:18;;;7181:62;-1:-1:-1;;;7259:18:1;;;7252:35;7304:19;;7183:70:0;6928:401:1;7183:70:0;-1:-1:-1;;;;;7272:23:0;;7264:71;;;;-1:-1:-1;;;7264:71:0;;7536:2:1;7264:71:0;;;7518:21:1;7575:2;7555:18;;;7548:30;7614:34;7594:18;;;7587:62;-1:-1:-1;;;7665:18:1;;;7658:33;7708:19;;7264:71:0;7334:399:1;7264:71:0;7363:1;7354:6;:10;7346:64;;;;-1:-1:-1;;;7346:64:0;;7940:2:1;7346:64:0;;;7922:21:1;7979:2;7959:18;;;7952:30;8018:34;7998:18;;;7991:62;-1:-1:-1;;;8069:18:1;;;8062:39;8118:19;;7346:64:0;7738:405:1;7346:64:0;7427:6;;;;7423:1581;;;7457:41;7472:6;7480:9;7491:6;7457:14;:41::i;:::-;7450:48;;;;7423:1581;7536:13;;;;;;;7531:198;;-1:-1:-1;;;;;7600:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;7624:23:0;;;;;;:12;:23;;;;;;;;7600:47;7570:143;;;;-1:-1:-1;;;7570:143:0;;8350:2:1;7570:143:0;;;8332:21:1;8389:2;8369:18;;;8362:30;-1:-1:-1;;;8408:18:1;;;8401:52;8470:18;;7570:143:0;8148:346:1;7570:143:0;7794:4;7745:28;12397:18;;;:9;:18;;;;;;7887:13;;7846:54;;;;;;;7939:51;;-1:-1:-1;7984:6:0;;;;7983:7;7939:51;:87;;;;-1:-1:-1;;;;;;8012:14:0;;;;;;:6;:14;;;;;;;;8011:15;7939:87;:119;;;;-1:-1:-1;8047:11:0;;;;;;;7939:119;7917:222;;;8093:30;8102:20;8093:8;:30::i;:::-;8167:11;;-1:-1:-1;;;;;8157:21:0;;;8167:11;;8157:21;8153:178;;8217:114;;;;;;;;;;;-1:-1:-1;;;8217:114:0;;;;;;;;-1:-1:-1;;;;;8217:17:0;;-1:-1:-1;8217:17:0;;;:9;:17;;;;;;;;:114;;8261:6;;8217:21;:114::i;:::-;-1:-1:-1;;;;;8197:17:0;;;;;;:9;:17;;;;;:134;8153:178;8348:19;8370:35;8387:6;8395:9;8370:16;:35::i;:::-;:115;;8451:34;8459:6;8467:9;8478:6;8451:7;:34::i;:::-;8370:115;;;8425:6;8370:115;8524:12;;8348:137;;-1:-1:-1;8524:12:0;;;;;:54;;;;-1:-1:-1;8567:11:0;;-1:-1:-1;;;;;8557:21:0;;;8567:11;;8557:21;8524:54;:101;;;;-1:-1:-1;;;;;;8600:25:0;;;;;;:14;:25;;;;;;;;8599:26;8524:101;8502:330;;;8731:14;;8690:37;8715:11;8690:20;8700:9;-1:-1:-1;;;;;12397:18:0;12370:7;12397:18;;;:9;:18;;;;;;;12304:119;8690:20;:24;;:37::i;:::-;:55;;8660:156;;;;-1:-1:-1;;;8660:156:0;;8701:2:1;8660:156:0;;;8683:21:1;8740:2;8720:18;;;8713:30;8779:29;8759:18;;;8752:57;8826:18;;8660:156:0;8499:351:1;8660:156:0;-1:-1:-1;;;;;8869:20:0;;;;;;:9;:20;;;;;;:37;;8894:11;8869:24;:37::i;:::-;-1:-1:-1;;;;;8846:20:0;;;;;;;:9;:20;;;;;;;:60;;;;8926:40;;;;;;;;;;8954:11;160:25:1;;148:2;133:18;;14:177;8926:40:0;;;;;;;;8988:4;8981:11;;;;;;;2800:226;2920:7;2956:12;2948:6;;;;2940:29;;;;-1:-1:-1;;;2940:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2980:9:0;2992:5;2996:1;2992;:5;:::i;:::-;2980:17;2800:226;-1:-1:-1;;;;;2800:226:0:o;2467:181::-;2525:7;;2557:5;2561:1;2557;:5;:::i;:::-;2545:17;;2586:1;2581;:6;;2573:46;;;;-1:-1:-1;;;2573:46:0;;9452:2:1;2573:46:0;;;9434:21:1;9491:2;9471:18;;;9464:30;9530:29;9510:18;;;9503:57;9577:18;;2573:46:0;9250:351:1;2263:173:0;2319:16;2338:6;;-1:-1:-1;;;;;2355:17:0;;;-1:-1:-1;;;;;;2355:17:0;;;;;;2388:40;;2338:6;;;;;;;2388:40;;2319:16;2388:40;2308:128;2263:173;:::o;9019:401::-;9183:90;;;;;;;;;;;-1:-1:-1;;;9183:90:0;;;;;;;;-1:-1:-1;;;;;9183:17:0;;9146:4;9183:17;;;:9;:17;;;;;;;:90;;9219:6;;9183:21;:90::i;:::-;-1:-1:-1;;;;;9163:17:0;;;;;;;:9;:17;;;;;;:110;;;;9307:20;;;;;;;:32;;9332:6;9307:24;:32::i;:::-;-1:-1:-1;;;;;9284:20:0;;;;;;;:9;:20;;;;;;;:55;;;;9355:35;;;;;;;;;;9383:6;160:25:1;;148:2;133:18;;14:177;9355:35:0;;;;;;;;-1:-1:-1;9408:4:0;9019:401;;;;;:::o;10471:113::-;5173:6;:13;;-1:-1:-1;;5173:13:0;5182:4;5173:13;;;10543:33:::1;10560:15:::0;10543:16:::1;:33::i;:::-;-1:-1:-1::0;5209:6:0;:14;;-1:-1:-1;;5209:14:0;;;10471:113::o;9428:362::-;-1:-1:-1;;;;;9565:20:0;;9539:4;9565:20;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;9589:23:0;;;;;;:12;:23;;;;;;;;9565:47;9561:222;;;-1:-1:-1;9636:4:0;9629:11;;9561:222;-1:-1:-1;;;;;9662:14:0;;;;;;:6;:14;;;;;;;;;:35;;-1:-1:-1;;;;;;9680:17:0;;;;;;:6;:17;;;;;;;;9662:35;9658:125;;;-1:-1:-1;9721:5:0;9714:12;;9658:125;-1:-1:-1;9766:5:0;9759:12;;9798:665;-1:-1:-1;;;;;9972:14:0;;9918:7;9972:14;;;:6;:14;;;;;;9918:7;;9972:14;;9968:261;;;10015:38;10042:10;;10015:22;10026:10;;10015:6;:10;;:22;;;;:::i;:::-;:26;;:38::i;:::-;10003:50;;9968:261;;;-1:-1:-1;;;;;10075:17:0;;;;;;:6;:17;;;;;;;;10071:158;;;10192:10;;10148:11;;10132;;10121:96;;10192:10;10121:48;;10132:36;;-1:-1:-1;;;;;10148:11:0;:19;10132:15;:36::i;:::-;10121:6;;:10;:48::i;:96::-;10109:108;;10071:158;10245:13;;10241:174;;10320:4;10302:24;;;;:9;:24;;;;;;:39;;10331:9;10302:28;:39::i;:::-;10293:4;10275:24;;;;:9;:24;;;;;;;:66;;;;10361:42;;-1:-1:-1;;;;;10361:42:0;;;;;;;10393:9;160:25:1;;148:2;133:18;;14:177;10361:42:0;;;;;;;;10241:174;10434:21;:6;10445:9;10434:10;:21::i;10592:518::-;10682:16;;;10696:1;10682:16;;;;;;;;10658:21;;10682:16;;;;;;;;;;-1:-1:-1;10682:16:0;10658:40;;10727:4;10709;10714:1;10709:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;10709:23:0;;;-1:-1:-1;;;;;10709:23:0;;;;;10753:13;;;;;;;;;-1:-1:-1;;;;;10753:13:0;-1:-1:-1;;;;;10753:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10743:4;10748:1;10743:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10743:30:0;;;:7;;;;;;;;;:30;10816:13;;10784:60;;10801:4;;10816:13;;;;10832:11;10784:8;:60::i;:::-;10855:13;;:194;;-1:-1:-1;;;10855:194:0;;:13;;;;-1:-1:-1;;;;;10855:13:0;;:64;;:194;;10934:11;;10960:1;;10976:4;;11003;;11023:15;;10855:13;:194;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11067:35;11084:11;11097:4;11067:35;;;;;;;:::i;:::-;;;;;;;;10647:463;10592:518;:::o;3034:250::-;3092:7;3116:1;3121;3116:6;3112:47;;-1:-1:-1;3146:1:0;3139:8;;3112:47;3171:9;3183:5;3187:1;3183;:5;:::i;:::-;3171:17;-1:-1:-1;3216:1:0;3207:5;3211:1;3171:17;3207:5;:::i;:::-;:10;3199:56;;;;-1:-1:-1;;;3199:56:0;;11857:2:1;3199:56:0;;;11839:21:1;11896:2;11876:18;;;11869:30;11935:34;11915:18;;;11908:62;-1:-1:-1;;;11986:18:1;;;11979:31;12027:19;;3199:56:0;11655:397:1;3292:132:0;3350:7;3377:39;3381:1;3384;3377:39;;;;;;;;;;;;;;;;;:3;:39::i;2656:136::-;2714:7;2741:43;2745:1;2748;2741:43;;;;;;;;;;;;;;;;;:3;:43::i;3432:223::-;3552:7;3587:12;3580:5;3572:28;;;;-1:-1:-1;;;3572:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3611:9:0;3623:5;3627:1;3623;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;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:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2740:388::-;2808:6;2816;2869:2;2857:9;2848:7;2844:23;2840:32;2837:52;;;2885:1;2882;2875:12;2837:52;2924:9;2911:23;2943:31;2968:5;2943:31;:::i;:::-;2993:5;-1:-1:-1;3050:2:1;3035:18;;3022:32;3063:33;3022:32;3063:33;:::i;:::-;3115:7;3105:17;;;2740:388;;;;;:::o;3133:380::-;3212:1;3208:12;;;;3255;;;3276:61;;3330:4;3322:6;3318:17;3308:27;;3276:61;3383:2;3375:6;3372:14;3352:18;3349:38;3346:161;;3429:10;3424:3;3420:20;3417:1;3410:31;3464:4;3461:1;3454:15;3492:4;3489:1;3482:15;3346:161;;3133:380;;;:::o;3518:356::-;3720:2;3702:21;;;3739:18;;;3732:30;3798:34;3793:2;3778:18;;3771:62;3865:2;3850:18;;3518:356::o;4225:251::-;4295:6;4348:2;4336:9;4327:7;4323:23;4319:32;4316:52;;;4364:1;4361;4354:12;4316:52;4396:9;4390:16;4415:31;4440:5;4415:31;:::i;5402:306::-;5490:6;5498;5506;5559:2;5547:9;5538:7;5534:23;5530:32;5527:52;;;5575:1;5572;5565:12;5527:52;5604:9;5598:16;5588:26;;5654:2;5643:9;5639:18;5633:25;5623:35;;5698:2;5687:9;5683:18;5677:25;5667:35;;5402:306;;;;;:::o;8855:127::-;8916:10;8911:3;8907:20;8904:1;8897:31;8947:4;8944:1;8937:15;8971:4;8968:1;8961:15;8987:128;9054:9;;;9075:11;;;9072:37;;;9089:18;;:::i;9120:125::-;9185:9;;;9206:10;;;9203:36;;;9219:18;;:::i;9738:127::-;9799:10;9794:3;9790:20;9787:1;9780:31;9830:4;9827:1;9820:15;9854:4;9851:1;9844:15;9870:461;9923:3;9961:5;9955:12;9988:6;9983:3;9976:19;10014:4;10043:2;10038:3;10034:12;10027:19;;10080:2;10073:5;10069:14;10101:1;10111:195;10125:6;10122:1;10119:13;10111:195;;;10190:13;;-1:-1:-1;;;;;10186:39:1;10174:52;;10246:12;;;;10281:15;;;;10222:1;10140:9;10111:195;;;-1:-1:-1;10322:3:1;;9870:461;-1:-1:-1;;;;;9870:461:1:o;10336:582::-;10635:6;10624:9;10617:25;10678:6;10673:2;10662:9;10658:18;10651:34;10721:3;10716:2;10705:9;10701:18;10694:31;10598:4;10742:57;10794:3;10783:9;10779:19;10771:6;10742:57;:::i;:::-;-1:-1:-1;;;;;10835:32:1;;;;10830:2;10815:18;;10808:60;-1:-1:-1;10899:3:1;10884:19;10877:35;10734:65;10336:582;-1:-1:-1;;;10336:582:1:o;10923:332::-;11130:6;11119:9;11112:25;11173:2;11168;11157:9;11153:18;11146:30;11093:4;11193:56;11245:2;11234:9;11230:18;11222:6;11193:56;:::i;:::-;11185:64;10923:332;-1:-1:-1;;;;10923:332:1:o;11260:168::-;11333:9;;;11364;;11381:15;;;11375:22;;11361:37;11351:71;;11402:18;;:::i;11433:217::-;11473:1;11499;11489:132;;11543:10;11538:3;11534:20;11531:1;11524:31;11578:4;11575:1;11568:15;11606:4;11603:1;11596:15;11489:132;-1:-1:-1;11635:9:1;;11433:217::o

Swarm Source

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