ETH Price: $3,454.39 (-1.09%)
Gas: 9 Gwei

Token

X3 AI (X3)
 

Overview

Max Total Supply

1,000,000,000 X3

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,223,616.258692355 X3

Value
$0.00
0xdDCB175024066405bD36C655BDCd94b51D60CfFc
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:
X3AI

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-26
*/

/*

X3 AI Network is a leading decentralized AI servicing protocol built for Web3. 
It connects to extensive on-chain and off-chain datasets, integrates and computes to establish a globally accessible data layer. 
This empowers the automation of hundreds of Web3 AI applications.

Website:     https://www.x3org.com
Telegram:    https://t.me/x3ai_org
Twitter:     https://twitter.com/x3ai_org

*/

pragma solidity 0.8.20;
// SPDX-License-Identifier: MIT

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);
    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

interface IX3Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

contract X3AI is Context, IERC20, Ownable {
    uint8 private constant _decimals = 9;
    uint256 private constant _tSupply = 1000000000 * 10 ** _decimals;
    string private constant _name = unicode"X3 AI";
    string private constant _symbol = unicode"X3";

    mapping(address => uint256) private _xBalances;
    mapping(address => bool) private _isFeeExcempts;
    mapping(address => mapping(address => uint256)) private _allowances;

    event ETHBalancesRecovered();
    event TradingEnabledUpdated();
    event ERC20TokenRecovered(uint256 indexed _amount);
    event ExcludeFromFeesUpdated(address indexed account);
    event includeFromFeesUpdated(address indexed account);

    address payable private devWallet;
    address payable private marketingWallet;
    address public constant deadAddress 
            = 0x000000000000000000000000000000000000dEaD;

    bool private inSwapLP = false;
    bool public tradeEnabled = false;
    bool private swapEnabled = false;

    modifier lockSwapBack() {
        inSwapLP = true;
        _;
        inSwapLP = false;
    }
    
    uint256 private BUY_COUNT = 0;
    uint256 private BUY_TAX = 30;
    uint256 private SELL_TAX = 30;

    address private uniswapV2Pair;
    IX3Router public uniswapV2Router;
    
    uint256 private xSwapMinAmounts = 2000 * 10 ** _decimals;
    uint256 private xSwapMaxAmounts = 40000000 * 10 ** _decimals;
    uint256 public xSwapTxLimits = 20000000 * 10 ** _decimals;

    constructor() {
        devWallet = payable(0xd732507a434b33Bf540cf51aC9BE6FeaE1D99EC8);
        marketingWallet = payable(0xA370CDb936d1f9ED401b35D26401daD72c121e3e);
        _isFeeExcempts[devWallet] = true;
        _isFeeExcempts[marketingWallet] = true;
        _isFeeExcempts[deadAddress] = true;
        _isFeeExcempts[_msgSender()] = true;
        _isFeeExcempts[address(this)] = true;
        _xBalances[_msgSender()] = _tSupply;
        emit Transfer(address(0), _msgSender(), _tSupply);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function transfer(
        address 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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }

    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 _tSupply;
    }
    function balanceOf(address account) public view override returns (uint256) {
        return _xBalances[account];
    }

    function setFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 100 && _sellFee <= 100, "revert wrong fee settings");
        BUY_TAX = _buyFee;
        SELL_TAX = _sellFee;
    }

    function ExcludeFromFees(address account) external onlyOwner {
        require(
            _isFeeExcempts[account] != true,
            "Account is already excluded"
        );
        _isFeeExcempts[account] = true;
        emit ExcludeFromFeesUpdated(account);
    }

    function IncludeFromFees(address account) external onlyOwner {
        require(
            _isFeeExcempts[account] != false,
            "Account is already included"
        );
        _isFeeExcempts[account] = false;
        emit includeFromFeesUpdated(account);
    }

    function sendETHX(uint256 amount) private {
        require(amount > 0, "amount must be greeter than 0");
        marketingWallet.transfer(amount / 2);
        devWallet.transfer(amount / 2);
    }

    function enableTrading() external onlyOwner {
        require(!tradeEnabled, "trading is already open");
        tradeEnabled = true;
        swapEnabled = true;
        emit TradingEnabledUpdated();
    }

    function addLiquidityETH() external payable onlyOwner {
        uniswapV2Router = IX3Router(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IX3Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        _approve(address(this), address(uniswapV2Router), ~uint256(0));

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner {
        BUY_TAX = 4;
        SELL_TAX = 4;
        xSwapTxLimits = _tSupply;
    }

    function swapETHX(uint256 tokenAmount) private lockSwapBack {
        require(tokenAmount > 0, "amount must be greeter than 0");
        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 min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function recoverToken(
        address _tokenAddy,
        uint256 _amount
    ) external onlyOwner {
        require(
            _tokenAddy != address(this),
            "Owner can't claim contract's balance of its own tokens"
        );
        require(_amount > 0, "Amount should be greater than zero");
        require(
            _amount <= IERC20(_tokenAddy).balanceOf(address(this)),
            "Insufficient Amount"
        );
        IERC20(_tokenAddy).transfer(devWallet, _amount);
        emit ERC20TokenRecovered(_amount);
    }

    function recoverETH() external {
        uint256 ethValues = address(this).balance;
        require(ethValues > 0, "Amount should be greater than zero");
        require(
            ethValues <= address(this).balance,
            "Insufficient Amount"
        );
        payable(address(devWallet)).transfer(ethValues);
        emit ETHBalancesRecovered();
    }

    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 TOTAL_TAX = 0;
        TOTAL_TAX = BUY_TAX;
        if (!_isFeeExcempts[from] && !_isFeeExcempts[to]) {
            require(tradeEnabled, "Trading not enabled");
        }
        if (inSwapLP || !swapEnabled) {
            _xBalances[from] -= amount;
            _xBalances[to] += amount;
            emit Transfer(from, to, amount);
            return;
        }
        if (
            from == uniswapV2Pair &&
            to != address(uniswapV2Router) &&
            !_isFeeExcempts[to]
        ) {
            require(amount <= xSwapTxLimits, "Exceeds the _maxTxAmount.");
            require(
                balanceOf(to) + amount <= xSwapTxLimits,
                "Exceeds the maxWalletSize."
            );
            BUY_COUNT++;
        }
        if (
            from != uniswapV2Pair &&
            !_isFeeExcempts[from] &&
            !_isFeeExcempts[to]
        ) {
            require(amount <= xSwapTxLimits, "Exceeds the _maxTxAmount.");
        }
        if (
            to == uniswapV2Pair &&
            from != address(this) &&
            !_isFeeExcempts[from] &&
            !_isFeeExcempts[to]
        ) {
            TOTAL_TAX = SELL_TAX;
        }
        uint256 tokenValues = balanceOf(address(this));
        if (
            tokenValues >= xSwapMinAmounts &&
            amount >= xSwapMinAmounts &&
            to == uniswapV2Pair &&
            BUY_COUNT > 0 &&
            swapEnabled &&
            !inSwapLP &&
            !_isFeeExcempts[from] &&
            !_isFeeExcempts[to]
        ) {
            swapETHX(min(amount, min(tokenValues, xSwapMaxAmounts)));
            uint256 ethValues = address(this).balance;
            if (ethValues > 0) {
                sendETHX(address(this).balance);
            }
        }
        if (TOTAL_TAX != 0) {
            uint256 X_FEES = (amount * TOTAL_TAX) / 100;
            uint256 X_VALUES = amount - X_FEES;
            address X_WALLET = _isFeeExcempts[from] ? from : address(this);
            X_FEES = _isFeeExcempts[from] ? amount : X_FEES;
            _xBalances[X_WALLET] += X_FEES;
            emit Transfer(from, address(this), X_FEES);
            _xBalances[from] -= amount;
            _xBalances[to] += X_VALUES;
            emit Transfer(from, to, X_VALUES);
        } else {
            _xBalances[from] -= amount;
            _xBalances[to] += amount;
            emit Transfer(from, to, amount);
        }
    }

    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":true,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"ERC20TokenRecovered","type":"event"},{"anonymous":false,"inputs":[],"name":"ETHBalancesRecovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFeesUpdated","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":[],"name":"TradingEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"includeFromFeesUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"IncludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidityETH","outputs":[],"stateMutability":"payable","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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddy","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFees","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":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IX3Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"xSwapTxLimits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005805462ffffff60a01b191690555f600655601e60078190556008556200002f6009600a6200038a565b6200003d906107d0620003a1565b600b556200004e6009600a6200038a565b6200005e906302625a00620003a1565b600c556200006f6009600a6200038a565b6200007f906301312d00620003a1565b600d553480156200008e575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b031990811673d732507a434b33bf540cf51ac9be6feae1d99ec8179091556005805490911673a370cdb936d1f9ed401b35d26401dad72c121e3e179055600260208190527f4bea2708f8a95bddc67e51c53294319d59ba0b320a82771adfde83fcdb9b83ff805460ff1990811660019081179092557f5cf111966b28be0e56c0e3c842bd237a0cf0cf374bef3f4d38e3eb109fd2e9e8805482168317905561dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc80549092168317909155909190620001b53390565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526002909252902080549091166001179055620002026009600a6200038a565b6200021290633b9aca00620003a1565b335f81815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002546009600a6200038a565b6200026490633b9aca00620003a1565b60405190815260200160405180910390a3620003bb565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002cf57815f1904821115620002b357620002b36200027b565b80851615620002c157918102915b93841c939080029062000294565b509250929050565b5f82620002e75750600162000384565b81620002f557505f62000384565b81600181146200030e5760028114620003195762000339565b600191505062000384565b60ff8411156200032d576200032d6200027b565b50506001821b62000384565b5060208310610133831016604e8410600b84101617156200035e575081810a62000384565b6200036a83836200028f565b805f19048211156200038057620003806200027b565b0290505b92915050565b5f6200039a60ff841683620002d7565b9392505050565b80820281158282048414176200038457620003846200027b565b611fbc80620003c95f395ff3fe60806040526004361061014a575f3560e01c8063715018a6116100b3578063b29a81401161006d578063b29a8140146103a9578063c1899962146103c8578063d621e813146103e7578063dd62ed3e14610407578063ed9953071461044b578063f2fde38b14610453575f80fd5b8063715018a614610308578063751039fc1461031c5780638a8c523c146103305780638da5cb5b1461034457806395d89b4114610360578063a9059cbb1461038a575f80fd5b806321feee5e1161010457806321feee5e1461025157806323b872dd1461026657806327c8f83514610285578063313ce5671461029a57806357a00f76146102b557806370a08231146102d4575f80fd5b80630614117a1461015557806306fdde031461016b578063095ea7b3146101aa5780630b78f9c0146101d95780631694505e146101f857806318160ddd1461022f575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b50610169610472565b005b348015610176575f80fd5b50604080518082019091526005815264583320414960d81b60208201525b6040516101a19190611b41565b60405180910390f35b3480156101b5575f80fd5b506101c96101c4366004611ba0565b610542565b60405190151581526020016101a1565b3480156101e4575f80fd5b506101696101f3366004611bca565b610558565b348015610203575f80fd5b50600a54610217906001600160a01b031681565b6040516001600160a01b0390911681526020016101a1565b34801561023a575f80fd5b506102436105ea565b6040519081526020016101a1565b34801561025c575f80fd5b50610243600d5481565b348015610271575f80fd5b506101c9610280366004611bea565b61060a565b348015610290575f80fd5b5061021761dead81565b3480156102a5575f80fd5b50604051600981526020016101a1565b3480156102c0575f80fd5b506101696102cf366004611c28565b6106b8565b3480156102df575f80fd5b506102436102ee366004611c28565b6001600160a01b03165f9081526001602052604090205490565b348015610313575f80fd5b50610169610798565b348015610327575f80fd5b50610169610809565b34801561033b575f80fd5b5061016961085b565b34801561034f575f80fd5b505f546001600160a01b0316610217565b34801561036b575f80fd5b50604080518082019091526002815261583360f01b6020820152610194565b348015610395575f80fd5b506101c96103a4366004611ba0565b61091d565b3480156103b4575f80fd5b506101696103c3366004611ba0565b610929565b3480156103d3575f80fd5b506101696103e2366004611c28565b610b38565b3480156103f2575f80fd5b506005546101c990600160a81b900460ff1681565b348015610412575f80fd5b50610243610421366004611c43565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b610169610c14565b34801561045e575f80fd5b5061016961046d366004611c28565b610eb5565b47806104995760405162461bcd60e51b815260040161049090611c7a565b60405180910390fd5b478111156104df5760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b6044820152606401610490565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610516573d5f803e3d5ffd5b506040517f3bb0684d6f9d76c7e55b7c296d6672f480511b6f9a014d1dd32b6288bd632d72905f90a150565b5f61054e338484610f4f565b5060015b92915050565b5f546001600160a01b031633146105815760405162461bcd60e51b815260040161049090611cbc565b60648211158015610593575060648111155b6105df5760405162461bcd60e51b815260206004820152601960248201527f7265766572742077726f6e67206665652073657474696e6773000000000000006044820152606401610490565b600791909155600855565b5f6105f76009600a611de5565b61060590633b9aca00611df3565b905090565b6001600160a01b0383165f9081526003602090815260408083203384529091528120548281101561068e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610490565b610699858585611072565b6106ad85336106a88685611e0a565b610f4f565b506001949350505050565b5f546001600160a01b031633146106e15760405162461bcd60e51b815260040161049090611cbc565b6001600160a01b0381165f9081526002602052604090205460ff16151560010361074d5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610490565b6001600160a01b0381165f81815260026020526040808220805460ff19166001179055517f3b27b77c12873f49f9de6c571431dd7c5b1e847f180217efc51f654b835407069190a250565b5f546001600160a01b031633146107c15760405162461bcd60e51b815260040161049090611cbc565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108325760405162461bcd60e51b815260040161049090611cbc565b600460078190556008556108486009600a611de5565b61085690633b9aca00611df3565b600d55565b5f546001600160a01b031633146108845760405162461bcd60e51b815260040161049090611cbc565b600554600160a81b900460ff16156108de5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610490565b6005805461ffff60a81b191661010160a81b1790556040517fd3c2fdcaf5cd26a75c5d60e014554eb53dc349069d8db1f275187743614b17b4905f90a1565b5f61054e338484611072565b5f546001600160a01b031633146109525760405162461bcd60e51b815260040161049090611cbc565b306001600160a01b038316036109c95760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610490565b5f81116109e85760405162461bcd60e51b815260040161049090611c7a565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610a2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4e9190611e1d565b811115610a935760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b6044820152606401610490565b6004805460405163a9059cbb60e01b81526001600160a01b03918216928101929092526024820183905283169063a9059cbb906044016020604051808303815f875af1158015610ae5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b099190611e34565b5060405181907fb27b69782743fafd4beb1c4e47d050e6a008a7e5e7c9b7330c78a65238498a90905f90a25050565b5f546001600160a01b03163314610b615760405162461bcd60e51b815260040161049090611cbc565b6001600160a01b0381165f9081526002602052604081205460ff1615159003610bcc5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610490565b6001600160a01b0381165f81815260026020526040808220805460ff19169055517f2787cd66e3c6209ac87ec0b3968ae31a8b953e70a037317f53c3e3e67b101e229190a250565b5f546001600160a01b03163314610c3d5760405162461bcd60e51b815260040161049090611cbc565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610c9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc39190611e53565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d22573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d469190611e53565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610d90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db49190611e53565b600980546001600160a01b0319166001600160a01b03928316179055600a54610de1913091165f19610f4f565b600a546001600160a01b031663f305d7193430610e12816001600160a01b03165f9081526001602052604090205490565b5f80610e255f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e8b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610eb09190611e6e565b505050565b5f546001600160a01b03163314610ede5760405162461bcd60e51b815260040161049090611cbc565b6001600160a01b038116610f435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610490565b610f4c8161184c565b50565b6001600160a01b038316610fb15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610490565b6001600160a01b0382166110125760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610490565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110d65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610490565b6001600160a01b0382166111385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610490565b5f81116111995760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610490565b6007546001600160a01b0384165f9081526002602052604090205460ff161580156111dc57506001600160a01b0383165f9081526002602052604090205460ff16155b1561123057600554600160a81b900460ff166112305760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610490565b600554600160a01b900460ff16806112525750600554600160b01b900460ff16155b156112f1576001600160a01b0384165f908152600160205260408120805484929061127e908490611e0a565b90915550506001600160a01b0383165f90815260016020526040812080548492906112aa908490611e99565b92505081905550826001600160a01b0316846001600160a01b03165f80516020611f67833981519152846040516112e391815260200190565b60405180910390a350505050565b6009546001600160a01b03858116911614801561131c5750600a546001600160a01b03848116911614155b801561134057506001600160a01b0383165f9081526002602052604090205460ff16155b1561142257600d548211156113935760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b6044820152606401610490565b600d54826113b5856001600160a01b03165f9081526001602052604090205490565b6113bf9190611e99565b111561140d5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610490565b60068054905f61141c83611eac565b91905055505b6009546001600160a01b0385811691161480159061145857506001600160a01b0384165f9081526002602052604090205460ff16155b801561147c57506001600160a01b0383165f9081526002602052604090205460ff16155b156114cf57600d548211156114cf5760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b6044820152606401610490565b6009546001600160a01b0384811691161480156114f557506001600160a01b0384163014155b801561151957506001600160a01b0384165f9081526002602052604090205460ff16155b801561153d57506001600160a01b0383165f9081526002602052604090205460ff16155b1561154757506008545b305f90815260016020526040902054600b54811080159061156a5750600b548310155b801561158357506009546001600160a01b038581169116145b801561159057505f600654115b80156115a55750600554600160b01b900460ff165b80156115bb5750600554600160a01b900460ff16155b80156115df57506001600160a01b0385165f9081526002602052604090205460ff16155b801561160357506001600160a01b0384165f9081526002602052604090205460ff16155b15611637576116256116208461161b84600c5461189b565b61189b565b6118b2565b4780156116355761163547611a6f565b505b81156117b0575f606461164a8486611df3565b6116549190611ec4565b90505f6116618286611e0a565b6001600160a01b0388165f908152600260205260408120549192509060ff1661168a573061168c565b875b6001600160a01b0389165f9081526002602052604090205490915060ff166116b457826116b6565b855b6001600160a01b0382165f908152600160205260408120805492955085929091906116e2908490611e99565b909155505060405183815230906001600160a01b038a16905f80516020611f678339815191529060200160405180910390a36001600160a01b0388165f908152600160205260408120805488929061173b908490611e0a565b90915550506001600160a01b0387165f9081526001602052604081208054849290611767908490611e99565b92505081905550866001600160a01b0316886001600160a01b03165f80516020611f67833981519152846040516117a091815260200190565b60405180910390a3505050611845565b6001600160a01b0385165f90815260016020526040812080548592906117d7908490611e0a565b90915550506001600160a01b0384165f9081526001602052604081208054859290611803908490611e99565b92505081905550836001600160a01b0316856001600160a01b03165f80516020611f678339815191528560405161183c91815260200190565b60405180910390a35b5050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8183116118a957826118ab565b815b9392505050565b6005805460ff60a01b1916600160a01b179055806119125760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e20300000006044820152606401610490565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061194557611945611ee3565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561199c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c09190611e53565b816001815181106119d3576119d3611ee3565b6001600160a01b039283166020918202929092010152600a546119f99130911684610f4f565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a319085905f90869030904290600401611ef7565b5f604051808303815f87803b158015611a48575f80fd5b505af1158015611a5a573d5f803e3d5ffd5b50506005805460ff60a01b1916905550505050565b5f8111611abe5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e20300000006044820152606401610490565b6005546001600160a01b03166108fc611ad8600284611ec4565b6040518115909202915f818181858888f19350505050158015611afd573d5f803e3d5ffd5b506004546001600160a01b03166108fc611b18600284611ec4565b6040518115909202915f818181858888f19350505050158015611b3d573d5f803e3d5ffd5b5050565b5f6020808352835180828501525f5b81811015611b6c57858101830151858201604001528201611b50565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f4c575f80fd5b5f8060408385031215611bb1575f80fd5b8235611bbc81611b8c565b946020939093013593505050565b5f8060408385031215611bdb575f80fd5b50508035926020909101359150565b5f805f60608486031215611bfc575f80fd5b8335611c0781611b8c565b92506020840135611c1781611b8c565b929592945050506040919091013590565b5f60208284031215611c38575f80fd5b81356118ab81611b8c565b5f8060408385031215611c54575f80fd5b8235611c5f81611b8c565b91506020830135611c6f81611b8c565b809150509250929050565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611d3f57815f1904821115611d2557611d25611cf1565b80851615611d3257918102915b93841c9390800290611d0a565b509250929050565b5f82611d5557506001610552565b81611d6157505f610552565b8160018114611d775760028114611d8157611d9d565b6001915050610552565b60ff841115611d9257611d92611cf1565b50506001821b610552565b5060208310610133831016604e8410600b8410161715611dc0575081810a610552565b611dca8383611d05565b805f1904821115611ddd57611ddd611cf1565b029392505050565b5f6118ab60ff841683611d47565b808202811582820484141761055257610552611cf1565b8181038181111561055257610552611cf1565b5f60208284031215611e2d575f80fd5b5051919050565b5f60208284031215611e44575f80fd5b815180151581146118ab575f80fd5b5f60208284031215611e63575f80fd5b81516118ab81611b8c565b5f805f60608486031215611e80575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561055257610552611cf1565b5f60018201611ebd57611ebd611cf1565b5060010190565b5f82611ede57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f455784516001600160a01b031683529383019391830191600101611f20565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122071788075554d1149523c4373630afe774de74eab999cf84911c9901f843abae964736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c8063715018a6116100b3578063b29a81401161006d578063b29a8140146103a9578063c1899962146103c8578063d621e813146103e7578063dd62ed3e14610407578063ed9953071461044b578063f2fde38b14610453575f80fd5b8063715018a614610308578063751039fc1461031c5780638a8c523c146103305780638da5cb5b1461034457806395d89b4114610360578063a9059cbb1461038a575f80fd5b806321feee5e1161010457806321feee5e1461025157806323b872dd1461026657806327c8f83514610285578063313ce5671461029a57806357a00f76146102b557806370a08231146102d4575f80fd5b80630614117a1461015557806306fdde031461016b578063095ea7b3146101aa5780630b78f9c0146101d95780631694505e146101f857806318160ddd1461022f575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b50610169610472565b005b348015610176575f80fd5b50604080518082019091526005815264583320414960d81b60208201525b6040516101a19190611b41565b60405180910390f35b3480156101b5575f80fd5b506101c96101c4366004611ba0565b610542565b60405190151581526020016101a1565b3480156101e4575f80fd5b506101696101f3366004611bca565b610558565b348015610203575f80fd5b50600a54610217906001600160a01b031681565b6040516001600160a01b0390911681526020016101a1565b34801561023a575f80fd5b506102436105ea565b6040519081526020016101a1565b34801561025c575f80fd5b50610243600d5481565b348015610271575f80fd5b506101c9610280366004611bea565b61060a565b348015610290575f80fd5b5061021761dead81565b3480156102a5575f80fd5b50604051600981526020016101a1565b3480156102c0575f80fd5b506101696102cf366004611c28565b6106b8565b3480156102df575f80fd5b506102436102ee366004611c28565b6001600160a01b03165f9081526001602052604090205490565b348015610313575f80fd5b50610169610798565b348015610327575f80fd5b50610169610809565b34801561033b575f80fd5b5061016961085b565b34801561034f575f80fd5b505f546001600160a01b0316610217565b34801561036b575f80fd5b50604080518082019091526002815261583360f01b6020820152610194565b348015610395575f80fd5b506101c96103a4366004611ba0565b61091d565b3480156103b4575f80fd5b506101696103c3366004611ba0565b610929565b3480156103d3575f80fd5b506101696103e2366004611c28565b610b38565b3480156103f2575f80fd5b506005546101c990600160a81b900460ff1681565b348015610412575f80fd5b50610243610421366004611c43565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b610169610c14565b34801561045e575f80fd5b5061016961046d366004611c28565b610eb5565b47806104995760405162461bcd60e51b815260040161049090611c7a565b60405180910390fd5b478111156104df5760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b6044820152606401610490565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610516573d5f803e3d5ffd5b506040517f3bb0684d6f9d76c7e55b7c296d6672f480511b6f9a014d1dd32b6288bd632d72905f90a150565b5f61054e338484610f4f565b5060015b92915050565b5f546001600160a01b031633146105815760405162461bcd60e51b815260040161049090611cbc565b60648211158015610593575060648111155b6105df5760405162461bcd60e51b815260206004820152601960248201527f7265766572742077726f6e67206665652073657474696e6773000000000000006044820152606401610490565b600791909155600855565b5f6105f76009600a611de5565b61060590633b9aca00611df3565b905090565b6001600160a01b0383165f9081526003602090815260408083203384529091528120548281101561068e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610490565b610699858585611072565b6106ad85336106a88685611e0a565b610f4f565b506001949350505050565b5f546001600160a01b031633146106e15760405162461bcd60e51b815260040161049090611cbc565b6001600160a01b0381165f9081526002602052604090205460ff16151560010361074d5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610490565b6001600160a01b0381165f81815260026020526040808220805460ff19166001179055517f3b27b77c12873f49f9de6c571431dd7c5b1e847f180217efc51f654b835407069190a250565b5f546001600160a01b031633146107c15760405162461bcd60e51b815260040161049090611cbc565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108325760405162461bcd60e51b815260040161049090611cbc565b600460078190556008556108486009600a611de5565b61085690633b9aca00611df3565b600d55565b5f546001600160a01b031633146108845760405162461bcd60e51b815260040161049090611cbc565b600554600160a81b900460ff16156108de5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610490565b6005805461ffff60a81b191661010160a81b1790556040517fd3c2fdcaf5cd26a75c5d60e014554eb53dc349069d8db1f275187743614b17b4905f90a1565b5f61054e338484611072565b5f546001600160a01b031633146109525760405162461bcd60e51b815260040161049090611cbc565b306001600160a01b038316036109c95760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610490565b5f81116109e85760405162461bcd60e51b815260040161049090611c7a565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610a2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4e9190611e1d565b811115610a935760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b6044820152606401610490565b6004805460405163a9059cbb60e01b81526001600160a01b03918216928101929092526024820183905283169063a9059cbb906044016020604051808303815f875af1158015610ae5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b099190611e34565b5060405181907fb27b69782743fafd4beb1c4e47d050e6a008a7e5e7c9b7330c78a65238498a90905f90a25050565b5f546001600160a01b03163314610b615760405162461bcd60e51b815260040161049090611cbc565b6001600160a01b0381165f9081526002602052604081205460ff1615159003610bcc5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610490565b6001600160a01b0381165f81815260026020526040808220805460ff19169055517f2787cd66e3c6209ac87ec0b3968ae31a8b953e70a037317f53c3e3e67b101e229190a250565b5f546001600160a01b03163314610c3d5760405162461bcd60e51b815260040161049090611cbc565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610c9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc39190611e53565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d22573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d469190611e53565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610d90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db49190611e53565b600980546001600160a01b0319166001600160a01b03928316179055600a54610de1913091165f19610f4f565b600a546001600160a01b031663f305d7193430610e12816001600160a01b03165f9081526001602052604090205490565b5f80610e255f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e8b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610eb09190611e6e565b505050565b5f546001600160a01b03163314610ede5760405162461bcd60e51b815260040161049090611cbc565b6001600160a01b038116610f435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610490565b610f4c8161184c565b50565b6001600160a01b038316610fb15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610490565b6001600160a01b0382166110125760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610490565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110d65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610490565b6001600160a01b0382166111385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610490565b5f81116111995760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610490565b6007546001600160a01b0384165f9081526002602052604090205460ff161580156111dc57506001600160a01b0383165f9081526002602052604090205460ff16155b1561123057600554600160a81b900460ff166112305760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610490565b600554600160a01b900460ff16806112525750600554600160b01b900460ff16155b156112f1576001600160a01b0384165f908152600160205260408120805484929061127e908490611e0a565b90915550506001600160a01b0383165f90815260016020526040812080548492906112aa908490611e99565b92505081905550826001600160a01b0316846001600160a01b03165f80516020611f67833981519152846040516112e391815260200190565b60405180910390a350505050565b6009546001600160a01b03858116911614801561131c5750600a546001600160a01b03848116911614155b801561134057506001600160a01b0383165f9081526002602052604090205460ff16155b1561142257600d548211156113935760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b6044820152606401610490565b600d54826113b5856001600160a01b03165f9081526001602052604090205490565b6113bf9190611e99565b111561140d5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610490565b60068054905f61141c83611eac565b91905055505b6009546001600160a01b0385811691161480159061145857506001600160a01b0384165f9081526002602052604090205460ff16155b801561147c57506001600160a01b0383165f9081526002602052604090205460ff16155b156114cf57600d548211156114cf5760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b6044820152606401610490565b6009546001600160a01b0384811691161480156114f557506001600160a01b0384163014155b801561151957506001600160a01b0384165f9081526002602052604090205460ff16155b801561153d57506001600160a01b0383165f9081526002602052604090205460ff16155b1561154757506008545b305f90815260016020526040902054600b54811080159061156a5750600b548310155b801561158357506009546001600160a01b038581169116145b801561159057505f600654115b80156115a55750600554600160b01b900460ff165b80156115bb5750600554600160a01b900460ff16155b80156115df57506001600160a01b0385165f9081526002602052604090205460ff16155b801561160357506001600160a01b0384165f9081526002602052604090205460ff16155b15611637576116256116208461161b84600c5461189b565b61189b565b6118b2565b4780156116355761163547611a6f565b505b81156117b0575f606461164a8486611df3565b6116549190611ec4565b90505f6116618286611e0a565b6001600160a01b0388165f908152600260205260408120549192509060ff1661168a573061168c565b875b6001600160a01b0389165f9081526002602052604090205490915060ff166116b457826116b6565b855b6001600160a01b0382165f908152600160205260408120805492955085929091906116e2908490611e99565b909155505060405183815230906001600160a01b038a16905f80516020611f678339815191529060200160405180910390a36001600160a01b0388165f908152600160205260408120805488929061173b908490611e0a565b90915550506001600160a01b0387165f9081526001602052604081208054849290611767908490611e99565b92505081905550866001600160a01b0316886001600160a01b03165f80516020611f67833981519152846040516117a091815260200190565b60405180910390a3505050611845565b6001600160a01b0385165f90815260016020526040812080548592906117d7908490611e0a565b90915550506001600160a01b0384165f9081526001602052604081208054859290611803908490611e99565b92505081905550836001600160a01b0316856001600160a01b03165f80516020611f678339815191528560405161183c91815260200190565b60405180910390a35b5050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8183116118a957826118ab565b815b9392505050565b6005805460ff60a01b1916600160a01b179055806119125760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e20300000006044820152606401610490565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061194557611945611ee3565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561199c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c09190611e53565b816001815181106119d3576119d3611ee3565b6001600160a01b039283166020918202929092010152600a546119f99130911684610f4f565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a319085905f90869030904290600401611ef7565b5f604051808303815f87803b158015611a48575f80fd5b505af1158015611a5a573d5f803e3d5ffd5b50506005805460ff60a01b1916905550505050565b5f8111611abe5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e20300000006044820152606401610490565b6005546001600160a01b03166108fc611ad8600284611ec4565b6040518115909202915f818181858888f19350505050158015611afd573d5f803e3d5ffd5b506004546001600160a01b03166108fc611b18600284611ec4565b6040518115909202915f818181858888f19350505050158015611b3d573d5f803e3d5ffd5b5050565b5f6020808352835180828501525f5b81811015611b6c57858101830151858201604001528201611b50565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f4c575f80fd5b5f8060408385031215611bb1575f80fd5b8235611bbc81611b8c565b946020939093013593505050565b5f8060408385031215611bdb575f80fd5b50508035926020909101359150565b5f805f60608486031215611bfc575f80fd5b8335611c0781611b8c565b92506020840135611c1781611b8c565b929592945050506040919091013590565b5f60208284031215611c38575f80fd5b81356118ab81611b8c565b5f8060408385031215611c54575f80fd5b8235611c5f81611b8c565b91506020830135611c6f81611b8c565b809150509250929050565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611d3f57815f1904821115611d2557611d25611cf1565b80851615611d3257918102915b93841c9390800290611d0a565b509250929050565b5f82611d5557506001610552565b81611d6157505f610552565b8160018114611d775760028114611d8157611d9d565b6001915050610552565b60ff841115611d9257611d92611cf1565b50506001821b610552565b5060208310610133831016604e8410600b8410161715611dc0575081810a610552565b611dca8383611d05565b805f1904821115611ddd57611ddd611cf1565b029392505050565b5f6118ab60ff841683611d47565b808202811582820484141761055257610552611cf1565b8181038181111561055257610552611cf1565b5f60208284031215611e2d575f80fd5b5051919050565b5f60208284031215611e44575f80fd5b815180151581146118ab575f80fd5b5f60208284031215611e63575f80fd5b81516118ab81611b8c565b5f805f60608486031215611e80575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561055257610552611cf1565b5f60018201611ebd57611ebd611cf1565b5060010190565b5f82611ede57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f455784516001600160a01b031683529383019391830191600101611f20565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122071788075554d1149523c4373630afe774de74eab999cf84911c9901f843abae964736f6c63430008140033

Deployed Bytecode Sourcemap

3710:10366:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10852:372;;;;;;;;;;;;;:::i;:::-;;7129:83;;;;;;;;;;-1:-1:-1;7199:5:0;;;;;;;;;;;;-1:-1:-1;;;7199:5:0;;;;7129:83;;;;;;;:::i;:::-;;;;;;;;6446:186;;;;;;;;;;-1:-1:-1;6446:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6446:186:0;1023:187:1;7630:219:0;;;;;;;;;;-1:-1:-1;7630:219:0;;;;;:::i;:::-;;:::i;4972:32::-;;;;;;;;;;-1:-1:-1;4972:32:0;;;;-1:-1:-1;;;;;4972:32:0;;;;;;-1:-1:-1;;;;;1649:32:1;;;1631:51;;1619:2;1604:18;4972:32:0;1468:220:1;7400:96:0;;;;;;;;;;;;;:::i;:::-;;;1839:25:1;;;1827:2;1812:18;7400:96:0;1693:177:1;5147:57:0;;;;;;;;;;;;;;;;6640:481;;;;;;;;;;-1:-1:-1;6640:481:0;;;;;:::i;:::-;;:::i;4499:94::-;;;;;;;;;;;;4551:42;4499:94;;7311:83;;;;;;;;;;-1:-1:-1;7311:83:0;;3794:1;2686:36:1;;2674:2;2659:18;7311:83:0;2544:184:1;7857:276:0;;;;;;;;;;-1:-1:-1;7857:276:0;;;;;:::i;:::-;;:::i;7502:120::-;;;;;;;;;;-1:-1:-1;7502:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;7595:19:0;7568:7;7595:19;;;:10;:19;;;;;;;7502:120;3555:148;;;;;;;;;;;;;:::i;9480:131::-;;;;;;;;;;;;;:::i;8636:210::-;;;;;;;;;;;;;:::i;2904:79::-;;;;;;;;;;-1:-1:-1;2942:7:0;2969:6;-1:-1:-1;;;;;2969:6:0;2904:79;;7218:87;;;;;;;;;;-1:-1:-1;7290:7:0;;;;;;;;;;;;-1:-1:-1;;;7290:7:0;;;;7218:87;;6074:192;;;;;;;;;;-1:-1:-1;6074:192:0;;;;;:::i;:::-;;:::i;10286:558::-;;;;;;;;;;-1:-1:-1;10286:558:0;;;;;:::i;:::-;;:::i;8141:278::-;;;;;;;;;;-1:-1:-1;8141:278:0;;;;;:::i;:::-;;:::i;4638:32::-;;;;;;;;;;-1:-1:-1;4638:32:0;;;;-1:-1:-1;;;4638:32:0;;;;;;6272:168;;;;;;;;;;-1:-1:-1;6272:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;6405:18:0;;;6378:7;6405:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6272:168;8854:618;;;:::i;3114:238::-;;;;;;;;;;-1:-1:-1;3114:238:0;;;;;:::i;:::-;;:::i;10852:372::-;10914:21;10954:13;10946:60;;;;-1:-1:-1;;;10946:60:0;;;;;;;:::i;:::-;;;;;;;;;11052:21;11039:9;:34;;11017:103;;;;-1:-1:-1;;;11017:103:0;;3983:2:1;11017:103:0;;;3965:21:1;4022:2;4002:18;;;3995:30;-1:-1:-1;;;4041:18:1;;;4034:49;4100:18;;11017:103:0;3781:343:1;11017:103:0;11147:9;;11131:47;;-1:-1:-1;;;;;11147:9:0;;;;11131:47;;;;;11168:9;;11147;11131:47;11147:9;11131:47;11168:9;11147;11131:47;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11194:22:0;;;;;;;10883:341;10852:372::o;6446:186::-;6546:4;6563:39;1378:10;6586:7;6595:6;6563:8;:39::i;:::-;-1:-1:-1;6620:4:0;6446:186;;;;;:::o;7630:219::-;3029:6;;-1:-1:-1;;;;;3029:6:0;1378:10;3029:22;3021:67;;;;-1:-1:-1;;;3021:67:0;;;;;;;:::i;:::-;7731:3:::1;7720:7;:14;;:33;;;;;7750:3;7738:8;:15;;7720:33;7712:71;;;::::0;-1:-1:-1;;;7712:71:0;;4692:2:1;7712:71:0::1;::::0;::::1;4674:21:1::0;4731:2;4711:18;;;4704:30;4770:27;4750:18;;;4743:55;4815:18;;7712:71:0::1;4490:349:1::0;7712:71:0::1;7794:7;:17:::0;;;;7822:8:::1;:19:::0;7630:219::o;7400:96::-;7453:7;3851:15;3794:1;3851:2;:15;:::i;:::-;3838:28;;:10;:28;:::i;:::-;7473:15;;7400:96;:::o;6640:481::-;-1:-1:-1;;;;;6816:19:0;;6772:4;6816:19;;;:11;:19;;;;;;;;1378:10;6816:33;;;;;;;;6882:26;;;;6860:116;;;;-1:-1:-1;;;6860:116:0;;6734:2:1;6860:116:0;;;6716:21:1;6773:2;6753:18;;;6746:30;6812:34;6792:18;;;6785:62;-1:-1:-1;;;6863:18:1;;;6856:38;6911:19;;6860:116:0;6532:404:1;6860:116:0;6987:36;6997:6;7005:9;7016:6;6987:9;:36::i;:::-;7034:57;7043:6;1378:10;7065:25;7084:6;7065:16;:25;:::i;:::-;7034:8;:57::i;:::-;-1:-1:-1;7109:4:0;;6640:481;-1:-1:-1;;;;6640:481:0:o;7857:276::-;3029:6;;-1:-1:-1;;;;;3029:6:0;1378:10;3029:22;3021:67;;;;-1:-1:-1;;;3021:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7951:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;;::::1;;:31;;:23:::0;:31;7929:108:::1;;;::::0;-1:-1:-1;;;7929:108:0;;7276:2:1;7929:108:0::1;::::0;::::1;7258:21:1::0;7315:2;7295:18;;;7288:30;7354:29;7334:18;;;7327:57;7401:18;;7929:108:0::1;7074:351:1::0;7929:108:0::1;-1:-1:-1::0;;;;;8048:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;;:30;;-1:-1:-1;;8048:30:0::1;8074:4;8048:30;::::0;;8094:31;::::1;::::0;8048:23;8094:31:::1;7857:276:::0;:::o;3555:148::-;3029:6;;-1:-1:-1;;;;;3029:6:0;1378:10;3029:22;3021:67;;;;-1:-1:-1;;;3021:67:0;;;;;;;:::i;:::-;3662:1:::1;3646:6:::0;;3625:40:::1;::::0;-1:-1:-1;;;;;3646:6:0;;::::1;::::0;3625:40:::1;::::0;3662:1;;3625:40:::1;3693:1;3676:19:::0;;-1:-1:-1;;;;;;3676:19:0::1;::::0;;3555:148::o;9480:131::-;3029:6;;-1:-1:-1;;;;;3029:6:0;1378:10;3029:22;3021:67;;;;-1:-1:-1;;;3021:67:0;;;;;;;:::i;:::-;9544:1:::1;9534:7;:11:::0;;;9556:8:::1;:12:::0;3851:15:::1;3794:1;3851:2;:15;:::i;:::-;3838:28;::::0;:10:::1;:28;:::i;:::-;9579:13;:24:::0;9480:131::o;8636:210::-;3029:6;;-1:-1:-1;;;;;3029:6:0;1378:10;3029:22;3021:67;;;;-1:-1:-1;;;3021:67:0;;;;;;;:::i;:::-;8700:12:::1;::::0;-1:-1:-1;;;8700:12:0;::::1;;;8699:13;8691:49;;;::::0;-1:-1:-1;;;8691:49:0;;7632:2:1;8691:49:0::1;::::0;::::1;7614:21:1::0;7671:2;7651:18;;;7644:30;7710:25;7690:18;;;7683:53;7753:18;;8691:49:0::1;7430:347:1::0;8691:49:0::1;8751:12;:19:::0;;-1:-1:-1;;;;8781:18:0;-1:-1:-1;;;8781:18:0;;;8815:23:::1;::::0;::::1;::::0;-1:-1:-1;;8815:23:0::1;8636:210::o:0;6074:192::-;6177:4;6194:42;1378:10;6218:9;6229:6;6194:9;:42::i;10286:558::-;3029:6;;-1:-1:-1;;;;;3029:6:0;1378:10;3029:22;3021:67;;;;-1:-1:-1;;;3021:67:0;;;;;;;:::i;:::-;10444:4:::1;-1:-1:-1::0;;;;;10422:27:0;::::1;::::0;10400:131:::1;;;::::0;-1:-1:-1;;;10400:131:0;;7984:2:1;10400:131:0::1;::::0;::::1;7966:21:1::0;8023:2;8003:18;;;7996:30;8062:34;8042:18;;;8035:62;-1:-1:-1;;;8113:18:1;;;8106:52;8175:19;;10400:131:0::1;7782:418:1::0;10400:131:0::1;10560:1;10550:7;:11;10542:58;;;;-1:-1:-1::0;;;10542:58:0::1;;;;;;;:::i;:::-;10644:43;::::0;-1:-1:-1;;;10644:43:0;;10681:4:::1;10644:43;::::0;::::1;1631:51:1::0;-1:-1:-1;;;;;10644:28:0;::::1;::::0;::::1;::::0;1604:18:1;;10644:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10633:7;:54;;10611:123;;;::::0;-1:-1:-1;;;10611:123:0;;3983:2:1;10611:123:0::1;::::0;::::1;3965:21:1::0;4022:2;4002:18;;;3995:30;-1:-1:-1;;;4041:18:1;;;4034:49;4100:18;;10611:123:0::1;3781:343:1::0;10611:123:0::1;10773:9;::::0;;10745:47:::1;::::0;-1:-1:-1;;;10745:47:0;;-1:-1:-1;;;;;10773:9:0;;::::1;10745:47:::0;;::::1;8576:51:1::0;;;;8643:18;;;8636:34;;;10745:27:0;::::1;::::0;::::1;::::0;8549:18:1;;10745:47:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;10808:28:0::1;::::0;10828:7;;10808:28:::1;::::0;;;::::1;10286:558:::0;;:::o;8141:278::-;3029:6;;-1:-1:-1;;;;;3029:6:0;1378:10;3029:22;3021:67;;;;-1:-1:-1;;;3021:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8235:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;;::::1;;:32;;::::0;;8213:109:::1;;;::::0;-1:-1:-1;;;8213:109:0;;9165:2:1;8213:109:0::1;::::0;::::1;9147:21:1::0;9204:2;9184:18;;;9177:30;9243:29;9223:18;;;9216:57;9290:18;;8213:109:0::1;8963:351:1::0;8213:109:0::1;-1:-1:-1::0;;;;;8333:23:0;::::1;8359:5;8333:23:::0;;;:14:::1;:23;::::0;;;;;:31;;-1:-1:-1;;8333:31:0::1;::::0;;8380;::::1;::::0;8359:5;8380:31:::1;8141:278:::0;:::o;8854:618::-;3029:6;;-1:-1:-1;;;;;3029:6:0;1378:10;3029:22;3021:67;;;;-1:-1:-1;;;3021:67:0;;;;;;;:::i;:::-;8919:15:::1;:95:::0;;-1:-1:-1;;;;;;8919:95:0::1;8961:42;8919:95:::0;;::::1;::::0;;;9052:25:::1;::::0;;-1:-1:-1;;;9052:25:0;;;;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;8961:42;9052:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9041:48:0::1;;9112:4;9132:15;;;;;;;;;-1:-1:-1::0;;;;;9132:15:0::1;-1:-1:-1::0;;;;;9132:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9041:124;::::0;-1:-1:-1;;;;;;9041:124:0::1;::::0;;;;;;-1:-1:-1;;;;;9805:15:1;;;9041:124:0::1;::::0;::::1;9787:34:1::0;9857:15;;9837:18;;;9830:43;9722:18;;9041:124:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9025:13;:140:::0;;-1:-1:-1;;;;;;9025:140:0::1;-1:-1:-1::0;;;;;9025:140:0;;::::1;;::::0;;9210:15:::1;::::0;9178:62:::1;::::0;9195:4:::1;::::0;9210:15:::1;-1:-1:-1::0;;9178:8:0::1;:62::i;:::-;9253:15;::::0;-1:-1:-1;;;;;9253:15:0::1;:31;9292:9;9325:4;9345:24;9325:4:::0;-1:-1:-1;;;;;7595:19:0;7568:7;7595:19;;;:10;:19;;;;;;;7502:120;9345:24:::1;9384:1;9400::::0;9416:7:::1;2942::::0;2969:6;-1:-1:-1;;;;;2969:6:0;;2904:79;9416:7:::1;9253:211;::::0;::::1;::::0;;;-1:-1:-1;;;;;;9253:211:0;;;-1:-1:-1;;;;;10243:15:1;;;9253:211:0::1;::::0;::::1;10225:34:1::0;10275:18;;;10268:34;;;;10318:18;;;10311:34;;;;10361:18;;;10354:34;10425:15;;;10404:19;;;10397:44;9438:15:0::1;10457:19:1::0;;;10450:35;10159:19;;9253:211:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8854:618::o:0;3114:238::-;3029:6;;-1:-1:-1;;;;;3029:6:0;1378:10;3029:22;3021:67;;;;-1:-1:-1;;;3021:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3217:22:0;::::1;3195:110;;;::::0;-1:-1:-1;;;3195:110:0;;11009:2:1;3195:110:0::1;::::0;::::1;10991:21:1::0;11048:2;11028:18;;;11021:30;11087:34;11067:18;;;11060:62;-1:-1:-1;;;11138:18:1;;;11131:36;11184:19;;3195:110:0::1;10807:402:1::0;3195:110:0::1;3316:28;3335:8;3316:18;:28::i;:::-;3114:238:::0;:::o;5733:335::-;-1:-1:-1;;;;;5826:19:0;;5818:68;;;;-1:-1:-1;;;5818:68:0;;11416:2:1;5818:68:0;;;11398:21:1;11455:2;11435:18;;;11428:30;11494:34;11474:18;;;11467:62;-1:-1:-1;;;11545:18:1;;;11538:34;11589:19;;5818:68:0;11214:400:1;5818:68:0;-1:-1:-1;;;;;5905:21:0;;5897:68;;;;-1:-1:-1;;;5897:68:0;;11821:2:1;5897:68:0;;;11803:21:1;11860:2;11840:18;;;11833:30;11899:34;11879:18;;;11872:62;-1:-1:-1;;;11950:18:1;;;11943:32;11992:19;;5897:68:0;11619:398:1;5897:68:0;-1:-1:-1;;;;;5976:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6028:32;;1839:25:1;;;6028:32:0;;1812:18:1;6028:32:0;;;;;;;5733:335;;;:::o;11232:2804::-;-1:-1:-1;;;;;11320:18:0;;11312:68;;;;-1:-1:-1;;;11312:68:0;;12224:2:1;11312:68:0;;;12206:21:1;12263:2;12243:18;;;12236:30;12302:34;12282:18;;;12275:62;-1:-1:-1;;;12353:18:1;;;12346:35;12398:19;;11312:68:0;12022:401:1;11312:68:0;-1:-1:-1;;;;;11399:16:0;;11391:64;;;;-1:-1:-1;;;11391:64:0;;12630:2:1;11391:64:0;;;12612:21:1;12669:2;12649:18;;;12642:30;12708:34;12688:18;;;12681:62;-1:-1:-1;;;12759:18:1;;;12752:33;12802:19;;11391:64:0;12428:399:1;11391:64:0;11483:1;11474:6;:10;11466:64;;;;-1:-1:-1;;;11466:64:0;;13034:2:1;11466:64:0;;;13016:21:1;13073:2;13053:18;;;13046:30;13112:34;13092:18;;;13085:62;-1:-1:-1;;;13163:18:1;;;13156:39;13212:19;;11466:64:0;12832:405:1;11466:64:0;11585:7;;-1:-1:-1;;;;;11608:20:0;;11541:17;11608:20;;;:14;:20;;;;;;;;11607:21;:44;;;;-1:-1:-1;;;;;;11633:18:0;;;;;;:14;:18;;;;;;;;11632:19;11607:44;11603:121;;;11676:12;;-1:-1:-1;;;11676:12:0;;;;11668:44;;;;-1:-1:-1;;;11668:44:0;;13444:2:1;11668:44:0;;;13426:21:1;13483:2;13463:18;;;13456:30;-1:-1:-1;;;13502:18:1;;;13495:49;13561:18;;11668:44:0;13242:343:1;11668:44:0;11738:8;;-1:-1:-1;;;11738:8:0;;;;;:24;;-1:-1:-1;11751:11:0;;-1:-1:-1;;;11751:11:0;;;;11750:12;11738:24;11734:189;;;-1:-1:-1;;;;;11779:16:0;;;;;;:10;:16;;;;;:26;;11799:6;;11779:16;:26;;11799:6;;11779:26;:::i;:::-;;;;-1:-1:-1;;;;;;;11820:14:0;;;;;;:10;:14;;;;;:24;;11838:6;;11820:14;:24;;11838:6;;11820:24;:::i;:::-;;;;;;;;11879:2;-1:-1:-1;;;;;11864:26:0;11873:4;-1:-1:-1;;;;;11864:26:0;-1:-1:-1;;;;;;;;;;;11883:6:0;11864:26;;;;1839:25:1;;1827:2;1812:18;;1693:177;11864:26:0;;;;;;;;11905:7;11232:2804;;;:::o;11734:189::-;11959:13;;-1:-1:-1;;;;;11951:21:0;;;11959:13;;11951:21;:68;;;;-1:-1:-1;12003:15:0;;-1:-1:-1;;;;;11989:30:0;;;12003:15;;11989:30;;11951:68;:104;;;;-1:-1:-1;;;;;;12037:18:0;;;;;;:14;:18;;;;;;;;12036:19;11951:104;11933:390;;;12100:13;;12090:6;:23;;12082:61;;;;-1:-1:-1;;;12082:61:0;;13922:2:1;12082:61:0;;;13904:21:1;13961:2;13941:18;;;13934:30;-1:-1:-1;;;13980:18:1;;;13973:55;14045:18;;12082:61:0;13720:349:1;12082:61:0;12210:13;;12200:6;12184:13;12194:2;-1:-1:-1;;;;;7595:19:0;7568:7;7595:19;;;:10;:19;;;;;;;7502:120;12184:13;:22;;;;:::i;:::-;:39;;12158:127;;;;-1:-1:-1;;;12158:127:0;;14276:2:1;12158:127:0;;;14258:21:1;14315:2;14295:18;;;14288:30;14354:28;14334:18;;;14327:56;14400:18;;12158:127:0;14074:350:1;12158:127:0;12300:9;:11;;;:9;:11;;;:::i;:::-;;;;;;11933:390;12359:13;;-1:-1:-1;;;;;12351:21:0;;;12359:13;;12351:21;;;;:59;;-1:-1:-1;;;;;;12390:20:0;;;;;;:14;:20;;;;;;;;12389:21;12351:59;:95;;;;-1:-1:-1;;;;;;12428:18:0;;;;;;:14;:18;;;;;;;;12427:19;12351:95;12333:213;;;12491:13;;12481:6;:23;;12473:61;;;;-1:-1:-1;;;12473:61:0;;13922:2:1;12473:61:0;;;13904:21:1;13961:2;13941:18;;;13934:30;-1:-1:-1;;;13980:18:1;;;13973:55;14045:18;;12473:61:0;13720:349:1;12473:61:0;12580:13;;-1:-1:-1;;;;;12574:19:0;;;12580:13;;12574:19;:57;;;;-1:-1:-1;;;;;;12610:21:0;;12626:4;12610:21;;12574:57;:95;;;;-1:-1:-1;;;;;;12649:20:0;;;;;;:14;:20;;;;;;;;12648:21;12574:95;:131;;;;-1:-1:-1;;;;;;12687:18:0;;;;;;:14;:18;;;;;;;;12686:19;12574:131;12556:208;;;-1:-1:-1;12744:8:0;;12556:208;12814:4;12774:19;7595;;;:10;:19;;;;;;12864:15;;12849:30;;;;;:72;;;12906:15;;12896:6;:25;;12849:72;:108;;;;-1:-1:-1;12944:13:0;;-1:-1:-1;;;;;12938:19:0;;;12944:13;;12938:19;12849:108;:138;;;;;12986:1;12974:9;;:13;12849:138;:166;;;;-1:-1:-1;13004:11:0;;-1:-1:-1;;;13004:11:0;;;;12849:166;:192;;;;-1:-1:-1;13033:8:0;;-1:-1:-1;;;13033:8:0;;;;13032:9;12849:192;:230;;;;-1:-1:-1;;;;;;13059:20:0;;;;;;:14;:20;;;;;;;;13058:21;12849:230;:266;;;;-1:-1:-1;;;;;;13097:18:0;;;;;;:14;:18;;;;;;;;13096:19;12849:266;12831:534;;;13142:56;13151:46;13155:6;13163:33;13167:11;13180:15;;13163:3;:33::i;:::-;13151:3;:46::i;:::-;13142:8;:56::i;:::-;13233:21;13273:13;;13269:85;;13307:31;13316:21;13307:8;:31::i;:::-;13127:238;12831:534;13379:14;;13375:654;;13410:14;13450:3;13428:18;13437:9;13428:6;:18;:::i;:::-;13427:26;;;;:::i;:::-;13410:43;-1:-1:-1;13468:16:0;13487:15;13410:43;13487:6;:15;:::i;:::-;-1:-1:-1;;;;;13536:20:0;;13517:16;13536:20;;;:14;:20;;;;;;13468:34;;-1:-1:-1;13517:16:0;13536:20;;:43;;13574:4;13536:43;;;13559:4;13536:43;-1:-1:-1;;;;;13603:20:0;;;;;;:14;:20;;;;;;13517:62;;-1:-1:-1;13603:20:0;;:38;;13635:6;13603:38;;;13626:6;13603:38;-1:-1:-1;;;;;13656:20:0;;;;;;:10;:20;;;;;:30;;13594:47;;-1:-1:-1;13594:47:0;;13656:20;;;:30;;13594:47;;13656:30;:::i;:::-;;;;-1:-1:-1;;13706:37:0;;1839:25:1;;;13729:4:0;;-1:-1:-1;;;;;13706:37:0;;;-1:-1:-1;;;;;;;;;;;13706:37:0;1827:2:1;1812:18;13706:37:0;;;;;;;-1:-1:-1;;;;;13758:16:0;;;;;;:10;:16;;;;;:26;;13778:6;;13758:16;:26;;13778:6;;13758:26;:::i;:::-;;;;-1:-1:-1;;;;;;;13799:14:0;;;;;;:10;:14;;;;;:26;;13817:8;;13799:14;:26;;13817:8;;13799:26;:::i;:::-;;;;;;;;13860:2;-1:-1:-1;;;;;13845:28:0;13854:4;-1:-1:-1;;;;;13845:28:0;-1:-1:-1;;;;;;;;;;;13864:8:0;13845:28;;;;1839:25:1;;1827:2;1812:18;;1693:177;13845:28:0;;;;;;;;13395:490;;;13375:654;;;-1:-1:-1;;;;;13906:16:0;;;;;;:10;:16;;;;;:26;;13926:6;;13906:16;:26;;13926:6;;13906:26;:::i;:::-;;;;-1:-1:-1;;;;;;;13947:14:0;;;;;;:10;:14;;;;;:24;;13965:6;;13947:14;:24;;13965:6;;13947:24;:::i;:::-;;;;;;;;14006:2;-1:-1:-1;;;;;13991:26:0;14000:4;-1:-1:-1;;;;;13991:26:0;-1:-1:-1;;;;;;;;;;;14010:6:0;13991:26;;;;1839:25:1;;1827:2;1812:18;;1693:177;13991:26:0;;;;;;;;13375:654;11301:2735;;11232:2804;;;:::o;3358:191::-;3432:16;3451:6;;-1:-1:-1;;;;;3468:17:0;;;-1:-1:-1;;;;;;3468:17:0;;;;;;3501:40;;3451:6;;;;;;;3501:40;;3432:16;3501:40;3421:128;3358:191;:::o;10171:107::-;10228:7;10260:1;10256;:5;10255:15;;10269:1;10255:15;;;10265:1;10255:15;10248:22;10171:107;-1:-1:-1;;;10171:107:0:o;9619:544::-;4753:8;:15;;-1:-1:-1;;;;4753:15:0;-1:-1:-1;;;4753:15:0;;;9698;9690:57:::1;;;::::0;-1:-1:-1;;;9690:57:0;;14993:2:1;9690:57:0::1;::::0;::::1;14975:21:1::0;15032:2;15012:18;;;15005:30;15071:31;15051:18;;;15044:59;15120:18;;9690:57:0::1;14791:353:1::0;9690:57:0::1;9782:16;::::0;;9796:1:::1;9782:16:::0;;;;;::::1;::::0;;9758:21:::1;::::0;9782:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9782:16:0::1;9758:40;;9827:4;9809;9814:1;9809:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9809:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;9853:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;9853:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;9809:7;;9853:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9843:4;9848:1;9843:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9843:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;9918:15:::1;::::0;9886:62:::1;::::0;9903:4:::1;::::0;9918:15:::1;9936:11:::0;9886:8:::1;:62::i;:::-;9959:15;::::0;:196:::1;::::0;-1:-1:-1;;;9959:196:0;;-1:-1:-1;;;;;9959:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10040:11;;9959:15:::1;::::0;10082:4;;10109::::1;::::0;10129:15:::1;::::0;9959:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4791:8:0;:16;;-1:-1:-1;;;;4791:16:0;;;-1:-1:-1;;;;9619:544:0:o;8427:201::-;8497:1;8488:6;:10;8480:52;;;;-1:-1:-1;;;8480:52:0;;14993:2:1;8480:52:0;;;14975:21:1;15032:2;15012:18;;;15005:30;15071:31;15051:18;;;15044:59;15120:18;;8480:52:0;14791:353:1;8480:52:0;8543:15;;-1:-1:-1;;;;;8543:15:0;:36;8568:10;8577:1;8568:6;:10;:::i;:::-;8543:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8590:9:0;;-1:-1:-1;;;;;8590:9:0;:30;8609:10;8618:1;8609:6;:10;:::i;:::-;8590:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8427:201;:::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;1215:248::-;1283:6;1291;1344:2;1332:9;1323:7;1319:23;1315:32;1312:52;;;1360:1;1357;1350:12;1312:52;-1:-1:-1;;1383:23:1;;;1453:2;1438:18;;;1425:32;;-1:-1:-1;1215:248:1:o;1875:456::-;1952:6;1960;1968;2021:2;2009:9;2000:7;1996:23;1992:32;1989:52;;;2037:1;2034;2027:12;1989:52;2076:9;2063:23;2095:31;2120:5;2095:31;:::i;:::-;2145:5;-1:-1:-1;2202:2:1;2187:18;;2174:32;2215:33;2174:32;2215:33;:::i;:::-;1875:456;;2267:7;;-1:-1:-1;;;2321:2:1;2306:18;;;;2293:32;;1875:456::o;2733:247::-;2792:6;2845:2;2833:9;2824:7;2820:23;2816:32;2813:52;;;2861:1;2858;2851:12;2813:52;2900:9;2887:23;2919:31;2944:5;2919:31;:::i;2985:388::-;3053:6;3061;3114:2;3102:9;3093:7;3089:23;3085:32;3082:52;;;3130:1;3127;3120:12;3082:52;3169:9;3156:23;3188:31;3213:5;3188:31;:::i;:::-;3238:5;-1:-1:-1;3295:2:1;3280:18;;3267:32;3308:33;3267:32;3308:33;:::i;:::-;3360:7;3350:17;;;2985:388;;;;;:::o;3378:398::-;3580:2;3562:21;;;3619:2;3599:18;;;3592:30;3658:34;3653:2;3638:18;;3631:62;-1:-1:-1;;;3724:2:1;3709:18;;3702:32;3766:3;3751:19;;3378:398::o;4129:356::-;4331:2;4313:21;;;4350:18;;;4343:30;4409:34;4404:2;4389:18;;4382:62;4476:2;4461:18;;4129:356::o;4844:127::-;4905:10;4900:3;4896:20;4893:1;4886:31;4936:4;4933:1;4926:15;4960:4;4957:1;4950:15;4976:422;5065:1;5108:5;5065:1;5122:270;5143:7;5133:8;5130:21;5122:270;;;5202:4;5198:1;5194:6;5190:17;5184:4;5181:27;5178:53;;;5211:18;;:::i;:::-;5261:7;5251:8;5247:22;5244:55;;;5281:16;;;;5244:55;5360:22;;;;5320:15;;;;5122:270;;;5126:3;4976:422;;;;;:::o;5403:806::-;5452:5;5482:8;5472:80;;-1:-1:-1;5523:1:1;5537:5;;5472:80;5571:4;5561:76;;-1:-1:-1;5608:1:1;5622:5;;5561:76;5653:4;5671:1;5666:59;;;;5739:1;5734:130;;;;5646:218;;5666:59;5696:1;5687:10;;5710:5;;;5734:130;5771:3;5761:8;5758:17;5755:43;;;5778:18;;:::i;:::-;-1:-1:-1;;5834:1:1;5820:16;;5849:5;;5646:218;;5948:2;5938:8;5935:16;5929:3;5923:4;5920:13;5916:36;5910:2;5900:8;5897:16;5892:2;5886:4;5883:12;5879:35;5876:77;5873:159;;;-1:-1:-1;5985:19:1;;;6017:5;;5873:159;6064:34;6089:8;6083:4;6064:34;:::i;:::-;6134:6;6130:1;6126:6;6122:19;6113:7;6110:32;6107:58;;;6145:18;;:::i;:::-;6183:20;;5403:806;-1:-1:-1;;;5403:806:1:o;6214:140::-;6272:5;6301:47;6342:4;6332:8;6328:19;6322:4;6301:47;:::i;6359:168::-;6432:9;;;6463;;6480:15;;;6474:22;;6460:37;6450:71;;6501:18;;:::i;6941:128::-;7008:9;;;7029:11;;;7026:37;;;7043:18;;:::i;8205:184::-;8275:6;8328:2;8316:9;8307:7;8303:23;8299:32;8296:52;;;8344:1;8341;8334:12;8296:52;-1:-1:-1;8367:16:1;;8205:184;-1:-1:-1;8205:184:1:o;8681:277::-;8748:6;8801:2;8789:9;8780:7;8776:23;8772:32;8769:52;;;8817:1;8814;8807:12;8769:52;8849:9;8843:16;8902:5;8895:13;8888:21;8881:5;8878:32;8868:60;;8924:1;8921;8914:12;9319:251;9389:6;9442:2;9430:9;9421:7;9417:23;9413:32;9410:52;;;9458:1;9455;9448:12;9410:52;9490:9;9484:16;9509:31;9534:5;9509:31;:::i;10496:306::-;10584:6;10592;10600;10653:2;10641:9;10632:7;10628:23;10624:32;10621:52;;;10669:1;10666;10659:12;10621:52;10698:9;10692:16;10682:26;;10748:2;10737:9;10733:18;10727:25;10717:35;;10792:2;10781:9;10777:18;10771:25;10761:35;;10496:306;;;;;:::o;13590:125::-;13655:9;;;13676:10;;;13673:36;;;13689:18;;:::i;14429:135::-;14468:3;14489:17;;;14486:43;;14509:18;;:::i;:::-;-1:-1:-1;14556:1:1;14545:13;;14429:135::o;14569:217::-;14609:1;14635;14625:132;;14679:10;14674:3;14670:20;14667:1;14660:31;14714:4;14711:1;14704:15;14742:4;14739:1;14732:15;14625:132;-1:-1:-1;14771:9:1;;14569:217::o;15281:127::-;15342:10;15337:3;15333:20;15330:1;15323:31;15373:4;15370:1;15363:15;15397:4;15394:1;15387:15;15413:980;15675:4;15723:3;15712:9;15708:19;15754:6;15743:9;15736:25;15780:2;15818:6;15813:2;15802:9;15798:18;15791:34;15861:3;15856:2;15845:9;15841:18;15834:31;15885:6;15920;15914:13;15951:6;15943;15936:22;15989:3;15978:9;15974:19;15967:26;;16028:2;16020:6;16016:15;16002:29;;16049:1;16059:195;16073:6;16070:1;16067:13;16059:195;;;16138:13;;-1:-1:-1;;;;;16134:39:1;16122:52;;16229:15;;;;16194:12;;;;16170:1;16088:9;16059:195;;;-1:-1:-1;;;;;;;16310:32:1;;;;16305:2;16290:18;;16283:60;-1:-1:-1;;;16374:3:1;16359:19;16352:35;16271:3;15413:980;-1:-1:-1;;;15413:980:1:o

Swarm Source

ipfs://71788075554d1149523c4373630afe774de74eab999cf84911c9901f843abae9
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.