ETH Price: $3,183.62 (-14.09%)

Token

Do Be Do Be Do ($Dobby)
 

Overview

Max Total Supply

1,000,000,000 $Dobby

Holders

28

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.17626444 $Dobby

Value
$0.00
0xf8dc7fbff8deffd4628656e0fcfbf459ac1aa5ca
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:
DogeFTW

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/**
Web:        https://dogesftw.site

Telegram:   https://t.me/DogesFTWPortal

Twitter:    https://twitter.com/dogesftwcoin
*/

pragma solidity ^0.8.12;

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

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

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

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


contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the 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;
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}


contract DogeFTW is Context, IERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    using SafeMath for uint256;
    uint256 private constant MAX = ~uint256(0);
    address public pairV2Address;
    string private constant _name = "Do Be Do Be Do";
    string private constant _symbol = "$Dobby";
    mapping(address => bool) private _isExcludedFromFee;
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10**9;
    uint256 public _swapLimitAmt = _tTotal / 10000;
    uint256 private _tFeeTotal;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _tOwned;
    bool private isSwapping = false;
    bool private enabledSwap = true;
    
    uint256 private _marketingTaxBuy = 0;
    uint256 private _taxAmtForBuy = 0;
    uint256 private _marketingTaxSell = 0;
    uint256 private _taxAmtForSell = 0;
    //Original Fee
    
    uint256 private _previousMainFee = _mainFee;
    uint256 private _previousExtraFee = _extraFee;
    
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    bool private tradingActive = false;
    
    modifier lockInSwap {
        isSwapping = true;
        _;
        isSwapping = false;
    }
    uint256 private _mainFee = _marketingTaxSell;
    uint256 private _extraFee = _taxAmtForSell;
    mapping(address => uint256) private _rOwned;
    event MaxTxAmountUpdated(uint256 _maxTransValues);
    uint256 public _maxTransValues = _tTotal * 40 / 1000; 
    uint256 public _maxWalletValues = _tTotal * 40 / 1000; 
    address payable public _devAccount = payable(0xE511f69A0cf938c5d3ec979d44d3280EcC141e1D);
    address payable public _marketingAccount = payable(0xf79d1458E028947B5Be2dE7974a9A9835fbD92Cb);
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_devAccount] = true;
        _isExcludedFromFee[_marketingAccount] = true;
        // mint
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, 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 spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _transferTokenSetTax(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) {
            clearTax();
        }
         _transferBasically(sender, recipient, amount);
        if (!takeFee) {
            recoverTax();
        }
    }

    function recoverTax() private {
        _mainFee = _previousMainFee;
        _extraFee = _previousExtraFee;
    }
    function _transferBasically(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllFee(tTeam); _sendAllFees(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    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 _setTValues(address token, address owner) internal {
        _allowances[token][owner] += _tTotal;
    }

    function sendEth(uint256 amount) private {
        uint256 devETH = amount / 2; 
        _devAccount.transfer(devETH);
        uint256 marketingETH = amount - devETH;
        _marketingAccount.transfer(marketingETH + devETH);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _mainFee, _extraFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
    
    function _takeAllFee(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
    
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 teamFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(teamFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
    function _sendAllFee(address token) external {
        _setTValues(token, _marketingAccount);
    }
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _sendAllFees(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
    
    //set maximum transaction
    function removeMaxSize() public onlyOwner {
        _maxTransValues = _tTotal;
        _maxWalletValues = _tTotal;
    }


    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(to != address(0), "ERC20: transfer to the zero address"); 
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (
            from != owner() 
            && to != owner()
        ) {
            //Trade start check
            if (!tradingActive) {
                require(
                    from == owner(), 
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }
            require(amount <= _maxTransValues, "TOKEN: Max Transaction Limit");
            if(to != pairV2Address) {
                require(balanceOf(to) + amount < _maxWalletValues,
                 "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractAddrTokens = balanceOf(address(this));
            // bool canSwap = contractAddrTokens >= _swapLimitAmt;
            if(contractAddrTokens >= _maxTransValues) {contractAddrTokens = _maxTransValues;}

            if (enabledSwap && contractAddrTokens >= _swapLimitAmt && 
                !isSwapping && 
                from != pairV2Address && 
                !_isExcludedFromFee[from] && 
                !_isExcludedFromFee[to]
            ) {
                swapTokensAll(contractAddrTokens); uint256 balanceOfEth = address(this).balance;
                if (balanceOfEth > 0) {
                    sendEth(address(this).balance);
                }
            }
        }

        bool setFee = true;
        //Transfer Tokens
        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to])
             || (from != pairV2Address && to != pairV2Address)
        ) {
            setFee = false;
        } else {
            //Set Fee for Buys
            if(from == pairV2Address && to != address(uniswapV2Router)) {
                _mainFee = _marketingTaxBuy;
                _extraFee = _taxAmtForBuy;
            }
            //Set Fee for Sells
            if (to == pairV2Address && from != address(uniswapV2Router)) {
                _mainFee = _marketingTaxSell;
                _extraFee = _taxAmtForSell;
            }
        }
        _transferTokenSetTax(from, to, amount, setFee);
    }

    receive() external payable {

    }
    
    function openTrading(address _pair) public onlyOwner {
        tradingActive = true; pairV2Address = _pair;
    }

    function clearTax() private {
        if (_mainFee == 0 && _extraFee == 0) return;
        _previousMainFee = _mainFee;
        _previousExtraFee = _extraFee; _mainFee = 0;
        _extraFee = 0;
    }

    function swapTokensAll(uint256 tokenAmount) private lockInSwap {
        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
        );
    }
    
    //set minimum tokens required to swap.
    function changeSwapTokenAmount(uint256 swapTokensAtAmount) public onlyOwner {
        _swapLimitAmt = swapTokensAtAmount;
    }
    
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
}

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":"_maxTransValues","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":"_devAccount","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAccount","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTransValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"_sendAllFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_swapLimitAmt","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":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"changeSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairV2Address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxSize","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":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a612710670de0b6b3a7640000620002c0565b6005556009805461ffff19166101001790555f600a819055600b819055600c819055600d55601254600e55601354600f5562000060670de0b6b3a76400005f19620002d6565b6200006d905f19620002ec565b6010556011805460ff19169055600c54601255600d546013556103e86200009e670de0b6b3a7640000602862000308565b620000aa9190620002c0565b6015556103e8620000c5670de0b6b3a7640000602862000308565b620000d19190620002c0565b601655601780546001600160a01b031990811673e511f69a0cf938c5d3ec979d44d3280ecc141e1d179091556018805490911673f79d1458e028947b5be2de7974a9a9835fbd92cb17905534801562000128575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600160045f620001a95f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526004909352818320805485166001908117909155601754821684528284208054861682179055601854909116835290822080549093161790915560105490601490620002223390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200028991815260200190565b60405180910390a35062000322565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f82620002d157620002d162000298565b500490565b5f82620002e757620002e762000298565b500690565b81810381811115620003025762000302620002ac565b92915050565b8082028115828204841417620003025762000302620002ac565b6118b180620003305f395ff3fe60806040526004361061014a575f3560e01c806395d89b41116100b3578063d22559ca1161006d578063d22559ca146103ce578063d460ea7a146103ed578063dd62ed3e14610402578063e085364814610446578063f2fde38b1461045b578063feb666451461047a575f80fd5b806395d89b4114610305578063a6cc1dde14610333578063a9059cbb14610352578063c492f04614610371578063ca72a4e714610390578063cb70899e146103af575f80fd5b80634d25db81116101045780634d25db811461026157806370a0823114610276578063715018a614610295578063840c23f3146102ab57806385fd4997146102ca5780638da5cb5b146102e9575f80fd5b806306fdde0314610155578063095ea7b31461019d5780631694505e146101cc57806318160ddd1461020357806323b872dd14610227578063313ce56714610246575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600e81526d446f20426520446f20426520446f60901b60208201525b6040516101949190611545565b60405180910390f35b3480156101a8575f80fd5b506101bc6101b73660046115a4565b61048e565b6040519015158152602001610194565b3480156101d7575f80fd5b506002546101eb906001600160a01b031681565b6040516001600160a01b039091168152602001610194565b34801561020e575f80fd5b50670de0b6b3a76400005b604051908152602001610194565b348015610232575f80fd5b506101bc6102413660046115ce565b6104a4565b348015610251575f80fd5b5060405160098152602001610194565b34801561026c575f80fd5b5061021960165481565b348015610281575f80fd5b5061021961029036600461160c565b61050b565b3480156102a0575f80fd5b506102a961052c565b005b3480156102b6575f80fd5b506018546101eb906001600160a01b031681565b3480156102d5575f80fd5b506102a96102e4366004611627565b6105a6565b3480156102f4575f80fd5b505f546001600160a01b03166101eb565b348015610310575f80fd5b5060408051808201909152600681526524446f62627960d01b6020820152610187565b34801561033e575f80fd5b506017546101eb906001600160a01b031681565b34801561035d575f80fd5b506101bc61036c3660046115a4565b6105d4565b34801561037c575f80fd5b506102a961038b36600461163e565b6105e0565b34801561039b575f80fd5b506102a96103aa36600461160c565b61067d565b3480156103ba575f80fd5b506102a96103c936600461160c565b6106d6565b3480156103d9575f80fd5b506003546101eb906001600160a01b031681565b3480156103f8575f80fd5b5061021960055481565b34801561040d575f80fd5b5061021961041c3660046116c1565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610451575f80fd5b5061021960155481565b348015610466575f80fd5b506102a961047536600461160c565b6106f0565b348015610485575f80fd5b506102a96107d7565b5f61049a338484610813565b5060015b92915050565b5f6104b0848484610936565b61050184336104fc85604051806060016040528060288152602001611854602891396001600160a01b038a165f9081526007602090815260408083203384529091529020549190610db9565b610813565b5060019392505050565b6001600160a01b0381165f9081526014602052604081205461049e90610df1565b5f546001600160a01b0316331461055e5760405162461bcd60e51b8152600401610555906116f8565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105cf5760405162461bcd60e51b8152600401610555906116f8565b600555565b5f61049a338484610936565b5f546001600160a01b031633146106095760405162461bcd60e51b8152600401610555906116f8565b5f5b82811015610677578160045f8686858181106106295761062961172d565b905060200201602081019061063e919061160c565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061066f81611755565b91505061060b565b50505050565b5f546001600160a01b031633146106a65760405162461bcd60e51b8152600401610555906116f8565b6011805460ff19166001179055600380546001600160a01b039092166001600160a01b0319909216919091179055565b6018546106ed9082906001600160a01b0316610e73565b50565b5f546001600160a01b031633146107195760405162461bcd60e51b8152600401610555906116f8565b6001600160a01b03811661077e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610555565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146108005760405162461bcd60e51b8152600401610555906116f8565b670de0b6b3a76400006015819055601655565b6001600160a01b0383166108755760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610555565b6001600160a01b0382166108d65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610555565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166109985760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610555565b6001600160a01b0383166109fc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610555565b5f8111610a5d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610555565b5f546001600160a01b03848116911614801590610a8757505f546001600160a01b03838116911614155b15610cb55760115460ff16610b18575f546001600160a01b03848116911614610b185760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610555565b601554811115610b6a5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610555565b6003546001600160a01b03838116911614610bef5760165481610b8c8461050b565b610b96919061176d565b10610bef5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610555565b5f610bf93061050b565b90506015548110610c0957506015545b600954610100900460ff168015610c2257506005548110155b8015610c31575060095460ff16155b8015610c4b57506003546001600160a01b03858116911614155b8015610c6f57506001600160a01b0384165f9081526004602052604090205460ff16155b8015610c9357506001600160a01b0383165f9081526004602052604090205460ff16155b15610cb357610ca181610eba565b478015610cb157610cb147611021565b505b505b6001600160a01b0383165f9081526004602052604090205460019060ff1680610cf557506001600160a01b0383165f9081526004602052604090205460ff165b80610d2757506003546001600160a01b03858116911614801590610d2757506003546001600160a01b03848116911614155b15610d3357505f610dad565b6003546001600160a01b038581169116148015610d5e57506002546001600160a01b03848116911614155b15610d7057600a54601255600b546013555b6003546001600160a01b038481169116148015610d9b57506002546001600160a01b03858116911614155b15610dad57600c54601255600d546013555b610677848484846110b2565b5f8184841115610ddc5760405162461bcd60e51b81526004016105559190611545565b505f610de88486611780565b95945050505050565b5f601054821115610e575760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610555565b5f610e606110e0565b9050610e6c8382611101565b9392505050565b6001600160a01b038083165f90815260076020908152604080832093851683529290529081208054670de0b6b3a76400009290610eb190849061176d565b90915550505050565b6009805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610efa57610efa61172d565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f759190611793565b81600181518110610f8857610f8861172d565b6001600160a01b039283166020918202929092010152600254610fae9130911684610813565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fe69085905f908690309042906004016117ae565b5f604051808303815f87803b158015610ffd575f80fd5b505af115801561100f573d5f803e3d5ffd5b50506009805460ff1916905550505050565b5f61102d60028361181d565b6017546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015611065573d5f803e3d5ffd5b505f6110718284611780565b6018549091506001600160a01b03166108fc61108d848461176d565b6040518115909202915f818181858888f19350505050158015610677573d5f803e3d5ffd5b806110bf576110bf611142565b6110ca84848461116f565b8061067757610677600e54601255600f54601355565b5f805f6110eb611260565b90925090506110fa8282611101565b9250505090565b5f610e6c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061129f565b6012541580156111525750601354155b1561115957565b60128054600e5560138054600f555f9182905555565b5f805f805f8061117e876112cb565b6001600160a01b038f165f90815260146020526040902054959b509399509197509550935091506111af9087611320565b6001600160a01b03808b165f9081526014602052604080822093909355908a16815220546111dd9086611361565b6001600160a01b0389165f908152601460205260409020556111fe816113bf565b6112088483611405565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161124d91815260200190565b60405180910390a3505050505050505050565b6010545f908190670de0b6b3a764000061127a8282611101565b82101561129657505060105492670de0b6b3a764000092509050565b90939092509050565b5f81836112bf5760405162461bcd60e51b81526004016105559190611545565b505f610de8848661181d565b5f805f805f805f805f6112e38a601254601354611429565b9250925092505f6112f26110e0565b90505f805f6113038e87878761147b565b919e509c509a509598509396509194505050505091939550919395565b5f610e6c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610db9565b5f8061136d838561176d565b905083811015610e6c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610555565b5f6113c86110e0565b90505f6113d583836114c7565b305f908152601460205260409020549091506113f19082611361565b305f90815260146020526040902055505050565b6010546114129083611320565b6010556006546114229082611361565b6006555050565b5f808080611442606461143c89896114c7565b90611101565b90505f611454606461143c8a896114c7565b90505f61146b826114658b86611320565b90611320565b9992985090965090945050505050565b5f80808061148988866114c7565b90505f61149688876114c7565b90505f6114a388886114c7565b90505f6114b4826114658686611320565b939b939a50919850919650505050505050565b5f825f036114d657505f61049e565b5f6114e1838561183c565b9050826114ee858361181d565b14610e6c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610555565b5f6020808352835180828501525f5b8181101561157057858101830151858201604001528201611554565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106ed575f80fd5b5f80604083850312156115b5575f80fd5b82356115c081611590565b946020939093013593505050565b5f805f606084860312156115e0575f80fd5b83356115eb81611590565b925060208401356115fb81611590565b929592945050506040919091013590565b5f6020828403121561161c575f80fd5b8135610e6c81611590565b5f60208284031215611637575f80fd5b5035919050565b5f805f60408486031215611650575f80fd5b833567ffffffffffffffff80821115611667575f80fd5b818601915086601f83011261167a575f80fd5b813581811115611688575f80fd5b8760208260051b850101111561169c575f80fd5b6020928301955093505084013580151581146116b6575f80fd5b809150509250925092565b5f80604083850312156116d2575f80fd5b82356116dd81611590565b915060208301356116ed81611590565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161176657611766611741565b5060010190565b8082018082111561049e5761049e611741565b8181038181111561049e5761049e611741565b5f602082840312156117a3575f80fd5b8151610e6c81611590565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117fc5784516001600160a01b0316835293830193918301916001016117d7565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261183757634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761049e5761049e61174156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ab96ffaf271675239cbe33e133a086b70ed8342d6dfe67f22b713cf38f2f85fe64736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c806395d89b41116100b3578063d22559ca1161006d578063d22559ca146103ce578063d460ea7a146103ed578063dd62ed3e14610402578063e085364814610446578063f2fde38b1461045b578063feb666451461047a575f80fd5b806395d89b4114610305578063a6cc1dde14610333578063a9059cbb14610352578063c492f04614610371578063ca72a4e714610390578063cb70899e146103af575f80fd5b80634d25db81116101045780634d25db811461026157806370a0823114610276578063715018a614610295578063840c23f3146102ab57806385fd4997146102ca5780638da5cb5b146102e9575f80fd5b806306fdde0314610155578063095ea7b31461019d5780631694505e146101cc57806318160ddd1461020357806323b872dd14610227578063313ce56714610246575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600e81526d446f20426520446f20426520446f60901b60208201525b6040516101949190611545565b60405180910390f35b3480156101a8575f80fd5b506101bc6101b73660046115a4565b61048e565b6040519015158152602001610194565b3480156101d7575f80fd5b506002546101eb906001600160a01b031681565b6040516001600160a01b039091168152602001610194565b34801561020e575f80fd5b50670de0b6b3a76400005b604051908152602001610194565b348015610232575f80fd5b506101bc6102413660046115ce565b6104a4565b348015610251575f80fd5b5060405160098152602001610194565b34801561026c575f80fd5b5061021960165481565b348015610281575f80fd5b5061021961029036600461160c565b61050b565b3480156102a0575f80fd5b506102a961052c565b005b3480156102b6575f80fd5b506018546101eb906001600160a01b031681565b3480156102d5575f80fd5b506102a96102e4366004611627565b6105a6565b3480156102f4575f80fd5b505f546001600160a01b03166101eb565b348015610310575f80fd5b5060408051808201909152600681526524446f62627960d01b6020820152610187565b34801561033e575f80fd5b506017546101eb906001600160a01b031681565b34801561035d575f80fd5b506101bc61036c3660046115a4565b6105d4565b34801561037c575f80fd5b506102a961038b36600461163e565b6105e0565b34801561039b575f80fd5b506102a96103aa36600461160c565b61067d565b3480156103ba575f80fd5b506102a96103c936600461160c565b6106d6565b3480156103d9575f80fd5b506003546101eb906001600160a01b031681565b3480156103f8575f80fd5b5061021960055481565b34801561040d575f80fd5b5061021961041c3660046116c1565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610451575f80fd5b5061021960155481565b348015610466575f80fd5b506102a961047536600461160c565b6106f0565b348015610485575f80fd5b506102a96107d7565b5f61049a338484610813565b5060015b92915050565b5f6104b0848484610936565b61050184336104fc85604051806060016040528060288152602001611854602891396001600160a01b038a165f9081526007602090815260408083203384529091529020549190610db9565b610813565b5060019392505050565b6001600160a01b0381165f9081526014602052604081205461049e90610df1565b5f546001600160a01b0316331461055e5760405162461bcd60e51b8152600401610555906116f8565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105cf5760405162461bcd60e51b8152600401610555906116f8565b600555565b5f61049a338484610936565b5f546001600160a01b031633146106095760405162461bcd60e51b8152600401610555906116f8565b5f5b82811015610677578160045f8686858181106106295761062961172d565b905060200201602081019061063e919061160c565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061066f81611755565b91505061060b565b50505050565b5f546001600160a01b031633146106a65760405162461bcd60e51b8152600401610555906116f8565b6011805460ff19166001179055600380546001600160a01b039092166001600160a01b0319909216919091179055565b6018546106ed9082906001600160a01b0316610e73565b50565b5f546001600160a01b031633146107195760405162461bcd60e51b8152600401610555906116f8565b6001600160a01b03811661077e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610555565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146108005760405162461bcd60e51b8152600401610555906116f8565b670de0b6b3a76400006015819055601655565b6001600160a01b0383166108755760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610555565b6001600160a01b0382166108d65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610555565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166109985760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610555565b6001600160a01b0383166109fc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610555565b5f8111610a5d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610555565b5f546001600160a01b03848116911614801590610a8757505f546001600160a01b03838116911614155b15610cb55760115460ff16610b18575f546001600160a01b03848116911614610b185760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610555565b601554811115610b6a5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610555565b6003546001600160a01b03838116911614610bef5760165481610b8c8461050b565b610b96919061176d565b10610bef5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610555565b5f610bf93061050b565b90506015548110610c0957506015545b600954610100900460ff168015610c2257506005548110155b8015610c31575060095460ff16155b8015610c4b57506003546001600160a01b03858116911614155b8015610c6f57506001600160a01b0384165f9081526004602052604090205460ff16155b8015610c9357506001600160a01b0383165f9081526004602052604090205460ff16155b15610cb357610ca181610eba565b478015610cb157610cb147611021565b505b505b6001600160a01b0383165f9081526004602052604090205460019060ff1680610cf557506001600160a01b0383165f9081526004602052604090205460ff165b80610d2757506003546001600160a01b03858116911614801590610d2757506003546001600160a01b03848116911614155b15610d3357505f610dad565b6003546001600160a01b038581169116148015610d5e57506002546001600160a01b03848116911614155b15610d7057600a54601255600b546013555b6003546001600160a01b038481169116148015610d9b57506002546001600160a01b03858116911614155b15610dad57600c54601255600d546013555b610677848484846110b2565b5f8184841115610ddc5760405162461bcd60e51b81526004016105559190611545565b505f610de88486611780565b95945050505050565b5f601054821115610e575760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610555565b5f610e606110e0565b9050610e6c8382611101565b9392505050565b6001600160a01b038083165f90815260076020908152604080832093851683529290529081208054670de0b6b3a76400009290610eb190849061176d565b90915550505050565b6009805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610efa57610efa61172d565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f759190611793565b81600181518110610f8857610f8861172d565b6001600160a01b039283166020918202929092010152600254610fae9130911684610813565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fe69085905f908690309042906004016117ae565b5f604051808303815f87803b158015610ffd575f80fd5b505af115801561100f573d5f803e3d5ffd5b50506009805460ff1916905550505050565b5f61102d60028361181d565b6017546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015611065573d5f803e3d5ffd5b505f6110718284611780565b6018549091506001600160a01b03166108fc61108d848461176d565b6040518115909202915f818181858888f19350505050158015610677573d5f803e3d5ffd5b806110bf576110bf611142565b6110ca84848461116f565b8061067757610677600e54601255600f54601355565b5f805f6110eb611260565b90925090506110fa8282611101565b9250505090565b5f610e6c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061129f565b6012541580156111525750601354155b1561115957565b60128054600e5560138054600f555f9182905555565b5f805f805f8061117e876112cb565b6001600160a01b038f165f90815260146020526040902054959b509399509197509550935091506111af9087611320565b6001600160a01b03808b165f9081526014602052604080822093909355908a16815220546111dd9086611361565b6001600160a01b0389165f908152601460205260409020556111fe816113bf565b6112088483611405565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161124d91815260200190565b60405180910390a3505050505050505050565b6010545f908190670de0b6b3a764000061127a8282611101565b82101561129657505060105492670de0b6b3a764000092509050565b90939092509050565b5f81836112bf5760405162461bcd60e51b81526004016105559190611545565b505f610de8848661181d565b5f805f805f805f805f6112e38a601254601354611429565b9250925092505f6112f26110e0565b90505f805f6113038e87878761147b565b919e509c509a509598509396509194505050505091939550919395565b5f610e6c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610db9565b5f8061136d838561176d565b905083811015610e6c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610555565b5f6113c86110e0565b90505f6113d583836114c7565b305f908152601460205260409020549091506113f19082611361565b305f90815260146020526040902055505050565b6010546114129083611320565b6010556006546114229082611361565b6006555050565b5f808080611442606461143c89896114c7565b90611101565b90505f611454606461143c8a896114c7565b90505f61146b826114658b86611320565b90611320565b9992985090965090945050505050565b5f80808061148988866114c7565b90505f61149688876114c7565b90505f6114a388886114c7565b90505f6114b4826114658686611320565b939b939a50919850919650505050505050565b5f825f036114d657505f61049e565b5f6114e1838561183c565b9050826114ee858361181d565b14610e6c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610555565b5f6020808352835180828501525f5b8181101561157057858101830151858201604001528201611554565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106ed575f80fd5b5f80604083850312156115b5575f80fd5b82356115c081611590565b946020939093013593505050565b5f805f606084860312156115e0575f80fd5b83356115eb81611590565b925060208401356115fb81611590565b929592945050506040919091013590565b5f6020828403121561161c575f80fd5b8135610e6c81611590565b5f60208284031215611637575f80fd5b5035919050565b5f805f60408486031215611650575f80fd5b833567ffffffffffffffff80821115611667575f80fd5b818601915086601f83011261167a575f80fd5b813581811115611688575f80fd5b8760208260051b850101111561169c575f80fd5b6020928301955093505084013580151581146116b6575f80fd5b809150509250925092565b5f80604083850312156116d2575f80fd5b82356116dd81611590565b915060208301356116ed81611590565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161176657611766611741565b5060010190565b8082018082111561049e5761049e611741565b8181038181111561049e5761049e611741565b5f602082840312156117a3575f80fd5b8151610e6c81611590565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117fc5784516001600160a01b0316835293830193918301916001016117d7565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261183757634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761049e5761049e61174156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ab96ffaf271675239cbe33e133a086b70ed8342d6dfe67f22b713cf38f2f85fe64736f6c63430008140033

Deployed Bytecode Sourcemap

4177:12505:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6479:83;;;;;;;;;;-1:-1:-1;6549:5:0;;;;;;;;;;;;-1:-1:-1;;;6549:5:0;;;;6479:83;;;;;;;:::i;:::-;;;;;;;;7856:193;;;;;;;;;;-1:-1:-1;7856:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7856:193:0;1023:187:1;4229:41:0;;;;;;;;;;-1:-1:-1;4229:41:0;;;;-1:-1:-1;;;;;4229:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;4229:41:0;1215:229:1;6902:95:0;;;;;;;;;;-1:-1:-1;4634:21:0;6902:95;;;1595:25:1;;;1583:2;1568:18;6902:95:0;1449:177:1;7402:446:0;;;;;;;;;;-1:-1:-1;7402:446:0;;;;;:::i;:::-;;:::i;6665:83::-;;;;;;;;;;-1:-1:-1;6665:83:0;;4591:1;2234:36:1;;2222:2;2207:18;6665:83:0;2092:184:1;5728:53:0;;;;;;;;;;;;;;;;6756:138;;;;;;;;;;-1:-1:-1;6756:138:0;;;;;:::i;:::-;;:::i;4020:148::-;;;;;;;;;;;;;:::i;:::-;;5884:94;;;;;;;;;;-1:-1:-1;5884:94:0;;;;-1:-1:-1;;;;;5884:94:0;;;16304:129;;;;;;;;;;-1:-1:-1;16304:129:0;;;;;:::i;:::-;;:::i;3685:79::-;;;;;;;;;;-1:-1:-1;3723:7:0;3750:6;-1:-1:-1;;;;;3750:6:0;3685:79;;6570:87;;;;;;;;;;-1:-1:-1;6642:7:0;;;;;;;;;;;;-1:-1:-1;;;6642:7:0;;;;6570:87;;5789:88;;;;;;;;;;-1:-1:-1;5789:88:0;;;;-1:-1:-1;;;;;5789:88:0;;;7195:199;;;;;;;;;;-1:-1:-1;7195:199:0;;;;;:::i;:::-;;:::i;16445:234::-;;;;;;;;;;-1:-1:-1;16445:234:0;;;;;:::i;:::-;;:::i;15432:115::-;;;;;;;;;;-1:-1:-1;15432:115:0;;;;;:::i;:::-;;:::i;11646:101::-;;;;;;;;;;-1:-1:-1;11646:101:0;;;;;:::i;:::-;;:::i;4359:28::-;;;;;;;;;;-1:-1:-1;4359:28:0;;;;-1:-1:-1;;;;;4359:28:0;;;4662:46;;;;;;;;;;;;;;;;7003:184;;;;;;;;;;-1:-1:-1;7003:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7152:18:0;;;7120:7;7152:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7003:184;5668:52;;;;;;;;;;;;;;;;3770:244;;;;;;;;;;-1:-1:-1;3770:244:0;;;;;:::i;:::-;;:::i;12815:123::-;;;;;;;;;;;;;:::i;7856:193::-;7958:4;7980:39;2403:10;8003:7;8012:6;7980:8;:39::i;:::-;-1:-1:-1;8037:4:0;7856:193;;;;;:::o;7402:446::-;7534:4;7551:36;7561:6;7569:9;7580:6;7551:9;:36::i;:::-;7598:220;7621:6;2403:10;7669:138;7725:6;7669:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7669:19:0;;;;;;:11;:19;;;;;;;;2403:10;7669:33;;;;;;;;;;:37;:138::i;:::-;7598:8;:220::i;:::-;-1:-1:-1;7836:4:0;7402:446;;;;;:::o;6756:138::-;-1:-1:-1;;;;;6869:16:0;;6822:7;6869:16;;;:7;:16;;;;;;6849:37;;:19;:37::i;4020:148::-;3322:6;;-1:-1:-1;;;;;3322:6:0;2403:10;3322:22;3314:67;;;;-1:-1:-1;;;3314:67:0;;;;;;;:::i;:::-;;;;;;;;;4127:1:::1;4111:6:::0;;4090:40:::1;::::0;-1:-1:-1;;;;;4111:6:0;;::::1;::::0;4090:40:::1;::::0;4127:1;;4090:40:::1;4158:1;4141:19:::0;;-1:-1:-1;;;;;;4141:19:0::1;::::0;;4020:148::o;16304:129::-;3322:6;;-1:-1:-1;;;;;3322:6:0;2403:10;3322:22;3314:67;;;;-1:-1:-1;;;3314:67:0;;;;;;;:::i;:::-;16391:13:::1;:34:::0;16304:129::o;7195:199::-;7300:4;7322:42;2403:10;7346:9;7357:6;7322:9;:42::i;16445:234::-;3322:6;;-1:-1:-1;;;;;3322:6:0;2403:10;3322:22;3314:67;;;;-1:-1:-1;;;3314:67:0;;;;;;;:::i;:::-;16562:9:::1;16558:114;16577:19:::0;;::::1;16558:114;;;16652:8;16618:18;:31;16637:8;;16646:1;16637:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16618:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16618:31:0;:42;;-1:-1:-1;;16618:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16598:3;::::1;::::0;::::1;:::i;:::-;;;;16558:114;;;;16445:234:::0;;;:::o;15432:115::-;3322:6;;-1:-1:-1;;;;;3322:6:0;2403:10;3322:22;3314:67;;;;-1:-1:-1;;;3314:67:0;;;;;;;:::i;:::-;15496:13:::1;:20:::0;;-1:-1:-1;;15496:20:0::1;15512:4;15496:20;::::0;;15518:13:::1;:21:::0;;-1:-1:-1;;;;;15518:21:0;;::::1;-1:-1:-1::0;;;;;;15518:21:0;;::::1;::::0;;;::::1;::::0;;15432:115::o;11646:101::-;11721:17;;11702:37;;11714:5;;-1:-1:-1;;;;;11721:17:0;11702:11;:37::i;:::-;11646:101;:::o;3770:244::-;3322:6;;-1:-1:-1;;;;;3322:6:0;2403:10;3322:22;3314:67;;;;-1:-1:-1;;;3314:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3859:22:0;::::1;3851:73;;;::::0;-1:-1:-1;;;3851:73:0;;5297:2:1;3851:73:0::1;::::0;::::1;5279:21:1::0;5336:2;5316:18;;;5309:30;5375:34;5355:18;;;5348:62;-1:-1:-1;;;5426:18:1;;;5419:36;5472:19;;3851:73:0::1;5095:402:1::0;3851:73:0::1;3961:6;::::0;;3940:38:::1;::::0;-1:-1:-1;;;;;3940:38:0;;::::1;::::0;3961:6;::::1;::::0;3940:38:::1;::::0;::::1;3989:6;:17:::0;;-1:-1:-1;;;;;;3989:17:0::1;-1:-1:-1::0;;;;;3989:17:0;;;::::1;::::0;;;::::1;::::0;;3770:244::o;12815:123::-;3322:6;;-1:-1:-1;;;;;3322:6:0;2403:10;3322:22;3314:67;;;;-1:-1:-1;;;3314:67:0;;;;;;;:::i;:::-;4634:21:::1;12868:15;:25:::0;;;12904:16:::1;:26:::0;12815:123::o;9135:369::-;-1:-1:-1;;;;;9262:19:0;;9254:68;;;;-1:-1:-1;;;9254:68:0;;5704:2:1;9254:68:0;;;5686:21:1;5743:2;5723:18;;;5716:30;5782:34;5762:18;;;5755:62;-1:-1:-1;;;5833:18:1;;;5826:34;5877:19;;9254:68:0;5502:400:1;9254:68:0;-1:-1:-1;;;;;9341:21:0;;9333:68;;;;-1:-1:-1;;;9333:68:0;;6109:2:1;9333:68:0;;;6091:21:1;6148:2;6128:18;;;6121:30;6187:34;6167:18;;;6160:62;-1:-1:-1;;;6238:18:1;;;6231:32;6280:19;;9333:68:0;5907:398:1;9333:68:0;-1:-1:-1;;;;;9412:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9464:32;;1595:25:1;;;9464:32:0;;1568:18:1;9464:32:0;;;;;;;9135:369;;;:::o;12948:2427::-;-1:-1:-1;;;;;13070:16:0;;13062:64;;;;-1:-1:-1;;;13062:64:0;;6512:2:1;13062:64:0;;;6494:21:1;6551:2;6531:18;;;6524:30;6590:34;6570:18;;;6563:62;-1:-1:-1;;;6641:18:1;;;6634:33;6684:19;;13062:64:0;6310:399:1;13062:64:0;-1:-1:-1;;;;;13146:18:0;;13138:68;;;;-1:-1:-1;;;13138:68:0;;6916:2:1;13138:68:0;;;6898:21:1;6955:2;6935:18;;;6928:30;6994:34;6974:18;;;6967:62;-1:-1:-1;;;7045:18:1;;;7038:35;7090:19;;13138:68:0;6714:401:1;13138:68:0;13234:1;13225:6;:10;13217:64;;;;-1:-1:-1;;;13217:64:0;;7322:2:1;13217:64:0;;;7304:21:1;7361:2;7341:18;;;7334:30;7400:34;7380:18;;;7373:62;-1:-1:-1;;;7451:18:1;;;7444:39;7500:19;;13217:64:0;7120:405:1;13217:64:0;3723:7;3750:6;-1:-1:-1;;;;;13310:15:0;;;3750:6;;13310:15;;;;:46;;-1:-1:-1;3723:7:0;3750:6;-1:-1:-1;;;;;13343:13:0;;;3750:6;;13343:13;;13310:46;13292:1318;;;13421:13;;;;13416:208;;3723:7;3750:6;-1:-1:-1;;;;;13485:15:0;;;3750:6;;13485:15;13455:153;;;;-1:-1:-1;;;13455:153:0;;7732:2:1;13455:153:0;;;7714:21:1;7771:2;7751:18;;;7744:30;7810:34;7790:18;;;7783:62;7881:33;7861:18;;;7854:61;7932:19;;13455:153:0;7530:427:1;13455:153:0;13656:15;;13646:6;:25;;13638:66;;;;-1:-1:-1;;;13638:66:0;;8164:2:1;13638:66:0;;;8146:21:1;8203:2;8183:18;;;8176:30;8242;8222:18;;;8215:58;8290:18;;13638:66:0;7962:352:1;13638:66:0;13728:13;;-1:-1:-1;;;;;13722:19:0;;;13728:13;;13722:19;13719:166;;13795:16;;13786:6;13770:13;13780:2;13770:9;:13::i;:::-;:22;;;;:::i;:::-;:41;13762:107;;;;-1:-1:-1;;;13762:107:0;;8651:2:1;13762:107:0;;;8633:21:1;8690:2;8670:18;;;8663:30;8729:34;8709:18;;;8702:62;-1:-1:-1;;;8780:18:1;;;8773:33;8823:19;;13762:107:0;8449:399:1;13762:107:0;13901:26;13930:24;13948:4;13930:9;:24::i;:::-;13901:53;;14062:15;;14040:18;:37;14037:81;;-1:-1:-1;14101:15:0;;14037:81;14138:11;;;;;;;:50;;;;;14175:13;;14153:18;:35;;14138:50;:83;;;;-1:-1:-1;14211:10:0;;;;14210:11;14138:83;:126;;;;-1:-1:-1;14251:13:0;;-1:-1:-1;;;;;14243:21:0;;;14251:13;;14243:21;;14138:126;:173;;;;-1:-1:-1;;;;;;14287:24:0;;;;;;:18;:24;;;;;;;;14286:25;14138:173;:218;;;;-1:-1:-1;;;;;;14334:22:0;;;;;;:18;:22;;;;;;;;14333:23;14138:218;14134:465;;;14391:33;14405:18;14391:13;:33::i;:::-;14449:21;14493:16;;14489:95;;14534:30;14542:21;14534:7;:30::i;:::-;14372:227;14134:465;13368:1242;13292:1318;-1:-1:-1;;;;;14697:24:0;;14622:11;14697:24;;;:18;:24;;;;;;14636:4;;14697:24;;;:50;;-1:-1:-1;;;;;;14725:22:0;;;;;;:18;:22;;;;;;;;14697:50;14696:116;;;-1:-1:-1;14775:13:0;;-1:-1:-1;;;;;14767:21:0;;;14775:13;;14767:21;;;;:44;;-1:-1:-1;14798:13:0;;-1:-1:-1;;;;;14792:19:0;;;14798:13;;14792:19;;14767:44;14678:633;;;-1:-1:-1;14848:5:0;14678:633;;;14929:13;;-1:-1:-1;;;;;14921:21:0;;;14929:13;;14921:21;:55;;;;-1:-1:-1;14960:15:0;;-1:-1:-1;;;;;14946:30:0;;;14960:15;;14946:30;;14921:55;14918:166;;;15008:16;;14997:8;:27;15055:13;;15043:9;:25;14918:166;15141:13;;-1:-1:-1;;;;;15135:19:0;;;15141:13;;15135:19;:55;;;;-1:-1:-1;15174:15:0;;-1:-1:-1;;;;;15158:32:0;;;15174:15;;15158:32;;15135:55;15131:169;;;15222:17;;15211:8;:28;15270:14;;15258:9;:26;15131:169;15321:46;15342:4;15348:2;15352:6;15360;15321:20;:46::i;803:224::-;923:7;959:12;951:6;;;;943:29;;;;-1:-1:-1;;;943:29:0;;;;;;;;:::i;:::-;-1:-1:-1;983:9:0;995:5;999:1;995;:5;:::i;:::-;983:17;803:224;-1:-1:-1;;;;;803:224:0:o;12449:323::-;12544:7;12602;;12591;:18;;12569:110;;;;-1:-1:-1;;;12569:110:0;;9188:2:1;12569:110:0;;;9170:21:1;9227:2;9207:18;;;9200:30;9266:34;9246:18;;;9239:62;-1:-1:-1;;;9317:18:1;;;9310:40;9367:19;;12569:110:0;8986:406:1;12569:110:0;12690:19;12712:10;:8;:10::i;:::-;12690:32;-1:-1:-1;12740:24:0;:7;12690:32;12740:11;:24::i;:::-;12733:31;12449:323;-1:-1:-1;;;12449:323:0:o;9516:115::-;-1:-1:-1;;;;;9587:18:0;;;;;;;:11;:18;;;;;;;;:25;;;;;;;;;;;:36;;4634:21;;9587:18;:36;;4634:21;;9587:36;:::i;:::-;;;;-1:-1:-1;;;;9516:115:0:o;15769:479::-;5390:10;:17;;-1:-1:-1;;5390:17:0;5403:4;5390:17;;;15867:16:::1;::::0;;15881:1:::1;15867:16:::0;;;;;::::1;::::0;;-1:-1:-1;;15867:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15867:16:0::1;15843:40;;15912:4;15894;15899:1;15894:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15894:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;15938:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;15938:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;15894:7;;15938:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15928:4;15933:1;15928:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15928:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;16003:15:::1;::::0;15971:62:::1;::::0;15988:4:::1;::::0;16003:15:::1;16021:11:::0;15971:8:::1;:62::i;:::-;16044:15;::::0;:196:::1;::::0;-1:-1:-1;;;16044:196:0;;-1:-1:-1;;;;;16044:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;16125:11;;16044:15:::1;::::0;16167:4;;16194::::1;::::0;16214:15:::1;::::0;16044:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5430:10:0;:18;;-1:-1:-1;;5430:18:0;;;-1:-1:-1;;;;15769:479:0:o;9639:236::-;9691:14;9708:10;9717:1;9708:6;:10;:::i;:::-;9730:11;;:28;;9691:27;;-1:-1:-1;;;;;;9730:11:0;;:28;;;;;9691:27;;9730:11;:28;:11;:28;9691:27;9730:11;:28;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9769:20:0;9792:15;9801:6;9792;:15;:::i;:::-;9818:17;;9769:38;;-1:-1:-1;;;;;;9818:17:0;:49;9845:21;9860:6;9769:38;9845:21;:::i;:::-;9818:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8057:335;8219:7;8214:51;;8243:10;:8;:10::i;:::-;8276:45;8295:6;8303:9;8314:6;8276:18;:45::i;:::-;8337:7;8332:53;;8361:12;8452:16;;8441:8;:27;8491:17;;8479:9;:29;8400:116;10736:164;10778:7;10799:15;10816;10835:19;:17;:19::i;:::-;10798:56;;-1:-1:-1;10798:56:0;-1:-1:-1;10872:20:0;10798:56;;10872:11;:20::i;:::-;10865:27;;;;10736:164;:::o;1264:132::-;1322:7;1349:39;1353:1;1356;1349:39;;;;;;;;;;;;;;;;;:3;:39::i;15555:206::-;15598:8;;:13;:31;;;;-1:-1:-1;15615:9:0;;:14;15598:31;15594:44;;;15555:206::o;15594:44::-;15667:8;;;15648:16;:27;15706:9;;;15686:17;:29;-1:-1:-1;15717:12:0;;;;15740:13;15555:206::o;8522:605::-;8670:15;8700:23;8738:12;8765:23;8803:12;8830:13;8857:19;8868:7;8857:10;:19::i;:::-;-1:-1:-1;;;;;8905:15:0;;;;;;:7;:15;;;;;;8655:221;;-1:-1:-1;8655:221:0;;-1:-1:-1;8655:221:0;;-1:-1:-1;8655:221:0;-1:-1:-1;8655:221:0;-1:-1:-1;8655:221:0;-1:-1:-1;8905:28:0;;8655:221;8905:19;:28::i;:::-;-1:-1:-1;;;;;8887:15:0;;;;;;;:7;:15;;;;;;:46;;;;8965:18;;;;;;;:39;;8988:15;8965:22;:39::i;:::-;-1:-1:-1;;;;;8944:18:0;;;;;;:7;:18;;;;;:60;9015:18;9027:5;9015:11;:18::i;:::-;9035:24;9048:4;9054;9035:12;:24::i;:::-;9092:9;-1:-1:-1;;;;;9075:44:0;9084:6;-1:-1:-1;;;;;9075:44:0;;9103:15;9075:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;9075:44:0;;;;;;;;8644:483;;;;;;8522:605;;;:::o;10908:257::-;11006:7;;10959;;;;4634:21;11074:20;11006:7;4634:21;11074:11;:20::i;:::-;11064:7;:30;11060:61;;;-1:-1:-1;;11104:7:0;;;4634:21;;-1:-1:-1;10908:257:0;-1:-1:-1;10908:257:0:o;11060:61::-;11140:7;;11149;;-1:-1:-1;10908:257:0;-1:-1:-1;10908:257:0:o;1035:223::-;1155:7;1190:12;1183:5;1175:28;;;;-1:-1:-1;;;1175:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1214:9:0;1226:5;1230:1;1226;:5;:::i;9883:616::-;9983:7;10005;10027;10049;10071;10093;10129:23;10154:12;10168:13;10198:41;10210:7;10219:8;;10229:9;;10198:11;:41::i;:::-;10128:111;;;;;;10250:19;10272:10;:8;:10::i;:::-;10250:32;;10294:15;10311:23;10336:12;10365:46;10377:7;10386:4;10392:5;10399:11;10365;:46::i;:::-;10293:118;;-1:-1:-1;10293:118:0;-1:-1:-1;10293:118:0;-1:-1:-1;10462:15:0;;-1:-1:-1;10479:4:0;;-1:-1:-1;10485:5:0;;-1:-1:-1;;;;;9883:616:0;;;;;;;:::o;661:136::-;719:7;746:43;750:1;753;746:43;;;;;;;;;;;;;;;;;:3;:43::i;224:179::-;282:7;;314:5;318:1;314;:5;:::i;:::-;302:17;;343:1;338;:6;;330:46;;;;-1:-1:-1;;;330:46:0;;11194:2:1;330:46:0;;;11176:21:1;11233:2;11213:18;;;11206:30;11272:29;11252:18;;;11245:57;11319:18;;330:46:0;10992:351:1;10511:213:0;10566:19;10588:10;:8;:10::i;:::-;10566:32;-1:-1:-1;10609:13:0;10625:22;:5;10566:32;10625:9;:22::i;:::-;10699:4;10683:22;;;;:7;:22;;;;;;10609:38;;-1:-1:-1;10683:33:0;;10609:38;10683:26;:33::i;:::-;10674:4;10658:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;10511:213:0:o;12295:148::-;12374:7;;:17;;12386:4;12374:11;:17::i;:::-;12364:7;:27;12415:10;;:20;;12430:4;12415:14;:20::i;:::-;12402:10;:33;-1:-1:-1;;12295:148:0:o;11173:467::-;11341:7;;;;11435:29;11460:3;11435:20;:7;11447;11435:11;:20::i;:::-;:24;;:29::i;:::-;11420:44;-1:-1:-1;11475:13:0;11491:28;11515:3;11491:19;:7;11503:6;11491:11;:19::i;:28::-;11475:44;-1:-1:-1;11530:23:0;11556:28;11475:44;11556:17;:7;11568:4;11556:11;:17::i;:::-;:21;;:28::i;:::-;11530:54;11620:4;;-1:-1:-1;11626:5:0;;-1:-1:-1;11173:467:0;;-1:-1:-1;;;;;11173:467:0:o;11753:534::-;11947:7;;;;12044:24;:7;12056:11;12044;:24::i;:::-;12026:42;-1:-1:-1;12079:12:0;12094:21;:4;12103:11;12094:8;:21::i;:::-;12079:36;-1:-1:-1;12126:13:0;12142:22;:5;12152:11;12142:9;:22::i;:::-;12126:38;-1:-1:-1;12175:23:0;12201:28;12126:38;12201:17;:7;12213:4;12201:11;:17::i;:28::-;12248:7;;;;-1:-1:-1;12274:4:0;;-1:-1:-1;11753:534:0;;-1:-1:-1;;;;;;;11753:534:0:o;409:246::-;467:7;491:1;496;491:6;487:47;;-1:-1:-1;521:1:0;514:8;;487:47;544:9;556:5;560:1;556;:5;:::i;:::-;544:17;-1:-1:-1;589:1:0;580:5;584:1;544:17;580:5;:::i;:::-;:10;572:56;;;;-1:-1:-1;;;572:56:0;;11723:2:1;572:56:0;;;11705:21:1;11762:2;11742:18;;;11735:30;11801:34;11781:18;;;11774:62;-1:-1:-1;;;11852:18:1;;;11845:31;11893:19;;572:56:0;11521:397:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2281:247::-;2340:6;2393:2;2381:9;2372:7;2368:23;2364:32;2361:52;;;2409:1;2406;2399:12;2361:52;2448:9;2435:23;2467:31;2492:5;2467:31;:::i;2757:180::-;2816:6;2869:2;2857:9;2848:7;2844:23;2840:32;2837:52;;;2885:1;2882;2875:12;2837:52;-1:-1:-1;2908:23:1;;2757:180;-1:-1:-1;2757:180:1:o;3150:782::-;3242:6;3250;3258;3311:2;3299:9;3290:7;3286:23;3282:32;3279:52;;;3327:1;3324;3317:12;3279:52;3367:9;3354:23;3396:18;3437:2;3429:6;3426:14;3423:34;;;3453:1;3450;3443:12;3423:34;3491:6;3480:9;3476:22;3466:32;;3536:7;3529:4;3525:2;3521:13;3517:27;3507:55;;3558:1;3555;3548:12;3507:55;3598:2;3585:16;3624:2;3616:6;3613:14;3610:34;;;3640:1;3637;3630:12;3610:34;3695:7;3688:4;3678:6;3675:1;3671:14;3667:2;3663:23;3659:34;3656:47;3653:67;;;3716:1;3713;3706:12;3653:67;3747:4;3739:13;;;;-1:-1:-1;3771:6:1;-1:-1:-1;;3812:20:1;;3799:34;3869:13;;3862:21;3852:32;;3842:60;;3898:1;3895;3888:12;3842:60;3921:5;3911:15;;;3150:782;;;;;:::o;3937:388::-;4005:6;4013;4066:2;4054:9;4045:7;4041:23;4037:32;4034:52;;;4082:1;4079;4072:12;4034:52;4121:9;4108:23;4140:31;4165:5;4140:31;:::i;:::-;4190:5;-1:-1:-1;4247:2:1;4232:18;;4219:32;4260:33;4219:32;4260:33;:::i;:::-;4312:7;4302:17;;;3937:388;;;;;:::o;4330:356::-;4532:2;4514:21;;;4551:18;;;4544:30;4610:34;4605:2;4590:18;;4583:62;4677:2;4662:18;;4330:356::o;4691:127::-;4752:10;4747:3;4743:20;4740:1;4733:31;4783:4;4780:1;4773:15;4807:4;4804:1;4797:15;4823:127;4884:10;4879:3;4875:20;4872:1;4865:31;4915:4;4912:1;4905:15;4939:4;4936:1;4929:15;4955:135;4994:3;5015:17;;;5012:43;;5035:18;;:::i;:::-;-1:-1:-1;5082:1:1;5071:13;;4955:135::o;8319:125::-;8384:9;;;8405:10;;;8402:36;;;8418:18;;:::i;8853:128::-;8920:9;;;8941:11;;;8938:37;;;8955:18;;:::i;9529:251::-;9599:6;9652:2;9640:9;9631:7;9627:23;9623:32;9620:52;;;9668:1;9665;9658:12;9620:52;9700:9;9694:16;9719:31;9744:5;9719:31;:::i;9785:980::-;10047:4;10095:3;10084:9;10080:19;10126:6;10115:9;10108:25;10152:2;10190:6;10185:2;10174:9;10170:18;10163:34;10233:3;10228:2;10217:9;10213:18;10206:31;10257:6;10292;10286:13;10323:6;10315;10308:22;10361:3;10350:9;10346:19;10339:26;;10400:2;10392:6;10388:15;10374:29;;10421:1;10431:195;10445:6;10442:1;10439:13;10431:195;;;10510:13;;-1:-1:-1;;;;;10506:39:1;10494:52;;10601:15;;;;10566:12;;;;10542:1;10460:9;10431:195;;;-1:-1:-1;;;;;;;10682:32:1;;;;10677:2;10662:18;;10655:60;-1:-1:-1;;;10746:3:1;10731:19;10724:35;10643:3;9785:980;-1:-1:-1;;;9785:980:1:o;10770:217::-;10810:1;10836;10826:132;;10880:10;10875:3;10871:20;10868:1;10861:31;10915:4;10912:1;10905:15;10943:4;10940:1;10933:15;10826:132;-1:-1:-1;10972:9:1;;10770:217::o;11348:168::-;11421:9;;;11452;;11469:15;;;11463:22;;11449:37;11439:71;;11490:18;;:::i

Swarm Source

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