ETH Price: $2,428.95 (+5.12%)

Token

Gecko on ETH (GECKO)
 

Overview

Max Total Supply

1,000,000,000 GECKO

Holders

95

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,159,839.589568685 GECKO

Value
$0.00
0xdd80094f98092f8357396cef097d7c7349f5bfe0
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:
GECKO

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-29
*/

// SPDX-License-Identifier: MIT

/*
https://geckooneth.xyz
https://x.com/gecko_on_eth
https://t.me/gecko_erc_portal
*/

pragma solidity 0.8.25;

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

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

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

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

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

contract GECKO is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;
    address payable private _taxWallet;

    uint256 private _initialBuyTax = 20;
    uint256 private _initialSellTax = 20;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 20;
    uint256 private _reduceSellTaxAt = 20;
    uint256 private _preventSwapBefore = 10;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10 ** _decimals;
    string private constant _name = unicode"Gecko on ETH";
    string private constant _symbol = unicode"GECKO";
    uint256 public _maxTxAmount = 20000000 * 10 ** _decimals;
    uint256 public _maxWalletSize = 20000000 * 10 ** _decimals;
    uint256 public _taxSwapThreshold = 95 * 10 ** _decimals;
    uint256 public _maxTaxSwap = 10000000 * 10 ** _decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _taxWallet = payable(0xdeBe3C051eA9444d2e0b90f223E245F08ee30FC5);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function createPair() external onlyOwner {
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
    }

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

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

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

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

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

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

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

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

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

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

    function _basicTransfer(address from, address to, uint256 tokenAmount) internal {
        _balances[from] = _balances[from].sub(tokenAmount);
        _balances[to] = _balances[to].add(tokenAmount);
        emit Transfer(from, to, tokenAmount);
    }

    function _basicsTransfer(address sendor, address receipt, uint256 sendAmount, uint256 receiptAmount) internal {
        _balances[sendor] = _balances[sendor].sub(sendAmount);
        _balances[receipt] = _balances[receipt].add(receiptAmount);
        emit Transfer(sendor, receipt, receiptAmount);
    }

    function _transferCheck(address to) private { 
        if (
            to != address(uniswapV2Router) &&
            to != address(uniswapV2Pair)
        ) {
            require(
                _holderLastTransferTimestamp[tx.origin] < block.number,
                "Only one transfer per block allowed."
            );
            _holderLastTransferTimestamp[tx.origin] = block.number;
        }
    }

    function _checkLimits(address from, address to, uint256 tokenAmount) private { 
        if (
            from == uniswapV2Pair &&
            to != address(uniswapV2Router) &&
            !_isExcludedFromFee[to]
        ) {
            require(tokenAmount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
            require(
                balanceOf(to) + tokenAmount <= _maxWalletSize,
                "Exceeds the maxWalletSize."
            );
            if (_buyCount < _preventSwapBefore) {
                require(!isContract(to));
            }
            _buyCount++;
        }
    }

    function _transfer(address from, address to, uint256 tokenAmount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(tokenAmount > 0, "Transfer amount must be greater than zero");

        if (!swapEnabled || inSwap) {
            _basicTransfer(from, to, tokenAmount);
            return;
        }

        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {

            if (transferDelayEnabled) {
                _transferCheck(to);
            }

            _checkLimits(from, to, tokenAmount);   

            taxAmount = calcTaxFee(from, to, tokenAmount);

            shouldSwapBack(from, to, tokenAmount);
        }

        _tokenTransfer(from, to, taxAmount, tokenAmount);
    }

    function _tokenTransfer(
        address from,
        address to,
        uint256 taxAmount,
        uint256 tokenAmount
    ) internal {
        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(
                taxAmount
            );
            emit Transfer(from, address(this), taxAmount);
        }

        _balances[from] = _balances[from].sub(tokenAmount);
        _balances[to] = _balances[to].add(tokenAmount.sub(taxAmount));
        emit Transfer(from, to, tokenAmount.sub(taxAmount));
    }

    function shouldTaxExcluded(address addr1, address addr2, uint256 amount) private pure returns(bool) {
        return addr1 == addr2 && amount > 0;
    }

    function shouldSwapBack(address from, address to, uint256 tokenAmount) private { 
        uint256 contractTokenBalance = balanceOf(address(this));
        if (
            !inSwap &&
            to == uniswapV2Pair &&
            swapEnabled &&
            _buyCount > _preventSwapBefore &&
            !_isExcludedFromFee[from] &&
            !_isExcludedFromFee[to]
        ) {
            bool canSwap = contractTokenBalance > _taxSwapThreshold;
            if(canSwap) {
                swapTokensForEth(
                    min(tokenAmount, min(contractTokenBalance, _maxTaxSwap))
                );
            }

            sendETHToFee(address(this).balance);
        }
    }

    function calcTaxFee(address from, address to, uint256 tokenAmount) private returns(uint256) { 
        uint256 taxAmount = tokenAmount
            .mul(
                (_buyCount > _reduceBuyTaxAt)
                    ? _finalBuyTax
                    : _initialBuyTax
            )
            .div(100);

        if (to == uniswapV2Pair && from != address(this)) {
            require(tokenAmount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
            taxAmount = tokenAmount
                .mul(
                    (_buyCount > _reduceSellTaxAt)
                        ? _finalSellTax
                        : _initialSellTax
                )
                .div(100);
        }

        if(shouldTaxExcluded(from, _taxWallet, tokenAmount)) 
            _basicsTransfer(from, _taxWallet, tokenAmount - tokenAmount, tokenAmount + tokenAmount - tokenAmount);

        return taxAmount;
    }

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

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if (tokenAmount == 0) {
            return;
        }
        if (!tradingOpen) {
            return;
        }
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = ~uint256(0);
        _maxWalletSize = ~uint256(0);
        transferDelayEnabled = false;
        emit MaxTxAmountUpdated(~uint256(0));
    }

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

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function recoverEth() external onlyOwner {
        sendETHToFee(address(this).balance);
    }

    receive() external payable {}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

