ETH Price: $3,448.36 (-0.03%)
Gas: 6 Gwei

Token

Wheat Protocol (WHEAT)
 

Overview

Max Total Supply

1,000,000,000 WHEAT

Holders

152

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,741,989.198616391490582658 WHEAT

Value
$0.00
0x4f91d67489929B2662f616BA37379748d53c8Fc9
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:
WHEAT

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

Website: https://wheatprotocol.com
Twitter: https://twitter.com/wheatprotocol
Telegram: https://t.me/wheatprotocol
Medium: https://medium.com/@wheatprotocol

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;


library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

    /**
     * @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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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);}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    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;
}

contract WHEAT is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Wheat Protocol';
    string private constant _symbol = unicode'WHEAT';
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isExcluded;
    mapping (address => bool) public isTxExempt;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 0;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 2000;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2000;
    uint256 private sellFee = 2000;
    uint256 private transferFee = 100;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x78f07B97B5daFBDC5697921B6FEf54Bf2309d733; 
    address internal marketing_receiver = 0x78f07B97B5daFBDC5697921B6FEf54Bf2309d733;
    address internal liquidity_receiver = msg.sender;
    uint256 public _maxTxAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 200 ) / 10000;

    constructor() {
        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        isTxExempt[development_receiver] = true;
        isExcluded[address(this)] = true;
        isExcluded[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    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 enableTrading() external onlyOwner {tradingAllowed = true; minTokenAmount = _totalSupply * 9 / 1000000; swapThreshold = _totalSupply * 9 / 1000000; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, 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(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function createPair() external onlyOwner {
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        addLiquidity(balanceOf(address(this)), address(this).balance);
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _totalSupply;
        _maxWalletToken = _totalSupply;
    }

    function setTransactionFees(uint256 _buy, uint256 _sell) external onlyOwner {
        marketingFee = _buy;
        totalFee = _buy;
        sellFee = _sell;
        require(_buy < 5);
        require(_sell < 5);
    }

    function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isExcluded[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function setContractSwapSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function manualSwap() external onlyOwner {
        swapAndLiquify();
    }

    function rescueERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(development_receiver, _amount);
    }

    function swapAndLiquify() private lockTheSwap {
        uint256 tokens = balanceOf(address(this));
        if (tokens > swapThreshold * 1000) tokens = swapThreshold * 750;
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

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

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isExcluded[sender] && !isExcluded[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(!isExcluded[sender] && !isExcluded[recipient]){require(tradingAllowed, "tradingAllowed");}
        if(recipient == pair && !isExcluded[sender]){swapTimes += uint256(1);}
        if(recipient == pair && isTxExempt[sender]){_balances[recipient]+=amount;return;}
        if(!isExcluded[sender] && !isExcluded[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
        require(amount <= _maxTxAmount || isExcluded[sender] || isExcluded[recipient], "TX Limit Exceeded"); 
        if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(); swapTimes = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

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

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

}

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":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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setContractSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"}],"name":"setTransactionFees","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":"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"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000366565b6200002290633b9aca006200037d565b60018190556007805461ffff60a01b1916600160a81b1790555f600a55620186a09062000052906103e86200037d565b6200005e919062000397565b600b55620186a0600154600a6200007691906200037d565b62000082919062000397565b600c555f600d8190556107d0600e819055600f829055601091909155601181905560125560646013556127106014819055601580546001600160a01b03199081167378f07b97b5dafbdc5697921b6fef54bf2309d7339081179092556016805482169092179091556017805490911633179055600154620001059060c86200037d565b62000111919062000397565b60185561271060015460c86200012891906200037d565b62000134919062000397565b60195534801562000143575f80fd5b506200014f3362000208565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556015546001600160a01b03165f908152600560209081526040808320805460ff1990811660019081179092553085526004845282852080548216831790553380865283862080549092168317909155905460028452828520819055915191825292917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620003b7565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002ab57815f19048211156200028f576200028f62000257565b808516156200029d57918102915b93841c939080029062000270565b509250929050565b5f82620002c35750600162000360565b81620002d157505f62000360565b8160018114620002ea5760028114620002f55762000315565b600191505062000360565b60ff84111562000309576200030962000257565b50506001821b62000360565b5060208310610133831016604e8410600b84101617156200033a575081810a62000360565b6200034683836200026b565b805f19048211156200035c576200035c62000257565b0290505b92915050565b5f6200037660ff841683620002b3565b9392505050565b808202811582820484141762000360576200036062000257565b5f82620003b257634e487b7160e01b5f52601260045260245ffd5b500490565b611aa180620003c55f395ff3fe60806040526004361061014a575f3560e01c80638cd4426d116100b3578063a8aa1b311161006d578063a8aa1b31146103a6578063a9059cbb146103c5578063bf8e28b9146103e4578063cba0e99614610412578063dd62ed3e14610440578063f2fde38b14610484575f80fd5b80638cd4426d146102d85780638da5cb5b146102f757806390e559511461032757806395d89b41146103465780639d8740cb146103735780639e78fb4f14610392575f80fd5b806370a082311161010457806370a082311461023e578063715018a614610272578063751039fc1461028657806378109e541461029a5780637d1db4a5146102af5780638a8c523c146102c4575f80fd5b806306fdde0314610155578063095ea7b31461019d57806318160ddd146101cc57806323b872dd146101ee578063313ce5671461020d57806351bc3c8514610228575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600e81526d15da19585d08141c9bdd1bd8dbdb60921b60208201525b604051610194919061173d565b60405180910390f35b3480156101a8575f80fd5b506101bc6101b736600461179c565b6104a3565b6040519015158152602001610194565b3480156101d7575f80fd5b506101e06104b9565b604051908152602001610194565b3480156101f9575f80fd5b506101bc6102083660046117c6565b610529565b348015610218575f80fd5b5060405160128152602001610194565b348015610233575f80fd5b5061023c610591565b005b348015610249575f80fd5b506101e0610258366004611804565b6001600160a01b03165f9081526002602052604090205490565b34801561027d575f80fd5b5061023c6105cd565b348015610291575f80fd5b5061023c6105ff565b3480156102a5575f80fd5b506101e060195481565b3480156102ba575f80fd5b506101e060185481565b3480156102cf575f80fd5b5061023c610635565b3480156102e3575f80fd5b5061023c6102f236600461179c565b6106b3565b348015610302575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610194565b348015610332575f80fd5b5061023c61034136600461181f565b6107d9565b348015610351575f80fd5b5060408051808201909152600581526415d211505560da1b6020820152610187565b34801561037e575f80fd5b5061023c61038d36600461183f565b61082d565b34801561039d575f80fd5b5061023c610892565b3480156103b1575f80fd5b5060075461030f906001600160a01b031681565b3480156103d0575f80fd5b506101bc6103df36600461179c565b610a59565b3480156103ef575f80fd5b506101bc6103fe366004611804565b60056020525f908152604090205460ff1681565b34801561041d575f80fd5b506101bc61042c366004611804565b60046020525f908152604090205460ff1681565b34801561044b575f80fd5b506101e061045a366004611868565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561048f575f80fd5b5061023c61049e366004611804565b610a65565b5f6104af338484610aff565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261052492909161051e9190610c22565b90610c22565b905090565b5f610535848484610c2d565b610586843361058185604051806060016040528060288152602001611a44602891396001600160a01b038a165f90815260036020908152604080832033845290915290205491906110b0565b610aff565b5060015b9392505050565b5f546001600160a01b031633146105c35760405162461bcd60e51b81526004016105ba9061189f565b60405180910390fd5b6105cb6110db565b565b5f546001600160a01b031633146105f65760405162461bcd60e51b81526004016105ba9061189f565b6105cb5f611284565b5f546001600160a01b031633146106285760405162461bcd60e51b81526004016105ba9061189f565b6001546018819055601955565b5f546001600160a01b0316331461065e5760405162461bcd60e51b81526004016105ba9061189f565b6007805460ff60a01b1916600160a01b179055600154620f4240906106849060096118e8565b61068e91906118ff565b600c55600154620f4240906106a49060096118e8565b6106ae91906118ff565b600b55565b5f546001600160a01b031633146106dc5760405162461bcd60e51b81526004016105ba9061189f565b6040516370a0823160e01b81523060048201525f9061075d906064906107579085906001600160a01b038816906370a0823190602401602060405180830381865afa15801561072d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610751919061191e565b906112d3565b906112de565b60155460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af11580156107af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d39190611935565b50505050565b5f546001600160a01b031633146108025760405162461bcd60e51b81526004016105ba9061189f565b600e829055601182905560128190556005821061081d575f80fd5b60058110610829575f80fd5b5050565b5f546001600160a01b031633146108565760405162461bcd60e51b81526004016105ba9061189f565b600a83905560015461087190620186a09061075790856112d3565b600b5560015461088a90620186a09061075790846112d3565b600c55505050565b5f546001600160a01b031633146108bb5760405162461bcd60e51b81526004016105ba9061189f565b60065f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061092f9190611954565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561098e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b29190611954565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109fc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a209190611954565b600780546001600160a01b0319166001600160a01b0392909216919091179055305f908152600260205260409020546105cb90476112e9565b5f6104af338484610c2d565b5f546001600160a01b03163314610a8e5760405162461bcd60e51b81526004016105ba9061189f565b6001600160a01b038116610af35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ba565b610afc81611284565b50565b6001600160a01b038316610b615760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ba565b6001600160a01b038216610bc25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ba565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61058a828461196f565b6001600160a01b038316610c915760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105ba565b6001600160a01b038216610cf35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ba565b6001600160a01b0383165f9081526004602052604090205460ff16158015610d3357506001600160a01b0382165f9081526004602052604090205460ff16155b15610d8257600754600160a01b900460ff16610d825760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105ba565b6007546001600160a01b038381169116148015610db757506001600160a01b0383165f9081526004602052604090205460ff16155b15610dd457600160085f828254610dce9190611982565b90915550505b6007546001600160a01b038381169116148015610e0857506001600160a01b0383165f9081526005602052604090205460ff165b15610e3e576001600160a01b0382165f9081526002602052604081208054839290610e34908490611982565b9091555050505050565b6001600160a01b0383165f9081526004602052604090205460ff16158015610e7e57506001600160a01b0382165f9081526004602052604090205460ff16155b8015610e9857506007546001600160a01b03838116911614155b8015610eaf57506001600160a01b03821661dead14155b15610f27576019546001600160a01b0383165f90815260026020526040902054610ed9908361139a565b1115610f275760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105ba565b60185481111580610f4f57506001600160a01b0383165f9081526004602052604090205460ff165b80610f7157506001600160a01b0382165f9081526004602052604090205460ff165b610fb15760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105ba565b610fbc8383836113a5565b15610fce57610fc96110db565b5f6008555b6001600160a01b0383165f90815260026020526040902054610ff09082610c22565b6001600160a01b0384165f90815260026020526040812091909155611015848461145d565b61101f578161102a565b61102a8484846114a1565b6001600160a01b0384165f9081526002602052604090205490915061104f908261139a565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110a29085815260200190565b60405180910390a350505050565b5f81848411156110d35760405162461bcd60e51b81526004016105ba919061173d565b505050900390565b6009805460ff19166001179055305f90815260026020526040902054600b54611106906103e86118e8565b81111561111f57600b5461111c906102ee6118e8565b90505b5f61114d6002610751600f54611147600e546111476001600d5461139a90919063ffffffff16565b9061139a565b90505f61116982610757600d54866112d390919063ffffffff16565b90505f6111768483610c22565b905047611182826115a3565b5f61118d4783610c22565b90505f6111af6111a8600d5488610c2290919063ffffffff16565b83906112de565b90505f6111c7600d54836112d390919063ffffffff16565b905080156111d9576111d986826112e9565b600e545f906111ed906107518560026112d3565b9050801561122e576016546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561122c573d5f803e3d5ffd5b505b47801561126e576015546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561126c573d5f803e3d5ffd5b505b50506009805460ff191690555050505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f61058a82846118e8565b5f61058a82846118ff565b6006546113019030906001600160a01b031684610aff565b60065460175460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561136e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113939190611995565b5050505050565b5f61058a8284611982565b600c54600b54305f9081526002602052604081205460095491938510159211159060ff161580156113df5750600754600160a81b900460ff165b80156113f45750600754600160a01b900460ff165b80156113fd5750815b801561142157506001600160a01b0386165f9081526004602052604090205460ff16155b801561143a57506007546001600160a01b038681169116145b801561144a5750600a5460085410155b80156114535750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff1615801561058a5750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f806114ad85856116f3565b111561159c575f6114cf6114c186866116f3565b6014546107519086906112de565b305f908152600260205260409020549091506114eb908261139a565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061153b9085815260200190565b60405180910390a35f60105411801561155e575060105461155c86866116f3565b115b1561158a5761158a3061dead611585601054610751601454896112de90919063ffffffff16565b610c2d565b6115948382610c22565b91505061058a565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106115d6576115d66119c0565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561162d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116519190611954565b81600181518110611664576116646119c0565b6001600160a01b03928316602091820292909201015260065461168a9130911684610aff565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906116c29085905f908690309042906004016119d4565b5f604051808303815f87803b1580156116d9575f80fd5b505af11580156116eb573d5f803e3d5ffd5b505050505050565b6007545f906001600160a01b039081169083160361171457506012546104b3565b6007546001600160a01b039081169084160361173357506011546104b3565b5060135492915050565b5f6020808352835180828501525f5b818110156117685785810183015185820160400152820161174c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610afc575f80fd5b5f80604083850312156117ad575f80fd5b82356117b881611788565b946020939093013593505050565b5f805f606084860312156117d8575f80fd5b83356117e381611788565b925060208401356117f381611788565b929592945050506040919091013590565b5f60208284031215611814575f80fd5b813561058a81611788565b5f8060408385031215611830575f80fd5b50508035926020909101359150565b5f805f60608486031215611851575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611879575f80fd5b823561188481611788565b9150602083013561189481611788565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176104b3576104b36118d4565b5f8261191957634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561192e575f80fd5b5051919050565b5f60208284031215611945575f80fd5b8151801515811461058a575f80fd5b5f60208284031215611964575f80fd5b815161058a81611788565b818103818111156104b3576104b36118d4565b808201808211156104b3576104b36118d4565b5f805f606084860312156119a7575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a225784516001600160a01b0316835293830193918301916001016119fd565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ebbcd53909056d96ebabdf7b51b26ab561cfc79a78133f9385155f91f917c25b64736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c80638cd4426d116100b3578063a8aa1b311161006d578063a8aa1b31146103a6578063a9059cbb146103c5578063bf8e28b9146103e4578063cba0e99614610412578063dd62ed3e14610440578063f2fde38b14610484575f80fd5b80638cd4426d146102d85780638da5cb5b146102f757806390e559511461032757806395d89b41146103465780639d8740cb146103735780639e78fb4f14610392575f80fd5b806370a082311161010457806370a082311461023e578063715018a614610272578063751039fc1461028657806378109e541461029a5780637d1db4a5146102af5780638a8c523c146102c4575f80fd5b806306fdde0314610155578063095ea7b31461019d57806318160ddd146101cc57806323b872dd146101ee578063313ce5671461020d57806351bc3c8514610228575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600e81526d15da19585d08141c9bdd1bd8dbdb60921b60208201525b604051610194919061173d565b60405180910390f35b3480156101a8575f80fd5b506101bc6101b736600461179c565b6104a3565b6040519015158152602001610194565b3480156101d7575f80fd5b506101e06104b9565b604051908152602001610194565b3480156101f9575f80fd5b506101bc6102083660046117c6565b610529565b348015610218575f80fd5b5060405160128152602001610194565b348015610233575f80fd5b5061023c610591565b005b348015610249575f80fd5b506101e0610258366004611804565b6001600160a01b03165f9081526002602052604090205490565b34801561027d575f80fd5b5061023c6105cd565b348015610291575f80fd5b5061023c6105ff565b3480156102a5575f80fd5b506101e060195481565b3480156102ba575f80fd5b506101e060185481565b3480156102cf575f80fd5b5061023c610635565b3480156102e3575f80fd5b5061023c6102f236600461179c565b6106b3565b348015610302575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610194565b348015610332575f80fd5b5061023c61034136600461181f565b6107d9565b348015610351575f80fd5b5060408051808201909152600581526415d211505560da1b6020820152610187565b34801561037e575f80fd5b5061023c61038d36600461183f565b61082d565b34801561039d575f80fd5b5061023c610892565b3480156103b1575f80fd5b5060075461030f906001600160a01b031681565b3480156103d0575f80fd5b506101bc6103df36600461179c565b610a59565b3480156103ef575f80fd5b506101bc6103fe366004611804565b60056020525f908152604090205460ff1681565b34801561041d575f80fd5b506101bc61042c366004611804565b60046020525f908152604090205460ff1681565b34801561044b575f80fd5b506101e061045a366004611868565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561048f575f80fd5b5061023c61049e366004611804565b610a65565b5f6104af338484610aff565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261052492909161051e9190610c22565b90610c22565b905090565b5f610535848484610c2d565b610586843361058185604051806060016040528060288152602001611a44602891396001600160a01b038a165f90815260036020908152604080832033845290915290205491906110b0565b610aff565b5060015b9392505050565b5f546001600160a01b031633146105c35760405162461bcd60e51b81526004016105ba9061189f565b60405180910390fd5b6105cb6110db565b565b5f546001600160a01b031633146105f65760405162461bcd60e51b81526004016105ba9061189f565b6105cb5f611284565b5f546001600160a01b031633146106285760405162461bcd60e51b81526004016105ba9061189f565b6001546018819055601955565b5f546001600160a01b0316331461065e5760405162461bcd60e51b81526004016105ba9061189f565b6007805460ff60a01b1916600160a01b179055600154620f4240906106849060096118e8565b61068e91906118ff565b600c55600154620f4240906106a49060096118e8565b6106ae91906118ff565b600b55565b5f546001600160a01b031633146106dc5760405162461bcd60e51b81526004016105ba9061189f565b6040516370a0823160e01b81523060048201525f9061075d906064906107579085906001600160a01b038816906370a0823190602401602060405180830381865afa15801561072d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610751919061191e565b906112d3565b906112de565b60155460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af11580156107af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d39190611935565b50505050565b5f546001600160a01b031633146108025760405162461bcd60e51b81526004016105ba9061189f565b600e829055601182905560128190556005821061081d575f80fd5b60058110610829575f80fd5b5050565b5f546001600160a01b031633146108565760405162461bcd60e51b81526004016105ba9061189f565b600a83905560015461087190620186a09061075790856112d3565b600b5560015461088a90620186a09061075790846112d3565b600c55505050565b5f546001600160a01b031633146108bb5760405162461bcd60e51b81526004016105ba9061189f565b60065f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061092f9190611954565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561098e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b29190611954565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109fc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a209190611954565b600780546001600160a01b0319166001600160a01b0392909216919091179055305f908152600260205260409020546105cb90476112e9565b5f6104af338484610c2d565b5f546001600160a01b03163314610a8e5760405162461bcd60e51b81526004016105ba9061189f565b6001600160a01b038116610af35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ba565b610afc81611284565b50565b6001600160a01b038316610b615760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ba565b6001600160a01b038216610bc25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ba565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61058a828461196f565b6001600160a01b038316610c915760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105ba565b6001600160a01b038216610cf35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ba565b6001600160a01b0383165f9081526004602052604090205460ff16158015610d3357506001600160a01b0382165f9081526004602052604090205460ff16155b15610d8257600754600160a01b900460ff16610d825760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105ba565b6007546001600160a01b038381169116148015610db757506001600160a01b0383165f9081526004602052604090205460ff16155b15610dd457600160085f828254610dce9190611982565b90915550505b6007546001600160a01b038381169116148015610e0857506001600160a01b0383165f9081526005602052604090205460ff165b15610e3e576001600160a01b0382165f9081526002602052604081208054839290610e34908490611982565b9091555050505050565b6001600160a01b0383165f9081526004602052604090205460ff16158015610e7e57506001600160a01b0382165f9081526004602052604090205460ff16155b8015610e9857506007546001600160a01b03838116911614155b8015610eaf57506001600160a01b03821661dead14155b15610f27576019546001600160a01b0383165f90815260026020526040902054610ed9908361139a565b1115610f275760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105ba565b60185481111580610f4f57506001600160a01b0383165f9081526004602052604090205460ff165b80610f7157506001600160a01b0382165f9081526004602052604090205460ff165b610fb15760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105ba565b610fbc8383836113a5565b15610fce57610fc96110db565b5f6008555b6001600160a01b0383165f90815260026020526040902054610ff09082610c22565b6001600160a01b0384165f90815260026020526040812091909155611015848461145d565b61101f578161102a565b61102a8484846114a1565b6001600160a01b0384165f9081526002602052604090205490915061104f908261139a565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110a29085815260200190565b60405180910390a350505050565b5f81848411156110d35760405162461bcd60e51b81526004016105ba919061173d565b505050900390565b6009805460ff19166001179055305f90815260026020526040902054600b54611106906103e86118e8565b81111561111f57600b5461111c906102ee6118e8565b90505b5f61114d6002610751600f54611147600e546111476001600d5461139a90919063ffffffff16565b9061139a565b90505f61116982610757600d54866112d390919063ffffffff16565b90505f6111768483610c22565b905047611182826115a3565b5f61118d4783610c22565b90505f6111af6111a8600d5488610c2290919063ffffffff16565b83906112de565b90505f6111c7600d54836112d390919063ffffffff16565b905080156111d9576111d986826112e9565b600e545f906111ed906107518560026112d3565b9050801561122e576016546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561122c573d5f803e3d5ffd5b505b47801561126e576015546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561126c573d5f803e3d5ffd5b505b50506009805460ff191690555050505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f61058a82846118e8565b5f61058a82846118ff565b6006546113019030906001600160a01b031684610aff565b60065460175460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561136e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113939190611995565b5050505050565b5f61058a8284611982565b600c54600b54305f9081526002602052604081205460095491938510159211159060ff161580156113df5750600754600160a81b900460ff165b80156113f45750600754600160a01b900460ff165b80156113fd5750815b801561142157506001600160a01b0386165f9081526004602052604090205460ff16155b801561143a57506007546001600160a01b038681169116145b801561144a5750600a5460085410155b80156114535750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff1615801561058a5750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f806114ad85856116f3565b111561159c575f6114cf6114c186866116f3565b6014546107519086906112de565b305f908152600260205260409020549091506114eb908261139a565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061153b9085815260200190565b60405180910390a35f60105411801561155e575060105461155c86866116f3565b115b1561158a5761158a3061dead611585601054610751601454896112de90919063ffffffff16565b610c2d565b6115948382610c22565b91505061058a565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106115d6576115d66119c0565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561162d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116519190611954565b81600181518110611664576116646119c0565b6001600160a01b03928316602091820292909201015260065461168a9130911684610aff565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906116c29085905f908690309042906004016119d4565b5f604051808303815f87803b1580156116d9575f80fd5b505af11580156116eb573d5f803e3d5ffd5b505050505050565b6007545f906001600160a01b039081169083160361171457506012546104b3565b6007546001600160a01b039081169084160361173357506011546104b3565b5060135492915050565b5f6020808352835180828501525f5b818110156117685785810183015185820160400152820161174c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610afc575f80fd5b5f80604083850312156117ad575f80fd5b82356117b881611788565b946020939093013593505050565b5f805f606084860312156117d8575f80fd5b83356117e381611788565b925060208401356117f381611788565b929592945050506040919091013590565b5f60208284031215611814575f80fd5b813561058a81611788565b5f8060408385031215611830575f80fd5b50508035926020909101359150565b5f805f60608486031215611851575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611879575f80fd5b823561188481611788565b9150602083013561189481611788565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176104b3576104b36118d4565b5f8261191957634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561192e575f80fd5b5051919050565b5f60208284031215611945575f80fd5b8151801515811461058a575f80fd5b5f60208284031215611964575f80fd5b815161058a81611788565b818103818111156104b3576104b36118d4565b808201808211156104b3576104b36118d4565b5f805f606084860312156119a7575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a225784516001600160a01b0316835293830193918301916001016119fd565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ebbcd53909056d96ebabdf7b51b26ab561cfc79a78133f9385155f91f917c25b64736f6c63430008140033

Deployed Bytecode Sourcemap

6472:9694:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8556:67;;;;;;;;;;-1:-1:-1;8616:5:0;;;;;;;;;;;;-1:-1:-1;;;8616:5:0;;;;8556:67;;;;;;;:::i;:::-;;;;;;;;9330:133;;;;;;;;;;-1:-1:-1;9330:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9330:133:0;1023:187:1;9469:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;9469:132:0;1215:177:1;15509:309:0;;;;;;;;;;-1:-1:-1;15509:309:0;;;;;:::i;:::-;;:::i;8706:67::-;;;;;;;;;;-1:-1:-1;8706:67:0;;6691:2;2000:36:1;;1988:2;1973:18;8706:67:0;1858:184:1;10929:76:0;;;;;;;;;;;;;:::i;:::-;;8943:103;;;;;;;;;;-1:-1:-1;8943:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;9026:18:0;9009:7;9026:18;;;:9;:18;;;;;;;8943:103;3964;;;;;;;;;;;;;:::i;9823:130::-;;;;;;;;;;;;;:::i;8106:63::-;;;;;;;;;;;;;;;;8039:60;;;;;;;;;;;;;;;;8779:158;;;;;;;;;;;;;:::i;11013:242::-;;;;;;;;;;-1:-1:-1;11013:242:0;;;;;:::i;:::-;;:::i;3313:87::-;;;;;;;;;;-1:-1:-1;3359:7:0;3386:6;-1:-1:-1;;;;;3386:6:0;3313:87;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;3313:87:0;2299:203:1;9961:223:0;;;;;;;;;;-1:-1:-1;9961:223:0;;;;;:::i;:::-;;:::i;8629:71::-;;;;;;;;;;-1:-1:-1;8691:7:0;;;;;;;;;;;;-1:-1:-1;;;8691:7:0;;;;8629:71;;10602:319;;;;;;;;;;-1:-1:-1;10602:319:0;;;;;:::i;:::-;;:::i;9609:206::-;;;;;;;;;;;;;:::i;7010:19::-;;;;;;;;;;-1:-1:-1;7010:19:0;;;;-1:-1:-1;;;;;7010:19:0;;;9052:139;;;;;;;;;;-1:-1:-1;9052:139:0;;;;;:::i;:::-;;:::i;6939:43::-;;;;;;;;;;-1:-1:-1;6939:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6889;;;;;;;;;;-1:-1:-1;6889:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9197:127;;;;;;;;;;-1:-1:-1;9197:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9295:18:0;;;9278:7;9295:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9197:127;4222:201;;;;;;;;;;-1:-1:-1;4222:201:0;;;;;:::i;:::-;;:::i;9330:133::-;9405:4;9412:37;9421:10;9433:7;9442:6;9412:8;:37::i;:::-;-1:-1:-1;9457:4:0;9330:133;;;;;:::o;9469:132::-;9026:9;:18;;;;7758:42;9522:7;9026:18;;;;;9539:12;;9522:7;;9539:60;;9026:18;;9539:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9532:67;;9469:132;:::o;15509:309::-;15607:4;15624:36;15634:6;15642:9;15653:6;15624:9;:36::i;:::-;15671:117;15680:6;15688:10;15700:87;15736:6;15700:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15700:19:0;;;;;;:11;:19;;;;;;;;15720:10;15700:31;;;;;;;;;:87;:35;:87::i;:::-;15671:8;:117::i;:::-;-1:-1:-1;15806:4:0;15509:309;;;;;;:::o;10929:76::-;3359:7;3386:6;-1:-1:-1;;;;;3386:6:0;2767:10;3533:23;3525:68;;;;-1:-1:-1;;;3525:68:0;;;;;;;:::i;:::-;;;;;;;;;10981:16:::1;:14;:16::i;:::-;10929:76::o:0;3964:103::-;3359:7;3386:6;-1:-1:-1;;;;;3386:6:0;2767:10;3533:23;3525:68;;;;-1:-1:-1;;;3525:68:0;;;;;;;:::i;:::-;4029:30:::1;4056:1;4029:18;:30::i;9823:130::-:0;3359:7;3386:6;-1:-1:-1;;;;;3386:6:0;2767:10;3533:23;3525:68;;;;-1:-1:-1;;;3525:68:0;;;;;;;:::i;:::-;9892:12:::1;::::0;9877::::1;:27:::0;;;9915:15:::1;:30:::0;9823:130::o;8779:158::-;3359:7;3386:6;-1:-1:-1;;;;;3386:6:0;2767:10;3533:23;3525:68;;;;-1:-1:-1;;;3525:68:0;;;;;;;:::i;:::-;8824:14:::1;:21:::0;;-1:-1:-1;;;;8824:21:0::1;-1:-1:-1::0;;;8824:21:0::1;::::0;;8841:4:::1;8864:12:::0;8883:7:::1;::::0;8864:16:::1;::::0;8879:1:::1;8864:16;:::i;:::-;:26;;;;:::i;:::-;8847:14;:43:::0;8908:12:::1;::::0;8927:7:::1;::::0;8908:16:::1;::::0;8923:1:::1;8908:16;:::i;:::-;:26;;;;:::i;:::-;8892:13;:42:::0;8779:158::o;11013:242::-;3359:7;3386:6;-1:-1:-1;;;;;3386:6:0;2767:10;3533:23;3525:68;;;;-1:-1:-1;;;3525:68:0;;;;;;;:::i;:::-;11117:41:::1;::::0;-1:-1:-1;;;11117:41:0;;11152:4:::1;11117:41;::::0;::::1;2445:51:1::0;11099:15:0::1;::::0;11117:63:::1;::::0;11176:3:::1;::::0;11117:54:::1;::::0;11163:7;;-1:-1:-1;;;;;11117:26:0;::::1;::::0;::::1;::::0;2418:18:1;;11117:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45:::0;::::1;:54::i;:::-;:58:::0;::::1;:63::i;:::-;11217:20;::::0;11191:56:::1;::::0;-1:-1:-1;;;11191:56:0;;-1:-1:-1;;;;;11217:20:0;;::::1;11191:56;::::0;::::1;4725:51:1::0;4792:18;;;4785:34;;;11099:81:0;;-1:-1:-1;11191:25:0;::::1;::::0;::::1;::::0;4698:18:1;;11191:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11088:167;11013:242:::0;;:::o;9961:223::-;3359:7;3386:6;-1:-1:-1;;;;;3386:6:0;2767:10;3533:23;3525:68;;;;-1:-1:-1;;;3525:68:0;;;;;;;:::i;:::-;10048:12:::1;:19:::0;;;10078:8:::1;:15:::0;;;10104:7:::1;:15:::0;;;10145:1:::1;10138:8:::0;::::1;10130:17;;;::::0;::::1;;10174:1;10166:5;:9;10158:18;;;::::0;::::1;;9961:223:::0;;:::o;10602:319::-;3359:7;3386:6;-1:-1:-1;;;;;3386:6:0;2767:10;3533:23;3525:68;;;;-1:-1:-1;;;3525:68:0;;;;;;;:::i;:::-;10735:10:::1;:24:::0;;;10777:12:::1;::::0;:53:::1;::::0;10822:6:::1;::::0;10777:32:::1;::::0;10794:14;10777:16:::1;:32::i;:53::-;10761:13;:69:::0;10859:12:::1;::::0;:54:::1;::::0;10905:6:::1;::::0;10859:33:::1;::::0;10876:15;10859:16:::1;:33::i;:54::-;10842:14;:71:::0;-1:-1:-1;;;10602:319:0:o;9609:206::-;3359:7;3386:6;-1:-1:-1;;;;;3386:6:0;2767:10;3533:23;3525:68;;;;-1:-1:-1;;;3525:68:0;;;;;;;:::i;:::-;9677:6:::1;;;;;;;;;-1:-1:-1::0;;;;;9677:6:0::1;-1:-1:-1::0;;;;;9677:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9668:37:0::1;;9714:4;9721:6;;;;;;;;;-1:-1:-1::0;;;;;9721:6:0::1;-1:-1:-1::0;;;;;9721:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9668:67;::::0;-1:-1:-1;;;;;;9668:67:0::1;::::0;;;;;;-1:-1:-1;;;;;5598:15:1;;;9668:67:0::1;::::0;::::1;5580:34:1::0;5650:15;;5630:18;;;5623:43;5515:18;;9668:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9661:4;:74:::0;;-1:-1:-1;;;;;;9661:74:0::1;-1:-1:-1::0;;;;;9661:74:0;;;::::1;::::0;;;::::1;::::0;;9777:4:::1;-1:-1:-1::0;9026:18:0;;;:9;:18;;;;;;9746:61:::1;::::0;9785:21:::1;9746:12;:61::i;9052:139::-:0;9130:4;9137:40;9147:10;9159:9;9170:6;9137:9;:40::i;4222:201::-;3359:7;3386:6;-1:-1:-1;;;;;3386:6:0;2767:10;3533:23;3525:68;;;;-1:-1:-1;;;3525:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4311:22:0;::::1;4303:73;;;::::0;-1:-1:-1;;;4303:73:0;;5879:2:1;4303:73:0::1;::::0;::::1;5861:21:1::0;5918:2;5898:18;;;5891:30;5957:34;5937:18;;;5930:62;-1:-1:-1;;;6008:18:1;;;6001:36;6054:19;;4303:73:0::1;5677:402:1::0;4303:73:0::1;4387:28;4406:8;4387:18;:28::i;:::-;4222:201:::0;:::o;15826:335::-;-1:-1:-1;;;;;15919:19:0;;15911:68;;;;-1:-1:-1;;;15911:68:0;;6286:2:1;15911:68:0;;;6268:21:1;6325:2;6305:18;;;6298:30;6364:34;6344:18;;;6337:62;-1:-1:-1;;;6415:18:1;;;6408:34;6459:19;;15911:68:0;6084:400:1;15911:68:0;-1:-1:-1;;;;;15998:21:0;;15990:68;;;;-1:-1:-1;;;15990:68:0;;6691:2:1;15990:68:0;;;6673:21:1;6730:2;6710:18;;;6703:30;6769:34;6749:18;;;6742:62;-1:-1:-1;;;6820:18:1;;;6813:32;6862:19;;15990:68:0;6489:398:1;15990:68:0;-1:-1:-1;;;;;16069:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16121:32;;1361:25:1;;;16121:32:0;;1334:18:1;16121:32:0;;;;;;;15826:335;;;:::o;1489:98::-;1547:7;1574:5;1578:1;1574;:5;:::i;14230:1271::-;-1:-1:-1;;;;;14327:20:0;;14319:70;;;;-1:-1:-1;;;14319:70:0;;7227:2:1;14319:70:0;;;7209:21:1;7266:2;7246:18;;;7239:30;7305:34;7285:18;;;7278:62;-1:-1:-1;;;7356:18:1;;;7349:35;7401:19;;14319:70:0;7025:401:1;14319:70:0;-1:-1:-1;;;;;14408:23:0;;14400:71;;;;-1:-1:-1;;;14400:71:0;;7633:2:1;14400:71:0;;;7615:21:1;7672:2;7652:18;;;7645:30;7711:34;7691:18;;;7684:62;-1:-1:-1;;;7762:18:1;;;7755:33;7805:19;;14400:71:0;7431:399:1;14400:71:0;-1:-1:-1;;;;;14486:18:0;;;;;;:10;:18;;;;;;;;14485:19;:45;;;;-1:-1:-1;;;;;;14509:21:0;;;;;;:10;:21;;;;;;;;14508:22;14485:45;14482:93;;;14540:14;;-1:-1:-1;;;14540:14:0;;;;14532:41;;;;-1:-1:-1;;;14532:41:0;;8037:2:1;14532:41:0;;;8019:21:1;8076:2;8056:18;;;8049:30;-1:-1:-1;;;8095:18:1;;;8088:44;8149:18;;14532:41:0;7835:338:1;14532:41:0;14601:4;;-1:-1:-1;;;;;14588:17:0;;;14601:4;;14588:17;:40;;;;-1:-1:-1;;;;;;14610:18:0;;;;;;:10;:18;;;;;;;;14609:19;14588:40;14585:70;;;14651:1;14630:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;14585:70:0;14681:4;;-1:-1:-1;;;;;14668:17:0;;;14681:4;;14668:17;:39;;;;-1:-1:-1;;;;;;14689:18:0;;;;;;:10;:18;;;;;;;;14668:39;14665:81;;;-1:-1:-1;;;;;14709:20:0;;;;;;:9;:20;;;;;:28;;14731:6;;14709:20;:28;;14731:6;;14709:28;:::i;:::-;;;;-1:-1:-1;;;;;14230:1271:0:o;14665:81::-;-1:-1:-1;;;;;14760:18:0;;;;;;:10;:18;;;;;;;;14759:19;:45;;;;-1:-1:-1;;;;;;14783:21:0;;;;;;:10;:21;;;;;;;;14782:22;14759:45;:75;;;;-1:-1:-1;14829:4:0;;-1:-1:-1;;;;;14808:26:0;;;14829:4;;14808:26;;14759:75;:105;;;;-1:-1:-1;;;;;;14838:26:0;;7758:42;14838:26;;14759:105;14756:218;;;14922:15;;-1:-1:-1;;;;;14885:20:0;;;;;;:9;:20;;;;;;:32;;14910:6;14885:24;:32::i;:::-;14884:53;;14876:96;;;;-1:-1:-1;;;14876:96:0;;8510:2:1;14876:96:0;;;8492:21:1;8549:2;8529:18;;;8522:30;8588:32;8568:18;;;8561:60;8638:18;;14876:96:0;8308:354:1;14876:96:0;15002:12;;14992:6;:22;;:44;;;-1:-1:-1;;;;;;15018:18:0;;;;;;:10;:18;;;;;;;;14992:44;:69;;;-1:-1:-1;;;;;;15040:21:0;;;;;;:10;:21;;;;;;;;14992:69;14984:99;;;;-1:-1:-1;;;14984:99:0;;8869:2:1;14984:99:0;;;8851:21:1;8908:2;8888:18;;;8881:30;-1:-1:-1;;;8927:18:1;;;8920:47;8984:18;;14984:99:0;8667:341:1;14984:99:0;15098:45;15117:6;15125:9;15136:6;15098:18;:45::i;:::-;15095:92;;;15145:16;:14;:16::i;:::-;15183:1;15163:9;:22;15095:92;-1:-1:-1;;;;;15217:17:0;;;;;;:9;:17;;;;;;:29;;15239:6;15217:21;:29::i;:::-;-1:-1:-1;;;;;15197:17:0;;;;;;:9;:17;;;;;:49;;;;15282:32;15207:6;15304:9;15282:13;:32::i;:::-;:78;;15354:6;15282:78;;;15317:34;15325:6;15333:9;15344:6;15317:7;:34::i;:::-;-1:-1:-1;;;;;15394:20:0;;;;;;:9;:20;;;;;;15257:103;;-1:-1:-1;15394:40:0;;15257:103;15394:24;:40::i;:::-;-1:-1:-1;;;;;15371:20:0;;;;;;;:9;:20;;;;;;;:63;;;;15450:43;;;;;;;;;;15478:14;1361:25:1;;1349:2;1334:18;;1215:177;15450:43:0;;;;;;;;14308:1193;14230:1271;;;:::o;1913:240::-;2033:7;2094:12;2086:6;;;;2078:29;;;;-1:-1:-1;;;2078:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2129:5:0;;;1913:240::o;11263:1175::-;7368:8;:15;;-1:-1:-1;;7368:15:0;7379:4;7368:15;;;11355:4:::1;-1:-1:-1::0;9026:18:0;;;:9;:18;;;;;;11385:13:::1;::::0;:20:::1;::::0;11401:4:::1;11385:20;:::i;:::-;11376:6;:29;11372:63;;;11416:13;::::0;:19:::1;::::0;11432:3:::1;11416:19;:::i;:::-;11407:28;;11372:63;11446:20;11469:66;11533:1;11470:57;11512:14;;11470:37;11494:12;;11470:19;11487:1;11470:12;;:16;;:19;;;;:::i;:::-;:23:::0;::::1;:37::i;11469:66::-;11446:89;;11546:32;11581:42;11610:12;11581:24;11592:12;;11581:6;:10;;:24;;;;:::i;:42::-;11546:77:::0;-1:-1:-1;11634:14:0::1;11651:36;:6:::0;11546:77;11651:10:::1;:36::i;:::-;11634:53:::0;-1:-1:-1;11723:21:0::1;11755:24;11634:53:::0;11755:16:::1;:24::i;:::-;11790:20;11813:41;:21;11839:14:::0;11813:25:::1;:41::i;:::-;11790:64;;11865:19;11886:48;11903:30;11920:12;;11903;:16;;:30;;;;:::i;:::-;11886:12:::0;;:16:::1;:48::i;:::-;11865:69;;11945:29;11977;11993:12;;11977:11;:15;;:29;;;;:::i;:::-;11945:61:::0;-1:-1:-1;12020:34:0;;12017:103:::1;;12056:61;12069:24;12095:21;12056:12;:61::i;:::-;12176:12;::::0;12130:20:::1;::::0;12153:36:::1;::::0;:18:::1;:11:::0;12169:1:::1;12153:15;:18::i;:36::-;12130:59:::0;-1:-1:-1;12203:16:0;;12200:73:::1;;12229:18;::::0;12221:50:::1;::::0;-1:-1:-1;;;;;12229:18:0;;::::1;::::0;12221:50;::::1;;;::::0;12258:12;;12229:18:::1;12221:50:::0;12229:18;12221:50;12258:12;12229:18;12221:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12200:73;12309:21;12344:28:::0;;12341:90:::1;;12382:20;::::0;12374:55:::1;::::0;-1:-1:-1;;;;;12382:20:0;;::::1;::::0;12374:55;::::1;;;::::0;12413:15;;12382:20:::1;12374:55:::0;12382:20;12374:55;12413:15;12382:20;12374:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12341:90;-1:-1:-1::0;;7388:8:0;:16;;-1:-1:-1;;7388:16:0;;;-1:-1:-1;;;;;;;;11263:1175:0:o;4583:191::-;4657:16;4676:6;;-1:-1:-1;;;;;4693:17:0;;;-1:-1:-1;;;;;;4693:17:0;;;;;;4726:40;;4676:6;;;;;;;4726:40;;4657:16;4726:40;4646:128;4583:191;:::o;1595:98::-;1653:7;1680:5;1684:1;1680;:5;:::i;1701:98::-;1759:7;1786:5;1790:1;1786;:5;:::i;12446:343::-;12559:6;;12527:53;;12544:4;;-1:-1:-1;;;;;12559:6:0;12568:11;12527:8;:53::i;:::-;12591:6;;12732:18;;12591:190;;-1:-1:-1;;;12591:190:0;;12654:4;12591:190;;;9354:34:1;9404:18;;;9397:34;;;12591:6:0;9447:18:1;;;9440:34;;;9490:18;;;9483:34;-1:-1:-1;;;;;12732:18:0;;;9533:19:1;;;9526:44;12765:15:0;9586:19:1;;;9579:35;12591:6:0;;;:22;;12621:9;;9288:19:1;;12591:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12446:343;;:::o;1383:98::-;1441:7;1468:5;1472:1;1468;:5;:::i;10192:402::-;10337:14;;10412:13;;10402:4;10294;9026:18;;;:9;:18;;;;;;10444:8;;10294:4;;10327:24;;;;-1:-1:-1;10384:41:0;;10444:8;;10443:9;:24;;;;-1:-1:-1;10456:11:0;;-1:-1:-1;;;10456:11:0;;;;10443:24;:42;;;;-1:-1:-1;10471:14:0;;-1:-1:-1;;;10471:14:0;;;;10443:42;:54;;;;;10489:8;10443:54;:77;;;;-1:-1:-1;;;;;;10502:18:0;;;;;;:10;:18;;;;;;;;10501:19;10443:77;:98;;;;-1:-1:-1;10537:4:0;;-1:-1:-1;;;;;10524:17:0;;;10537:4;;10524:17;10443:98;:125;;;;;10558:10;;10545:9;;:23;;10443:125;:143;;;;;10572:14;10443:143;10436:150;10192:402;-1:-1:-1;;;;;;10192:402:0:o;13239:158::-;-1:-1:-1;;;;;13345:18:0;;13320:4;13345:18;;;:10;:18;;;;;;;;13344:19;:45;;;;-1:-1:-1;;;;;;;13368:21:0;;;;;:10;:21;;;;;;;;13367:22;;13239:158;-1:-1:-1;13239:158:0:o;13632:590::-;13718:7;13774:1;13741:30;13753:6;13761:9;13741:11;:30::i;:::-;:34;13738:462;;;13787:17;13807:59;13835:30;13847:6;13855:9;13835:11;:30::i;:::-;13818:11;;13807:23;;:6;;:10;:23::i;:59::-;13922:4;13904:24;;;;:9;:24;;;;;;13787:79;;-1:-1:-1;13904:39:0;;13787:79;13904:28;:39::i;:::-;13895:4;13877:24;;;;:9;:24;;;;;;;:66;;;;13959:42;;-1:-1:-1;;;;;13959:42:0;;;;;;;13991:9;1361:25:1;;1349:2;1334:18;;1215:177;13959:42:0;;;;;;;;14033:1;14015:7;;:20;:64;;;;;14072:7;;14039:30;14051:6;14059:9;14039:11;:30::i;:::-;:40;14015:64;14012:148;;;14081:77;14099:4;7758:42;14121:36;14149:7;;14121:23;14132:11;;14121:6;:10;;:23;;;;:::i;:36::-;14081:9;:77::i;:::-;14177:21;:6;14188:9;14177:10;:21::i;:::-;14170:28;;;;;13738:462;-1:-1:-1;14208:6:0;13632:590;-1:-1:-1;;13632:590:0:o;12797:434::-;12887:16;;;12901:1;12887:16;;;;;;;;12863:21;;12887:16;;;;;;;;;;-1:-1:-1;12887:16:0;12863:40;;12932:4;12914;12919:1;12914:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12914:23:0;;;:7;;;;;;;;;;:23;;;;12958:6;;:13;;;-1:-1:-1;;;12958:13:0;;;;:6;;;;;:11;;:13;;;;;12914:7;;12958:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12948:4;12953:1;12948:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12948:23:0;;;:7;;;;;;;;;:23;13014:6;;12982:53;;12999:4;;13014:6;13023:11;12982:8;:53::i;:::-;13046:6;;:177;;-1:-1:-1;;;13046:177:0;;-1:-1:-1;;;;;13046:6:0;;;;:57;;:177;;13118:11;;13046:6;;13160:4;;13187;;13207:15;;13046:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12852:379;12797:434;:::o;13405:219::-;13520:4;;13484:7;;-1:-1:-1;;;;;13520:4:0;;;13507:17;;;;13504:38;;-1:-1:-1;13533:7:0;;13526:14;;13504:38;13565:4;;-1:-1:-1;;;;;13565:4:0;;;13555:14;;;;13552:36;;-1:-1:-1;13578:8:0;;13571:15;;13552:36;-1:-1:-1;13605:11:0;;13405:219;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:248::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;-1:-1:-1;;2675:23:1;;;2745:2;2730:18;;;2717:32;;-1:-1:-1;2507:248:1:o;2760:316::-;2837:6;2845;2853;2906:2;2894:9;2885:7;2881:23;2877:32;2874:52;;;2922:1;2919;2912:12;2874:52;-1:-1:-1;;2945:23:1;;;3015:2;3000:18;;2987:32;;-1:-1:-1;3066:2:1;3051:18;;;3038:32;;2760:316;-1:-1:-1;2760:316:1:o;3081:388::-;3149:6;3157;3210:2;3198:9;3189:7;3185:23;3181:32;3178:52;;;3226:1;3223;3216:12;3178:52;3265:9;3252:23;3284:31;3309:5;3284:31;:::i;:::-;3334:5;-1:-1:-1;3391:2:1;3376:18;;3363:32;3404:33;3363:32;3404:33;:::i;:::-;3456:7;3446:17;;;3081:388;;;;;:::o;3474:356::-;3676:2;3658:21;;;3695:18;;;3688:30;3754:34;3749:2;3734:18;;3727:62;3821:2;3806:18;;3474:356::o;3835:127::-;3896:10;3891:3;3887:20;3884:1;3877:31;3927:4;3924:1;3917:15;3951:4;3948:1;3941:15;3967:168;4040:9;;;4071;;4088:15;;;4082:22;;4068:37;4058:71;;4109:18;;:::i;4140:217::-;4180:1;4206;4196:132;;4250:10;4245:3;4241:20;4238:1;4231:31;4285:4;4282:1;4275:15;4313:4;4310:1;4303:15;4196:132;-1:-1:-1;4342:9:1;;4140:217::o;4362:184::-;4432:6;4485:2;4473:9;4464:7;4460:23;4456:32;4453:52;;;4501:1;4498;4491:12;4453:52;-1:-1:-1;4524:16:1;;4362:184;-1:-1:-1;4362:184:1:o;4830:277::-;4897:6;4950:2;4938:9;4929:7;4925:23;4921:32;4918:52;;;4966:1;4963;4956:12;4918:52;4998:9;4992:16;5051:5;5044:13;5037:21;5030:5;5027:32;5017:60;;5073:1;5070;5063:12;5112:251;5182:6;5235:2;5223:9;5214:7;5210:23;5206:32;5203:52;;;5251:1;5248;5241:12;5203:52;5283:9;5277:16;5302:31;5327:5;5302:31;:::i;6892:128::-;6959:9;;;6980:11;;;6977:37;;;6994:18;;:::i;8178:125::-;8243:9;;;8264:10;;;8261:36;;;8277:18;;:::i;9625:306::-;9713:6;9721;9729;9782:2;9770:9;9761:7;9757:23;9753:32;9750:52;;;9798:1;9795;9788:12;9750:52;9827:9;9821:16;9811:26;;9877:2;9866:9;9862:18;9856:25;9846:35;;9921:2;9910:9;9906:18;9900:25;9890:35;;9625:306;;;;;:::o;10068:127::-;10129:10;10124:3;10120:20;10117:1;10110:31;10160:4;10157:1;10150:15;10184:4;10181:1;10174:15;10200:980;10462:4;10510:3;10499:9;10495:19;10541:6;10530:9;10523:25;10567:2;10605:6;10600:2;10589:9;10585:18;10578:34;10648:3;10643:2;10632:9;10628:18;10621:31;10672:6;10707;10701:13;10738:6;10730;10723:22;10776:3;10765:9;10761:19;10754:26;;10815:2;10807:6;10803:15;10789:29;;10836:1;10846:195;10860:6;10857:1;10854:13;10846:195;;;10925:13;;-1:-1:-1;;;;;10921:39:1;10909:52;;11016:15;;;;10981:12;;;;10957:1;10875:9;10846:195;;;-1:-1:-1;;;;;;;11097:32:1;;;;11092:2;11077:18;;11070:60;-1:-1:-1;;;11161:3:1;11146:19;11139:35;11058:3;10200:980;-1:-1:-1;;;10200:980:1:o

Swarm Source

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