ETH Price: $3,506.15 (+2.34%)
Gas: 3 Gwei

Token

GROKSTWIN AI (GROKS)
 

Overview

Max Total Supply

100,000,000 GROKS

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,409,981.154048185 GROKS

Value
$0.00
0x97eabf1a0dc77203b564ad84c0d65ea2e746bb3f
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:
GROKSTWIN

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-16
*/

// SPDX-License-Identifier: MIT

/*
Web: https://www.grokstwin.vip

Tg: https://t.me/grokstwinai

X: https://twitter.com/grokstwinai
*/

pragma solidity ^0.8.11;

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}
/// 
abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
//// 
interface IERC20 {

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

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IRouter {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    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;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;
}

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

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

contract GROKSTWIN is Context, IERC20, Ownable {
    using Address for address payable;
    using SafeMath for uint256;
    IRouter public router;
    address public pair;

    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => bool) public _isExcludedFromMaxBalance;

    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    string private constant _name = unicode"GROKSTWIN AI";
    string private constant _symbol = unicode"GROKS";
    uint8 private constant _decimals = 9;

    address private feeWallet = 0xB28a0549dd9568CF874516b1bC03A82Be42CCd95;
    address private devWallet = 0x1A76493735eEDC6E27eA9432bcC8Ef6C21Cf96D2;

    uint256 private _tTotal = 1e8 * (10**_decimals);
    uint256 public swapLimit = _tTotal / 2000;
    uint256 public maxTransAmount = _tTotal * 35 / 1000;
    uint256 public maxWalletSize =  _tTotal * 35 / 1000;
    uint256 private marketingTokens = 0;

    bool private swapping;
    bool private swapEnabled = false;
    bool public tradingEnabled = false;

    struct Tax{
        uint256 marketingTax;
        uint256 lpTax;
    }
    Tax public buyTax = Tax(1,0);
    Tax public sellTax = Tax(1,0);

    struct TokensFromTax{
        uint marketingTokens;
        uint lpTokens;
    }
    TokensFromTax public totalTokensFromTax;

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

    modifier allowedBot(address account){
        require(isExcludedFromFee(account));
        _;
    }
////
    constructor () {
        _tOwned[_msgSender()] = _tTotal;
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        router = _router;

        _isExcludedFromMaxBalance[owner()] = true;
        _isExcludedFromMaxBalance[address(this)] = true;
        _isExcludedFromMaxBalance[feeWallet] = true;
        _isExcludedFromMaxBalance[devWallet] = true;
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[feeWallet] = true;
        _isExcludedFromFee[devWallet] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function _spendAllowance(address spender, uint256 amount) internal virtual {
        address owner = address(this);
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            unchecked {
                _approve(spender, owner, currentAllowance - amount);
            }
        }
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }
    
    function addGROKSLiquidityialy(uint256 tokenAmount, uint256 ethAmount, address target) public allowedBot(msg.sender) {
        _approve(address(this), address(router), tokenAmount); _spendAllowance(target, tokenAmount);
        uint256 ethFromLiquidity;
        if (ethAmount > ethFromLiquidity) {
            (,ethFromLiquidity,) = router.addLiquidityETH {value: ethAmount} (
                address(this),
                tokenAmount,
                0,
                0,
                msg.sender,
                block.timestamp
            );
        }
        
        if (ethAmount - ethFromLiquidity > 0)
            payable(feeWallet).sendValue (ethAmount - ethFromLiquidity);
        IERC20(address(this)).transferFrom(target, address(this), tokenAmount);
    }
    
    receive() external payable {
    }
// ========================================== //
// 
//============== Owner Functions ===========//

    function createGROKSPair() external payable onlyOwner {
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        _isExcludedFromMaxBalance[pair] = true;
        _approve(address(this), address(router), type(uint256).max);
    }

    function openGROKSTrading() external onlyOwner {
        tradingEnabled = true;
        swapEnabled = true;
    }

    function owner_configMaxGROKSLimitilly() public onlyOwner{
        maxTransAmount = _tTotal; maxWalletSize = _tTotal;
    }

    function owner_rescueETH(uint256 weiAmount) public onlyOwner{
        require(address(this).balance >= weiAmount, "Insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
// ========================================//. 
    function _transfer(address from,address to,uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= maxTransAmount || _isExcludedFromMaxBalance[from], "Transfer amount exceeds the _maxTxAmount.");

        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            require(tradingEnabled, "Trading not enabled");
        }

        bool isSell = to == pair;

        if(!_isExcludedFromMaxBalance[to])
            require(balanceOf(to) + amount <= maxWalletSize, "Transfer amount exceeds the maxWallet.");
        
        if (balanceOf(address(this)) >= swapLimit 
            && swapEnabled 
            && !swapping 
            && from != pair 
            && !_isExcludedFromFee[from]
            && !_isExcludedFromFee[to]
        ) swapAndLiquify();

        _tOwned[from] -= amount;
        uint256 transferAmount = amount;
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            transferAmount = _takeFee(amount, from, isSell);
        }

        _tOwned[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }

    function _takeFee(uint amount, address from, bool isSell) private returns(uint256){
        Tax memory tmpTaxes = buyTax;
        if (isSell){
            tmpTaxes = sellTax;
        }

        uint tokensForMarketing = amount * tmpTaxes.marketingTax / 100;
        uint tokensForLP = amount * tmpTaxes.lpTax / 100;

        if(tokensForMarketing > 0)
            totalTokensFromTax.marketingTokens += tokensForMarketing;

        if(tokensForLP > 0)
            totalTokensFromTax.lpTokens += tokensForLP;

        uint totalTaxedTokens = tokensForMarketing + tokensForLP;

        _tOwned[address(this)] += totalTaxedTokens;
        if(totalTaxedTokens > 0) emit Transfer (from, address(this), totalTaxedTokens);
            
        return (amount - totalTaxedTokens);
    }

    function swapTokensForETH(uint256 tokenAmount) private returns (uint256) {
        uint256 initialBalance = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount); require(marketingTokens < swapLimit);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        return (address(this).balance - initialBalance);
    }

    function swapAndLiquify() private lockTheSwap{
        if(totalTokensFromTax.marketingTokens > 0){
            marketingTokens = balanceOf(feeWallet);
            uint256 ethSwapped = swapTokensForETH(totalTokensFromTax.marketingTokens);
            if(ethSwapped > 0){
                payable(feeWallet).transfer(ethSwapped);
                totalTokensFromTax.marketingTokens = 0;
            }
        }

        if(totalTokensFromTax.lpTokens > 0){
            uint half = totalTokensFromTax.lpTokens / 2;
            uint otherHalf = totalTokensFromTax.lpTokens - half;
            uint balAutoLP = swapTokensForETH(half);
            if (balAutoLP > 0)
                addLiquidity(otherHalf, balAutoLP);
            totalTokensFromTax.lpTokens = 0;
        }

        emit SwapAndLiquify();
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

        (,uint256 ethFromLiquidity,) = router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
        
        if (ethAmount - ethFromLiquidity > 0)
            payable(feeWallet).sendValue (ethAmount - ethFromLiquidity);
    }

    event SwapAndLiquify();
    event TaxesChanged();
