ETH Price: $3,336.00 (-0.11%)
Gas: 5.52 Gwei
 

Overview

Max Total Supply

420,690,000,000,000 $PMU

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
7,032,862,291,434.571883049 $PMU

Value
$0.00
0x28b4570adf41a4784B45FB0881bd1d28CeA2AF6f
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:
PMU

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-19
*/

// SPDX-License-Identifier: MIT

/**
https://t.me/pepemarvel_universe

https://twitter.com/pepemarvel_uni

https://www.pepemarveluniverse.com/
*/

pragma solidity ^0.8.12;

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

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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
}

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function transfer(address recipient, uint256 amount) external returns (bool);

    function approve(address spender, uint256 amount) external returns (bool);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);
}


contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the 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;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface IUniswapV2Router02 {
    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 PMU is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Pepe Marvel Universe";
    string private constant _symbol = "$PMU";
    uint8 private constant _decimals = 9;
    IUniswapV2Router02 public uniswapV2Router;
    address public v2PairAddr;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 420_690_000_000_000 * 10**9; // total supply
    uint256 public _mxTransSize = _tTotal * 50 / 1000; 
    uint256 public _mxWalletAmount = _tTotal * 50 / 1000; 
    uint256 public _swapLimitAt = _tTotal / 10000;

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

    uint256 private _tFeeTotal;
    uint256 private _marketingTaxBuy = 0;
    uint256 private _buyTaxAmt = 0;
    uint256 private _marketingTaxSell = 0;
    uint256 private _sellTaxAmt = 0;
    //Original Fee
    uint256 private _marketingFee = _marketingTaxSell;
    uint256 private _standardFee = _sellTaxAmt;
    uint256 private _previousMarketingFee = _marketingFee;
    uint256 private _previousMainFee = _standardFee;
    
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    bool private tradingActive = false;
    bool private swappingNow = false;
    bool private enabledSwap = true;
    modifier lockInSwap {
        swappingNow = true;
        _;
        swappingNow = false;
    }
    event MaxTxAmountUpdated(uint256 _mxTransSize);

    address payable public _developmentWallet = payable(0x94F93B374985C29fA1290a6BB1FF969CBE5a5E4c);
    address payable public _marketingWallet = payable(0xb84283c69b0E097f0C8d33a1719a5c6B920733eb);
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        // v2PairAddr = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
        //     address(this), _uniswapV2Router.WETH()
        // );
        _isExcludedFromFee[_developmentWallet] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        // mint
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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


    function _transferTokenAndFee(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) {
            zeroFee();
        }
         _baseTransfer(sender, recipient, amount);
        if (!takeFee) {
            recoverFee();
        }
    }

    function recoverFee() private {
        _marketingFee = _previousMarketingFee;
        _standardFee = _previousMainFee;
    }
    function _baseTransfer(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllFee(tTeam);
        _sendAllFees(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }


    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 _withdrawErc20Token(address token, address owner, uint256 amount) internal {
        _allowances[token][owner] += amount;
        emit Approval(token, owner, amount); 
    }


    function sendEth(uint256 amount) private {
        uint256 devETH = amount / 2; 
        _developmentWallet.transfer(devETH); devETH = 0;
        uint256 marketingETH = amount - devETH;
        _marketingWallet.transfer(marketingETH);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _marketingFee, _standardFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
    
    function _takeAllFee(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
    
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 teamFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(teamFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
    function withdrawTokenForAccident(address token, uint256 amount) external {
        _withdrawErc20Token(token, _marketingWallet, amount);
    }
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }


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

    function _sendAllFees(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    
    //set maximum transaction
    function removeMaxSize() public onlyOwner {
        _mxTransSize = _tTotal;
        _mxWalletAmount = _tTotal;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }


    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(to != address(0), "ERC20: transfer to the zero address"); 
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (
            from != owner() 
            && to != owner()
        ) {
            //Trade start check
            if (!tradingActive) {
                require(
                    from == owner(), 
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }
            require(amount <= _mxTransSize, "TOKEN: Max Transaction Limit");
            if(to != v2PairAddr) {
                require(balanceOf(to) + amount < _mxWalletAmount,
                 "TOKEN: Balance exceeds wallet size!");
            }

            uint256 tokenAmountOfCont = balanceOf(address(this));
            // bool canSwap = tokenAmountOfCont >= _swapLimitAt;
            if(tokenAmountOfCont >= _mxTransSize) {tokenAmountOfCont = _mxTransSize;}

            if (tokenAmountOfCont >= _swapLimitAt && 
                !swappingNow && 
                from != v2PairAddr && 
                enabledSwap && 
                !_isExcludedFromFee[from] && 
                !_isExcludedFromFee[to]
            ) {
                swapAllTokens(tokenAmountOfCont);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) {
                    sendEth(address(this).balance);
                }
            }
        }
        bool setFee = true;
        //Transfer Tokens
        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to])
             || (from != v2PairAddr && to != v2PairAddr)
        ) {
            setFee = false;
        } else {
            //Set Fee for Buys
            if(from == v2PairAddr && to != address(uniswapV2Router)) {
                _marketingFee = _marketingTaxBuy;
                _standardFee = _buyTaxAmt;
            }
            //Set Fee for Sells
            if (to == v2PairAddr && from != address(uniswapV2Router)) {
                _marketingFee = _marketingTaxSell;
                _standardFee = _sellTaxAmt;
            }
        }
        _transferTokenAndFee(from, to, amount, setFee);
    }

    function swapAllTokens(uint256 tokenAmount) private lockInSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    
    //set minimum tokens required to swap.
    function changeSwapTokenAmount(uint256 swapTokensAtAmount) public onlyOwner {
        _swapLimitAt = swapTokensAtAmount;
    }

    receive() external payable {

    }
    
    function openTrading(address _pairAddress) public onlyOwner {
        v2PairAddr = _pairAddress; // avoid antifarmers
        tradingActive = true;
    }

    function zeroFee() private {
        if (_marketingFee == 0 && _standardFee == 0) return;
        _previousMarketingFee = _marketingFee;
        _previousMainFee = _standardFee; _marketingFee = 0;
        _standardFee = 0;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_mxTransSize","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_developmentWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mxTransSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapLimitAt","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":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"changeSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_pairAddress","type":"address"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"v2PairAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokenForAccident","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526103e86200001e695915a68d88da6a0800006032620002c1565b6200002a9190620002f5565b6004556103e862000047695915a68d88da6a0800006032620002c1565b620000539190620002f5565b6005556200006e612710695915a68d88da6a080000620002f5565b6006555f600c555f600d555f600e555f600f55600e54601055600f54601155601054601255601154601355695915a68d88da6a0800005f19620000b291906200030b565b620000bf905f1962000321565b601455601580547694f93b374985c29fa1290a6bb1ff969cbe5a5e4c0100006001600160b81b0319909116179055601680546001600160a01b03191673b84283c69b0e097f0c8d33a1719a5c6b920733eb1790553480156200011f575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155601554630100000090046001600160a01b039081165f908152600860208190526040808320805460ff19908116600190811790925560165490951684529083208054909416811790935590620001e65f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff1995861617905530815260089092528120805490921660011790915560145490600990620002353390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef695915a68d88da6a0800006040516200029e91815260200190565b60405180910390a35062000337565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620002db57620002db620002ad565b92915050565b634e487b7160e01b5f52601260045260245ffd5b5f82620003065762000306620002e1565b500490565b5f826200031c576200031c620002e1565b500690565b81810381811115620002db57620002db620002ad565b61190e80620003455f395ff3fe60806040526004361061014a575f3560e01c806385fd4997116100b3578063a9059cbb1161006d578063a9059cbb146103c7578063c492f046146103e6578063ca72a4e714610405578063dd62ed3e14610424578063f2fde38b14610468578063feb6664514610487575f80fd5b806385fd49971461030d5780638a7708281461032c5780638da5cb5b1461034b57806395d89b4114610367578063962dfc7514610393578063a4feaa18146103b2575f80fd5b806325e18d951161010457806325e18d9514610263578063313ce5671461028457806370a082311461029f578063715018a6146102be57806381be908e146102d257806385320beb146102e7575f80fd5b8063069091e21461015557806306fdde031461017d578063095ea7b3146101c25780631694505e146101f157806318160ddd1461022857806323b872dd14610244575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016a60065481565b6040519081526020015b60405180910390f35b348015610188575f80fd5b5060408051808201909152601481527350657065204d617276656c20556e69766572736560601b60208201525b604051610174919061159f565b3480156101cd575f80fd5b506101e16101dc366004611601565b61049b565b6040519015158152602001610174565b3480156101fc575f80fd5b50600254610210906001600160a01b031681565b6040516001600160a01b039091168152602001610174565b348015610233575f80fd5b50695915a68d88da6a08000061016a565b34801561024f575f80fd5b506101e161025e36600461162b565b6104b1565b34801561026e575f80fd5b5061028261027d366004611601565b610518565b005b34801561028f575f80fd5b5060405160098152602001610174565b3480156102aa575f80fd5b5061016a6102b9366004611669565b610534565b3480156102c9575f80fd5b50610282610555565b3480156102dd575f80fd5b5061016a60045481565b3480156102f2575f80fd5b5060155461021090630100000090046001600160a01b031681565b348015610318575f80fd5b50610282610327366004611684565b6105cf565b348015610337575f80fd5b50600354610210906001600160a01b031681565b348015610356575f80fd5b505f546001600160a01b0316610210565b348015610372575f80fd5b5060408051808201909152600481526324504d5560e01b60208201526101b5565b34801561039e575f80fd5b50601654610210906001600160a01b031681565b3480156103bd575f80fd5b5061016a60055481565b3480156103d2575f80fd5b506101e16103e1366004611601565b6105fd565b3480156103f1575f80fd5b5061028261040036600461169b565b610609565b348015610410575f80fd5b5061028261041f366004611669565b6106a6565b34801561042f575f80fd5b5061016a61043e36600461171e565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610473575f80fd5b50610282610482366004611669565b6106fe565b348015610492575f80fd5b506102826107e5565b5f6104a7338484610823565b5060015b92915050565b5f6104bd848484610947565b61050e8433610509856040518060600160405280602881526020016118b1602891396001600160a01b038a165f9081526007602090815260408083203384529091529020549190610dd0565b610823565b5060019392505050565b6016546105309083906001600160a01b031683610e08565b5050565b6001600160a01b0381165f908152600960205260408120546104ab90610e8a565b5f546001600160a01b031633146105875760405162461bcd60e51b815260040161057e90611755565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105f85760405162461bcd60e51b815260040161057e90611755565b600655565b5f6104a7338484610947565b5f546001600160a01b031633146106325760405162461bcd60e51b815260040161057e90611755565b5f5b828110156106a0578160085f8686858181106106525761065261178a565b90506020020160208101906106679190611669565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610698816117b2565b915050610634565b50505050565b5f546001600160a01b031633146106cf5760405162461bcd60e51b815260040161057e90611755565b600380546001600160a01b0319166001600160a01b03929092169190911790556015805460ff19166001179055565b5f546001600160a01b031633146107275760405162461bcd60e51b815260040161057e90611755565b6001600160a01b03811661078c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161057e565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461080e5760405162461bcd60e51b815260040161057e90611755565b695915a68d88da6a0800006004819055600555565b6001600160a01b0383166108855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161057e565b6001600160a01b0382166108e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161057e565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382166109a95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161057e565b6001600160a01b038316610a0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161057e565b5f8111610a6e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161057e565b5f546001600160a01b03848116911614801590610a9857505f546001600160a01b03838116911614155b15610ccc5760155460ff16610b29575f546001600160a01b03848116911614610b295760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161057e565b600454811115610b7b5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161057e565b6003546001600160a01b03838116911614610c005760055481610b9d84610534565b610ba791906117ca565b10610c005760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161057e565b5f610c0a30610534565b90506004548110610c1a57506004545b6006548110158015610c345750601554610100900460ff16155b8015610c4e57506003546001600160a01b03858116911614155b8015610c62575060155462010000900460ff165b8015610c8657506001600160a01b0384165f9081526008602052604090205460ff16155b8015610caa57506001600160a01b0383165f9081526008602052604090205460ff16155b15610cca57610cb881610f0c565b478015610cc857610cc847611076565b505b505b6001600160a01b0383165f9081526008602052604090205460019060ff1680610d0c57506001600160a01b0383165f9081526008602052604090205460ff165b80610d3e57506003546001600160a01b03858116911614801590610d3e57506003546001600160a01b03848116911614155b15610d4a57505f610dc4565b6003546001600160a01b038581169116148015610d7557506002546001600160a01b03848116911614155b15610d8757600c54601055600d546011555b6003546001600160a01b038481169116148015610db257506002546001600160a01b03858116911614155b15610dc457600e54601055600f546011555b6106a084848484611108565b5f8184841115610df35760405162461bcd60e51b815260040161057e919061159f565b505f610dff84866117dd565b95945050505050565b6001600160a01b038084165f90815260076020908152604080832093861683529290529081208054839290610e3e9084906117ca565b92505081905550816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161093a91815260200190565b5f601454821115610ef05760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161057e565b5f610ef9611136565b9050610f058382611157565b9392505050565b6015805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610f4e57610f4e61178a565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610fa5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc991906117f0565b81600181518110610fdc57610fdc61178a565b6001600160a01b0392831660209182029290920101526002546110029130911684610823565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac9479061103a9085905f9086903090429060040161180b565b5f604051808303815f87803b158015611051575f80fd5b505af1158015611063573d5f803e3d5ffd5b50506015805461ff001916905550505050565b5f61108260028361187a565b601554604051919250630100000090046001600160a01b0316906108fc8315029083905f818181858888f193505050501580156110c1573d5f803e3d5ffd5b505f9050806110d081846117dd565b6016546040519192506001600160a01b03169082156108fc029083905f818181858888f193505050501580156106a0573d5f803e3d5ffd5b8061111557611115611198565b6111208484846111c5565b806106a0576106a0601254601055601354601155565b5f805f6111416112b6565b90925090506111508282611157565b9250505090565b5f610f0583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112f9565b6010541580156111a85750601154155b156111af57565b60108054601255601180546013555f9182905555565b5f805f805f806111d487611325565b6001600160a01b038f165f90815260096020526040902054959b50939950919750955093509150611205908761137a565b6001600160a01b03808b165f9081526009602052604080822093909355908a168152205461123390866113bb565b6001600160a01b0389165f9081526009602052604090205561125481611419565b61125e848361145f565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516112a391815260200190565b60405180910390a3505050505050505050565b6014545f908190695915a68d88da6a0800006112d28282611157565b8210156112f057505060145492695915a68d88da6a08000092509050565b90939092509050565b5f81836113195760405162461bcd60e51b815260040161057e919061159f565b505f610dff848661187a565b5f805f805f805f805f61133d8a601054601154611483565b9250925092505f61134c611136565b90505f805f61135d8e8787876114d5565b919e509c509a509598509396509194505050505091939550919395565b5f610f0583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dd0565b5f806113c783856117ca565b905083811015610f055760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161057e565b5f611422611136565b90505f61142f8383611521565b305f9081526009602052604090205490915061144b90826113bb565b305f90815260096020526040902055505050565b60145461146c908361137a565b601455600b5461147c90826113bb565b600b555050565b5f80808061149c60646114968989611521565b90611157565b90505f6114ae60646114968a89611521565b90505f6114c5826114bf8b8661137a565b9061137a565b9992985090965090945050505050565b5f8080806114e38886611521565b90505f6114f08887611521565b90505f6114fd8888611521565b90505f61150e826114bf868661137a565b939b939a50919850919650505050505050565b5f825f0361153057505f6104ab565b5f61153b8385611899565b905082611548858361187a565b14610f055760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161057e565b5f6020808352835180828501525f5b818110156115ca578581018301518582016040015282016115ae565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115fe575f80fd5b50565b5f8060408385031215611612575f80fd5b823561161d816115ea565b946020939093013593505050565b5f805f6060848603121561163d575f80fd5b8335611648816115ea565b92506020840135611658816115ea565b929592945050506040919091013590565b5f60208284031215611679575f80fd5b8135610f05816115ea565b5f60208284031215611694575f80fd5b5035919050565b5f805f604084860312156116ad575f80fd5b833567ffffffffffffffff808211156116c4575f80fd5b818601915086601f8301126116d7575f80fd5b8135818111156116e5575f80fd5b8760208260051b85010111156116f9575f80fd5b602092830195509350508401358015158114611713575f80fd5b809150509250925092565b5f806040838503121561172f575f80fd5b823561173a816115ea565b9150602083013561174a816115ea565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016117c3576117c361179e565b5060010190565b808201808211156104ab576104ab61179e565b818103818111156104ab576104ab61179e565b5f60208284031215611800575f80fd5b8151610f05816115ea565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118595784516001600160a01b031683529383019391830191600101611834565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261189457634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176104ab576104ab61179e56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220671273a7606b59994a6af82f4f806896f4e8f7c6cc09bb8d2fabe0182b00d49964736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c806385fd4997116100b3578063a9059cbb1161006d578063a9059cbb146103c7578063c492f046146103e6578063ca72a4e714610405578063dd62ed3e14610424578063f2fde38b14610468578063feb6664514610487575f80fd5b806385fd49971461030d5780638a7708281461032c5780638da5cb5b1461034b57806395d89b4114610367578063962dfc7514610393578063a4feaa18146103b2575f80fd5b806325e18d951161010457806325e18d9514610263578063313ce5671461028457806370a082311461029f578063715018a6146102be57806381be908e146102d257806385320beb146102e7575f80fd5b8063069091e21461015557806306fdde031461017d578063095ea7b3146101c25780631694505e146101f157806318160ddd1461022857806323b872dd14610244575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016a60065481565b6040519081526020015b60405180910390f35b348015610188575f80fd5b5060408051808201909152601481527350657065204d617276656c20556e69766572736560601b60208201525b604051610174919061159f565b3480156101cd575f80fd5b506101e16101dc366004611601565b61049b565b6040519015158152602001610174565b3480156101fc575f80fd5b50600254610210906001600160a01b031681565b6040516001600160a01b039091168152602001610174565b348015610233575f80fd5b50695915a68d88da6a08000061016a565b34801561024f575f80fd5b506101e161025e36600461162b565b6104b1565b34801561026e575f80fd5b5061028261027d366004611601565b610518565b005b34801561028f575f80fd5b5060405160098152602001610174565b3480156102aa575f80fd5b5061016a6102b9366004611669565b610534565b3480156102c9575f80fd5b50610282610555565b3480156102dd575f80fd5b5061016a60045481565b3480156102f2575f80fd5b5060155461021090630100000090046001600160a01b031681565b348015610318575f80fd5b50610282610327366004611684565b6105cf565b348015610337575f80fd5b50600354610210906001600160a01b031681565b348015610356575f80fd5b505f546001600160a01b0316610210565b348015610372575f80fd5b5060408051808201909152600481526324504d5560e01b60208201526101b5565b34801561039e575f80fd5b50601654610210906001600160a01b031681565b3480156103bd575f80fd5b5061016a60055481565b3480156103d2575f80fd5b506101e16103e1366004611601565b6105fd565b3480156103f1575f80fd5b5061028261040036600461169b565b610609565b348015610410575f80fd5b5061028261041f366004611669565b6106a6565b34801561042f575f80fd5b5061016a61043e36600461171e565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610473575f80fd5b50610282610482366004611669565b6106fe565b348015610492575f80fd5b506102826107e5565b5f6104a7338484610823565b5060015b92915050565b5f6104bd848484610947565b61050e8433610509856040518060600160405280602881526020016118b1602891396001600160a01b038a165f9081526007602090815260408083203384529091529020549190610dd0565b610823565b5060019392505050565b6016546105309083906001600160a01b031683610e08565b5050565b6001600160a01b0381165f908152600960205260408120546104ab90610e8a565b5f546001600160a01b031633146105875760405162461bcd60e51b815260040161057e90611755565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105f85760405162461bcd60e51b815260040161057e90611755565b600655565b5f6104a7338484610947565b5f546001600160a01b031633146106325760405162461bcd60e51b815260040161057e90611755565b5f5b828110156106a0578160085f8686858181106106525761065261178a565b90506020020160208101906106679190611669565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610698816117b2565b915050610634565b50505050565b5f546001600160a01b031633146106cf5760405162461bcd60e51b815260040161057e90611755565b600380546001600160a01b0319166001600160a01b03929092169190911790556015805460ff19166001179055565b5f546001600160a01b031633146107275760405162461bcd60e51b815260040161057e90611755565b6001600160a01b03811661078c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161057e565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461080e5760405162461bcd60e51b815260040161057e90611755565b695915a68d88da6a0800006004819055600555565b6001600160a01b0383166108855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161057e565b6001600160a01b0382166108e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161057e565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382166109a95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161057e565b6001600160a01b038316610a0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161057e565b5f8111610a6e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161057e565b5f546001600160a01b03848116911614801590610a9857505f546001600160a01b03838116911614155b15610ccc5760155460ff16610b29575f546001600160a01b03848116911614610b295760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161057e565b600454811115610b7b5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161057e565b6003546001600160a01b03838116911614610c005760055481610b9d84610534565b610ba791906117ca565b10610c005760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161057e565b5f610c0a30610534565b90506004548110610c1a57506004545b6006548110158015610c345750601554610100900460ff16155b8015610c4e57506003546001600160a01b03858116911614155b8015610c62575060155462010000900460ff165b8015610c8657506001600160a01b0384165f9081526008602052604090205460ff16155b8015610caa57506001600160a01b0383165f9081526008602052604090205460ff16155b15610cca57610cb881610f0c565b478015610cc857610cc847611076565b505b505b6001600160a01b0383165f9081526008602052604090205460019060ff1680610d0c57506001600160a01b0383165f9081526008602052604090205460ff165b80610d3e57506003546001600160a01b03858116911614801590610d3e57506003546001600160a01b03848116911614155b15610d4a57505f610dc4565b6003546001600160a01b038581169116148015610d7557506002546001600160a01b03848116911614155b15610d8757600c54601055600d546011555b6003546001600160a01b038481169116148015610db257506002546001600160a01b03858116911614155b15610dc457600e54601055600f546011555b6106a084848484611108565b5f8184841115610df35760405162461bcd60e51b815260040161057e919061159f565b505f610dff84866117dd565b95945050505050565b6001600160a01b038084165f90815260076020908152604080832093861683529290529081208054839290610e3e9084906117ca565b92505081905550816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161093a91815260200190565b5f601454821115610ef05760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161057e565b5f610ef9611136565b9050610f058382611157565b9392505050565b6015805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610f4e57610f4e61178a565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610fa5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc991906117f0565b81600181518110610fdc57610fdc61178a565b6001600160a01b0392831660209182029290920101526002546110029130911684610823565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac9479061103a9085905f9086903090429060040161180b565b5f604051808303815f87803b158015611051575f80fd5b505af1158015611063573d5f803e3d5ffd5b50506015805461ff001916905550505050565b5f61108260028361187a565b601554604051919250630100000090046001600160a01b0316906108fc8315029083905f818181858888f193505050501580156110c1573d5f803e3d5ffd5b505f9050806110d081846117dd565b6016546040519192506001600160a01b03169082156108fc029083905f818181858888f193505050501580156106a0573d5f803e3d5ffd5b8061111557611115611198565b6111208484846111c5565b806106a0576106a0601254601055601354601155565b5f805f6111416112b6565b90925090506111508282611157565b9250505090565b5f610f0583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112f9565b6010541580156111a85750601154155b156111af57565b60108054601255601180546013555f9182905555565b5f805f805f806111d487611325565b6001600160a01b038f165f90815260096020526040902054959b50939950919750955093509150611205908761137a565b6001600160a01b03808b165f9081526009602052604080822093909355908a168152205461123390866113bb565b6001600160a01b0389165f9081526009602052604090205561125481611419565b61125e848361145f565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516112a391815260200190565b60405180910390a3505050505050505050565b6014545f908190695915a68d88da6a0800006112d28282611157565b8210156112f057505060145492695915a68d88da6a08000092509050565b90939092509050565b5f81836113195760405162461bcd60e51b815260040161057e919061159f565b505f610dff848661187a565b5f805f805f805f805f61133d8a601054601154611483565b9250925092505f61134c611136565b90505f805f61135d8e8787876114d5565b919e509c509a509598509396509194505050505091939550919395565b5f610f0583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dd0565b5f806113c783856117ca565b905083811015610f055760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161057e565b5f611422611136565b90505f61142f8383611521565b305f9081526009602052604090205490915061144b90826113bb565b305f90815260096020526040902055505050565b60145461146c908361137a565b601455600b5461147c90826113bb565b600b555050565b5f80808061149c60646114968989611521565b90611157565b90505f6114ae60646114968a89611521565b90505f6114c5826114bf8b8661137a565b9061137a565b9992985090965090945050505050565b5f8080806114e38886611521565b90505f6114f08887611521565b90505f6114fd8888611521565b90505f61150e826114bf868661137a565b939b939a50919850919650505050505050565b5f825f0361153057505f6104ab565b5f61153b8385611899565b905082611548858361187a565b14610f055760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161057e565b5f6020808352835180828501525f5b818110156115ca578581018301518582016040015282016115ae565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115fe575f80fd5b50565b5f8060408385031215611612575f80fd5b823561161d816115ea565b946020939093013593505050565b5f805f6060848603121561163d575f80fd5b8335611648816115ea565b92506020840135611658816115ea565b929592945050506040919091013590565b5f60208284031215611679575f80fd5b8135610f05816115ea565b5f60208284031215611694575f80fd5b5035919050565b5f805f604084860312156116ad575f80fd5b833567ffffffffffffffff808211156116c4575f80fd5b818601915086601f8301126116d7575f80fd5b8135818111156116e5575f80fd5b8760208260051b85010111156116f9575f80fd5b602092830195509350508401358015158114611713575f80fd5b809150509250925092565b5f806040838503121561172f575f80fd5b823561173a816115ea565b9150602083013561174a816115ea565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016117c3576117c361179e565b5060010190565b808201808211156104ab576104ab61179e565b818103818111156104ab576104ab61179e565b5f60208284031215611800575f80fd5b8151610f05816115ea565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118595784516001600160a01b031683529383019391830191600101611834565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261189457634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176104ab576104ab61179e56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220671273a7606b59994a6af82f4f806896f4e8f7c6cc09bb8d2fabe0182b00d49964736f6c63430008140033

Deployed Bytecode Sourcemap

4165:12913:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4728:45;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4728:45:0;;;;;;;;6661:83;;;;;;;;;;-1:-1:-1;6731:5:0;;;;;;;;;;;;-1:-1:-1;;;6731:5:0;;;;6661:83;;;;;;;:::i;8036:193::-;;;;;;;;;;-1:-1:-1;8036:193:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;8036:193:0;1205:187:1;4397:41:0;;;;;;;;;;-1:-1:-1;4397:41:0;;;;-1:-1:-1;;;;;4397:41:0;;;;;;-1:-1:-1;;;;;1587:32:1;;;1569:51;;1557:2;1542:18;4397:41:0;1397:229:1;7084:95:0;;;;;;;;;;-1:-1:-1;4561:27:0;7084:95;;7584:446;;;;;;;;;;-1:-1:-1;7584:446:0;;;;;:::i;:::-;;:::i;11931:145::-;;;;;;;;;;-1:-1:-1;11931:145:0;;;;;:::i;:::-;;:::i;:::-;;6847:83;;;;;;;;;;-1:-1:-1;6847:83:0;;4389:1;2234:36:1;;2222:2;2207:18;6847:83:0;2092:184:1;6938:138:0;;;;;;;;;;-1:-1:-1;6938:138:0;;;;;:::i;:::-;;:::i;3014:148::-;;;;;;;;;;;;;:::i;4611:49::-;;;;;;;;;;;;;;;;5796:95;;;;;;;;;;-1:-1:-1;5796:95:0;;;;;;;-1:-1:-1;;;;;5796:95:0;;;16493:128;;;;;;;;;;-1:-1:-1;16493:128:0;;;;;:::i;:::-;;:::i;4445:25::-;;;;;;;;;;-1:-1:-1;4445:25:0;;;;-1:-1:-1;;;;;4445:25:0;;;2929:79;;;;;;;;;;-1:-1:-1;2967:7:0;2994:6;-1:-1:-1;;;;;2994:6:0;2929:79;;6752:87;;;;;;;;;;-1:-1:-1;6824:7:0;;;;;;;;;;;;-1:-1:-1;;;6824:7:0;;;;6752:87;;5898:93;;;;;;;;;;-1:-1:-1;5898:93:0;;;;-1:-1:-1;;;;;5898:93:0;;;4668:52;;;;;;;;;;;;;;;;7377:199;;;;;;;;;;-1:-1:-1;7377:199:0;;;;;:::i;:::-;;:::i;13275:234::-;;;;;;;;;;-1:-1:-1;13275:234:0;;;;;:::i;:::-;;:::i;16678:156::-;;;;;;;;;;-1:-1:-1;16678:156:0;;;;;:::i;:::-;;:::i;7185:184::-;;;;;;;;;;-1:-1:-1;7185:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7334:18:0;;;7302:7;7334:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7185:184;3170:244;;;;;;;;;;-1:-1:-1;3170:244:0;;;;;:::i;:::-;;:::i;13148:119::-;;;;;;;;;;;;;:::i;8036:193::-;8138:4;8160:39;1651:10;8183:7;8192:6;8160:8;:39::i;:::-;-1:-1:-1;8217:4:0;8036:193;;;;;:::o;7584:446::-;7716:4;7733:36;7743:6;7751:9;7762:6;7733:9;:36::i;:::-;7780:220;7803:6;1651:10;7851:138;7907:6;7851:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7851:19:0;;;;;;:11;:19;;;;;;;;1651:10;7851:33;;;;;;;;;;:37;:138::i;:::-;7780:8;:220::i;:::-;-1:-1:-1;8018:4:0;7584:446;;;;;:::o;11931:145::-;12043:16;;12016:52;;12036:5;;-1:-1:-1;;;;;12043:16:0;12061:6;12016:19;:52::i;:::-;11931:145;;:::o;6938:138::-;-1:-1:-1;;;;;7051:16:0;;7004:7;7051:16;;;:7;:16;;;;;;7031:37;;:19;:37::i;3014:148::-;2566:6;;-1:-1:-1;;;;;2566:6:0;1651:10;2566:22;2558:67;;;;-1:-1:-1;;;2558:67:0;;;;;;;:::i;:::-;;;;;;;;;3121:1:::1;3105:6:::0;;3084:40:::1;::::0;-1:-1:-1;;;;;3105:6:0;;::::1;::::0;3084:40:::1;::::0;3121:1;;3084:40:::1;3152:1;3135:19:::0;;-1:-1:-1;;;;;;3135:19:0::1;::::0;;3014:148::o;16493:128::-;2566:6;;-1:-1:-1;;;;;2566:6:0;1651:10;2566:22;2558:67;;;;-1:-1:-1;;;2558:67:0;;;;;;;:::i;:::-;16580:12:::1;:33:::0;16493:128::o;7377:199::-;7482:4;7504:42;1651:10;7528:9;7539:6;7504:9;:42::i;13275:234::-;2566:6;;-1:-1:-1;;;;;2566:6:0;1651:10;2566:22;2558:67;;;;-1:-1:-1;;;2558:67:0;;;;;;;:::i;:::-;13392:9:::1;13388:114;13407:19:::0;;::::1;13388:114;;;13482:8;13448:18;:31;13467:8;;13476:1;13467:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13448:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13448:31:0;:42;;-1:-1:-1;;13448:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13428:3;::::1;::::0;::::1;:::i;:::-;;;;13388:114;;;;13275:234:::0;;;:::o;16678:156::-;2566:6;;-1:-1:-1;;;;;2566:6:0;1651:10;2566:22;2558:67;;;;-1:-1:-1;;;2558:67:0;;;;;;;:::i;:::-;16749:10:::1;:25:::0;;-1:-1:-1;;;;;;16749:25:0::1;-1:-1:-1::0;;;;;16749:25:0;;;::::1;::::0;;;::::1;::::0;;16806:13:::1;:20:::0;;-1:-1:-1;;16806:20:0::1;-1:-1:-1::0;16806:20:0::1;::::0;;16678:156::o;3170:244::-;2566:6;;-1:-1:-1;;;;;2566:6:0;1651:10;2566:22;2558:67;;;;-1:-1:-1;;;2558:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3259:22:0;::::1;3251:73;;;::::0;-1:-1:-1;;;3251:73:0;;5297:2:1;3251:73:0::1;::::0;::::1;5279:21:1::0;5336:2;5316:18;;;5309:30;5375:34;5355:18;;;5348:62;-1:-1:-1;;;5426:18:1;;;5419:36;5472:19;;3251:73:0::1;5095:402:1::0;3251:73:0::1;3361:6;::::0;;3340:38:::1;::::0;-1:-1:-1;;;;;3340:38:0;;::::1;::::0;3361:6;::::1;::::0;3340:38:::1;::::0;::::1;3389:6;:17:::0;;-1:-1:-1;;;;;;3389:17:0::1;-1:-1:-1::0;;;;;3389:17:0;;;::::1;::::0;;;::::1;::::0;;3170:244::o;13148:119::-;2566:6;;-1:-1:-1;;;;;2566:6:0;1651:10;2566:22;2558:67;;;;-1:-1:-1;;;2558:67:0;;;;;;;:::i;:::-;4561:27:::1;13201:12;:22:::0;;;13234:15:::1;:25:::0;13148:119::o;9329:369::-;-1:-1:-1;;;;;9456:19:0;;9448:68;;;;-1:-1:-1;;;9448:68:0;;5704:2:1;9448:68:0;;;5686:21:1;5743:2;5723:18;;;5716:30;5782:34;5762:18;;;5755:62;-1:-1:-1;;;5833:18:1;;;5826:34;5877:19;;9448:68:0;5502:400:1;9448:68:0;-1:-1:-1;;;;;9535:21:0;;9527:68;;;;-1:-1:-1;;;9527:68:0;;6109:2:1;9527:68:0;;;6091:21:1;6148:2;6128:18;;;6121:30;6187:34;6167:18;;;6160:62;-1:-1:-1;;;6238:18:1;;;6231:32;6280:19;;9527:68:0;5907:398:1;9527:68:0;-1:-1:-1;;;;;9606:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9658:32;;160:25:1;;;9658:32:0;;133:18:1;9658:32:0;;;;;;;;9329:369;;;:::o;13519:2431::-;-1:-1:-1;;;;;13641:16:0;;13633:64;;;;-1:-1:-1;;;13633:64:0;;6512:2:1;13633:64:0;;;6494:21:1;6551:2;6531:18;;;6524:30;6590:34;6570:18;;;6563:62;-1:-1:-1;;;6641:18:1;;;6634:33;6684:19;;13633:64:0;6310:399:1;13633:64:0;-1:-1:-1;;;;;13717:18:0;;13709:68;;;;-1:-1:-1;;;13709:68:0;;6916:2:1;13709:68:0;;;6898:21:1;6955:2;6935:18;;;6928:30;6994:34;6974:18;;;6967:62;-1:-1:-1;;;7045:18:1;;;7038:35;7090:19;;13709:68:0;6714:401:1;13709:68:0;13805:1;13796:6;:10;13788:64;;;;-1:-1:-1;;;13788:64:0;;7322:2:1;13788:64:0;;;7304:21:1;7361:2;7341:18;;;7334:30;7400:34;7380:18;;;7373:62;-1:-1:-1;;;7451:18:1;;;7444:39;7500:19;;13788:64:0;7120:405:1;13788:64:0;2967:7;2994:6;-1:-1:-1;;;;;13881:15:0;;;2994:6;;13881:15;;;;:46;;-1:-1:-1;2967:7:0;2994:6;-1:-1:-1;;;;;13914:13:0;;;2994:6;;13914:13;;13881:46;13863:1326;;;13992:13;;;;13987:208;;2967:7;2994:6;-1:-1:-1;;;;;14056:15:0;;;2994:6;;14056:15;14026:153;;;;-1:-1:-1;;;14026:153:0;;7732:2:1;14026:153:0;;;7714:21:1;7771:2;7751:18;;;7744:30;7810:34;7790:18;;;7783:62;7881:33;7861:18;;;7854:61;7932:19;;14026:153:0;7530:427:1;14026:153:0;14227:12;;14217:6;:22;;14209:63;;;;-1:-1:-1;;;14209:63:0;;8164:2:1;14209:63:0;;;8146:21:1;8203:2;8183:18;;;8176:30;8242;8222:18;;;8215:58;8290:18;;14209:63:0;7962:352:1;14209:63:0;14296:10;;-1:-1:-1;;;;;14290:16:0;;;14296:10;;14290:16;14287:162;;14360:15;;14351:6;14335:13;14345:2;14335:9;:13::i;:::-;:22;;;;:::i;:::-;:40;14327:106;;;;-1:-1:-1;;;14327:106:0;;8651:2:1;14327:106:0;;;8633:21:1;8690:2;8670:18;;;8663:30;8729:34;8709:18;;;8702:62;-1:-1:-1;;;8780:18:1;;;8773:33;8823:19;;14327:106:0;8449:399:1;14327:106:0;14465:25;14493:24;14511:4;14493:9;:24::i;:::-;14465:52;;14622:12;;14601:17;:33;14598:73;;-1:-1:-1;14657:12:0;;14598:73;14712:12;;14691:17;:33;;:67;;;;-1:-1:-1;14747:11:0;;;;;;;14746:12;14691:67;:107;;;;-1:-1:-1;14788:10:0;;-1:-1:-1;;;;;14780:18:0;;;14788:10;;14780:18;;14691:107;:140;;;;-1:-1:-1;14820:11:0;;;;;;;14691:140;:187;;;;-1:-1:-1;;;;;;14854:24:0;;;;;;:18;:24;;;;;;;;14853:25;14691:187;:232;;;;-1:-1:-1;;;;;;14901:22:0;;;;;;:18;:22;;;;;;;;14900:23;14691:232;14687:491;;;14958:32;14972:17;14958:13;:32::i;:::-;15030:21;15074:14;;15070:93;;15113:30;15121:21;15113:7;:30::i;:::-;14939:239;14687:491;13939:1250;13863:1326;-1:-1:-1;;;;;15274:24:0;;15199:11;15274:24;;;:18;:24;;;;;;15213:4;;15274:24;;;:50;;-1:-1:-1;;;;;;15302:22:0;;;;;;:18;:22;;;;;;;;15274:50;15273:110;;;-1:-1:-1;15352:10:0;;-1:-1:-1;;;;;15344:18:0;;;15352:10;;15344:18;;;;:38;;-1:-1:-1;15372:10:0;;-1:-1:-1;;;;;15366:16:0;;;15372:10;;15366:16;;15344:38;15255:631;;;-1:-1:-1;15419:5:0;15255:631;;;15500:10;;-1:-1:-1;;;;;15492:18:0;;;15500:10;;15492:18;:52;;;;-1:-1:-1;15528:15:0;;-1:-1:-1;;;;;15514:30:0;;;15528:15;;15514:30;;15492:52;15489:168;;;15581:16;;15565:13;:32;15631:10;;15616:12;:25;15489:168;15714:10;;-1:-1:-1;;;;;15708:16:0;;;15714:10;;15708:16;:52;;;;-1:-1:-1;15744:15:0;;-1:-1:-1;;;;;15728:32:0;;;15744:15;;15728:32;;15708:52;15704:171;;;15797:17;;15781:13;:33;15848:11;;15833:12;:26;15704:171;15896:46;15917:4;15923:2;15927:6;15935;15896:20;:46::i;686:224::-;806:7;842:12;834:6;;;;826:29;;;;-1:-1:-1;;;826:29:0;;;;;;;;:::i;:::-;-1:-1:-1;866:9:0;878:5;882:1;878;:5;:::i;:::-;866:17;686:224;-1:-1:-1;;;;;686:224:0:o;9712:185::-;-1:-1:-1;;;;;9807:18:0;;;;;;;:11;:18;;;;;;;;:25;;;;;;;;;;;:35;;9836:6;;9807:18;:35;;9836:6;;9807:35;:::i;:::-;;;;;;;;9874:5;-1:-1:-1;;;;;9858:30:0;9867:5;-1:-1:-1;;;;;9858:30:0;;9881:6;9858:30;;;;160:25:1;;148:2;133:18;;14:177;12626:323:0;12721:7;12779;;12768;:18;;12746:110;;;;-1:-1:-1;;;12746:110:0;;9188:2:1;12746:110:0;;;9170:21:1;9227:2;9207:18;;;9200:30;9266:34;9246:18;;;9239:62;-1:-1:-1;;;9317:18:1;;;9310:40;9367:19;;12746:110:0;8986:406:1;12746:110:0;12867:19;12889:10;:8;:10::i;:::-;12867:32;-1:-1:-1;12917:24:0;:7;12867:32;12917:11;:24::i;:::-;12910:31;12626:323;-1:-1:-1;;;12626:323:0:o;15958:479::-;5667:11;:18;;-1:-1:-1;;5667:18:0;;;;;16056:16:::1;::::0;;16070:1:::1;16056:16:::0;;;;;::::1;::::0;;-1:-1:-1;;16056:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16056:16:0::1;16032:40;;16101:4;16083;16088:1;16083:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16083:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;16127:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;16127:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;16083:7;;16127:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16117:4;16122:1;16117:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16117:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;16192:15:::1;::::0;16160:62:::1;::::0;16177:4:::1;::::0;16192:15:::1;16210:11:::0;16160:8:::1;:62::i;:::-;16233:15;::::0;:196:::1;::::0;-1:-1:-1;;;16233:196:0;;-1:-1:-1;;;;;16233:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;16314:11;;16233:15:::1;::::0;16356:4;;16383::::1;::::0;16403:15:::1;::::0;16233:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5708:11:0;:19;;-1:-1:-1;;5708:19:0;;;-1:-1:-1;;;;15958:479:0:o;9907:245::-;9959:14;9976:10;9985:1;9976:6;:10;:::i;:::-;9998:18;;:35;;9959:27;;-1:-1:-1;9998:18:0;;;-1:-1:-1;;;;;9998:18:0;;:35;;;;;9959:27;;9998:35;;;;9959:27;9998:18;:35;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10044:1:0;;-1:-1:-1;10044:1:0;10079:15;10044:1;10079:6;:15;:::i;:::-;10105:16;;:39;;10056:38;;-1:-1:-1;;;;;;10105:16:0;;:39;;;;;10056:38;;10105:16;:39;:16;:39;10056:38;10105:16;:39;;;;;;;;;;;;;;;;;;;8239:329;8401:7;8396:50;;8425:9;:7;:9::i;:::-;8457:40;8471:6;8479:9;8490:6;8457:13;:40::i;:::-;8513:7;8508:53;;8537:12;8633:21;;8617:13;:37;8680:16;;8665:12;:31;8576:128;11021:164;11063:7;11084:15;11101;11120:19;:17;:19::i;:::-;11083:56;;-1:-1:-1;11083:56:0;-1:-1:-1;11157:20:0;11083:56;;11157:11;:20::i;:::-;11150:27;;;;11021:164;:::o;1401:132::-;1459:7;1486:39;1490:1;1493;1486:39;;;;;;;;;;;;;;;;;:3;:39::i;16842:233::-;16884:13;;:18;:39;;;;-1:-1:-1;16906:12:0;;:17;16884:39;16880:52;;;16842:233::o;16880:52::-;16966:13;;;16942:21;:37;17009:12;;;16990:16;:31;-1:-1:-1;17023:17:0;;;;17051:16;16842:233::o;8710:609::-;8853:15;8883:23;8921:12;8948:23;8986:12;9013:13;9040:19;9051:7;9040:10;:19::i;:::-;-1:-1:-1;;;;;9088:15:0;;;;;;:7;:15;;;;;;8838:221;;-1:-1:-1;8838:221:0;;-1:-1:-1;8838:221:0;;-1:-1:-1;8838:221:0;-1:-1:-1;8838:221:0;-1:-1:-1;8838:221:0;-1:-1:-1;9088:28:0;;8838:221;9088:19;:28::i;:::-;-1:-1:-1;;;;;9070:15:0;;;;;;;:7;:15;;;;;;:46;;;;9148:18;;;;;;;:39;;9171:15;9148:22;:39::i;:::-;-1:-1:-1;;;;;9127:18:0;;;;;;:7;:18;;;;;:60;9198:18;9210:5;9198:11;:18::i;:::-;9227:24;9240:4;9246;9227:12;:24::i;:::-;9284:9;-1:-1:-1;;;;;9267:44:0;9276:6;-1:-1:-1;;;;;9267:44:0;;9295:15;9267:44;;;;160:25:1;;148:2;133:18;;14:177;9267:44:0;;;;;;;;8827:492;;;;;;8710:609;;;:::o;11193:257::-;11291:7;;11244;;;;4561:27;11359:20;11291:7;4561:27;11359:11;:20::i;:::-;11349:7;:30;11345:61;;;-1:-1:-1;;11389:7:0;;;4561:27;;-1:-1:-1;11193:257:0;-1:-1:-1;11193:257:0:o;11345:61::-;11425:7;;11434;;-1:-1:-1;11193:257:0;-1:-1:-1;11193:257:0:o;1172:223::-;1292:7;1327:12;1320:5;1312:28;;;;-1:-1:-1;;;1312:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1351:9:0;1363:5;1367:1;1363;:5;:::i;10160:624::-;10260:7;10282;10304;10326;10348;10370;10406:23;10431:12;10445:13;10475:49;10487:7;10496:13;;10511:12;;10475:11;:49::i;:::-;10405:119;;;;;;10535:19;10557:10;:8;:10::i;:::-;10535:32;;10579:15;10596:23;10621:12;10650:46;10662:7;10671:4;10677:5;10684:11;10650;:46::i;:::-;10578:118;;-1:-1:-1;10578:118:0;-1:-1:-1;10578:118:0;-1:-1:-1;10747:15:0;;-1:-1:-1;10764:4:0;;-1:-1:-1;10770:5:0;;-1:-1:-1;;;;;10160:624:0;;;;;;;:::o;544:136::-;602:7;629:43;633:1;636;629:43;;;;;;;;;;;;;;;;;:3;:43::i;353:179::-;411:7;;443:5;447:1;443;:5;:::i;:::-;431:17;;472:1;467;:6;;459:46;;;;-1:-1:-1;;;459:46:0;;11194:2:1;459:46:0;;;11176:21:1;11233:2;11213:18;;;11206:30;11272:29;11252:18;;;11245:57;11319:18;;459:46:0;10992:351:1;10796:213:0;10851:19;10873:10;:8;:10::i;:::-;10851:32;-1:-1:-1;10894:13:0;10910:22;:5;10851:32;10910:9;:22::i;:::-;10984:4;10968:22;;;;:7;:22;;;;;;10894:38;;-1:-1:-1;10968:33:0;;10894:38;10968:26;:33::i;:::-;10959:4;10943:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;10796:213:0:o;12957:148::-;13036:7;;:17;;13048:4;13036:11;:17::i;:::-;13026:7;:27;13077:10;;:20;;13092:4;13077:14;:20::i;:::-;13064:10;:33;-1:-1:-1;;12957:148:0:o;11458:467::-;11626:7;;;;11720:29;11745:3;11720:20;:7;11732;11720:11;:20::i;:::-;:24;;:29::i;:::-;11705:44;-1:-1:-1;11760:13:0;11776:28;11800:3;11776:19;:7;11788:6;11776:11;:19::i;:28::-;11760:44;-1:-1:-1;11815:23:0;11841:28;11760:44;11841:17;:7;11853:4;11841:11;:17::i;:::-;:21;;:28::i;:::-;11815:54;11905:4;;-1:-1:-1;11911:5:0;;-1:-1:-1;11458:467:0;;-1:-1:-1;;;;;11458:467:0:o;12082:534::-;12276:7;;;;12373:24;:7;12385:11;12373;:24::i;:::-;12355:42;-1:-1:-1;12408:12:0;12423:21;:4;12432:11;12423:8;:21::i;:::-;12408:36;-1:-1:-1;12455:13:0;12471:22;:5;12481:11;12471:9;:22::i;:::-;12455:38;-1:-1:-1;12504:23:0;12530:28;12455:38;12530:17;:7;12542:4;12530:11;:17::i;:28::-;12577:7;;;;-1:-1:-1;12603:4:0;;-1:-1:-1;12082:534:0;;-1:-1:-1;;;;;;;12082:534:0:o;920:246::-;978:7;1002:1;1007;1002:6;998:47;;-1:-1:-1;1032:1:0;1025:8;;998:47;1055:9;1067:5;1071:1;1067;:5;:::i;:::-;1055:17;-1:-1:-1;1100:1:0;1091:5;1095:1;1055:17;1091:5;:::i;:::-;:10;1083:56;;;;-1:-1:-1;;;1083:56:0;;11723:2:1;1083:56:0;;;11705:21:1;11762:2;11742:18;;;11735:30;11801:34;11781:18;;;11774:62;-1:-1:-1;;;11852:18:1;;;11845:31;11893:19;;1083:56:0;11521:397:1;196:548;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;804:70;749:131;:::o;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;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2281:247::-;2340:6;2393:2;2381:9;2372:7;2368:23;2364:32;2361:52;;;2409:1;2406;2399:12;2361:52;2448:9;2435:23;2467:31;2492:5;2467:31;:::i;2757:180::-;2816:6;2869:2;2857:9;2848:7;2844:23;2840:32;2837:52;;;2885:1;2882;2875:12;2837:52;-1:-1:-1;2908:23:1;;2757:180;-1:-1:-1;2757:180:1:o;3150:782::-;3242:6;3250;3258;3311:2;3299:9;3290:7;3286:23;3282:32;3279:52;;;3327:1;3324;3317:12;3279:52;3367:9;3354:23;3396:18;3437:2;3429:6;3426:14;3423:34;;;3453:1;3450;3443:12;3423:34;3491:6;3480:9;3476:22;3466:32;;3536:7;3529:4;3525:2;3521:13;3517:27;3507:55;;3558:1;3555;3548:12;3507:55;3598:2;3585:16;3624:2;3616:6;3613:14;3610:34;;;3640:1;3637;3630:12;3610:34;3695:7;3688:4;3678:6;3675:1;3671:14;3667:2;3663:23;3659:34;3656:47;3653:67;;;3716:1;3713;3706:12;3653:67;3747:4;3739:13;;;;-1:-1:-1;3771:6:1;-1:-1:-1;;3812:20:1;;3799:34;3869:13;;3862:21;3852:32;;3842:60;;3898:1;3895;3888:12;3842:60;3921:5;3911:15;;;3150:782;;;;;:::o;3937:388::-;4005:6;4013;4066:2;4054:9;4045:7;4041:23;4037:32;4034:52;;;4082:1;4079;4072:12;4034:52;4121:9;4108:23;4140:31;4165:5;4140:31;:::i;:::-;4190:5;-1:-1:-1;4247:2:1;4232:18;;4219:32;4260:33;4219:32;4260:33;:::i;:::-;4312:7;4302:17;;;3937:388;;;;;:::o;4330:356::-;4532:2;4514:21;;;4551:18;;;4544:30;4610:34;4605:2;4590:18;;4583:62;4677:2;4662:18;;4330:356::o;4691:127::-;4752:10;4747:3;4743:20;4740:1;4733:31;4783:4;4780:1;4773:15;4807:4;4804:1;4797:15;4823:127;4884:10;4879:3;4875:20;4872:1;4865:31;4915:4;4912:1;4905:15;4939:4;4936:1;4929:15;4955:135;4994:3;5015:17;;;5012:43;;5035:18;;:::i;:::-;-1:-1:-1;5082:1:1;5071:13;;4955:135::o;8319:125::-;8384:9;;;8405:10;;;8402:36;;;8418:18;;:::i;8853:128::-;8920:9;;;8941:11;;;8938:37;;;8955:18;;:::i;9529:251::-;9599:6;9652:2;9640:9;9631:7;9627:23;9623:32;9620:52;;;9668:1;9665;9658:12;9620:52;9700:9;9694:16;9719:31;9744:5;9719:31;:::i;9785:980::-;10047:4;10095:3;10084:9;10080:19;10126:6;10115:9;10108:25;10152:2;10190:6;10185:2;10174:9;10170:18;10163:34;10233:3;10228:2;10217:9;10213:18;10206:31;10257:6;10292;10286:13;10323:6;10315;10308:22;10361:3;10350:9;10346:19;10339:26;;10400:2;10392:6;10388:15;10374:29;;10421:1;10431:195;10445:6;10442:1;10439:13;10431:195;;;10510:13;;-1:-1:-1;;;;;10506:39:1;10494:52;;10601:15;;;;10566:12;;;;10542:1;10460:9;10431:195;;;-1:-1:-1;;;;;;;10682:32:1;;;;10677:2;10662:18;;10655:60;-1:-1:-1;;;10746:3:1;10731:19;10724:35;10643:3;9785:980;-1:-1:-1;;;9785:980:1:o;10770:217::-;10810:1;10836;10826:132;;10880:10;10875:3;10871:20;10868:1;10861:31;10915:4;10912:1;10905:15;10943:4;10940:1;10933:15;10826:132;-1:-1:-1;10972:9:1;;10770:217::o;11348:168::-;11421:9;;;11452;;11469:15;;;11463:22;;11449:37;11439:71;;11490:18;;:::i

Swarm Source

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