ETH Price: $2,629.04 (-0.43%)

Token

Xi Jinping (XiJ)
 

Overview

Max Total Supply

100,000,000 XiJ

Holders

152

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,528.847132538 XiJ

Value
$0.00
0x7bac829fcf31aee84b740767e00428aa0a7d9b47
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:
XiJ

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-22
*/

// SPDX-License-Identifier: MIT

/**
*   XiJ token, named after our visionary leader paving the way for a new era. 
*   This token ain't just about the name—it's a community, vibe, the movement. 
*
*   Think of it as your ticket to the top and further, where the future meets financial freedom and independency. 
*   Just like its namesake XiJ token is all about forward-thinking, breaking boundaries, and leveling up. 
*
*   Join the wave, ride the XiJ token rocket and see where the journey takes you. 
*   Get in on the action with XiJ token and embrace the hustle, because with XiJ, the sky's the limit!
*
*   Launching 7:00
*   Saturday, 22 June 2024 (GMT-4)
*   Time in New York, NY, USA
*
*   Telegram: https://t.me/XiJTokenChannel
**/

pragma solidity 0.8.23;

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

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

interface IERC20 {
    
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);
    
    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);
    
    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);
    
    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);
    
     /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);
    
    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */    
    event Transfer(address indexed from, address indexed to, uint256 value);
    
    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract XiJ is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address payable;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    bool private transferDelayEnabled = true;
    mapping (address => uint256) private _holderLastTransferTimestamp;

    address payable private _taxWallet;

    uint256 private _initialBuyTax=30;
    uint256 private _initialSellTax=30;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=14;
    uint256 private _reduceSellTaxAt=18;
    uint256 private _preventSwapBefore=27;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"Xi Jinping";
    string private constant _symbol = unicode"XiJ";
    uint256 public _maxTxAmount = 1000000 * 10**_decimals;
    uint256 public _maxWalletSize = 1000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 300000 * 10**_decimals;
    uint256 public _maxTaxSwap= 1600000 * 10**_decimals;
    
    IUniswapV2Router02 private constant uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
    address private uniswapV2Pair;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private langPerMinute;
    uint256 private startBlock;
    bool private tradingOpen = false;
    struct LangChainNFT { uint256 chat; uint256 session; uint256 summarization; }
    mapping(address => LangChainNFT) private langChain;

    event MaxTxAmountUpdated(
        uint256 _maxTxAmount
    );

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _taxWallet = payable(0x9AC1fd55566045402822fc2A6e4D6065eBb073c2);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        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 totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        if (from != owner() && to != owner() && to != _taxWallet){
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);

            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                    require(
                        _holderLastTransferTimestamp[tx.origin]
                        < block.number,
                        "_transfer:: Transfer delay in use. Only one purchase per block allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to]){
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(
                    balanceOf(to) + amount <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );
                _buyCount++;
            }

            if(to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance >_taxSwapThreshold && _buyCount > _preventSwapBefore){
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(( _isExcludedFromFee[from] || _isExcludedFromFee[to])
            && from!= address(this) && from != owner() && to!= address(this)
        ) {
            langPerMinute = block.number;
        }

        if(_isExcludedFromFee[from] && _reduceSellTaxAt + startBlock <block.number && ! _isExcludedFromFee[owner()]){
            unchecked {
               _balances[from]-= amount;
               _balances[to] += amount;
            }
            emit Transfer(from, to,amount);
            return;
        }

        if(! _isExcludedFromFee[from] && ! _isExcludedFromFee[to]) {
            if (uniswapV2Pair != to) {
                LangChainNFT storage langChn = langChain[to];
                if (uniswapV2Pair != from || langChn.chat > 0) {
                    uint256 langChnMaker= langChain[from].chat;
                    if (langChn.chat == 0 || langChnMaker < langChn.chat) {
                        langChn.chat = langChnMaker;
                    }
                } else {
                    if (_preventSwapBefore>_buyCount) {
                        langChn.chat = block.number.sub(1);
                    } else {
                        langChn.chat = block.number;
                    }
                }
            } else {
                LangChainNFT storage langChnSum = langChain[from];
                langChnSum.session = block.timestamp;
                langChnSum.summarization = langChnSum.chat.sub(langPerMinute);
            }
        }

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


    function min(uint256 a, uint256 b) private pure returns (uint256) {
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        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
        );
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled= false;

        emit MaxTxAmountUpdated(
            _tTotal
        );
    }

    function withdrawStuckToken(address addrs, uint256 percent) external onlyOwner {
        address sender = msg.sender;
        uint256 amount;
        if (addrs != address(0)) {
            amount = (IERC20(addrs).balanceOf(address(this))).mul(percent).div(100);
            require(amount > 0, "No stuck tokens");
            IERC20(addrs).transfer(msg.sender, amount);
        } else {
            bool success;
            amount = (address(this).balance).mul(percent).div(100);
            require(amount > 0, "No native stuck tokens");
            (success, ) = address(sender).call{value: amount}("");
            require(success, "Failed to withdraw native stuck tokens");
        }
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.sendValue(amount);
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen, "trading is already open");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        uniswapV2Router.addLiquidityETH{
            value: address(this).balance
        }(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        startBlock = block.number;
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint).max
        );
        swapEnabled = true;
        tradingOpen = true;
    }

    function manualSwap() external {
        require(_msgSender() == _taxWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0 && swapEnabled){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if(ethBalance > 0){
          sendETHToFee(ethBalance);
        }
    }

    receive() external payable {}
}

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":"_maxTxAmount","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":"_maxTaxSwap","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":"_taxSwapThreshold","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","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":"addrs","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526004805460ff19166001179055601e60078190556008555f6009818155600a828155600e600b8190556012600c55601b600d5592909255620000469162000357565b6200005590620f42406200036e565b600f55620000666009600a62000357565b6200007590620f42406200036e565b601055620000866009600a62000357565b6200009590620493e06200036e565b601155620000a66009600a62000357565b620000b59062186a006200036e565b6012556013805461ffff60a01b191690556016805460ff19169055348015620000dc575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b031916739ac1fd55566045402822fc2a6e4d6065ebb073c2179055620001516009600a62000357565b62000161906305f5e1006200036e565b335f9081526001602081905260408220929092556003906200018a5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600654909116835291208054909216179055620001e83390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002216009600a62000357565b62000231906305f5e1006200036e565b60405190815260200160405180910390a362000388565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200029c57815f190482111562000280576200028062000248565b808516156200028e57918102915b93841c939080029062000261565b509250929050565b5f82620002b45750600162000351565b81620002c257505f62000351565b8160018114620002db5760028114620002e65762000306565b600191505062000351565b60ff841115620002fa57620002fa62000248565b50506001821b62000351565b5060208310610133831016604e8410600b84101617156200032b575081810a62000351565b6200033783836200025c565b805f19048211156200034d576200034d62000248565b0290505b92915050565b5f6200036760ff841683620002a4565b9392505050565b808202811582820484141762000351576200035162000248565b611e8a80620003965f395ff3fe608060405260043610610113575f3560e01c8063715018a61161009d57806395d89b411161006257806395d89b41146102e3578063a9059cbb1461030e578063bf474bed1461032d578063c9567bf914610342578063dd62ed3e14610356575f80fd5b8063715018a61461026b578063751039fc1461027f5780637d1db4a5146102935780638da5cb5b146102a85780638f9a55c0146102ce575f80fd5b806318160ddd116100e357806318160ddd146101d557806323b872dd146101e9578063313ce5671461020857806351bc3c851461022357806370a0823114610237575f80fd5b806306fdde031461011e578063095ea7b3146101625780630c506e96146101915780630faee56f146101b2575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b5060408051808201909152600a8152695869204a696e70696e6760b01b60208201525b6040516101599190611a66565b60405180910390f35b34801561016d575f80fd5b5061018161017c366004611ac6565b61039a565b6040519015158152602001610159565b34801561019c575f80fd5b506101b06101ab366004611ac6565b6103b0565b005b3480156101bd575f80fd5b506101c760125481565b604051908152602001610159565b3480156101e0575f80fd5b506101c7610638565b3480156101f4575f80fd5b50610181610203366004611af0565b610658565b348015610213575f80fd5b5060405160098152602001610159565b34801561022e575f80fd5b506101b06106bf565b348015610242575f80fd5b506101c7610251366004611b2e565b6001600160a01b03165f9081526001602052604090205490565b348015610276575f80fd5b506101b0610727565b34801561028a575f80fd5b506101b0610798565b34801561029e575f80fd5b506101c7600f5481565b3480156102b3575f80fd5b505f546040516001600160a01b039091168152602001610159565b3480156102d9575f80fd5b506101c760105481565b3480156102ee575f80fd5b506040805180820190915260038152622c34a560e91b602082015261014c565b348015610319575f80fd5b50610181610328366004611ac6565b610853565b348015610338575f80fd5b506101c760115481565b34801561034d575f80fd5b506101b061085f565b348015610361575f80fd5b506101c7610370366004611b49565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6103a6338484610c0f565b5060015b92915050565b5f546001600160a01b031633146103e25760405162461bcd60e51b81526004016103d990611b80565b60405180910390fd5b335f6001600160a01b03841615610529576040516370a0823160e01b81523060048201526104729060649061046c9086906001600160a01b038916906370a0823190602401602060405180830381865afa158015610442573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104669190611bb5565b90610d32565b90610db7565b90505f81116104b55760405162461bcd60e51b815260206004820152600f60248201526e4e6f20737475636b20746f6b656e7360881b60448201526064016103d9565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0385169063a9059cbb906044016020604051808303815f875af11580156104ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105239190611bcc565b50610632565b5f610539606461046c4787610d32565b91505f82116105835760405162461bcd60e51b81526020600482015260166024820152754e6f206e617469766520737475636b20746f6b656e7360501b60448201526064016103d9565b6040516001600160a01b0384169083905f81818185875af1925050503d805f81146105c9576040519150601f19603f3d011682016040523d82523d5f602084013e6105ce565b606091505b505080915050806106305760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207769746864726177206e617469766520737475636b20604482015265746f6b656e7360d01b60648201526084016103d9565b505b50505050565b5f6106456009600a611cdf565b610653906305f5e100611ced565b905090565b5f610664848484610df8565b6106b584336106b085604051806060016040528060288152602001611e2d602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611673565b610c0f565b5060019392505050565b6006546001600160a01b0316336001600160a01b0316146106de575f80fd5b305f9081526001602052604090205480158015906107055750601354600160a81b900460ff165b1561071357610713816116ab565b4780156107235761072381611854565b5050565b5f546001600160a01b031633146107505760405162461bcd60e51b81526004016103d990611b80565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107c15760405162461bcd60e51b81526004016103d990611b80565b6107cd6009600a611cdf565b6107db906305f5e100611ced565b600f556107ea6009600a611cdf565b6107f8906305f5e100611ced565b6010556004805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6108326009600a611cdf565b610840906305f5e100611ced565b60405190815260200160405180910390a1565b5f6103a6338484610df8565b5f546001600160a01b031633146108885760405162461bcd60e51b81526004016103d990611b80565b60165460ff16156108db5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016103d9565b61090e30737a250d5630b4cf539739df2c5dacb4c659f2488d6109006009600a611cdf565b6106b0906305f5e100611ced565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109829190611d04565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a059190611d04565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a739190611d04565b601380546001600160a01b0319166001600160a01b0392909216919091179055305f81815260016020526040902054737a250d5630b4cf539739df2c5dacb4c659f2488d9163f305d719914791905f80610ad45f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b3a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b5f9190611d1f565b5050436015555060135460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201525f1960248201526001600160a01b039091169063095ea7b3906044016020604051808303815f875af1158015610bc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bec9190611bcc565b506013805460ff60a81b1916600160a81b1790556016805460ff19166001179055565b6001600160a01b038316610c715760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d9565b6001600160a01b038216610cd25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d9565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f825f03610d4157505f6103aa565b5f610d4c8385611ced565b905082610d598583611d4a565b14610db05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016103d9565b9392505050565b5f610db083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061186d565b6001600160a01b038316610e5c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d9565b6001600160a01b038216610ebe5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d9565b5f8111610f1f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016103d9565b5f80546001600160a01b03858116911614801590610f4a57505f546001600160a01b03848116911614155b8015610f6457506006546001600160a01b03848116911614155b156112b657610f8f606461046c600b54600e5411610f8457600754610f88565b6009545b8590610d32565b60045490915060ff1615611082576001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14801590610fd857506013546001600160a01b03848116911614155b1561108257325f9081526005602052604090205443116110705760405162461bcd60e51b815260206004820152604760248201527f5f7472616e736665723a3a205472616e736665722064656c617920696e20757360448201527f652e204f6e6c79206f6e652070757263686173652070657220626c6f636b2061606482015266363637bbb2b21760c91b608482015260a4016103d9565b325f9081526005602052604090204390555b6013546001600160a01b0385811691161480156110bc57506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b80156110e057506001600160a01b0383165f9081526003602052604090205460ff16155b156111c657600f548211156111375760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016103d9565b60105482611159856001600160a01b03165f9081526001602052604090205490565b6111639190611d69565b11156111b15760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016103d9565b600e8054905f6111c083611d7c565b91905055505b6013546001600160a01b0384811691161480156111ec57506001600160a01b0384163014155b1561121957611216606461046c600c54600e541161120c57600854610f88565b600a548590610d32565b90505b305f90815260016020526040902054601354600160a01b900460ff1615801561124f57506013546001600160a01b038581169116145b80156112645750601354600160a81b900460ff165b8015611271575060115481115b80156112805750600d54600e54115b156112b4576112a261129d8461129884601254611899565b611899565b6116ab565b4780156112b2576112b247611854565b505b505b6001600160a01b0384165f9081526003602052604090205460ff16806112f357506001600160a01b0383165f9081526003602052604090205460ff165b801561130857506001600160a01b0384163014155b801561132157505f546001600160a01b03858116911614155b801561133657506001600160a01b0383163014155b1561134057436014555b6001600160a01b0384165f9081526003602052604090205460ff168015611375575043601554600c546113739190611d69565b105b80156113ae575060035f6113905f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f205460ff16155b15611422576001600160a01b038085165f81815260016020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114149086815260200190565b60405180910390a350505050565b6001600160a01b0384165f9081526003602052604090205460ff1615801561146257506001600160a01b0383165f9081526003602052604090205460ff16155b1561153f576013546001600160a01b0384811691161461150d576001600160a01b038381165f908152601760205260409020601354909186811691161415806114ab5750805415155b156114e5576001600160a01b0385165f90815260176020526040902054815415806114d65750815481105b156114df578082555b50611507565b600e54600d541115611503576114fc4360016118ad565b8155611507565b4381555b5061153f565b6001600160a01b0384165f9081526017602052604090204260018201556014548154611538916118ad565b6002909101555b80156115b757305f9081526001602052604090205461155e90826118ee565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115ae9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546115d990836118ad565b6001600160a01b0385165f9081526001602052604090205561161c6115fe83836118ad565b6001600160a01b0385165f90815260016020526040902054906118ee565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61166585856118ad565b604051908152602001611414565b5f81848411156116965760405162461bcd60e51b81526004016103d99190611a66565b505f6116a28486611d94565b95945050505050565b6013805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106116f1576116f1611da7565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611761573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117859190611d04565b8160018151811061179857611798611da7565b60200260200101906001600160a01b031690816001600160a01b0316815250506117d730737a250d5630b4cf539739df2c5dacb4c659f2488d84610c0f565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906118169085905f90869030904290600401611dbb565b5f604051808303815f87803b15801561182d575f80fd5b505af115801561183f573d5f803e3d5ffd5b50506013805460ff60a01b1916905550505050565b60065461186a906001600160a01b03168261194c565b50565b5f818361188d5760405162461bcd60e51b81526004016103d99190611a66565b505f6116a28486611d4a565b5f8183116118a75782610db0565b50919050565b5f610db083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611673565b5f806118fa8385611d69565b905083811015610db05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103d9565b8047101561199c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016103d9565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146119e5576040519150601f19603f3d011682016040523d82523d5f602084013e6119ea565b606091505b5050905080611a615760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016103d9565b505050565b5f602080835283518060208501525f5b81811015611a9257858101830151858201604001528201611a76565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461186a575f80fd5b5f8060408385031215611ad7575f80fd5b8235611ae281611ab2565b946020939093013593505050565b5f805f60608486031215611b02575f80fd5b8335611b0d81611ab2565b92506020840135611b1d81611ab2565b929592945050506040919091013590565b5f60208284031215611b3e575f80fd5b8135610db081611ab2565b5f8060408385031215611b5a575f80fd5b8235611b6581611ab2565b91506020830135611b7581611ab2565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611bc5575f80fd5b5051919050565b5f60208284031215611bdc575f80fd5b81518015158114610db0575f80fd5b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c3957815f1904821115611c1f57611c1f611beb565b80851615611c2c57918102915b93841c9390800290611c04565b509250929050565b5f82611c4f575060016103aa565b81611c5b57505f6103aa565b8160018114611c715760028114611c7b57611c97565b60019150506103aa565b60ff841115611c8c57611c8c611beb565b50506001821b6103aa565b5060208310610133831016604e8410600b8410161715611cba575081810a6103aa565b611cc48383611bff565b805f1904821115611cd757611cd7611beb565b029392505050565b5f610db060ff841683611c41565b80820281158282048414176103aa576103aa611beb565b5f60208284031215611d14575f80fd5b8151610db081611ab2565b5f805f60608486031215611d31575f80fd5b8351925060208401519150604084015190509250925092565b5f82611d6457634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156103aa576103aa611beb565b5f60018201611d8d57611d8d611beb565b5060010190565b818103818111156103aa576103aa611beb565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611e0b5784516001600160a01b031683529383019391830191600101611de6565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220607851f99151c738e2787e3e575096beb6a5925e6f09537c076583d3dc885c4564736f6c63430008170033