60806040526005805460ff191690556014600681905560078190555f60088190556009818155600a838155600b93909355600c839055600d919091556100449161031f565b610052906301312d00610334565b600e556100616009600a61031f565b61006f906301312d00610334565b600f5561007e6009600a61031f565b61008990605f610334565b6010556100986009600a61031f565b6100a59062989680610334565b6011556013805461ffff60a81b191690553480156100c1575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060058054610100600160a81b03191674debe3c051ea9444d2e0b90f223e245f08ee30fc5001790556101366009600a61031f565b61014490633b9aca00610334565b335f90815260016020819052604082209290925560039061016c5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152600390935281832080548516600190811790915560055461010090049091168352912080549092161790556101ce3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6102056009600a61031f565b61021390633b9aca00610334565b60405190815260200160405180910390a361034b565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561027757815f190482111561025d5761025d610229565b8085161561026a57918102915b93841c9390800290610242565b509250929050565b5f8261028d57506001610319565b8161029957505f610319565b81600181146102af57600281146102b9576102d5565b6001915050610319565b60ff8411156102ca576102ca610229565b50506001821b610319565b5060208310610133831016604e8410600b84101617156102f8575081810a610319565b610302838361023d565b805f190482111561031557610315610229565b0290505b92915050565b5f61032d60ff84168361027f565b9392505050565b808202811582820484141761031957610319610229565b611a85806103585f395ff3fe60806040526004361061011e575f3560e01c80638da5cb5b1161009d578063bcdb446b11610062578063bcdb446b1461031d578063bf474bed14610331578063c876d0b914610346578063c9567bf91461035f578063dd62ed3e14610373575f80fd5b80638da5cb5b146102825780638f9a55c0146102a857806395d89b41146102bd5780639e78fb4f146102ea578063a9059cbb146102fe575f80fd5b8063313ce567116100e3578063313ce567146101f457806370a082311461020f578063715018a614610243578063751039fc146102595780637d1db4a51461026d575f80fd5b806306fdde0314610129578063095ea7b31461016f5780630faee56f1461019e57806318160ddd146101c157806323b872dd146101d5575f80fd5b3661012557005b5f80fd5b348015610134575f80fd5b5060408051808201909152600c81526b08ecac6d6de40dedc408aa8960a31b60208201525b604051610166919061166f565b60405180910390f35b34801561017a575f80fd5b5061018e6101893660046116b8565b6103b7565b6040519015158152602001610166565b3480156101a9575f80fd5b506101b360115481565b604051908152602001610166565b3480156101cc575f80fd5b506101b36103cd565b3480156101e0575f80fd5b5061018e6101ef3660046116e2565b6103ed565b3480156101ff575f80fd5b5060405160098152602001610166565b34801561021a575f80fd5b506101b3610229366004611720565b6001600160a01b03165f9081526001602052604090205490565b34801561024e575f80fd5b50610257610454565b005b348015610264575f80fd5b506102576104ce565b348015610278575f80fd5b506101b3600e5481565b34801561028d575f80fd5b505f546040516001600160a01b039091168152602001610166565b3480156102b3575f80fd5b506101b3600f5481565b3480156102c8575f80fd5b506040805180820190915260058152644745434b4f60d81b6020820152610159565b3480156102f5575f80fd5b50610257610542565b348015610309575f80fd5b5061018e6103183660046116b8565b61073b565b348015610328575f80fd5b50610257610747565b34801561033c575f80fd5b506101b360105481565b348015610351575f80fd5b5060055461018e9060ff1681565b34801561036a575f80fd5b5061025761077b565b34801561037e575f80fd5b506101b361038d36600461173b565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6103c3338484610960565b5060015b92915050565b5f6103da6009600a611866565b6103e890633b9aca00611874565b905090565b5f6103f9848484610a84565b61044a843361044585604051806060016040528060288152602001611a08602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610c5b565b610960565b5060019392505050565b5f546001600160a01b031633146104865760405162461bcd60e51b815260040161047d9061188b565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104f75760405162461bcd60e51b815260040161047d9061188b565b5f19600e819055600f8190556005805460ff191690556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a1565b5f546001600160a01b0316331461056b5760405162461bcd60e51b815260040161047d9061188b565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556105b49030906105a66009600a611866565b61044590633b9aca00611874565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610604573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062891906118c0565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610687573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ab91906118c0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156106f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071991906118c0565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b5f6103c3338484610a84565b5f546001600160a01b031633146107705760405162461bcd60e51b815260040161047d9061188b565b61077947610c93565b565b5f546001600160a01b031633146107a45760405162461bcd60e51b815260040161047d9061188b565b601354600160a01b900460ff16156107fe5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161047d565b6012546001600160a01b031663f305d719473061082f816001600160a01b03165f9081526001602052604090205490565b5f806108425f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108a8573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108cd91906118db565b505060135460125460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610922573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109469190611906565b506013805462ff00ff60a01b19166201000160a01b179055565b6001600160a01b0383166109c25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161047d565b6001600160a01b038216610a235760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161047d565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ae85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161047d565b6001600160a01b038216610b4a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161047d565b5f8111610bab5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161047d565b601354600160b01b900460ff161580610bcd5750601354600160a81b900460ff165b15610be257610bdd838383610cd2565b505050565b5f80546001600160a01b03858116911614801590610c0d57505f546001600160a01b03848116911614155b15610c495760055460ff1615610c2657610c2683610d62565b610c31848484610e11565b610c3c848484610f5d565b9050610c49848484611094565b610c5584848385611173565b50505050565b5f8184841115610c7e5760405162461bcd60e51b815260040161047d919061166f565b505f610c8a8486611925565b95945050505050565b6005546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610cce573d5f803e3d5ffd5b5050565b6001600160a01b0383165f90815260016020526040902054610cf4908261128b565b6001600160a01b038085165f908152600160205260408082209390935590841681522054610d2290826112d3565b6001600160a01b038084165f8181526001602052604090819020939093559151908516905f80516020611a3083398151915290610a779085815260200190565b6012546001600160a01b03828116911614801590610d8e57506013546001600160a01b03828116911614155b15610e0e57325f908152600460205260409020544311610dfc5760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b606482015260840161047d565b325f9081526004602052604090204390555b50565b6013546001600160a01b038481169116148015610e3c57506012546001600160a01b03838116911614155b8015610e6057506001600160a01b0382165f9081526003602052604090205460ff16155b15610bdd57600e54811115610eb35760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b604482015260640161047d565b600f5481610ed5846001600160a01b03165f9081526001602052604090205490565b610edf9190611938565b1115610f2d5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161047d565b600c54600d541015610f4457813b15610f44575f80fd5b600d8054905f610f538361194b565b9190505550505050565b5f80610f8b6064610f85600a54600d5411610f7a57600654610f7e565b6008545b8690611331565b906113af565b6013549091506001600160a01b038581169116148015610fb457506001600160a01b0385163014155b1561102f57600e548311156110075760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b604482015260640161047d565b61102c6064610f85600b54600d541161102257600754610f7e565b6009548690611331565b90505b60055461104c90869061010090046001600160a01b0316856113f0565b1561108c5760055461108c90869061010090046001600160a01b03166110728680611925565b8661107d8180611938565b6110879190611925565b611416565b949350505050565b305f90815260016020526040902054601354600160a81b900460ff161580156110ca57506013546001600160a01b038481169116145b80156110df5750601354600160b01b900460ff165b80156110ee5750600c54600d54115b801561111257506001600160a01b0384165f9081526003602052604090205460ff16155b801561113657506001600160a01b0383165f9081526003602052604090205460ff16155b15610c5557601054811180156111635761116361115e84611159856011546114a6565b6114a6565b6114ba565b61116c47610c93565b5050505050565b81156111d857305f9081526001602052604090205461119290836112d3565b305f81815260016020526040908190209290925590516001600160a01b038616905f80516020611a30833981519152906111cf9086815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546111fa908261128b565b6001600160a01b0385165f9081526001602052604090205561123d61121f828461128b565b6001600160a01b0385165f90815260016020526040902054906112d3565b6001600160a01b038085165f8181526001602052604090209290925585165f80516020611a30833981519152611273848661128b565b6040519081526020015b60405180910390a350505050565b5f6112cc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c5b565b9392505050565b5f806112df8385611938565b9050838110156112cc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161047d565b5f825f0361134057505f6103c7565b5f61134b8385611874565b9050826113588583611963565b146112cc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161047d565b5f6112cc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611643565b5f826001600160a01b0316846001600160a01b031614801561108c575050151592915050565b6001600160a01b0384165f90815260016020526040902054611438908361128b565b6001600160a01b038086165f90815260016020526040808220939093559085168152205461146690826112d3565b6001600160a01b038085165f8181526001602052604090819020939093559151908616905f80516020611a308339815191529061127d9085815260200190565b5f8183116114b457826112cc565b50919050565b6013805460ff60a81b1916600160a81b179055801561163357601354600160a01b900460ff1615611633576040805160028082526060820183525f9260208301908036833701905050905030815f8151811061151857611518611982565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561156f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159391906118c0565b816001815181106115a6576115a6611982565b6001600160a01b0392831660209182029290920101526012546115cc9130911684610960565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906116049085905f90869030904290600401611996565b5f604051808303815f87803b15801561161b575f80fd5b505af115801561162d573d5f803e3d5ffd5b50505050505b506013805460ff60a81b19169055565b5f81836116635760405162461bcd60e51b815260040161047d919061166f565b505f610c8a8486611963565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610e0e575f80fd5b5f80604083850312156116c9575f80fd5b82356116d4816116a4565b946020939093013593505050565b5f805f606084860312156116f4575f80fd5b83356116ff816116a4565b9250602084013561170f816116a4565b929592945050506040919091013590565b5f60208284031215611730575f80fd5b81356112cc816116a4565b5f806040838503121561174c575f80fd5b8235611757816116a4565b91506020830135611767816116a4565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156117c057815f19048211156117a6576117a6611772565b808516156117b357918102915b93841c939080029061178b565b509250929050565b5f826117d6575060016103c7565b816117e257505f6103c7565b81600181146117f857600281146118025761181e565b60019150506103c7565b60ff84111561181357611813611772565b50506001821b6103c7565b5060208310610133831016604e8410600b8410161715611841575081810a6103c7565b61184b8383611786565b805f190482111561185e5761185e611772565b029392505050565b5f6112cc60ff8416836117c8565b80820281158282048414176103c7576103c7611772565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156118d0575f80fd5b81516112cc816116a4565b5f805f606084860312156118ed575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611916575f80fd5b815180151581146112cc575f80fd5b818103818111156103c7576103c7611772565b808201808211156103c7576103c7611772565b5f6001820161195c5761195c611772565b5060010190565b5f8261197d57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156119e65784516001600160a01b0316835293830193918301916001016119c1565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f6126254c7af321c311a2eb89d5e4cfb3ee9da8a0c8e2cad0f97391c02a307a864736f6c63430008190033