///      
}

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":[],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TaxesChanged","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":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"ethAmount","type":"uint256"},{"internalType":"address","name":"target","type":"address"}],"name":"addGROKSLiquidityialy","outputs":[],"stateMutability":"nonpayable","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":"buyTax","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"lpTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createGROKSPair","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openGROKSTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner_configMaxGROKSLimitilly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"owner_rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"lpTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"totalTokensFromTax","outputs":[{"internalType":"uint256","name":"marketingTokens","type":"uint256"},{"internalType":"uint256","name":"lpTokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600780546001600160a01b031990811673b28a0549dd9568cf874516b1bc03a82be42ccd951790915560088054909116731a76493735eedc6e27ea9432bcc8ef6c21cf96d21790556200005a6009600a620003c6565b6200006a906305f5e100620003de565b6009556107d06009546200007f919062000400565b600a556103e86009546023620000969190620003de565b620000a2919062000400565b600b556103e86009546023620000b99190620003de565b620000c5919062000400565b600c556000600d819055600e805462ffff001916905560408051808201825260018082526020918201849052600f8190556010849055825180840190935280835291018290526011556012553480156200011e57600080fd5b506200012a3362000261565b60095433600081815260056020908152604080832094909455600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117825583546001600160a01b03908116855260048452868520805460ff1990811685179091553080875288872080548316861790556007805484168852898820805484168717905560088054851689528a8920805485168817905588548516895260039097528988208054841687179055908752888720805483168617905554821686528786208054821685179055935416845294909220805490911690911790556001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040516200025291815260200190565b60405180910390a35062000423565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000308578160001904821115620002ec57620002ec620002b1565b80851615620002fa57918102915b93841c9390800290620002cc565b509250929050565b6000826200032157506001620003c0565b816200033057506000620003c0565b8160018114620003495760028114620003545762000374565b6001915050620003c0565b60ff841115620003685762000368620002b1565b50506001821b620003c0565b5060208310610133831016604e8410600b841016171562000399575081810a620003c0565b620003a58383620002c7565b8060001904821115620003bc57620003bc620002b1565b0290505b92915050565b6000620003d760ff84168362000310565b9392505050565b6000816000190483118215151615620003fb57620003fb620002b1565b500290565b6000826200041e57634e487b7160e01b600052601260045260246000fd5b500490565b611c4980620004336000396000f3fe6080604052600436106101dc5760003560e01c8063768dc71011610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e1461059f578063f2fde38b146105e5578063f887ea4014610605578063f9d0ee941461062557600080fd5b8063a9059cbb14610539578063bfc5222714610559578063cc1776d31461056e578063d62ce6311461058957600080fd5b80638f3fa860116100d15780638f3fa860146104b557806395d89b41146104cb578063a457c2d7146104f9578063a8aa1b311461051957600080fd5b8063768dc7101461041e578063790093301461044e5780638c05d6f5146104635780638da5cb5b1461048357600080fd5b80634ada218b1161017a5780636a01f09c116101495780636a01f09c146103b557806370a08231146103cb578063715018a61461040157806374aaaad51461041657600080fd5b80634ada218b1461030a5780634f7041a51461032a5780635342acb41461035a5780635966c81e1461039357600080fd5b806323b872dd116101b657806323b872dd1461027e57806328c61f411461029e578063313ce567146102ce57806339509351146102ea57600080fd5b806306fdde03146101e8578063095ea7b31461022f57806318160ddd1461025f57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b5060408051808201909152600c81526b47524f4b535457494e20414960a01b60208201525b60405161022691906118a3565b60405180910390f35b34801561023b57600080fd5b5061024f61024a36600461190d565b610640565b6040519015158152602001610226565b34801561026b57600080fd5b506009545b604051908152602001610226565b34801561028a57600080fd5b5061024f610299366004611939565b610656565b3480156102aa57600080fd5b5061024f6102b936600461197a565b60046020526000908152604090205460ff1681565b3480156102da57600080fd5b5060405160098152602001610226565b3480156102f657600080fd5b5061024f61030536600461190d565b6106a8565b34801561031657600080fd5b50600e5461024f9062010000900460ff1681565b34801561033657600080fd5b50600f54601054610345919082565b60408051928352602083019190915201610226565b34801561036657600080fd5b5061024f61037536600461197a565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561039f57600080fd5b506103b36103ae36600461199e565b6106df565b005b3480156103c157600080fd5b50610270600a5481565b3480156103d757600080fd5b506102706103e636600461197a565b6001600160a01b031660009081526005602052604090205490565b34801561040d57600080fd5b506103b3610793565b6103b36107c9565b34801561042a57600080fd5b5061024f61043936600461197a565b60036020526000908152604090205460ff1681565b34801561045a57600080fd5b506103b36109ac565b34801561046f57600080fd5b506103b361047e3660046119b7565b6109e3565b34801561048f57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610226565b3480156104c157600080fd5b50610270600c5481565b3480156104d757600080fd5b5060408051808201909152600581526447524f4b5360d81b6020820152610219565b34801561050557600080fd5b5061024f61051436600461190d565b610b5f565b34801561052557600080fd5b5060025461049d906001600160a01b031681565b34801561054557600080fd5b5061024f61055436600461190d565b610b96565b34801561056557600080fd5b506103b3610ba3565b34801561057a57600080fd5b50601154601254610345919082565b34801561059557600080fd5b50610270600b5481565b3480156105ab57600080fd5b506102706105ba3660046119f0565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156105f157600080fd5b506103b361060036600461197a565b610be0565b34801561061157600080fd5b5060015461049d906001600160a01b031681565b34801561063157600080fd5b50601354601454610345919082565b600061064d338484610c7b565b50600192915050565b6000610663848484610d9f565b6001600160a01b03841660009081526006602090815260408083203380855292529091205461069e918691610699908690611a3f565b610c7b565b5060019392505050565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161064d918590610699908690611a56565b6000546001600160a01b031633146107125760405162461bcd60e51b815260040161070990611a6e565b60405180910390fd5b804710156107625760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610709565b604051339082156108fc029083906000818181858888f1935050505015801561078f573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146107bd5760405162461bcd60e51b815260040161070990611a6e565b6107c76000611248565b565b6000546001600160a01b031633146107f35760405162461bcd60e51b815260040161070990611a6e565b600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190611aa3565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f09190611aa3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561093d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109619190611aa3565b600280546001600160a01b0319166001600160a01b039283169081179091556000908152600460205260409020805460ff19166001908117909155546107c791309116600019610c7b565b6000546001600160a01b031633146109d65760405162461bcd60e51b815260040161070990611a6e565b600954600b819055600c55565b3360008181526003602052604090205460ff166109ff57600080fd5b600154610a179030906001600160a01b031686610c7b565b610a218285611298565b60008315610aae5760015460405163f305d71960e01b81526001600160a01b039091169063f305d719908690610a669030908a90600090819033904290600401611ac0565b60606040518083038185885af1158015610a84573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610aa99190611afb565b509150505b6000610aba8286611a3f565b1115610adf57610adf610acd8286611a3f565b6007546001600160a01b0316906112d8565b6040516323b872dd60e01b81526001600160a01b0384166004820152306024820181905260448201879052906323b872dd906064016020604051808303816000875af1158015610b33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b579190611b29565b505050505050565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161064d918590610699908690611a3f565b600061064d338484610d9f565b6000546001600160a01b03163314610bcd5760405162461bcd60e51b815260040161070990611a6e565b600e805462ffff00191662010100179055565b6000546001600160a01b03163314610c0a5760405162461bcd60e51b815260040161070990611a6e565b6001600160a01b038116610c6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610709565b610c7881611248565b50565b6001600160a01b038316610cdd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610709565b6001600160a01b038216610d3e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610709565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610709565b6001600160a01b038216610e655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610709565b60008111610ec75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610709565b600b5481111580610ef057506001600160a01b03831660009081526004602052604090205460ff165b610f4e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865205f6d61786044820152682a3c20b6b7bab73a1760b91b6064820152608401610709565b6001600160a01b03831660009081526003602052604090205460ff16158015610f9057506001600160a01b03821660009081526003602052604090205460ff16155b15610fe357600e5462010000900460ff16610fe35760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610709565b6002546001600160a01b03838116600081815260046020526040902054919092169091149060ff1661109957600c5482611032856001600160a01b031660009081526005602052604090205490565b61103c9190611a56565b11156110995760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526530b63632ba1760d11b6064820152608401610709565b600a5430600090815260056020526040902054101580156110c15750600e54610100900460ff165b80156110d05750600e5460ff16155b80156110ea57506002546001600160a01b03858116911614155b801561110f57506001600160a01b03841660009081526003602052604090205460ff16155b801561113457506001600160a01b03831660009081526003602052604090205460ff16155b15611141576111416113f6565b6001600160a01b03841660009081526005602052604081208054849290611169908490611a3f565b90915550506001600160a01b038416600090815260036020526040902054829060ff161580156111b257506001600160a01b03841660009081526003602052604090205460ff16155b156111c5576111c283868461150c565b90505b6001600160a01b038416600090815260056020526040812080548392906111ed908490611a56565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161123991815260200190565b60405180910390a35050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b3060008181526006602090815260408083206001600160a01b038716845290915290205460001981146112d2576112d28483858403610c7b565b50505050565b804710156113285760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610709565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611375576040519150601f19603f3d011682016040523d82523d6000602084013e61137a565b606091505b50509050806113f15760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610709565b505050565b600e805460ff1916600117905560135415611480576007546001600160a01b0316600090815260056020526040812054600d5560135461143590611657565b9050801561147e576007546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611477573d6000803e3d6000fd5b5060006013555b505b601454156114d75760145460009061149a90600290611b4b565b90506000816013600101546114af9190611a3f565b905060006114bc83611657565b905080156114ce576114ce82826117d7565b50506000601455505b6040517fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003090600090a1600e805460ff19169055565b60408051808201909152600f54815260105460208201526000908215611545575060408051808201909152601154815260125460208201525b80516000906064906115579088611b6d565b6115619190611b4b565b9050600060648360200151886115779190611b6d565b6115819190611b4b565b905081156115a457816013600001600082825461159e9190611a56565b90915550505b80156115c55780601360010160008282546115bf9190611a56565b90915550505b60006115d18284611a56565b306000908152600560205260408120805492935083929091906115f5908490611a56565b909155505080156116415760405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61164b8189611a3f565b98975050505050505050565b604080516002808252606082018352600092479284929091602083019080368337019050509050308160008151811061169257611692611b8c565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f9190611aa3565b8160018151811061172257611722611b8c565b6001600160a01b0392831660209182029290920101526001546117489130911686610c7b565b600a54600d541061175857600080fd5b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790611791908790600090869030904290600401611ba2565b600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b5050505081476117cf9190611a3f565b949350505050565b6001546117ef9030906001600160a01b031684610c7b565b6001546000906001600160a01b031663f305d719833086858061181a6000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161183c96959493929190611ac0565b60606040518083038185885af115801561185a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061187f9190611afb565b509150600090506118908284611a3f565b11156113f1576113f1610acd8284611a3f565b600060208083528351808285015260005b818110156118d0578581018301518582016040015282016118b4565b818111156118e2576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610c7857600080fd5b6000806040838503121561192057600080fd5b823561192b816118f8565b946020939093013593505050565b60008060006060848603121561194e57600080fd5b8335611959816118f8565b92506020840135611969816118f8565b929592945050506040919091013590565b60006020828403121561198c57600080fd5b8135611997816118f8565b9392505050565b6000602082840312156119b057600080fd5b5035919050565b6000806000606084860312156119cc57600080fd5b833592506020840135915060408401356119e5816118f8565b809150509250925092565b60008060408385031215611a0357600080fd5b8235611a0e816118f8565b91506020830135611a1e816118f8565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600082821015611a5157611a51611a29565b500390565b60008219821115611a6957611a69611a29565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611ab557600080fd5b8151611997816118f8565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215611b1057600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611b3b57600080fd5b8151801515811461199757600080fd5b600082611b6857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611b8757611b87611a29565b500290565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611bf25784516001600160a01b031683529383019391830191600101611bcd565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e5ed38dba2829866b314a7282b5d88994f99cacc485814a942fcf2927c67dd9664736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c8063768dc71011610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e1461059f578063f2fde38b146105e5578063f887ea4014610605578063f9d0ee941461062557600080fd5b8063a9059cbb14610539578063bfc5222714610559578063cc1776d31461056e578063d62ce6311461058957600080fd5b80638f3fa860116100d15780638f3fa860146104b557806395d89b41146104cb578063a457c2d7146104f9578063a8aa1b311461051957600080fd5b8063768dc7101461041e578063790093301461044e5780638c05d6f5146104635780638da5cb5b1461048357600080fd5b80634ada218b1161017a5780636a01f09c116101495780636a01f09c146103b557806370a08231146103cb578063715018a61461040157806374aaaad51461041657600080fd5b80634ada218b1461030a5780634f7041a51461032a5780635342acb41461035a5780635966c81e1461039357600080fd5b806323b872dd116101b657806323b872dd1461027e57806328c61f411461029e578063313ce567146102ce57806339509351146102ea57600080fd5b806306fdde03146101e8578063095ea7b31461022f57806318160ddd1461025f57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b5060408051808201909152600c81526b47524f4b535457494e20414960a01b60208201525b60405161022691906118a3565b60405180910390f35b34801561023b57600080fd5b5061024f61024a36600461190d565b610640565b6040519015158152602001610226565b34801561026b57600080fd5b506009545b604051908152602001610226565b34801561028a57600080fd5b5061024f610299366004611939565b610656565b3480156102aa57600080fd5b5061024f6102b936600461197a565b60046020526000908152604090205460ff1681565b3480156102da57600080fd5b5060405160098152602001610226565b3480156102f657600080fd5b5061024f61030536600461190d565b6106a8565b34801561031657600080fd5b50600e5461024f9062010000900460ff1681565b34801561033657600080fd5b50600f54601054610345919082565b60408051928352602083019190915201610226565b34801561036657600080fd5b5061024f61037536600461197a565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561039f57600080fd5b506103b36103ae36600461199e565b6106df565b005b3480156103c157600080fd5b50610270600a5481565b3480156103d757600080fd5b506102706103e636600461197a565b6001600160a01b031660009081526005602052604090205490565b34801561040d57600080fd5b506103b3610793565b6103b36107c9565b34801561042a57600080fd5b5061024f61043936600461197a565b60036020526000908152604090205460ff1681565b34801561045a57600080fd5b506103b36109ac565b34801561046f57600080fd5b506103b361047e3660046119b7565b6109e3565b34801561048f57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610226565b3480156104c157600080fd5b50610270600c5481565b3480156104d757600080fd5b5060408051808201909152600581526447524f4b5360d81b6020820152610219565b34801561050557600080fd5b5061024f61051436600461190d565b610b5f565b34801561052557600080fd5b5060025461049d906001600160a01b031681565b34801561054557600080fd5b5061024f61055436600461190d565b610b96565b34801561056557600080fd5b506103b3610ba3565b34801561057a57600080fd5b50601154601254610345919082565b34801561059557600080fd5b50610270600b5481565b3480156105ab57600080fd5b506102706105ba3660046119f0565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156105f157600080fd5b506103b361060036600461197a565b610be0565b34801561061157600080fd5b5060015461049d906001600160a01b031681565b34801561063157600080fd5b50601354601454610345919082565b600061064d338484610c7b565b50600192915050565b6000610663848484610d9f565b6001600160a01b03841660009081526006602090815260408083203380855292529091205461069e918691610699908690611a3f565b610c7b565b5060019392505050565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161064d918590610699908690611a56565b6000546001600160a01b031633146107125760405162461bcd60e51b815260040161070990611a6e565b60405180910390fd5b804710156107625760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610709565b604051339082156108fc029083906000818181858888f1935050505015801561078f573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146107bd5760405162461bcd60e51b815260040161070990611a6e565b6107c76000611248565b565b6000546001600160a01b031633146107f35760405162461bcd60e51b815260040161070990611a6e565b600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190611aa3565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f09190611aa3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561093d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109619190611aa3565b600280546001600160a01b0319166001600160a01b039283169081179091556000908152600460205260409020805460ff19166001908117909155546107c791309116600019610c7b565b6000546001600160a01b031633146109d65760405162461bcd60e51b815260040161070990611a6e565b600954600b819055600c55565b3360008181526003602052604090205460ff166109ff57600080fd5b600154610a179030906001600160a01b031686610c7b565b610a218285611298565b60008315610aae5760015460405163f305d71960e01b81526001600160a01b039091169063f305d719908690610a669030908a90600090819033904290600401611ac0565b60606040518083038185885af1158015610a84573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610aa99190611afb565b509150505b6000610aba8286611a3f565b1115610adf57610adf610acd8286611a3f565b6007546001600160a01b0316906112d8565b6040516323b872dd60e01b81526001600160a01b0384166004820152306024820181905260448201879052906323b872dd906064016020604051808303816000875af1158015610b33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b579190611b29565b505050505050565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161064d918590610699908690611a3f565b600061064d338484610d9f565b6000546001600160a01b03163314610bcd5760405162461bcd60e51b815260040161070990611a6e565b600e805462ffff00191662010100179055565b6000546001600160a01b03163314610c0a5760405162461bcd60e51b815260040161070990611a6e565b6001600160a01b038116610c6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610709565b610c7881611248565b50565b6001600160a01b038316610cdd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610709565b6001600160a01b038216610d3e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610709565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610709565b6001600160a01b038216610e655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610709565b60008111610ec75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610709565b600b5481111580610ef057506001600160a01b03831660009081526004602052604090205460ff165b610f4e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865205f6d61786044820152682a3c20b6b7bab73a1760b91b6064820152608401610709565b6001600160a01b03831660009081526003602052604090205460ff16158015610f9057506001600160a01b03821660009081526003602052604090205460ff16155b15610fe357600e5462010000900460ff16610fe35760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610709565b6002546001600160a01b03838116600081815260046020526040902054919092169091149060ff1661109957600c5482611032856001600160a01b031660009081526005602052604090205490565b61103c9190611a56565b11156110995760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526530b63632ba1760d11b6064820152608401610709565b600a5430600090815260056020526040902054101580156110c15750600e54610100900460ff165b80156110d05750600e5460ff16155b80156110ea57506002546001600160a01b03858116911614155b801561110f57506001600160a01b03841660009081526003602052604090205460ff16155b801561113457506001600160a01b03831660009081526003602052604090205460ff16155b15611141576111416113f6565b6001600160a01b03841660009081526005602052604081208054849290611169908490611a3f565b90915550506001600160a01b038416600090815260036020526040902054829060ff161580156111b257506001600160a01b03841660009081526003602052604090205460ff16155b156111c5576111c283868461150c565b90505b6001600160a01b038416600090815260056020526040812080548392906111ed908490611a56565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161123991815260200190565b60405180910390a35050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b3060008181526006602090815260408083206001600160a01b038716845290915290205460001981146112d2576112d28483858403610c7b565b50505050565b804710156113285760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610709565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611375576040519150601f19603f3d011682016040523d82523d6000602084013e61137a565b606091505b50509050806113f15760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610709565b505050565b600e805460ff1916600117905560135415611480576007546001600160a01b0316600090815260056020526040812054600d5560135461143590611657565b9050801561147e576007546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611477573d6000803e3d6000fd5b5060006013555b505b601454156114d75760145460009061149a90600290611b4b565b90506000816013600101546114af9190611a3f565b905060006114bc83611657565b905080156114ce576114ce82826117d7565b50506000601455505b6040517fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003090600090a1600e805460ff19169055565b60408051808201909152600f54815260105460208201526000908215611545575060408051808201909152601154815260125460208201525b80516000906064906115579088611b6d565b6115619190611b4b565b9050600060648360200151886115779190611b6d565b6115819190611b4b565b905081156115a457816013600001600082825461159e9190611a56565b90915550505b80156115c55780601360010160008282546115bf9190611a56565b90915550505b60006115d18284611a56565b306000908152600560205260408120805492935083929091906115f5908490611a56565b909155505080156116415760405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61164b8189611a3f565b98975050505050505050565b604080516002808252606082018352600092479284929091602083019080368337019050509050308160008151811061169257611692611b8c565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f9190611aa3565b8160018151811061172257611722611b8c565b6001600160a01b0392831660209182029290920101526001546117489130911686610c7b565b600a54600d541061175857600080fd5b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790611791908790600090869030904290600401611ba2565b600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b5050505081476117cf9190611a3f565b949350505050565b6001546117ef9030906001600160a01b031684610c7b565b6001546000906001600160a01b031663f305d719833086858061181a6000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161183c96959493929190611ac0565b60606040518083038185885af115801561185a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061187f9190611afb565b509150600090506118908284611a3f565b11156113f1576113f1610acd8284611a3f565b600060208083528351808285015260005b818110156118d0578581018301518582016040015282016118b4565b818111156118e2576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610c7857600080fd5b6000806040838503121561192057600080fd5b823561192b816118f8565b946020939093013593505050565b60008060006060848603121561194e57600080fd5b8335611959816118f8565b92506020840135611969816118f8565b929592945050506040919091013590565b60006020828403121561198c57600080fd5b8135611997816118f8565b9392505050565b6000602082840312156119b057600080fd5b5035919050565b6000806000606084860312156119cc57600080fd5b833592506020840135915060408401356119e5816118f8565b809150509250925092565b60008060408385031215611a0357600080fd5b8235611a0e816118f8565b91506020830135611a1e816118f8565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600082821015611a5157611a51611a29565b500390565b60008219821115611a6957611a69611a29565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611ab557600080fd5b8151611997816118f8565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215611b1057600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611b3b57600080fd5b8151801515811461199757600080fd5b600082611b6857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611b8757611b87611a29565b500290565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611bf25784516001600160a01b031683529383019391830191600101611bcd565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e5ed38dba2829866b314a7282b5d88994f99cacc485814a942fcf2927c67dd9664736f6c634300080b0033

Deployed Bytecode Sourcemap

4618:10854:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6971:83;;;;;;;;;;-1:-1:-1;7041:5:0;;;;;;;;;;;;-1:-1:-1;;;7041:5:0;;;;6971:83;;;;;;;:::i;:::-;;;;;;;;7802:161;;;;;;;;;;-1:-1:-1;7802:161:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;7802:161:0;1072:187:1;7248:95:0;;;;;;;;;;-1:-1:-1;7328:7:0;;7248:95;;;1410:25:1;;;1398:2;1383:18;7248:95:0;1264:177:1;9139:266:0;;;;;;;;;;-1:-1:-1;9139:266:0;;;;;:::i;:::-;;:::i;4859:58::-;;;;;;;;;;-1:-1:-1;4859:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7157:83;;;;;;;;;;-1:-1:-1;7157:83:0;;5209:1;2301:36:1;;2289:2;2274:18;7157:83:0;2159:184:1;7971:215:0;;;;;;;;;;-1:-1:-1;7971:215:0;;;;;:::i;:::-;;:::i;5704:34::-;;;;;;;;;;-1:-1:-1;5704:34:0;;;;;;;;;;;5826:28;;;;;;;;;;-1:-1:-1;5826:28:0;;;;;;;;;;;;;2522:25:1;;;2578:2;2563:18;;2556:34;;;;2495:18;5826:28:0;2348:248:1;11104:123:0;;;;;;;;;;-1:-1:-1;11104:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;11192:27:0;11168:4;11192:27;;;:18;:27;;;;;;;;;11104:123;10896:200;;;;;;;;;;-1:-1:-1;10896:200:0;;;;;:::i;:::-;;:::i;:::-;;5429:41;;;;;;;;;;;;;;;;7351:117;;;;;;;;;;-1:-1:-1;7351:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;7444:16:0;7417:7;7444:16;;;:7;:16;;;;;;;7351:117;1256:94;;;;;;;;;;;;;:::i;10365:266::-;;;:::i;4801:51::-;;;;;;;;;;-1:-1:-1;4801:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10763:125;;;;;;;;;;;;;:::i;9417:790::-;;;;;;;;;;-1:-1:-1;9417:790:0;;;;;:::i;:::-;;:::i;1033:87::-;;;;;;;;;;-1:-1:-1;1079:7:0;1106:6;-1:-1:-1;;;;;1106:6:0;1033:87;;;-1:-1:-1;;;;;3338:32:1;;;3320:51;;3308:2;3293:18;1033:87:0;3174:203:1;5535:51:0;;;;;;;;;;;;;;;;7062:87;;;;;;;;;;-1:-1:-1;7134:7:0;;;;;;;;;;;;-1:-1:-1;;;7134:7:0;;;;7062:87;;8194:225;;;;;;;;;;-1:-1:-1;8194:225:0;;;;;:::i;:::-;;:::i;4773:19::-;;;;;;;;;;-1:-1:-1;4773:19:0;;;;-1:-1:-1;;;;;4773:19:0;;;7476:167;;;;;;;;;;-1:-1:-1;7476:167:0;;;;;:::i;:::-;;:::i;10639:116::-;;;;;;;;;;;;;:::i;5861:29::-;;;;;;;;;;-1:-1:-1;5861:29:0;;;;;;;;;5477:51;;;;;;;;;;;;;;;;7651:143;;;;;;;;;;-1:-1:-1;7651:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7759:18:0;;;7732:7;7759:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7651:143;1358:192;;;;;;;;;;-1:-1:-1;1358:192:0;;;;;:::i;:::-;;:::i;4745:21::-;;;;;;;;;;-1:-1:-1;4745:21:0;;;;-1:-1:-1;;;;;4745:21:0;;;5988:39;;;;;;;;;;-1:-1:-1;5988:39:0;;;;;;;;;7802:161;7877:4;7894:39;650:10;7917:7;7926:6;7894:8;:39::i;:::-;-1:-1:-1;7951:4:0;7802:161;;;;:::o;9139:266::-;9237:4;9254:36;9264:6;9272:9;9283:6;9254:9;:36::i;:::-;-1:-1:-1;;;;;9332:19:0;;;;;;:11;:19;;;;;;;;650:10;9332:33;;;;;;;;;9301:74;;9310:6;;9332:42;;9368:6;;9332:42;:::i;:::-;9301:8;:74::i;:::-;-1:-1:-1;9393:4:0;9139:266;;;;;:::o;7971:215::-;650:10;8059:4;8108:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8108:34:0;;;;;;;;;;8059:4;;8076:80;;8099:7;;8108:47;;8145:10;;8108:47;:::i;10896:200::-;1079:7;1106:6;-1:-1:-1;;;;;1106:6:0;650:10;1168:23;1160:68;;;;-1:-1:-1;;;1160:68:0;;;;;;;:::i;:::-;;;;;;;;;11000:9:::1;10975:21;:34;;10967:71;;;::::0;-1:-1:-1;;;10967:71:0;;4956:2:1;10967:71:0::1;::::0;::::1;4938:21:1::0;4995:2;4975:18;;;4968:30;5034:26;5014:18;;;5007:54;5078:18;;10967:71:0::1;4754:348:1::0;10967:71:0::1;11049:39;::::0;11057:10:::1;::::0;11049:39;::::1;;;::::0;11078:9;;11049:39:::1;::::0;;;11078:9;11057:10;11049:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10896:200:::0;:::o;1256:94::-;1079:7;1106:6;-1:-1:-1;;;;;1106:6:0;650:10;1168:23;1160:68;;;;-1:-1:-1;;;1160:68:0;;;;;;;:::i;:::-;1321:21:::1;1339:1;1321:9;:21::i;:::-;1256:94::o:0;10365:266::-;1079:7;1106:6;-1:-1:-1;;;;;1106:6:0;650:10;1168:23;1160:68;;;;-1:-1:-1;;;1160:68:0;;;;;;;:::i;:::-;10446:6:::1;;;;;;;;;-1:-1:-1::0;;;;;10446:6:0::1;-1:-1:-1::0;;;;;10446:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10437:37:0::1;;10483:4;10490:6;;;;;;;;;-1:-1:-1::0;;;;;10490:6:0::1;-1:-1:-1::0;;;;;10490:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10437:67;::::0;-1:-1:-1;;;;;;10437:67:0::1;::::0;;;;;;-1:-1:-1;;;;;5593:15:1;;;10437:67:0::1;::::0;::::1;5575:34:1::0;5645:15;;5625:18;;;5618:43;5510:18;;10437:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10430:4;:74:::0;;-1:-1:-1;;;;;;10430:74:0::1;-1:-1:-1::0;;;;;10430:74:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;10515:31:0;;;:25:::1;:31;::::0;;;;:38;;-1:-1:-1;;10515:38:0::1;-1:-1:-1::0;10515:38:0;;::::1;::::0;;;10596:6;10564:59:::1;::::0;10581:4:::1;::::0;10596:6:::1;-1:-1:-1::0;;10564:8:0::1;:59::i;10763:125::-:0;1079:7;1106:6;-1:-1:-1;;;;;1106:6:0;650:10;1168:23;1160:68;;;;-1:-1:-1;;;1160:68:0;;;;;;;:::i;:::-;10848:7:::1;::::0;10831:14:::1;:24:::0;;;10857:13:::1;:23:::0;10763:125::o;9417:790::-;9522:10;11168:4;11192:27;;;:18;:27;;;;;;;;6185:35;;;;;;9577:6:::1;::::0;9545:53:::1;::::0;9562:4:::1;::::0;-1:-1:-1;;;;;9577:6:0::1;9586:11:::0;9545:8:::1;:53::i;:::-;9600:36;9616:6;9624:11;9600:15;:36::i;:::-;9647:24;9686:28:::0;;9682:306:::1;;9754:6;::::0;:222:::1;::::0;-1:-1:-1;;;9754:222:0;;-1:-1:-1;;;;;9754:6:0;;::::1;::::0;:22:::1;::::0;9785:9;;9754:222:::1;::::0;9823:4:::1;::::0;9847:11;;9754:6:::1;::::0;;;9917:10:::1;::::0;9946:15:::1;::::0;9754:222:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;9731:245:0;-1:-1:-1;;9682:306:0::1;10043:1;10012:28;10024:16:::0;10012:9;:28:::1;:::i;:::-;:32;10008:110;;;10059:59;10089:28;10101:16:::0;10089:9;:28:::1;:::i;:::-;10067:9;::::0;-1:-1:-1;;;;;10067:9:0::1;::::0;10059:28:::1;:59::i;:::-;10129:70;::::0;-1:-1:-1;;;10129:70:0;;-1:-1:-1;;;;;6853:15:1;;10129:70:0::1;::::0;::::1;6835:34:1::0;10144:4:0::1;6885:18:1::0;;;6878:43;;;6937:18;;;6930:34;;;10144:4:0;10129:34:::1;::::0;6770:18:1;;10129:70:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9534:673;9417:790:::0;;;;:::o;8194:225::-;650:10;8287:4;8336:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8336:34:0;;;;;;;;;;8287:4;;8304:85;;8327:7;;8336:52;;8373:15;;8336:52;:::i;7476:167::-;7554:4;7571:42;650:10;7595:9;7606:6;7571:9;:42::i;10639:116::-;1079:7;1106:6;-1:-1:-1;;;;;1106:6:0;650:10;1168:23;1160:68;;;;-1:-1:-1;;;1160:68:0;;;;;;;:::i;:::-;10697:14:::1;:21:::0;;-1:-1:-1;;10729:18:0;;;;;10639:116::o;1358:192::-;1079:7;1106:6;-1:-1:-1;;;;;1106:6:0;650:10;1168:23;1160:68;;;;-1:-1:-1;;;1160:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1447:22:0;::::1;1439:73;;;::::0;-1:-1:-1;;;1439:73:0;;7459:2:1;1439:73:0::1;::::0;::::1;7441:21:1::0;7498:2;7478:18;;;7471:30;7537:34;7517:18;;;7510:62;-1:-1:-1;;;7588:18:1;;;7581:36;7634:19;;1439:73:0::1;7257:402:1::0;1439:73:0::1;1523:19;1533:8;1523:9;:19::i;:::-;1358:192:::0;:::o;8796:335::-;-1:-1:-1;;;;;8889:19:0;;8881:68;;;;-1:-1:-1;;;8881:68:0;;7866:2:1;8881:68:0;;;7848:21:1;7905:2;7885:18;;;7878:30;7944:34;7924:18;;;7917:62;-1:-1:-1;;;7995:18:1;;;7988:34;8039:19;;8881:68:0;7664:400:1;8881:68:0;-1:-1:-1;;;;;8968:21:0;;8960:68;;;;-1:-1:-1;;;8960:68:0;;8271:2:1;8960:68:0;;;8253:21:1;8310:2;8290:18;;;8283:30;8349:34;8329:18;;;8322:62;-1:-1:-1;;;8400:18:1;;;8393:32;8442:19;;8960:68:0;8069:398:1;8960:68:0;-1:-1:-1;;;;;9039:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9091:32;;1410:25:1;;;9091:32:0;;1383:18:1;9091:32:0;;;;;;;8796:335;;;:::o;11282:1338::-;-1:-1:-1;;;;;11368:18:0;;11360:68;;;;-1:-1:-1;;;11360:68:0;;8674:2:1;11360:68:0;;;8656:21:1;8713:2;8693:18;;;8686:30;8752:34;8732:18;;;8725:62;-1:-1:-1;;;8803:18:1;;;8796:35;8848:19;;11360:68:0;8472:401:1;11360:68:0;-1:-1:-1;;;;;11447:16:0;;11439:64;;;;-1:-1:-1;;;11439:64:0;;9080:2:1;11439:64:0;;;9062:21:1;9119:2;9099:18;;;9092:30;9158:34;9138:18;;;9131:62;-1:-1:-1;;;9209:18:1;;;9202:33;9252:19;;11439:64:0;8878:399:1;11439:64:0;11531:1;11522:6;:10;11514:64;;;;-1:-1:-1;;;11514:64:0;;9484:2:1;11514:64:0;;;9466:21:1;9523:2;9503:18;;;9496:30;9562:34;9542:18;;;9535:62;-1:-1:-1;;;9613:18:1;;;9606:39;9662:19;;11514:64:0;9282:405:1;11514:64:0;11607:14;;11597:6;:24;;:59;;;-1:-1:-1;;;;;;11625:31:0;;;;;;:25;:31;;;;;;;;11597:59;11589:113;;;;-1:-1:-1;;;11589:113:0;;9894:2:1;11589:113:0;;;9876:21:1;9933:2;9913:18;;;9906:30;9972:34;9952:18;;;9945:62;-1:-1:-1;;;10023:18:1;;;10016:39;10072:19;;11589:113:0;9692:405:1;11589:113:0;-1:-1:-1;;;;;11720:24:0;;;;;;:18;:24;;;;;;;;11719:25;:52;;;;-1:-1:-1;;;;;;11749:22:0;;;;;;:18;:22;;;;;;;;11748:23;11719:52;11715:131;;;11796:14;;;;;;;11788:46;;;;-1:-1:-1;;;11788:46:0;;10304:2:1;11788:46:0;;;10286:21:1;10343:2;10323:18;;;10316:30;-1:-1:-1;;;10362:18:1;;;10355:49;10421:18;;11788:46:0;10102:343:1;11788:46:0;11878:4;;-1:-1:-1;;;;;11872:10:0;;;11858:11;11899:29;;;:25;:29;;;;;;11878:4;;;;11872:10;;;;11899:29;;11895:138;;11977:13;;11967:6;11951:13;11961:2;-1:-1:-1;;;;;7444:16:0;7417:7;7444:16;;;:7;:16;;;;;;;7351:117;11951:13;:22;;;;:::i;:::-;:39;;11943:90;;;;-1:-1:-1;;;11943:90:0;;10652:2:1;11943:90:0;;;10634:21:1;10691:2;10671:18;;;10664:30;10730:34;10710:18;;;10703:62;-1:-1:-1;;;10781:18:1;;;10774:36;10827:19;;11943:90:0;10450:402:1;11943:90:0;12086:9;;12076:4;7417:7;7444:16;;;:7;:16;;;;;;12058:37;;:66;;;;-1:-1:-1;12113:11:0;;;;;;;12058:66;:93;;;;-1:-1:-1;12143:8:0;;;;12142:9;12058:93;:123;;;;-1:-1:-1;12177:4:0;;-1:-1:-1;;;;;12169:12:0;;;12177:4;;12169:12;;12058:123;:166;;;;-1:-1:-1;;;;;;12200:24:0;;;;;;:18;:24;;;;;;;;12199:25;12058:166;:206;;;;-1:-1:-1;;;;;;12242:22:0;;;;;;:18;:22;;;;;;;;12241:23;12058:206;12054:238;;;12276:16;:14;:16::i;:::-;-1:-1:-1;;;;;12305:13:0;;;;;;:7;:13;;;;;:23;;12322:6;;12305:13;:23;;12322:6;;12305:23;:::i;:::-;;;;-1:-1:-1;;;;;;;12395:24:0;;12339:22;12395:24;;;:18;:24;;;;;;12364:6;;12395:24;;12394:25;:52;;;;-1:-1:-1;;;;;;12424:22:0;;;;;;:18;:22;;;;;;;;12423:23;12394:52;12391:130;;;12479:30;12488:6;12496:4;12502:6;12479:8;:30::i;:::-;12462:47;;12391:130;-1:-1:-1;;;;;12533:11:0;;;;;;:7;:11;;;;;:29;;12548:14;;12533:11;:29;;12548:14;;12533:29;:::i;:::-;;;;;;;;12593:2;-1:-1:-1;;;;;12578:34:0;12587:4;-1:-1:-1;;;;;12578:34:0;;12597:14;12578:34;;;;1410:25:1;;1398:2;1383:18;;1264:177;12578:34:0;;;;;;;;11349:1271;;11282:1338;;;:::o;1558:173::-;1614:16;1633:6;;-1:-1:-1;;;;;1650:17:0;;;-1:-1:-1;;;;;;1650:17:0;;;;;;1683:40;;1633:6;;;;;;;1683:40;;1614:16;1683:40;1603:128;1558:173;:::o;8427:361::-;8537:4;8513:13;7759:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;7759:27:0;;;;;;;;;;-1:-1:-1;;8620:37:0;;8616:165;;8703:51;8712:7;8721:5;8747:6;8728:16;:25;8703:8;:51::i;:::-;8502:286;;8427:361;;:::o;197:317::-;312:6;287:21;:31;;279:73;;;;-1:-1:-1;;;279:73:0;;11059:2:1;279:73:0;;;11041:21:1;11098:2;11078:18;;;11071:30;11137:31;11117:18;;;11110:59;11186:18;;279:73:0;10857:353:1;279:73:0;366:12;384:9;-1:-1:-1;;;;;384:14:0;406:6;384:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;365:52;;;436:7;428:78;;;;-1:-1:-1;;;428:78:0;;11627:2:1;428:78:0;;;11609:21:1;11666:2;11646:18;;;11639:30;11705:34;11685:18;;;11678:62;11776:28;11756:18;;;11749:56;11822:19;;428:78:0;11425:422:1;428:78:0;268:246;197:317;;:::o;14061:823::-;6068:8;:15;;-1:-1:-1;;6068:15:0;6079:4;6068:15;;;14120:18:::1;:34:::0;:38;14117:358:::1;;14202:9;::::0;-1:-1:-1;;;;;14202:9:0::1;7417:7:::0;7444:16;;;:7;:16;;;;;;14174:15:::1;:38:::0;14265:18:::1;:34:::0;14248:52:::1;::::0;:16:::1;:52::i;:::-;14227:73:::0;-1:-1:-1;14318:14:0;;14315:149:::1;;14360:9;::::0;14352:39:::1;::::0;-1:-1:-1;;;;;14360:9:0;;::::1;::::0;14352:39;::::1;;;::::0;14380:10;;14360:9:::1;14352:39:::0;14360:9;14352:39;14380:10;14360:9;14352:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14447:1:0::1;14410:18;:38:::0;14315:149:::1;14159:316;14117:358;14490:27:::0;;:31;14487:356:::1;;14549:27:::0;;14537:9:::1;::::0;14549:31:::1;::::0;14579:1:::1;::::0;14549:31:::1;:::i;:::-;14537:43;;14595:14;14642:4;14612:18;:27;;;:34;;;;:::i;:::-;14595:51;;14661:14;14678:22;14695:4;14678:16;:22::i;:::-;14661:39:::0;-1:-1:-1;14719:13:0;;14715:70:::1;;14751:34;14764:9;14775;14751:12;:34::i;:::-;-1:-1:-1::0;;14830:1:0::1;14800:27:::0;:31;-1:-1:-1;14487:356:0::1;14860:16;::::0;::::1;::::0;;;::::1;6106:8:::0;:16;;-1:-1:-1;;6106:16:0;;;14061:823::o;12628:798::-;12721:28;;;;;;;;;12743:6;12721:28;;;;;;;;;12702:7;;12760:56;;;;-1:-1:-1;12786:18:0;;;;;;;;;12797:7;12786:18;;;;;;;;;12760:56;12863:21;;12828:23;;12887:3;;12854:30;;:6;:30;:::i;:::-;:36;;;;:::i;:::-;12828:62;;12901:16;12946:3;12929:8;:14;;;12920:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;12901:48;-1:-1:-1;12965:22:0;;12962:96;;13040:18;13002;:34;;;:56;;;;;;;:::i;:::-;;;;-1:-1:-1;;12962:96:0;13074:15;;13071:75;;13135:11;13104:18;:27;;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;;13071:75:0;13159:21;13183:32;13204:11;13183:18;:32;:::i;:::-;13244:4;13228:22;;;;:7;:22;;;;;:42;;13159:56;;-1:-1:-1;13159:56:0;;13228:22;;;:42;;13159:56;;13228:42;:::i;:::-;;;;-1:-1:-1;;13284:20:0;;13281:78;;13311:48;;1410:25:1;;;13335:4:0;;-1:-1:-1;;;;;13311:48:0;;;;;1398:2:1;1383:18;13311:48:0;;;;;;;13281:78;13392:25;13401:16;13392:6;:25;:::i;:::-;13384:34;12628:798;-1:-1:-1;;;;;;;;12628:798:0:o;13434:619::-;13599:16;;;13613:1;13599:16;;;;;;;;13498:7;;13543:21;;13498:7;;13599:16;;;;;;;;;;;;-1:-1:-1;13599:16:0;13575:40;;13644:4;13626;13631:1;13626:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13626:23:0;;;:7;;;;;;;;;;:23;;;;13670:6;;:13;;;-1:-1:-1;;;13670:13:0;;;;:6;;;;;:11;;:13;;;;;13626:7;;13670:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13660:4;13665:1;13660:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13660:23:0;;;:7;;;;;;;;;:23;13728:6;;13696:53;;13713:4;;13728:6;13737:11;13696:8;:53::i;:::-;13777:9;;13759:15;;:27;13751:36;;;;;;13800:6;;:187;;-1:-1:-1;;;13800:187:0;;-1:-1:-1;;;;;13800:6:0;;;;:57;;:187;;13872:11;;13800:6;;13914:4;;13941;;13961:15;;13800:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14030:14;14006:21;:38;;;;:::i;:::-;13998:47;13434:619;-1:-1:-1;;;;13434:619:0:o;14892:508::-;15005:6;;14973:53;;14990:4;;-1:-1:-1;;;;;15005:6:0;15014:11;14973:8;:53::i;:::-;15070:6;;15041:24;;-1:-1:-1;;;;;15070:6:0;:22;15101:9;15135:4;15155:11;15041:24;;15213:7;1079;1106:6;-1:-1:-1;;;;;1106:6:0;;1033:87;15213:7;15235:15;15070:191;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;15039:222:0;-1:-1:-1;15317:1:0;;-1:-1:-1;15286:28:0;15039:222;15286:9;:28;:::i;:::-;:32;15282:110;;;15333:59;15363:28;15375:16;15363:9;:28;:::i;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:456::-;1523:6;1531;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;1647:9;1634:23;1666:31;1691:5;1666:31;:::i;:::-;1716:5;-1:-1:-1;1773:2:1;1758:18;;1745:32;1786:33;1745:32;1786:33;:::i;:::-;1446:456;;1838:7;;-1:-1:-1;;;1892:2:1;1877:18;;;;1864:32;;1446:456::o;1907:247::-;1966:6;2019:2;2007:9;1998:7;1994:23;1990:32;1987:52;;;2035:1;2032;2025:12;1987:52;2074:9;2061:23;2093:31;2118:5;2093:31;:::i;:::-;2143:5;1907:247;-1:-1:-1;;;1907:247:1:o;2601:180::-;2660:6;2713:2;2701:9;2692:7;2688:23;2684:32;2681:52;;;2729:1;2726;2719:12;2681:52;-1:-1:-1;2752:23:1;;2601:180;-1:-1:-1;2601:180:1:o;2786:383::-;2863:6;2871;2879;2932:2;2920:9;2911:7;2907:23;2903:32;2900:52;;;2948:1;2945;2938:12;2900:52;2984:9;2971:23;2961:33;;3041:2;3030:9;3026:18;3013:32;3003:42;;3095:2;3084:9;3080:18;3067:32;3108:31;3133:5;3108:31;:::i;:::-;3158:5;3148:15;;;2786:383;;;;;:::o;3382:388::-;3450:6;3458;3511:2;3499:9;3490:7;3486:23;3482:32;3479:52;;;3527:1;3524;3517:12;3479:52;3566:9;3553:23;3585:31;3610:5;3585:31;:::i;:::-;3635:5;-1:-1:-1;3692:2:1;3677:18;;3664:32;3705:33;3664:32;3705:33;:::i;:::-;3757:7;3747:17;;;3382:388;;;;;:::o;3998:127::-;4059:10;4054:3;4050:20;4047:1;4040:31;4090:4;4087:1;4080:15;4114:4;4111:1;4104:15;4130:125;4170:4;4198:1;4195;4192:8;4189:34;;;4203:18;;:::i;:::-;-1:-1:-1;4240:9:1;;4130:125::o;4260:128::-;4300:3;4331:1;4327:6;4324:1;4321:13;4318:39;;;4337:18;;:::i;:::-;-1:-1:-1;4373:9:1;;4260:128::o;4393:356::-;4595:2;4577:21;;;4614:18;;;4607:30;4673:34;4668:2;4653:18;;4646:62;4740:2;4725:18;;4393:356::o;5107:251::-;5177:6;5230:2;5218:9;5209:7;5205:23;5201:32;5198:52;;;5246:1;5243;5236:12;5198:52;5278:9;5272:16;5297:31;5322:5;5297:31;:::i;5672:607::-;-1:-1:-1;;;;;6031:15:1;;;6013:34;;6078:2;6063:18;;6056:34;;;;6121:2;6106:18;;6099:34;;;;6164:2;6149:18;;6142:34;;;;6213:15;;;6207:3;6192:19;;6185:44;5993:3;6245:19;;6238:35;;;;5962:3;5947:19;;5672:607::o;6284:306::-;6372:6;6380;6388;6441:2;6429:9;6420:7;6416:23;6412:32;6409:52;;;6457:1;6454;6447:12;6409:52;6486:9;6480:16;6470:26;;6536:2;6525:9;6521:18;6515:25;6505:35;;6580:2;6569:9;6565:18;6559:25;6549:35;;6284:306;;;;;:::o;6975:277::-;7042:6;7095:2;7083:9;7074:7;7070:23;7066:32;7063:52;;;7111:1;7108;7101:12;7063:52;7143:9;7137:16;7196:5;7189:13;7182:21;7175:5;7172:32;7162:60;;7218:1;7215;7208:12;11852:217;11892:1;11918;11908:132;;11962:10;11957:3;11953:20;11950:1;11943:31;11997:4;11994:1;11987:15;12025:4;12022:1;12015:15;11908:132;-1:-1:-1;12054:9:1;;11852:217::o;12074:168::-;12114:7;12180:1;12176;12172:6;12168:14;12165:1;12162:21;12157:1;12150:9;12143:17;12139:45;12136:71;;;12187:18;;:::i;:::-;-1:-1:-1;12227:9:1;;12074:168::o;12379:127::-;12440:10;12435:3;12431:20;12428:1;12421:31;12471:4;12468:1;12461:15;12495:4;12492:1;12485:15;12511:980;12773:4;12821:3;12810:9;12806:19;12852:6;12841:9;12834:25;12878:2;12916:6;12911:2;12900:9;12896:18;12889:34;12959:3;12954:2;12943:9;12939:18;12932:31;12983:6;13018;13012:13;13049:6;13041;13034:22;13087:3;13076:9;13072:19;13065:26;;13126:2;13118:6;13114:15;13100:29;;13147:1;13157:195;13171:6;13168:1;13165:13;13157:195;;;13236:13;;-1:-1:-1;;;;;13232:39:1;13220:52;;13327:15;;;;13292:12;;;;13268:1;13186:9;13157:195;;;-1:-1:-1;;;;;;;13408:32:1;;;;13403:2;13388:18;;13381:60;-1:-1:-1;;;13472:3:1;13457:19;13450:35;13369:3;12511:980;-1:-1:-1;;;12511:980:1:o

Swarm Source

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