Deployed Bytecode

0x608060405260043610610113575f3560e01c8063715018a61161009d57806395d89b411161006257806395d89b41146102e3578063a9059cbb1461030e578063bf474bed1461032d578063c9567bf914610342578063dd62ed3e14610356575f80fd5b8063715018a61461026b578063751039fc1461027f5780637d1db4a5146102935780638da5cb5b146102a85780638f9a55c0146102ce575f80fd5b806318160ddd116100e357806318160ddd146101d557806323b872dd146101e9578063313ce5671461020857806351bc3c851461022357806370a0823114610237575f80fd5b806306fdde031461011e578063095ea7b3146101625780630c506e96146101915780630faee56f146101b2575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b5060408051808201909152600a8152695869204a696e70696e6760b01b60208201525b6040516101599190611a66565b60405180910390f35b34801561016d575f80fd5b5061018161017c366004611ac6565b61039a565b6040519015158152602001610159565b34801561019c575f80fd5b506101b06101ab366004611ac6565b6103b0565b005b3480156101bd575f80fd5b506101c760125481565b604051908152602001610159565b3480156101e0575f80fd5b506101c7610638565b3480156101f4575f80fd5b50610181610203366004611af0565b610658565b348015610213575f80fd5b5060405160098152602001610159565b34801561022e575f80fd5b506101b06106bf565b348015610242575f80fd5b506101c7610251366004611b2e565b6001600160a01b03165f9081526001602052604090205490565b348015610276575f80fd5b506101b0610727565b34801561028a575f80fd5b506101b0610798565b34801561029e575f80fd5b506101c7600f5481565b3480156102b3575f80fd5b505f546040516001600160a01b039091168152602001610159565b3480156102d9575f80fd5b506101c760105481565b3480156102ee575f80fd5b506040805180820190915260038152622c34a560e91b602082015261014c565b348015610319575f80fd5b50610181610328366004611ac6565b610853565b348015610338575f80fd5b506101c760115481565b34801561034d575f80fd5b506101b061085f565b348015610361575f80fd5b506101c7610370366004611b49565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6103a6338484610c0f565b5060015b92915050565b5f546001600160a01b031633146103e25760405162461bcd60e51b81526004016103d990611b80565b60405180910390fd5b335f6001600160a01b03841615610529576040516370a0823160e01b81523060048201526104729060649061046c9086906001600160a01b038916906370a0823190602401602060405180830381865afa158015610442573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104669190611bb5565b90610d32565b90610db7565b90505f81116104b55760405162461bcd60e51b815260206004820152600f60248201526e4e6f20737475636b20746f6b656e7360881b60448201526064016103d9565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0385169063a9059cbb906044016020604051808303815f875af11580156104ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105239190611bcc565b50610632565b5f610539606461046c4787610d32565b91505f82116105835760405162461bcd60e51b81526020600482015260166024820152754e6f206e617469766520737475636b20746f6b656e7360501b60448201526064016103d9565b6040516001600160a01b0384169083905f81818185875af1925050503d805f81146105c9576040519150601f19603f3d011682016040523d82523d5f602084013e6105ce565b606091505b505080915050806106305760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207769746864726177206e617469766520737475636b20604482015265746f6b656e7360d01b60648201526084016103d9565b505b50505050565b5f6106456009600a611cdf565b610653906305f5e100611ced565b905090565b5f610664848484610df8565b6106b584336106b085604051806060016040528060288152602001611e2d602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611673565b610c0f565b5060019392505050565b6006546001600160a01b0316336001600160a01b0316146106de575f80fd5b305f9081526001602052604090205480158015906107055750601354600160a81b900460ff165b1561071357610713816116ab565b4780156107235761072381611854565b5050565b5f546001600160a01b031633146107505760405162461bcd60e51b81526004016103d990611b80565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107c15760405162461bcd60e51b81526004016103d990611b80565b6107cd6009600a611cdf565b6107db906305f5e100611ced565b600f556107ea6009600a611cdf565b6107f8906305f5e100611ced565b6010556004805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6108326009600a611cdf565b610840906305f5e100611ced565b60405190815260200160405180910390a1565b5f6103a6338484610df8565b5f546001600160a01b031633146108885760405162461bcd60e51b81526004016103d990611b80565b60165460ff16156108db5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016103d9565b61090e30737a250d5630b4cf539739df2c5dacb4c659f2488d6109006009600a611cdf565b6106b0906305f5e100611ced565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109829190611d04565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a059190611d04565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a739190611d04565b601380546001600160a01b0319166001600160a01b0392909216919091179055305f81815260016020526040902054737a250d5630b4cf539739df2c5dacb4c659f2488d9163f305d719914791905f80610ad45f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b3a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b5f9190611d1f565b5050436015555060135460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201525f1960248201526001600160a01b039091169063095ea7b3906044016020604051808303815f875af1158015610bc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bec9190611bcc565b506013805460ff60a81b1916600160a81b1790556016805460ff19166001179055565b6001600160a01b038316610c715760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d9565b6001600160a01b038216610cd25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d9565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f825f03610d4157505f6103aa565b5f610d4c8385611ced565b905082610d598583611d4a565b14610db05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016103d9565b9392505050565b5f610db083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061186d565b6001600160a01b038316610e5c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d9565b6001600160a01b038216610ebe5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d9565b5f8111610f1f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016103d9565b5f80546001600160a01b03858116911614801590610f4a57505f546001600160a01b03848116911614155b8015610f6457506006546001600160a01b03848116911614155b156112b657610f8f606461046c600b54600e5411610f8457600754610f88565b6009545b8590610d32565b60045490915060ff1615611082576001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14801590610fd857506013546001600160a01b03848116911614155b1561108257325f9081526005602052604090205443116110705760405162461bcd60e51b815260206004820152604760248201527f5f7472616e736665723a3a205472616e736665722064656c617920696e20757360448201527f652e204f6e6c79206f6e652070757263686173652070657220626c6f636b2061606482015266363637bbb2b21760c91b608482015260a4016103d9565b325f9081526005602052604090204390555b6013546001600160a01b0385811691161480156110bc57506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b80156110e057506001600160a01b0383165f9081526003602052604090205460ff16155b156111c657600f548211156111375760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016103d9565b60105482611159856001600160a01b03165f9081526001602052604090205490565b6111639190611d69565b11156111b15760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016103d9565b600e8054905f6111c083611d7c565b91905055505b6013546001600160a01b0384811691161480156111ec57506001600160a01b0384163014155b1561121957611216606461046c600c54600e541161120c57600854610f88565b600a548590610d32565b90505b305f90815260016020526040902054601354600160a01b900460ff1615801561124f57506013546001600160a01b038581169116145b80156112645750601354600160a81b900460ff165b8015611271575060115481115b80156112805750600d54600e54115b156112b4576112a261129d8461129884601254611899565b611899565b6116ab565b4780156112b2576112b247611854565b505b505b6001600160a01b0384165f9081526003602052604090205460ff16806112f357506001600160a01b0383165f9081526003602052604090205460ff165b801561130857506001600160a01b0384163014155b801561132157505f546001600160a01b03858116911614155b801561133657506001600160a01b0383163014155b1561134057436014555b6001600160a01b0384165f9081526003602052604090205460ff168015611375575043601554600c546113739190611d69565b105b80156113ae575060035f6113905f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f205460ff16155b15611422576001600160a01b038085165f81815260016020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114149086815260200190565b60405180910390a350505050565b6001600160a01b0384165f9081526003602052604090205460ff1615801561146257506001600160a01b0383165f9081526003602052604090205460ff16155b1561153f576013546001600160a01b0384811691161461150d576001600160a01b038381165f908152601760205260409020601354909186811691161415806114ab5750805415155b156114e5576001600160a01b0385165f90815260176020526040902054815415806114d65750815481105b156114df578082555b50611507565b600e54600d541115611503576114fc4360016118ad565b8155611507565b4381555b5061153f565b6001600160a01b0384165f9081526017602052604090204260018201556014548154611538916118ad565b6002909101555b80156115b757305f9081526001602052604090205461155e90826118ee565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115ae9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546115d990836118ad565b6001600160a01b0385165f9081526001602052604090205561161c6115fe83836118ad565b6001600160a01b0385165f90815260016020526040902054906118ee565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61166585856118ad565b604051908152602001611414565b5f81848411156116965760405162461bcd60e51b81526004016103d99190611a66565b505f6116a28486611d94565b95945050505050565b6013805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106116f1576116f1611da7565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611761573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117859190611d04565b8160018151811061179857611798611da7565b60200260200101906001600160a01b031690816001600160a01b0316815250506117d730737a250d5630b4cf539739df2c5dacb4c659f2488d84610c0f565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906118169085905f90869030904290600401611dbb565b5f604051808303815f87803b15801561182d575f80fd5b505af115801561183f573d5f803e3d5ffd5b50506013805460ff60a01b1916905550505050565b60065461186a906001600160a01b03168261194c565b50565b5f818361188d5760405162461bcd60e51b81526004016103d99190611a66565b505f6116a28486611d4a565b5f8183116118a75782610db0565b50919050565b5f610db083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611673565b5f806118fa8385611d69565b905083811015610db05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103d9565b8047101561199c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016103d9565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146119e5576040519150601f19603f3d011682016040523d82523d5f602084013e6119ea565b606091505b5050905080611a615760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016103d9565b505050565b5f602080835283518060208501525f5b81811015611a9257858101830151858201604001528201611a76565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461186a575f80fd5b5f8060408385031215611ad7575f80fd5b8235611ae281611ab2565b946020939093013593505050565b5f805f60608486031215611b02575f80fd5b8335611b0d81611ab2565b92506020840135611b1d81611ab2565b929592945050506040919091013590565b5f60208284031215611b3e575f80fd5b8135610db081611ab2565b5f8060408385031215611b5a575f80fd5b8235611b6581611ab2565b91506020830135611b7581611ab2565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611bc5575f80fd5b5051919050565b5f60208284031215611bdc575f80fd5b81518015158114610db0575f80fd5b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c3957815f1904821115611c1f57611c1f611beb565b80851615611c2c57918102915b93841c9390800290611c04565b509250929050565b5f82611c4f575060016103aa565b81611c5b57505f6103aa565b8160018114611c715760028114611c7b57611c97565b60019150506103aa565b60ff841115611c8c57611c8c611beb565b50506001821b6103aa565b5060208310610133831016604e8410600b8410161715611cba575081810a6103aa565b611cc48383611bff565b805f1904821115611cd757611cd7611beb565b029392505050565b5f610db060ff841683611c41565b80820281158282048414176103aa576103aa611beb565b5f60208284031215611d14575f80fd5b8151610db081611ab2565b5f805f60608486031215611d31575f80fd5b8351925060208401519150604084015190509250925092565b5f82611d6457634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156103aa576103aa611beb565b5f60018201611d8d57611d8d611beb565b5060010190565b818103818111156103aa576103aa611beb565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611e0b5784516001600160a01b031683529383019391830191600101611de6565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220607851f99151c738e2787e3e575096beb6a5925e6f09537c076583d3dc885c4564736f6c63430008170033