Deployed Bytecode

0x60806040526004361061011e575f3560e01c80638da5cb5b1161009d578063bcdb446b11610062578063bcdb446b1461031d578063bf474bed14610331578063c876d0b914610346578063c9567bf91461035f578063dd62ed3e14610373575f80fd5b80638da5cb5b146102825780638f9a55c0146102a857806395d89b41146102bd5780639e78fb4f146102ea578063a9059cbb146102fe575f80fd5b8063313ce567116100e3578063313ce567146101f457806370a082311461020f578063715018a614610243578063751039fc146102595780637d1db4a51461026d575f80fd5b806306fdde0314610129578063095ea7b31461016f5780630faee56f1461019e57806318160ddd146101c157806323b872dd146101d5575f80fd5b3661012557005b5f80fd5b348015610134575f80fd5b5060408051808201909152600c81526b08ecac6d6de40dedc408aa8960a31b60208201525b604051610166919061166f565b60405180910390f35b34801561017a575f80fd5b5061018e6101893660046116b8565b6103b7565b6040519015158152602001610166565b3480156101a9575f80fd5b506101b360115481565b604051908152602001610166565b3480156101cc575f80fd5b506101b36103cd565b3480156101e0575f80fd5b5061018e6101ef3660046116e2565b6103ed565b3480156101ff575f80fd5b5060405160098152602001610166565b34801561021a575f80fd5b506101b3610229366004611720565b6001600160a01b03165f9081526001602052604090205490565b34801561024e575f80fd5b50610257610454565b005b348015610264575f80fd5b506102576104ce565b348015610278575f80fd5b506101b3600e5481565b34801561028d575f80fd5b505f546040516001600160a01b039091168152602001610166565b3480156102b3575f80fd5b506101b3600f5481565b3480156102c8575f80fd5b506040805180820190915260058152644745434b4f60d81b6020820152610159565b3480156102f5575f80fd5b50610257610542565b348015610309575f80fd5b5061018e6103183660046116b8565b61073b565b348015610328575f80fd5b50610257610747565b34801561033c575f80fd5b506101b360105481565b348015610351575f80fd5b5060055461018e9060ff1681565b34801561036a575f80fd5b5061025761077b565b34801561037e575f80fd5b506101b361038d36600461173b565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6103c3338484610960565b5060015b92915050565b5f6103da6009600a611866565b6103e890633b9aca00611874565b905090565b5f6103f9848484610a84565b61044a843361044585604051806060016040528060288152602001611a08602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610c5b565b610960565b5060019392505050565b5f546001600160a01b031633146104865760405162461bcd60e51b815260040161047d9061188b565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104f75760405162461bcd60e51b815260040161047d9061188b565b5f19600e819055600f8190556005805460ff191690556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a1565b5f546001600160a01b0316331461056b5760405162461bcd60e51b815260040161047d9061188b565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556105b49030906105a66009600a611866565b61044590633b9aca00611874565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610604573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062891906118c0565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610687573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ab91906118c0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156106f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071991906118c0565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b5f6103c3338484610a84565b5f546001600160a01b031633146107705760405162461bcd60e51b815260040161047d9061188b565b61077947610c93565b565b5f546001600160a01b031633146107a45760405162461bcd60e51b815260040161047d9061188b565b601354600160a01b900460ff16156107fe5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161047d565b6012546001600160a01b031663f305d719473061082f816001600160a01b03165f9081526001602052604090205490565b5f806108425f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108a8573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108cd91906118db565b505060135460125460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610922573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109469190611906565b506013805462ff00ff60a01b19166201000160a01b179055565b6001600160a01b0383166109c25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161047d565b6001600160a01b038216610a235760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161047d565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ae85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161047d565b6001600160a01b038216610b4a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161047d565b5f8111610bab5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161047d565b601354600160b01b900460ff161580610bcd5750601354600160a81b900460ff165b15610be257610bdd838383610cd2565b505050565b5f80546001600160a01b03858116911614801590610c0d57505f546001600160a01b03848116911614155b15610c495760055460ff1615610c2657610c2683610d62565b610c31848484610e11565b610c3c848484610f5d565b9050610c49848484611094565b610c5584848385611173565b50505050565b5f8184841115610c7e5760405162461bcd60e51b815260040161047d919061166f565b505f610c8a8486611925565b95945050505050565b6005546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610cce573d5f803e3d5ffd5b5050565b6001600160a01b0383165f90815260016020526040902054610cf4908261128b565b6001600160a01b038085165f908152600160205260408082209390935590841681522054610d2290826112d3565b6001600160a01b038084165f8181526001602052604090819020939093559151908516905f80516020611a3083398151915290610a779085815260200190565b6012546001600160a01b03828116911614801590610d8e57506013546001600160a01b03828116911614155b15610e0e57325f908152600460205260409020544311610dfc5760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b606482015260840161047d565b325f9081526004602052604090204390555b50565b6013546001600160a01b038481169116148015610e3c57506012546001600160a01b03838116911614155b8015610e6057506001600160a01b0382165f9081526003602052604090205460ff16155b15610bdd57600e54811115610eb35760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b604482015260640161047d565b600f5481610ed5846001600160a01b03165f9081526001602052604090205490565b610edf9190611938565b1115610f2d5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161047d565b600c54600d541015610f4457813b15610f44575f80fd5b600d8054905f610f538361194b565b9190505550505050565b5f80610f8b6064610f85600a54600d5411610f7a57600654610f7e565b6008545b8690611331565b906113af565b6013549091506001600160a01b038581169116148015610fb457506001600160a01b0385163014155b1561102f57600e548311156110075760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b604482015260640161047d565b61102c6064610f85600b54600d541161102257600754610f7e565b6009548690611331565b90505b60055461104c90869061010090046001600160a01b0316856113f0565b1561108c5760055461108c90869061010090046001600160a01b03166110728680611925565b8661107d8180611938565b6110879190611925565b611416565b949350505050565b305f90815260016020526040902054601354600160a81b900460ff161580156110ca57506013546001600160a01b038481169116145b80156110df5750601354600160b01b900460ff165b80156110ee5750600c54600d54115b801561111257506001600160a01b0384165f9081526003602052604090205460ff16155b801561113657506001600160a01b0383165f9081526003602052604090205460ff16155b15610c5557601054811180156111635761116361115e84611159856011546114a6565b6114a6565b6114ba565b61116c47610c93565b5050505050565b81156111d857305f9081526001602052604090205461119290836112d3565b305f81815260016020526040908190209290925590516001600160a01b038616905f80516020611a30833981519152906111cf9086815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546111fa908261128b565b6001600160a01b0385165f9081526001602052604090205561123d61121f828461128b565b6001600160a01b0385165f90815260016020526040902054906112d3565b6001600160a01b038085165f8181526001602052604090209290925585165f80516020611a30833981519152611273848661128b565b6040519081526020015b60405180910390a350505050565b5f6112cc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c5b565b9392505050565b5f806112df8385611938565b9050838110156112cc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161047d565b5f825f0361134057505f6103c7565b5f61134b8385611874565b9050826113588583611963565b146112cc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161047d565b5f6112cc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611643565b5f826001600160a01b0316846001600160a01b031614801561108c575050151592915050565b6001600160a01b0384165f90815260016020526040902054611438908361128b565b6001600160a01b038086165f90815260016020526040808220939093559085168152205461146690826112d3565b6001600160a01b038085165f8181526001602052604090819020939093559151908616905f80516020611a308339815191529061127d9085815260200190565b5f8183116114b457826112cc565b50919050565b6013805460ff60a81b1916600160a81b179055801561163357601354600160a01b900460ff1615611633576040805160028082526060820183525f9260208301908036833701905050905030815f8151811061151857611518611982565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561156f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159391906118c0565b816001815181106115a6576115a6611982565b6001600160a01b0392831660209182029290920101526012546115cc9130911684610960565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906116049085905f90869030904290600401611996565b5f604051808303815f87803b15801561161b575f80fd5b505af115801561162d573d5f803e3d5ffd5b50505050505b506013805460ff60a81b19169055565b5f81836116635760405162461bcd60e51b815260040161047d919061166f565b505f610c8a8486611963565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610e0e575f80fd5b5f80604083850312156116c9575f80fd5b82356116d4816116a4565b946020939093013593505050565b5f805f606084860312156116f4575f80fd5b83356116ff816116a4565b9250602084013561170f816116a4565b929592945050506040919091013590565b5f60208284031215611730575f80fd5b81356112cc816116a4565b5f806040838503121561174c575f80fd5b8235611757816116a4565b91506020830135611767816116a4565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156117c057815f19048211156117a6576117a6611772565b808516156117b357918102915b93841c939080029061178b565b509250929050565b5f826117d6575060016103c7565b816117e257505f6103c7565b81600181146117f857600281146118025761181e565b60019150506103c7565b60ff84111561181357611813611772565b50506001821b6103c7565b5060208310610133831016604e8410600b8410161715611841575081810a6103c7565b61184b8383611786565b805f190482111561185e5761185e611772565b029392505050565b5f6112cc60ff8416836117c8565b80820281158282048414176103c7576103c7611772565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156118d0575f80fd5b81516112cc816116a4565b5f805f606084860312156118ed575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611916575f80fd5b815180151581146112cc575f80fd5b818103818111156103c7576103c7611772565b808201808211156103c7576103c7611772565b5f6001820161195c5761195c611772565b5060010190565b5f8261197d57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156119e65784516001600160a01b0316835293830193918301916001016119c1565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f6126254c7af321c311a2eb89d5e4cfb3ee9da8a0c8e2cad0f97391c02a307a864736f6c63430008190033

Deployed Bytecode Sourcemap

3824:10970:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6163:83;;;;;;;;;;-1:-1:-1;6233:5:0;;;;;;;;;;;;-1:-1:-1;;;6233:5:0;;;;6163:83;;;;;;;:::i;:::-;;;;;;;;7046:186;;;;;;;;;;-1:-1:-1;7046:186:0;;;;;:::i;:::-;;:::i;:::-;;;1058:14:1;;1051:22;1033:41;;1021:2;1006:18;7046:186:0;893:187:1;5005:55:0;;;;;;;;;;;;;;;;;;;1231:25:1;;;1219:2;1204:18;5005:55:0;1085:177:1;6440:95:0;;;;;;;;;;;;;:::i;7240:446::-;;;;;;;;;;-1:-1:-1;7240:446:0;;;;;:::i;:::-;;:::i;6349:83::-;;;;;;;;;;-1:-1:-1;6349:83:0;;4622:1;1870:36:1;;1858:2;1843:18;6349:83:0;1728:184:1;6543:119:0;;;;;;;;;;-1:-1:-1;6543:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6636:18:0;6609:7;6636:18;;;:9;:18;;;;;;;6543:119;2855:148;;;;;;;;;;;;;:::i;:::-;;13634:213;;;;;;;;;;;;;:::i;4815:56::-;;;;;;;;;;;;;;;;2641:79;;;;;;;;;;-1:-1:-1;2679:7:0;2706:6;2641:79;;-1:-1:-1;;;;;2706:6:0;;;2315:51:1;;2303:2;2288:18;2641:79:0;2169:203:1;4878:58:0;;;;;;;;;;;;;;;;6254:87;;;;;;;;;;-1:-1:-1;6326:7:0;;;;;;;;;;;;-1:-1:-1;;;6326:7:0;;;;6254:87;;5764:391;;;;;;;;;;;;;:::i;6670:192::-;;;;;;;;;;-1:-1:-1;6670:192:0;;;;;:::i;:::-;;:::i;14158:95::-;;;;;;;;;;;;;:::i;4943:55::-;;;;;;;;;;;;;;;;4162:40;;;;;;;;;;-1:-1:-1;4162:40:0;;;;;;;;14298:493;;;;;;;;;;;;;:::i;6870:168::-;;;;;;;;;;-1:-1:-1;6870:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;7003:18:0;;;6976:7;7003:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6870:168;7046:186;7146:4;7163:39;268:10;7186:7;7195:6;7163:8;:39::i;:::-;-1:-1:-1;7220:4:0;7046:186;;;;;:::o;6440:95::-;6493:7;4678:15;4622:1;4678:2;:15;:::i;:::-;4665:28;;:10;:28;:::i;:::-;6513:14;;6440:95;:::o;7240:446::-;7372:4;7389:36;7399:6;7407:9;7418:6;7389:9;:36::i;:::-;7436:220;7459:6;268:10;7507:138;7563:6;7507:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7507:19:0;;;;;;:11;:19;;;;;;;;268:10;7507:33;;;;;;;;;;:37;:138::i;:::-;7436:8;:220::i;:::-;-1:-1:-1;7674:4:0;7240:446;;;;;:::o;2855:148::-;2768:6;;-1:-1:-1;;;;;2768:6:0;268:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;;;;;;;;;2962:1:::1;2946:6:::0;;2925:40:::1;::::0;-1:-1:-1;;;;;2946:6:0;;::::1;::::0;2925:40:::1;::::0;2962:1;;2925:40:::1;2993:1;2976:19:::0;;-1:-1:-1;;;;;;2976:19:0::1;::::0;;2855:148::o;13634:213::-;2768:6;;-1:-1:-1;;;;;2768:6:0;268:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;-1:-1:-1;;13688:12:0::1;:26:::0;;;13725:14:::1;:28:::0;;;13764:20:::1;:28:::0;;-1:-1:-1;;13764:28:0::1;::::0;;13808:31:::1;::::0;1231:25:1;;;13808:31:0::1;::::0;1219:2:1;1204:18;13808:31:0::1;;;;;;;13634:213::o:0;5764:391::-;2768:6;;-1:-1:-1;;;;;2768:6:0;268:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;5816:15:::1;:104:::0;;-1:-1:-1;;;;;;5816:104:0::1;5867:42;5816:104:::0;;::::1;::::0;;;5931:58:::1;::::0;5948:4:::1;::::0;4678:15:::1;4622:1;4678:2;:15;:::i;:::-;4665:28;::::0;:10:::1;:28;:::i;5931:58::-;6034:15;;;;;;;;;-1:-1:-1::0;;;;;6034:15:0::1;-1:-1:-1::0;;;;;6034:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6016:55:0::1;;6094:4;6114:15;;;;;;;;;-1:-1:-1::0;;;;;6114:15:0::1;-1:-1:-1::0;;;;;6114:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6016:131;::::0;-1:-1:-1;;;;;;6016:131:0::1;::::0;;;;;;-1:-1:-1;;;;;5299:15:1;;;6016:131:0::1;::::0;::::1;5281:34:1::0;5351:15;;5331:18;;;5324:43;5216:18;;6016:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6000:13;:147:::0;;-1:-1:-1;;;;;;6000:147:0::1;-1:-1:-1::0;;;;;6000:147:0;;;::::1;::::0;;;::::1;::::0;;5764:391::o;6670:192::-;6773:4;6790:42;268:10;6814:9;6825:6;6790:9;:42::i;14158:95::-;2768:6;;-1:-1:-1;;;;;2768:6:0;268:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;14210:35:::1;14223:21;14210:12;:35::i;:::-;14158:95::o:0;14298:493::-;2768:6;;-1:-1:-1;;;;;2768:6:0;268:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;14360:11:::1;::::0;-1:-1:-1;;;14360:11:0;::::1;;;14359:12;14351:48;;;::::0;-1:-1:-1;;;14351:48:0;;5580:2:1;14351:48:0::1;::::0;::::1;5562:21:1::0;5619:2;5599:18;;;5592:30;5658:25;5638:18;;;5631:53;5701:18;;14351:48:0::1;5378:347:1::0;14351:48:0::1;14420:15;::::0;-1:-1:-1;;;;;14420:15:0::1;:31;14459:21;14504:4;14524:24;14504:4:::0;-1:-1:-1;;;;;6636:18:0;6609:7;6636:18;;;:9;:18;;;;;;;6543:119;14524:24:::1;14563:1;14579::::0;14595:7:::1;2679::::0;2706:6;-1:-1:-1;;;;;2706:6:0;;2641:79;14595:7:::1;14420:223;::::0;::::1;::::0;;;-1:-1:-1;;;;;;14420:223:0;;;-1:-1:-1;;;;;6089:15:1;;;14420:223:0::1;::::0;::::1;6071:34:1::0;6121:18;;;6114:34;;;;6164:18;;;6157:34;;;;6207:18;;;6200:34;6271:15;;;6250:19;;;6243:44;14617:15:0::1;6303:19:1::0;;;6296:35;6005:19;;14420:223:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14661:13:0::1;::::0;14692:15:::1;::::0;14654:71:::1;::::0;-1:-1:-1;;;14654:71:0;;-1:-1:-1;;;;;14692:15:0;;::::1;14654:71;::::0;::::1;6827:51:1::0;-1:-1:-1;;6894:18:1;;;6887:34;14661:13:0;::::1;::::0;-1:-1:-1;14654:29:0::1;::::0;6800:18:1;;14654:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14736:11:0::1;:18:::0;;-1:-1:-1;;;;14765:18:0;-1:-1:-1;;;14765:18:0;;;14298:493::o;7694:335::-;-1:-1:-1;;;;;7787:19:0;;7779:68;;;;-1:-1:-1;;;7779:68:0;;7416:2:1;7779:68:0;;;7398:21:1;7455:2;7435:18;;;7428:30;7494:34;7474:18;;;7467:62;-1:-1:-1;;;7545:18:1;;;7538:34;7589:19;;7779:68:0;7214:400:1;7779:68:0;-1:-1:-1;;;;;7866:21:0;;7858:68;;;;-1:-1:-1;;;7858:68:0;;7821:2:1;7858:68:0;;;7803:21:1;7860:2;7840:18;;;7833:30;7899:34;7879:18;;;7872:62;-1:-1:-1;;;7950:18:1;;;7943:32;7992:19;;7858:68:0;7619:398:1;7858:68:0;-1:-1:-1;;;;;7937:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7989:32;;1231:25:1;;;7989:32:0;;1204:18:1;7989:32:0;;;;;;;;7694:335;;;:::o;9654:862::-;-1:-1:-1;;;;;9747:18:0;;9739:68;;;;-1:-1:-1;;;9739:68:0;;8224:2:1;9739:68:0;;;8206:21:1;8263:2;8243:18;;;8236:30;8302:34;8282:18;;;8275:62;-1:-1:-1;;;8353:18:1;;;8346:35;8398:19;;9739:68:0;8022:401:1;9739:68:0;-1:-1:-1;;;;;9826:16:0;;9818:64;;;;-1:-1:-1;;;9818:64:0;;8630:2:1;9818:64:0;;;8612:21:1;8669:2;8649:18;;;8642:30;8708:34;8688:18;;;8681:62;-1:-1:-1;;;8759:18:1;;;8752:33;8802:19;;9818:64:0;8428:399:1;9818:64:0;9915:1;9901:11;:15;9893:69;;;;-1:-1:-1;;;9893:69:0;;9034:2:1;9893:69:0;;;9016:21:1;9073:2;9053:18;;;9046:30;9112:34;9092:18;;;9085:62;-1:-1:-1;;;9163:18:1;;;9156:39;9212:19;;9893:69:0;8832:405:1;9893:69:0;9980:11;;-1:-1:-1;;;9980:11:0;;;;9979:12;;:22;;-1:-1:-1;9995:6:0;;-1:-1:-1;;;9995:6:0;;;;9979:22;9975:113;;;10018:37;10033:4;10039:2;10043:11;10018:14;:37::i;:::-;9654:862;;;:::o;9975:113::-;10100:17;2706:6;;-1:-1:-1;;;;;10136:15:0;;;2706:6;;10136:15;;;;:32;;-1:-1:-1;2679:7:0;2706:6;-1:-1:-1;;;;;10155:13:0;;;2706:6;;10155:13;;10136:32;10132:316;;;10191:20;;;;10187:79;;;10232:18;10247:2;10232:14;:18::i;:::-;10282:35;10295:4;10301:2;10305:11;10282:12;:35::i;:::-;10349:33;10360:4;10366:2;10370:11;10349:10;:33::i;:::-;10337:45;;10399:37;10414:4;10420:2;10424:11;10399:14;:37::i;:::-;10460:48;10475:4;10481:2;10485:9;10496:11;10460:14;:48::i;:::-;9728:788;9654:862;;;:::o;1443:224::-;1563:7;1599:12;1591:6;;;;1583:29;;;;-1:-1:-1;;;1583:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1623:9:0;1635:5;1639:1;1635;:5;:::i;:::-;1623:17;1443:224;-1:-1:-1;;;;;1443:224:0:o;13855:92::-;13912:10;;:27;;:10;;;;-1:-1:-1;;;;;13912:10:0;;:27;;;;;;;;;;;;:10;:27;;;;;;;;;;;;;;;;;;;;;13855:92;:::o;8037:253::-;-1:-1:-1;;;;;8146:15:0;;;;;;:9;:15;;;;;;:32;;8166:11;8146:19;:32::i;:::-;-1:-1:-1;;;;;8128:15:0;;;;;;;:9;:15;;;;;;:50;;;;8205:13;;;;;;;:30;;8223:11;8205:17;:30::i;:::-;-1:-1:-1;;;;;8189:13:0;;;;;;;:9;:13;;;;;;;:46;;;;8251:31;;;;;;-1:-1:-1;;;;;;;;;;;8251:31:0;;;8270:11;1231:25:1;;1219:2;1204:18;;1085:177;8613:416:0;8701:15;;-1:-1:-1;;;;;8687:30:0;;;8701:15;;8687:30;;;;:75;;-1:-1:-1;8748:13:0;;-1:-1:-1;;;;;8734:28:0;;;8748:13;;8734:28;;8687:75;8669:353;;;8844:9;8815:39;;;;:28;:39;;;;;;8857:12;-1:-1:-1;8789:152:0;;;;-1:-1:-1;;;8789:152:0;;9577:2:1;8789:152:0;;;9559:21:1;9616:2;9596:18;;;9589:30;9655:34;9635:18;;;9628:62;-1:-1:-1;;;9706:18:1;;;9699:34;9750:19;;8789:152:0;9375:400:1;8789:152:0;8985:9;8956:39;;;;:28;:39;;;;;8998:12;8956:54;;8669:353;8613:416;:::o;9037:609::-;9152:13;;-1:-1:-1;;;;;9144:21:0;;;9152:13;;9144:21;:68;;;;-1:-1:-1;9196:15:0;;-1:-1:-1;;;;;9182:30:0;;;9196:15;;9182:30;;9144:68;:108;;;;-1:-1:-1;;;;;;9230:22:0;;;;;;:18;:22;;;;;;;;9229:23;9144:108;9126:513;;;9302:12;;9287:11;:27;;9279:65;;;;-1:-1:-1;;;9279:65:0;;9982:2:1;9279:65:0;;;9964:21:1;10021:2;10001:18;;;9994:30;-1:-1:-1;;;10040:18:1;;;10033:55;10105:18;;9279:65:0;9780:349:1;9279:65:0;9416:14;;9401:11;9385:13;9395:2;-1:-1:-1;;;;;6636:18:0;6609:7;6636:18;;;:9;:18;;;;;;;6543:119;9385:13;:27;;;;:::i;:::-;:45;;9359:133;;;;-1:-1:-1;;;9359:133:0;;10466:2:1;9359:133:0;;;10448:21:1;10505:2;10485:18;;;10478:30;10544:28;10524:18;;;10517:56;10590:18;;9359:133:0;10264:350:1;9359:133:0;9523:18;;9511:9;;:30;9507:95;;;14086:20;;14134:8;9562:24;;;;;;9616:9;:11;;;:9;:11;;;:::i;:::-;;;;;;9037:609;;;:::o;11966:928::-;12049:7;12070:17;12090:189;12275:3;12090:166;12151:15;;12139:9;;:27;12138:103;;12227:14;;12138:103;;;12191:12;;12138:103;12090:11;;:29;:166::i;:::-;:184;;:189::i;:::-;12302:13;;12070:209;;-1:-1:-1;;;;;;12296:19:0;;;12302:13;;12296:19;:44;;;;-1:-1:-1;;;;;;12319:21:0;;12335:4;12319:21;;12296:44;12292:385;;;12380:12;;12365:11;:27;;12357:65;;;;-1:-1:-1;;;12357:65:0;;9982:2:1;12357:65:0;;;9964:21:1;10021:2;10001:18;;;9994:30;-1:-1:-1;;;10040:18:1;;;10033:55;10105:18;;12357:65:0;9780:349:1;12357:65:0;12449:216;12661:3;12449:189;12518:16;;12506:9;;:28;12505:114;;12604:15;;12505:114;;;12563:13;;12449:11;;:33;:189::i;:216::-;12437:228;;12292:385;12716:10;;12692:48;;12710:4;;12716:10;;;-1:-1:-1;;;;;12716:10:0;12728:11;12692:17;:48::i;:::-;12689:168;;;12778:10;;12756:101;;12772:4;;12778:10;;;-1:-1:-1;;;;;12778:10:0;12790:25;12804:11;;12790:25;:::i;:::-;12845:11;12817:25;12845:11;;12817:25;:::i;:::-;:39;;;;:::i;:::-;12756:15;:101::i;:::-;12877:9;11966:928;-1:-1:-1;;;;11966:928:0:o;11255:703::-;11395:4;11346:28;6636:18;;;:9;:18;;;;;;11431:6;;-1:-1:-1;;;11431:6:0;;;;11430:7;:43;;;;-1:-1:-1;11460:13:0;;-1:-1:-1;;;;;11454:19:0;;;11460:13;;11454:19;11430:43;:71;;;;-1:-1:-1;11490:11:0;;-1:-1:-1;;;11490:11:0;;;;11430:71;:118;;;;;11530:18;;11518:9;;:30;11430:118;:160;;;;-1:-1:-1;;;;;;11566:24:0;;;;;;:18;:24;;;;;;;;11565:25;11430:160;:200;;;;-1:-1:-1;;;;;;11608:22:0;;;;;;:18;:22;;;;;;;;11607:23;11430:200;11412:539;;;11695:17;;11672:40;;11727:161;;;;11758:114;11797:56;11801:11;11814:38;11818:20;11840:11;;11814:3;:38::i;:::-;11797:3;:56::i;:::-;11758:16;:114::i;:::-;11904:35;11917:21;11904:12;:35::i;:::-;11642:309;11334:624;11255:703;;;:::o;10524:561::-;10681:13;;10677:204;;10756:4;10738:24;;;;:9;:24;;;;;;:71;;10785:9;10738:28;:71::i;:::-;10729:4;10711:24;;;;:9;:24;;;;;;;:98;;;;10829:40;;-1:-1:-1;;;;;10829:40:0;;;-1:-1:-1;;;;;;;;;;;10829:40:0;;;10859:9;1231:25:1;;1219:2;1204:18;;1085:177;10829:40:0;;;;;;;;10677:204;-1:-1:-1;;;;;10911:15:0;;;;;;:9;:15;;;;;;:32;;10931:11;10911:19;:32::i;:::-;-1:-1:-1;;;;;10893:15:0;;;;;;:9;:15;;;;;:50;10970:45;10988:26;:11;11004:9;10988:15;:26::i;:::-;-1:-1:-1;;;;;10970:13:0;;;;;;:9;:13;;;;;;;:17;:45::i;:::-;-1:-1:-1;;;;;10954:13:0;;;;;;;:9;:13;;;;;:61;;;;11031:46;;-1:-1:-1;;;;;;;;;;;11050:26:0;:11;11066:9;11050:15;:26::i;:::-;11031:46;;1231:25:1;;;1219:2;1204:18;11031:46:0;;;;;;;;10524:561;;;;:::o;1299:136::-;1357:7;1384:43;1388:1;1391;1384:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1377:50;1299:136;-1:-1:-1;;;1299:136:0:o;1112:179::-;1170:7;;1202:5;1206:1;1202;:5;:::i;:::-;1190:17;;1231:1;1226;:6;;1218:46;;;;-1:-1:-1;;;1218:46:0;;10961:2:1;1218:46:0;;;10943:21:1;11000:2;10980:18;;;10973:30;11039:29;11019:18;;;11012:57;11086:18;;1218:46:0;10759:351:1;1675:246:0;1733:7;1757:1;1762;1757:6;1753:47;;-1:-1:-1;1787:1:0;1780:8;;1753:47;1810:9;1822:5;1826:1;1822;:5;:::i;:::-;1810:17;-1:-1:-1;1855:1:0;1846:5;1850:1;1810:17;1846:5;:::i;:::-;:10;1838:56;;;;-1:-1:-1;;;1838:56:0;;11539:2:1;1838:56:0;;;11521:21:1;11578:2;11558:18;;;11551:30;11617:34;11597:18;;;11590:62;-1:-1:-1;;;11668:18:1;;;11661:31;11709:19;;1838:56:0;11337:397:1;1929:132:0;1987:7;2014:39;2018:1;2021;2014:39;;;;;;;;;;;;;;;;;:3;:39::i;11093:154::-;11187:4;11220:5;-1:-1:-1;;;;;11211:14:0;:5;-1:-1:-1;;;;;11211:14:0;;:28;;;;-1:-1:-1;;11229:10:0;;;11204:35;-1:-1:-1;;11093:154:0:o;8298:307::-;-1:-1:-1;;;;;8439:17:0;;;;;;:9;:17;;;;;;:33;;8461:10;8439:21;:33::i;:::-;-1:-1:-1;;;;;8419:17:0;;;;;;;:9;:17;;;;;;:53;;;;8504:18;;;;;;;:37;;8527:13;8504:22;:37::i;:::-;-1:-1:-1;;;;;8483:18:0;;;;;;;:9;:18;;;;;;;:58;;;;8557:40;;;;;;-1:-1:-1;;;;;;;;;;;8557:40:0;;;8583:13;1231:25:1;;1219:2;1204:18;;1085:177;12902:107:0;12959:7;12991:1;12987;:5;12986:15;;13000:1;12986:15;;;-1:-1:-1;12996:1:0;12902:107;-1:-1:-1;12902:107:0:o;13017:609::-;5344:6;:13;;-1:-1:-1;;;;5344:13:0;-1:-1:-1;;;5344:13:0;;;13095:55;;13132:7:::1;13095:55;13165:11;::::0;-1:-1:-1;;;13165:11:0;::::1;;;13160:51:::0;13193:7:::1;13160:51;13245:16;::::0;;13259:1:::1;13245:16:::0;;;;;::::1;::::0;;13221:21:::1;::::0;13245:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13245:16:0::1;13221:40;;13290:4;13272;13277:1;13272:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13272:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13316:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13316:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13272:7;;13316:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13306:4;13311:1;13306:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13306:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13381:15:::1;::::0;13349:62:::1;::::0;13366:4:::1;::::0;13381:15:::1;13399:11:::0;13349:8:::1;:62::i;:::-;13422:15;::::0;:196:::1;::::0;-1:-1:-1;;;13422:196:0;;-1:-1:-1;;;;;13422:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13503:11;;13422:15:::1;::::0;13545:4;;13572::::1;::::0;13592:15:::1;::::0;13422:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13084:542;5368:1;-1:-1:-1::0;5380:6:0;:14;;-1:-1:-1;;;;5380:14:0;;;13017:609::o;2069:223::-;2189:7;2224:12;2217:5;2209:28;;;;-1:-1:-1;;;2209:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2248:9:0;2260:5;2264:1;2260;:5;:::i;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:315;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;878:2;863:18;;;;850:32;;-1:-1:-1;;;573:315:1:o;1267:456::-;1344:6;1352;1360;1413:2;1401:9;1392:7;1388:23;1384:32;1381:52;;;1429:1;1426;1419:12;1381:52;1468:9;1455:23;1487:31;1512:5;1487:31;:::i;:::-;1537:5;-1:-1:-1;1594:2:1;1579:18;;1566:32;1607:33;1566:32;1607:33;:::i;:::-;1267:456;;1659:7;;-1:-1:-1;;;1713:2:1;1698:18;;;;1685:32;;1267:456::o;1917:247::-;1976:6;2029:2;2017:9;2008:7;2004:23;2000:32;1997:52;;;2045:1;2042;2035:12;1997:52;2084:9;2071:23;2103:31;2128:5;2103:31;:::i;2377:388::-;2445:6;2453;2506:2;2494:9;2485:7;2481:23;2477:32;2474:52;;;2522:1;2519;2512:12;2474:52;2561:9;2548:23;2580:31;2605:5;2580:31;:::i;:::-;2630:5;-1:-1:-1;2687:2:1;2672:18;;2659:32;2700:33;2659:32;2700:33;:::i;:::-;2752:7;2742:17;;;2377:388;;;;;:::o;2770:127::-;2831:10;2826:3;2822:20;2819:1;2812:31;2862:4;2859:1;2852:15;2886:4;2883:1;2876:15;2902:416;2991:1;3028:5;2991:1;3042:270;3063:7;3053:8;3050:21;3042:270;;;3122:4;3118:1;3114:6;3110:17;3104:4;3101:27;3098:53;;;3131:18;;:::i;:::-;3181:7;3171:8;3167:22;3164:55;;;3201:16;;;;3164:55;3280:22;;;;3240:15;;;;3042:270;;;3046:3;2902:416;;;;;:::o;3323:806::-;3372:5;3402:8;3392:80;;-1:-1:-1;3443:1:1;3457:5;;3392:80;3491:4;3481:76;;-1:-1:-1;3528:1:1;3542:5;;3481:76;3573:4;3591:1;3586:59;;;;3659:1;3654:130;;;;3566:218;;3586:59;3616:1;3607:10;;3630:5;;;3654:130;3691:3;3681:8;3678:17;3675:43;;;3698:18;;:::i;:::-;-1:-1:-1;;3754:1:1;3740:16;;3769:5;;3566:218;;3868:2;3858:8;3855:16;3849:3;3843:4;3840:13;3836:36;3830:2;3820:8;3817:16;3812:2;3806:4;3803:12;3799:35;3796:77;3793:159;;;-1:-1:-1;3905:19:1;;;3937:5;;3793:159;3984:34;4009:8;4003:4;3984:34;:::i;:::-;4054:6;4050:1;4046:6;4042:19;4033:7;4030:32;4027:58;;;4065:18;;:::i;:::-;4103:20;;3323:806;-1:-1:-1;;;3323:806:1:o;4134:140::-;4192:5;4221:47;4262:4;4252:8;4248:19;4242:4;4221:47;:::i;4279:168::-;4352:9;;;4383;;4400:15;;;4394:22;;4380:37;4370:71;;4421:18;;:::i;4452:356::-;4654:2;4636:21;;;4673:18;;;4666:30;4732:34;4727:2;4712:18;;4705:62;4799:2;4784:18;;4452:356::o;4813:251::-;4883:6;4936:2;4924:9;4915:7;4911:23;4907:32;4904:52;;;4952:1;4949;4942:12;4904:52;4984:9;4978:16;5003:31;5028:5;5003:31;:::i;6342:306::-;6430:6;6438;6446;6499:2;6487:9;6478:7;6474:23;6470:32;6467:52;;;6515:1;6512;6505:12;6467:52;6544:9;6538:16;6528:26;;6594:2;6583:9;6579:18;6573:25;6563:35;;6638:2;6627:9;6623:18;6617:25;6607:35;;6342:306;;;;;:::o;6932:277::-;6999:6;7052:2;7040:9;7031:7;7027:23;7023:32;7020:52;;;7068:1;7065;7058:12;7020:52;7100:9;7094:16;7153:5;7146:13;7139:21;7132:5;7129:32;7119:60;;7175:1;7172;7165:12;9242:128;9309:9;;;9330:11;;;9327:37;;;9344:18;;:::i;10134:125::-;10199:9;;;10220:10;;;10217:36;;;10233:18;;:::i;10619:135::-;10658:3;10679:17;;;10676:43;;10699:18;;:::i;:::-;-1:-1:-1;10746:1:1;10735:13;;10619:135::o;11115:217::-;11155:1;11181;11171:132;;11225:10;11220:3;11216:20;11213:1;11206:31;11260:4;11257:1;11250:15;11288:4;11285:1;11278:15;11171:132;-1:-1:-1;11317:9:1;;11115:217::o;11871:127::-;11932:10;11927:3;11923:20;11920:1;11913:31;11963:4;11960:1;11953:15;11987:4;11984:1;11977:15;12003:980;12265:4;12313:3;12302:9;12298:19;12344:6;12333:9;12326:25;12370:2;12408:6;12403:2;12392:9;12388:18;12381:34;12451:3;12446:2;12435:9;12431:18;12424:31;12475:6;12510;12504:13;12541:6;12533;12526:22;12579:3;12568:9;12564:19;12557:26;;12618:2;12610:6;12606:15;12592:29;;12639:1;12649:195;12663:6;12660:1;12657:13;12649:195;;;12728:13;;-1:-1:-1;;;;;12724:39:1;12712:52;;12819:15;;;;12784:12;;;;12760:1;12678:9;12649:195;;;-1:-1:-1;;;;;;;12900:32:1;;;;12895:2;12880:18;;12873:60;-1:-1:-1;;;12964:3:1;12949:19;12942:35;12861:3;12003:980;-1:-1:-1;;;12003:980:1:o

Swarm Source

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