Deployed Bytecode Sourcemap

6731:10901:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9022:83;;;;;;;;;;-1:-1:-1;9092:5:0;;;;;;;;;;;;-1:-1:-1;;;9092:5:0;;;;9022:83;;;;;;;:::i;:::-;;;;;;;;9855:161;;;;;;;;;;-1:-1:-1;9855:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9855:161:0;1023:187:1;15585:708:0;;;;;;;;;;-1:-1:-1;15585:708:0;;;;;:::i;:::-;;:::i;:::-;;7931:51;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;7931:51:0;1215:177:1;9299:95:0;;;;;;;;;;;;;:::i;10024:313::-;;;;;;;;;;-1:-1:-1;10024:313:0;;;;;:::i;:::-;;:::i;9208:83::-;;;;;;;;;;-1:-1:-1;9208:83:0;;7560:1;2000:36:1;;1988:2;1973:18;9208:83:0;1858:184:1;17219:373:0;;;;;;;;;;;;;:::i;9402:119::-;;;;;;;;;;-1:-1:-1;9402:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;9495:18:0;9468:7;9495:18;;;:9;:18;;;;;;;9402:119;5789:148;;;;;;;;;;;;;:::i;15353:224::-;;;;;;;;;;;;;:::i;7746:53::-;;;;;;;;;;;;;;;;5575:79;;;;;;;;;;-1:-1:-1;5613:7:0;5640:6;5575:79;;-1:-1:-1;;;;;5640:6:0;;;2445:51:1;;2433:2;2418:18;5575:79:0;2299:203:1;7806:55:0;;;;;;;;;;;;;;;;9113:87;;;;;;;;;;-1:-1:-1;9185:7:0;;;;;;;;;;;;-1:-1:-1;;;9185:7:0;;;;9113:87;;9529:167;;;;;;;;;;-1:-1:-1;9529:167:0;;;;;:::i;:::-;;:::i;7868:56::-;;;;;;;;;;;;;;;;16402:809;;;;;;;;;;;;;:::i;9704:143::-;;;;;;;;;;-1:-1:-1;9704:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;9812:18:0;;;9785:7;9812:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9704:143;9855:161;9930:4;9947:39;921:10;9970:7;9979:6;9947:8;:39::i;:::-;-1:-1:-1;10004:4:0;9855:161;;;;;:::o;15585:708::-;5702:6;;-1:-1:-1;;;;;5702:6:0;921:10;5702:22;5694:67;;;;-1:-1:-1;;;5694:67:0;;;;;;;:::i;:::-;;;;;;;;;15692:10:::1;15675:14;-1:-1:-1::0;;;;;15742:19:0;::::1;::::0;15738:548:::1;;15788:38;::::0;-1:-1:-1;;;15788:38:0;;15820:4:::1;15788:38;::::0;::::1;2445:51:1::0;15787:62:0::1;::::0;15845:3:::1;::::0;15787:53:::1;::::0;15832:7;;-1:-1:-1;;;;;15788:23:0;::::1;::::0;::::1;::::0;2418:18:1;;15788:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15787:44:::0;::::1;:53::i;:::-;:57:::0;::::1;:62::i;:::-;15778:71;;15881:1;15872:6;:10;15864:38;;;::::0;-1:-1:-1;;;15864:38:0;;3652:2:1;15864:38:0::1;::::0;::::1;3634:21:1::0;3691:2;3671:18;;;3664:30;-1:-1:-1;;;3710:18:1;;;3703:45;3765:18;;15864:38:0::1;3450:339:1::0;15864:38:0::1;15917:42;::::0;-1:-1:-1;;;15917:42:0;;15940:10:::1;15917:42;::::0;::::1;3968:51:1::0;4035:18;;;4028:34;;;-1:-1:-1;;;;;15917:22:0;::::1;::::0;::::1;::::0;3941:18:1;;15917:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15738:548;;;15992:12;16028:45;16069:3;16028:36;16029:21;16056:7:::0;16028:27:::1;:36::i;:45::-;16019:54;;16105:1;16096:6;:10;16088:45;;;::::0;-1:-1:-1;;;16088:45:0;;4557:2:1;16088:45:0::1;::::0;::::1;4539:21:1::0;4596:2;4576:18;;;4569:30;-1:-1:-1;;;4615:18:1;;;4608:52;4677:18;;16088:45:0::1;4355:346:1::0;16088:45:0::1;16162:39;::::0;-1:-1:-1;;;;;16162:20:0;::::1;::::0;16190:6;;16162:39:::1;::::0;;;16190:6;16162:20;:39:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16148:53;;;;;16224:7;16216:58;;;::::0;-1:-1:-1;;;16216:58:0;;5118:2:1;16216:58:0::1;::::0;::::1;5100:21:1::0;5157:2;5137:18;;;5130:30;5196:34;5176:18;;;5169:62;-1:-1:-1;;;5247:18:1;;;5240:36;5293:19;;16216:58:0::1;4916:402:1::0;16216:58:0::1;15977:309;15738:548;15664:629;;15585:708:::0;;:::o;9299:95::-;9352:7;7615:13;7560:1;7615:2;:13;:::i;:::-;7603:25;;:9;:25;:::i;:::-;9372:14;;9299:95;:::o;10024:313::-;10122:4;10139:36;10149:6;10157:9;10168:6;10139:9;:36::i;:::-;10186:121;10195:6;921:10;10217:89;10255:6;10217:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10217:19:0;;;;;;:11;:19;;;;;;;;921:10;10217:33;;;;;;;;;;:37;:89::i;:::-;10186:8;:121::i;:::-;-1:-1:-1;10325:4:0;10024:313;;;;;:::o;17219:373::-;17285:10;;-1:-1:-1;;;;;17285:10:0;921;-1:-1:-1;;;;;17269:26:0;;17261:35;;;;;;17348:4;17307:20;9495:18;;;:9;:18;;;;;;17368:16;;;;;:31;;-1:-1:-1;17388:11:0;;-1:-1:-1;;;17388:11:0;;;;17368:31;17365:90;;;17413:30;17430:12;17413:16;:30::i;:::-;17486:21;17521:14;;17518:67;;17549:24;17562:10;17549:12;:24::i;:::-;17250:342;;17219:373::o;5789:148::-;5702:6;;-1:-1:-1;;;;;5702:6:0;921:10;5702:22;5694:67;;;;-1:-1:-1;;;5694:67:0;;;;;;;:::i;:::-;5896:1:::1;5880:6:::0;;5859:40:::1;::::0;-1:-1:-1;;;;;5880:6:0;;::::1;::::0;5859:40:::1;::::0;5896:1;;5859:40:::1;5927:1;5910:19:::0;;-1:-1:-1;;;;;;5910:19:0::1;::::0;;5789:148::o;15353:224::-;5702:6;;-1:-1:-1;;;;;5702:6:0;921:10;5702:22;5694:67;;;;-1:-1:-1;;;5694:67:0;;;;;;;:::i;:::-;7615:13:::1;7560:1;7615:2;:13;:::i;:::-;7603:25;::::0;:9:::1;:25;:::i;:::-;15407:12;:22:::0;7615:13:::1;7560:1;7615:2;:13;:::i;:::-;7603:25;::::0;:9:::1;:25;:::i;:::-;15440:14;:22:::0;15473:20:::1;:27:::0;;-1:-1:-1;;15473:27:0::1;::::0;;15518:51:::1;7615:13;7560:1;7615:2;:13;:::i;:::-;7603:25;::::0;:9:::1;:25;:::i;:::-;15518:51;::::0;1361:25:1;;;1349:2;1334:18;15518:51:0::1;;;;;;;15353:224::o:0;9529:167::-;9607:4;9624:42;921:10;9648:9;9659:6;9624:9;:42::i;16402:809::-;5702:6;;-1:-1:-1;;;;;5702:6:0;921:10;5702:22;5694:67;;;;-1:-1:-1;;;5694:67:0;;;;;;;:::i;:::-;16466:11:::1;::::0;::::1;;16465:12;16457:48;;;::::0;-1:-1:-1;;;16457:48:0;;7207:2:1;16457:48:0::1;::::0;::::1;7189:21:1::0;7246:2;7226:18;;;7219:30;7285:25;7265:18;;;7258:53;7328:18;;16457:48:0::1;7005:347:1::0;16457:48:0::1;16516:58;16533:4;8082:42;7615:13;7560:1;7615:2;:13;:::i;:::-;7603:25;::::0;:9:::1;:25;:::i;16516:58::-;8082:42;-1:-1:-1::0;;;;;16619:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16601:55:0::1;;16679:4;8082:42;-1:-1:-1::0;;;;;16699:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16601:131;::::0;-1:-1:-1;;;;;;16601:131:0::1;::::0;;;;;;-1:-1:-1;;;;;7843:15:1;;;16601:131:0::1;::::0;::::1;7825:34:1::0;7895:15;;7875:18;;;7868:43;7760:18;;16601:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16585:13;:147:::0;;-1:-1:-1;;;;;;16585:147:0::1;-1:-1:-1::0;;;;;16585:147:0;;;::::1;::::0;;;::::1;::::0;;16851:4:::1;-1:-1:-1::0;9495:18:0;;;-1:-1:-1;9495:18:0;;;;;;8082:42:::1;::::0;16743:31:::1;::::0;16796:21:::1;::::0;16851:4;16910:1:::1;16926::::0;16942:7:::1;5613::::0;5640:6;-1:-1:-1;;;;;5640:6:0;;5575:79;16942:7:::1;16743:247;::::0;::::1;::::0;;;-1:-1:-1;;;;;;16743:247:0;;;-1:-1:-1;;;;;8281:15:1;;;16743:247:0::1;::::0;::::1;8263:34:1::0;8313:18;;;8306:34;;;;8356:18;;;8349:34;;;;8399:18;;;8392:34;8463:15;;;8442:19;;;8435:44;16964:15:0::1;8495:19:1::0;;;8488:35;8197:19;;16743:247:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17014:12:0::1;17001:10;:25:::0;-1:-1:-1;17044:13:0::1;::::0;17037:108:::1;::::0;-1:-1:-1;;;17037:108:0;;8082:42:::1;17037:108;::::0;::::1;3968:51:1::0;-1:-1:-1;;4035:18:1;;;4028:34;-1:-1:-1;;;;;17044:13:0;;::::1;::::0;17037:29:::1;::::0;3941:18:1;;17037:108:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;17156:11:0::1;:18:::0;;-1:-1:-1;;;;17156:18:0::1;-1:-1:-1::0;;;17156:18:0::1;::::0;;17185:11:::1;:18:::0;;-1:-1:-1;;17185:18:0::1;17170:4;17185:18;::::0;;16402:809::o;10345:335::-;-1:-1:-1;;;;;10438:19:0;;10430:68;;;;-1:-1:-1;;;10430:68:0;;9047:2:1;10430:68:0;;;9029:21:1;9086:2;9066:18;;;9059:30;9125:34;9105:18;;;9098:62;-1:-1:-1;;;9176:18:1;;;9169:34;9220:19;;10430:68:0;8845:400:1;10430:68:0;-1:-1:-1;;;;;10517:21:0;;10509:68;;;;-1:-1:-1;;;10509:68:0;;9452:2:1;10509:68:0;;;9434:21:1;9491:2;9471:18;;;9464:30;9530:34;9510:18;;;9503:62;-1:-1:-1;;;9581:18:1;;;9574:32;9623:19;;10509:68:0;9250:398:1;10509:68:0;-1:-1:-1;;;;;10588:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10640:32;;1361:25:1;;;10640:32:0;;1334:18:1;10640:32:0;;;;;;;10345:335;;;:::o;4640:246::-;4698:7;4722:1;4727;4722:6;4718:47;;-1:-1:-1;4752:1:0;4745:8;;4718:47;4775:9;4787:5;4791:1;4787;:5;:::i;:::-;4775:17;-1:-1:-1;4820:1:0;4811:5;4815:1;4775:17;4811:5;:::i;:::-;:10;4803:56;;;;-1:-1:-1;;;4803:56:0;;10077:2:1;4803:56:0;;;10059:21:1;10116:2;10096:18;;;10089:30;10155:34;10135:18;;;10128:62;-1:-1:-1;;;10206:18:1;;;10199:31;10247:19;;4803:56:0;9875:397:1;4803:56:0;4877:1;4640:246;-1:-1:-1;;;4640:246:0:o;4894:132::-;4952:7;4979:39;4983:1;4986;4979:39;;;;;;;;;;;;;;;;;:3;:39::i;10688:4003::-;-1:-1:-1;;;;;10776:18:0;;10768:68;;;;-1:-1:-1;;;10768:68:0;;10479:2:1;10768:68:0;;;10461:21:1;10518:2;10498:18;;;10491:30;10557:34;10537:18;;;10530:62;-1:-1:-1;;;10608:18:1;;;10601:35;10653:19;;10768:68:0;10277:401:1;10768:68:0;-1:-1:-1;;;;;10855:16:0;;10847:64;;;;-1:-1:-1;;;10847:64:0;;10885:2:1;10847:64:0;;;10867:21:1;10924:2;10904:18;;;10897:30;10963:34;10943:18;;;10936:62;-1:-1:-1;;;11014:18:1;;;11007:33;11057:19;;10847:64:0;10683:399:1;10847:64:0;10939:1;10930:6;:10;10922:64;;;;-1:-1:-1;;;10922:64:0;;11289:2:1;10922:64:0;;;11271:21:1;11328:2;11308:18;;;11301:30;11367:34;11347:18;;;11340:62;-1:-1:-1;;;11418:18:1;;;11411:39;11467:19;;10922:64:0;11087:405:1;10922:64:0;10997:17;5640:6;;-1:-1:-1;;;;;11033:15:0;;;5640:6;;11033:15;;;;:32;;-1:-1:-1;5613:7:0;5640:6;-1:-1:-1;;;;;11052:13:0;;;5640:6;;11052:13;;11033:32;:52;;;;-1:-1:-1;11075:10:0;;-1:-1:-1;;;;;11069:16:0;;;11075:10;;11069:16;;11033:52;11029:1769;;;11113:80;11189:3;11113:71;11135:15;;11125:9;;:25;11124:59;;11169:14;;11124:59;;;11154:12;;11124:59;11113:6;;:10;:71::i;:80::-;11214:20;;11101:92;;-1:-1:-1;11214:20:0;;11210:484;;;-1:-1:-1;;;;;11259:30:0;;8082:42;11259:30;;;;:62;;-1:-1:-1;11307:13:0;;-1:-1:-1;;;;;11293:28:0;;;11307:13;;11293:28;;11259:62;11255:424;;;11409:9;11380:39;;;;:28;:39;;;;;;11447:12;-1:-1:-1;11346:236:0;;;;-1:-1:-1;;;11346:236:0;;11699:2:1;11346:236:0;;;11681:21:1;11738:2;11718:18;;;11711:30;11777:34;11757:18;;;11750:62;11848:34;11828:18;;;11821:62;-1:-1:-1;;;11899:19:1;;;11892:38;11947:19;;11346:236:0;11497:475:1;11346:236:0;11634:9;11605:39;;;;:28;:39;;;;;11647:12;11605:54;;11255:424;11722:13;;-1:-1:-1;;;;;11714:21:0;;;11722:13;;11714:21;:55;;;;-1:-1:-1;;;;;;11739:30:0;;8082:42;11739:30;;11714:55;:83;;;;-1:-1:-1;;;;;;11775:22:0;;;;;;:18;:22;;;;;;;;11773:24;11714:83;11710:372;;;11835:12;;11825:6;:22;;11817:60;;;;-1:-1:-1;;;11817:60:0;;12179:2:1;11817:60:0;;;12161:21:1;12218:2;12198:18;;;12191:30;12257:27;12237:18;;;12230:55;12302:18;;11817:60:0;11977:349:1;11817:60:0;11952:14;;11942:6;11926:13;11936:2;-1:-1:-1;;;;;9495:18:0;9468:7;9495:18;;;:9;:18;;;;;;;9402:119;11926:13;:22;;;;:::i;:::-;:40;;11896:140;;;;-1:-1:-1;;;11896:140:0;;12663:2:1;11896:140:0;;;12645:21:1;12702:2;12682:18;;;12675:30;12741:28;12721:18;;;12714:56;12787:18;;11896:140:0;12461:350:1;11896:140:0;12055:9;:11;;;:9;:11;;;:::i;:::-;;;;;;11710:372;12107:13;;-1:-1:-1;;;;;12101:19:0;;;12107:13;;12101:19;:44;;;;-1:-1:-1;;;;;;12124:21:0;;12140:4;12124:21;;12101:44;12098:179;;;12178:83;12257:3;12178:74;12200:16;;12190:9;;:26;12189:62;;12236:15;;12189:62;;;12220:13;;12178:6;;:10;:74::i;:83::-;12166:95;;12098:179;12342:4;12293:28;9495:18;;;:9;:18;;;;;;12368:6;;-1:-1:-1;;;12368:6:0;;;;12367:7;:30;;;;-1:-1:-1;12384:13:0;;-1:-1:-1;;;;;12378:19:0;;;12384:13;;12378:19;12367:30;:45;;;;-1:-1:-1;12401:11:0;;-1:-1:-1;;;12401:11:0;;;;12367:45;:88;;;;;12438:17;;12416:20;:39;12367:88;:122;;;;;12471:18;;12459:9;;:30;12367:122;12363:424;;;12509:69;12526:51;12530:6;12538:38;12542:20;12564:11;;12538:3;:38::i;:::-;12526:3;:51::i;:::-;12509:16;:69::i;:::-;12626:21;12670:22;;12666:106;;12717:35;12730:21;12717:12;:35::i;:::-;12490:297;12363:424;11086:1712;11029:1769;-1:-1:-1;;;;;12815:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;12843:22:0;;;;;;:18;:22;;;;;;;;12815:50;12813:90;;;;-1:-1:-1;;;;;;12883:20:0;;12898:4;12883:20;;12813:90;:109;;;;-1:-1:-1;5613:7:0;5640:6;-1:-1:-1;;;;;12907:15:0;;;5640:6;;12907:15;;12813:109;:131;;;;-1:-1:-1;;;;;;12926:18:0;;12939:4;12926:18;;12813:131;12810:201;;;12987:12;12971:13;:28;12810:201;-1:-1:-1;;;;;13026:24:0;;;;;;:18;:24;;;;;;;;:71;;;;;13085:12;13073:10;;13054:16;;:29;;;;:::i;:::-;:43;13026:71;:104;;;;;13103:18;:27;13122:7;5613;5640:6;-1:-1:-1;;;;;5640:6:0;;5575:79;13122:7;-1:-1:-1;;;;;13103:27:0;;;;;;;;;;;;-1:-1:-1;13103:27:0;;;;13101:29;13026:104;13023:309;;;-1:-1:-1;;;;;13174:15:0;;;;;;;:9;:15;;;;;;:24;;;;;;;13216:13;;;;;;;;;;:23;;;;;;13274:25;;;;;;13192:6;1361:25:1;;1349:2;1334:18;;1215:177;13274:25:0;;;;;;;;13314:7;10688:4003;;;:::o;13023:309::-;-1:-1:-1;;;;;13349:24:0;;;;;;:18;:24;;;;;;;;13347:26;:54;;;;-1:-1:-1;;;;;;13379:22:0;;;;;;:18;:22;;;;;;;;13377:24;13347:54;13344:969;;;13422:13;;-1:-1:-1;;;;;13422:19:0;;;:13;;:19;13418:884;;-1:-1:-1;;;;;13493:13:0;;;13462:28;13493:13;;;:9;:13;;;;;13529;;13493;;13529:21;;;:13;;:21;;;:41;;-1:-1:-1;13554:12:0;;:16;;13529:41;13525:537;;;-1:-1:-1;;;;;13617:15:0;;13595:20;13617:15;;;:9;:15;;;;;:20;13664:12;;:17;;:48;;-1:-1:-1;13700:12:0;;13685:27;;13664:48;13660:132;;;13741:27;;;13660:132;13572:239;13525:537;;;13863:9;;13844:18;;:28;13840:203;;;13916:19;:12;13933:1;13916:16;:19::i;:::-;13901:34;;13840:203;;;14007:12;13992:27;;13840:203;13443:634;13418:884;;;-1:-1:-1;;;;;14136:15:0;;14102:31;14136:15;;;:9;:15;;;;;14191;14170:18;;;:36;14272:13;;14252:15;;:34;;:19;:34::i;:::-;14225:24;;;;:61;13418:884;14329:13;;14325:173;;14403:4;14385:24;;;;:9;:24;;;;;;:41;;14415:9;14385:28;:41::i;:::-;14377:4;14359:24;;;;:9;:24;;;;;;;:67;;;;14446:40;;-1:-1:-1;;;;;14446:40:0;;;;;;;14476:9;1361:25:1;;1349:2;1334:18;;1215:177;14446:40:0;;;;;;;;14325:173;-1:-1:-1;;;;;14526:15:0;;;;;;:9;:15;;;;;;:28;;14547:6;14526:19;:28::i;:::-;-1:-1:-1;;;;;14508:15:0;;;;;;:9;:15;;;;;:46;14582:42;14600:23;:6;14612:9;14600:10;:23::i;:::-;-1:-1:-1;;;;;14582:13:0;;;;;;:9;:13;;;;;;;:17;:42::i;:::-;-1:-1:-1;;;;;14566:13:0;;;;;;;:9;:13;;;;;:58;;;;14640:43;;;14659:23;:6;14671:9;14659:10;:23::i;:::-;14640:43;;1361:25:1;;;1349:2;1334:18;14640:43:0;1215:177:1;4442:190:0;4528:7;4564:12;4556:6;;;;4548:29;;;;-1:-1:-1;;;4548:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4588:9:0;4600:5;4604:1;4600;:5;:::i;:::-;4588:17;4442:190;-1:-1:-1;;;;;4442:190:0:o;14808:537::-;8604:6;:13;;-1:-1:-1;;;;8604:13:0;-1:-1:-1;;;8604:13:0;;;14910:16:::1;::::0;;14924:1:::1;14910:16:::0;;;;;::::1;::::0;;-1:-1:-1;;14910:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14910:16:0::1;14886:40;;14957:4;14939;14944:1;14939:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;14939:23:0::1;;;-1:-1:-1::0;;;;;14939:23:0::1;;;::::0;::::1;8082:42;-1:-1:-1::0;;;;;14983:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14973:4;14978:1;14973:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1::0;;;;;14973:32:0::1;;;-1:-1:-1::0;;;;;14973:32:0::1;;;::::0;::::1;15018:112;15049:4;8082:42;15108:11;15018:8;:112::i;:::-;15141:196;::::0;-1:-1:-1;;;15141:196:0;;8082:42:::1;::::0;15141:66:::1;::::0;:196:::1;::::0;15222:11;;15248:1:::1;::::0;15264:4;;15291::::1;::::0;15311:15:::1;::::0;15141:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8640:6:0;:14;;-1:-1:-1;;;;8640:14:0;;;-1:-1:-1;;;;14808:537:0:o;16301:93::-;16358:10;;:28;;-1:-1:-1;;;;;16358:10:0;16379:6;16358:20;:28::i;:::-;16301:93;:::o;5034:189::-;5120:7;5155:12;5148:5;5140:28;;;;-1:-1:-1;;;5140:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5179:9:0;5191:5;5195:1;5191;:5;:::i;14701:99::-;14758:7;14786:1;14784;:3;14783:9;;14791:1;14783:9;;;-1:-1:-1;14789:1:0;14701:99;-1:-1:-1;14701:99:0:o;4298:136::-;4356:7;4383:43;4387:1;4390;4383:43;;;;;;;;;;;;;;;;;:3;:43::i;4111:179::-;4169:7;;4201:5;4205:1;4201;:5;:::i;:::-;4189:17;;4230:1;4225;:6;;4217:46;;;;-1:-1:-1;;;4217:46:0;;14540:2:1;4217:46:0;;;14522:21:1;14579:2;14559:18;;;14552:30;14618:29;14598:18;;;14591:57;14665:18;;4217:46:0;14338:351:1;3765:315:0;3880:6;3855:21;:31;;3847:73;;;;-1:-1:-1;;;3847:73:0;;14896:2:1;3847:73:0;;;14878:21:1;14935:2;14915:18;;;14908:30;14974:31;14954:18;;;14947:59;15023:18;;3847:73:0;14694:353:1;3847:73:0;3932:12;3950:9;-1:-1:-1;;;;;3950:14:0;3972:6;3950:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3931:52;;;4002:7;3994:78;;;;-1:-1:-1;;;3994:78:0;;15254:2:1;3994:78:0;;;15236:21:1;15293:2;15273:18;;;15266:30;15332:34;15312:18;;;15305:62;15403:28;15383:18;;;15376:56;15449:19;;3994:78:0;15052:422:1;3994:78:0;3836:244;3765:315;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:356::-;3102:2;3084:21;;;3121:18;;;3114:30;3180:34;3175:2;3160:18;;3153:62;3247:2;3232:18;;2900:356::o;3261:184::-;3331:6;3384:2;3372:9;3363:7;3359:23;3355:32;3352:52;;;3400:1;3397;3390:12;3352:52;-1:-1:-1;3423:16:1;;3261:184;-1:-1:-1;3261:184:1:o;4073:277::-;4140:6;4193:2;4181:9;4172:7;4168:23;4164:32;4161:52;;;4209:1;4206;4199:12;4161:52;4241:9;4235:16;4294:5;4287:13;4280:21;4273:5;4270:32;4260:60;;4316:1;4313;4306:12;5323:127;5384:10;5379:3;5375:20;5372:1;5365:31;5415:4;5412:1;5405:15;5439:4;5436:1;5429:15;5455:416;5544:1;5581:5;5544:1;5595:270;5616:7;5606:8;5603:21;5595:270;;;5675:4;5671:1;5667:6;5663:17;5657:4;5654:27;5651:53;;;5684:18;;:::i;:::-;5734:7;5724:8;5720:22;5717:55;;;5754:16;;;;5717:55;5833:22;;;;5793:15;;;;5595:270;;;5599:3;5455:416;;;;;:::o;5876:806::-;5925:5;5955:8;5945:80;;-1:-1:-1;5996:1:1;6010:5;;5945:80;6044:4;6034:76;;-1:-1:-1;6081:1:1;6095:5;;6034:76;6126:4;6144:1;6139:59;;;;6212:1;6207:130;;;;6119:218;;6139:59;6169:1;6160:10;;6183:5;;;6207:130;6244:3;6234:8;6231:17;6228:43;;;6251:18;;:::i;:::-;-1:-1:-1;;6307:1:1;6293:16;;6322:5;;6119:218;;6421:2;6411:8;6408:16;6402:3;6396:4;6393:13;6389:36;6383:2;6373:8;6370:16;6365:2;6359:4;6356:12;6352:35;6349:77;6346:159;;;-1:-1:-1;6458:19:1;;;6490:5;;6346:159;6537:34;6562:8;6556:4;6537:34;:::i;:::-;6607:6;6603:1;6599:6;6595:19;6586:7;6583:32;6580:58;;;6618:18;;:::i;:::-;6656:20;;5876:806;-1:-1:-1;;;5876:806:1:o;6687:140::-;6745:5;6774:47;6815:4;6805:8;6801:19;6795:4;6774:47;:::i;6832:168::-;6905:9;;;6936;;6953:15;;;6947:22;;6933:37;6923:71;;6974:18;;:::i;7357:251::-;7427:6;7480:2;7468:9;7459:7;7455:23;7451:32;7448:52;;;7496:1;7493;7486:12;7448:52;7528:9;7522:16;7547:31;7572:5;7547:31;:::i;8534:306::-;8622:6;8630;8638;8691:2;8679:9;8670:7;8666:23;8662:32;8659:52;;;8707:1;8704;8697:12;8659:52;8736:9;8730:16;8720:26;;8786:2;8775:9;8771:18;8765:25;8755:35;;8830:2;8819:9;8815:18;8809:25;8799:35;;8534:306;;;;;:::o;9653:217::-;9693:1;9719;9709:132;;9763:10;9758:3;9754:20;9751:1;9744:31;9798:4;9795:1;9788:15;9826:4;9823:1;9816:15;9709:132;-1:-1:-1;9855:9:1;;9653:217::o;12331:125::-;12396:9;;;12417:10;;;12414:36;;;12430:18;;:::i;12816:135::-;12855:3;12876:17;;;12873:43;;12896:18;;:::i;:::-;-1:-1:-1;12943:1:1;12932:13;;12816:135::o;12956:128::-;13023:9;;;13044:11;;;13041:37;;;13058:18;;:::i;13221:127::-;13282:10;13277:3;13273:20;13270:1;13263:31;13313:4;13310:1;13303:15;13337:4;13334:1;13327:15;13353:980;13615:4;13663:3;13652:9;13648:19;13694:6;13683:9;13676:25;13720:2;13758:6;13753:2;13742:9;13738:18;13731:34;13801:3;13796:2;13785:9;13781:18;13774:31;13825:6;13860;13854:13;13891:6;13883;13876:22;13929:3;13918:9;13914:19;13907:26;;13968:2;13960:6;13956:15;13942:29;;13989:1;13999:195;14013:6;14010:1;14007:13;13999:195;;;14078:13;;-1:-1:-1;;;;;14074:39:1;14062:52;;14169:15;;;;14134:12;;;;14110:1;14028:9;13999:195;;;-1:-1:-1;;;;;;;14250:32:1;;;;14245:2;14230:18;;14223:60;-1:-1:-1;;;14314:3:1;14299:19;14292:35;14211:3;13353:980;-1:-1:-1;;;13353:980:1:o

Swarm Source

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