ETH Price: $2,530.66 (-2.76%)

Token

Panda Moon (PANDA)
 

Overview

Max Total Supply

1,000,000,000 PANDA

Holders

97

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,432,026.788950808 PANDA

Value
$0.00
0xFba9771FA557Bc12a5187b68118a76C3E0e62820
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:
PANDA

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**
Panda Moon ($PANDA)

Supply: 1,000,000,000 $PANDA
Tax: 0% final tax
Max Wallet: 20,000,000 $PANDA (2%) at launch then remove max wallet limit once stabilize

Twitter:    twitter.com/pandamoonerc
TG:         t.me/pandamoonerc
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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);
    }

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

}

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() 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
        );
}

contract PANDA is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Panda Moon";
    string private constant _symbol = "PANDA";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 10;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 99;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable private _developmentAddress = payable(0xD8e05Dd8186356073D5E3b29B0B561641494F390);
    address payable private _marketingAddress = payable(0xD8e05Dd8186356073D5E3b29B0B561641494F390);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = _tTotal*5/1000;
    uint256 public _maxWalletSize = _tTotal*1/100;
    uint256 public _swapTokensAtAmount = _tTotal*4/1000;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        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 totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _swapTokensAtAmount*2)
            {
                contractTokenBalance = _swapTokensAtAmount*2;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 100000000000000000) {
                    sendETHToFee(contractETHBalance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        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 sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

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

    function toggleSwap (bool _swapEnabled) external onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        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);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    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 _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 setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        require (_redisFeeOnBuy+_redisFeeOnSell+_taxFeeOnBuy+_taxFeeOnSell <= 40);
    }

    //Set maximum
    function setMaxTxnAndWalletAmount(uint256 maxTxAmount,uint256 maxWalletSize) public onlyOwner {
        _maxTxAmount = maxTxAmount;
        _maxWalletSize = maxWalletSize; 
        require (_maxTxAmount >= _tTotal/100 && _maxWalletSize >= _tTotal/100);
    }

}

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":"_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":"_swapTokensAtAmount","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxTxnAndWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a670de0b6b3a7640000600019620003f2565b62000028906000196200041f565b60065560006008819055600a60098190558190556063600b819055600c829055600d819055600e91909155600f556010805473d8e05dd8186356073d5e3b29b0b561641494f3906001600160a01b031991821681179092556011805490911690911790556013805462ffffff60a01b19166201000160a01b1790556103e8620000bb670de0b6b3a7640000600562000439565b620000c791906200045b565b6014556064620000e1670de0b6b3a7640000600162000439565b620000ed91906200045b565b6015556103e862000108670de0b6b3a7640000600462000439565b6200011491906200045b565b6016553480156200012457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a01559260048083019392829003018186803b158015620001dd57600080fd5b505afa158015620001f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000218919062000472565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026157600080fd5b505afa15801562000276573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029c919062000472565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002e557600080fd5b505af1158015620002fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000320919062000472565b601380546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601154909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620003cd91815260200190565b60405180910390a350620004a4565b634e487b7160e01b600052601260045260246000fd5b600082620004045762000404620003dc565b500690565b634e487b7160e01b600052601160045260246000fd5b60008282101562000434576200043462000409565b500390565b600081600019048311821515161562000456576200045662000409565b500290565b6000826200046d576200046d620003dc565b500490565b6000602082840312156200048557600080fd5b81516001600160a01b03811681146200049d57600080fd5b9392505050565b6117f980620004b46000396000f3fe60806040526004361061012e5760003560e01c806370a08231116100ab5780638f9a55c01161006f5780638f9a55c01461033e57806395d89b4114610354578063a2a957bb14610382578063a9059cbb146103a2578063dd62ed3e146103c2578063f2fde38b1461040857600080fd5b806370a08231146102b5578063715018a6146102d55780637d1db4a5146102ea5780637ecaba83146103005780638da5cb5b1461032057600080fd5b80632fd689e3116100f25780632fd689e31461022c578063313ce5671461024257806349bd5a5e1461025e5780636d8aa8f81461027e5780636fc3eaec146102a057600080fd5b806306fdde031461013a578063095ea7b31461017f5780631694505e146101af57806318160ddd146101e757806323b872dd1461020c57600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5060408051808201909152600a8152692830b732309026b7b7b760b11b60208201525b6040516101769190611496565b60405180910390f35b34801561018b57600080fd5b5061019f61019a366004611503565b610428565b6040519015158152602001610176565b3480156101bb57600080fd5b506012546101cf906001600160a01b031681565b6040516001600160a01b039091168152602001610176565b3480156101f357600080fd5b50670de0b6b3a76400005b604051908152602001610176565b34801561021857600080fd5b5061019f61022736600461152f565b61043f565b34801561023857600080fd5b506101fe60165481565b34801561024e57600080fd5b5060405160098152602001610176565b34801561026a57600080fd5b506013546101cf906001600160a01b031681565b34801561028a57600080fd5b5061029e610299366004611570565b6104a8565b005b3480156102ac57600080fd5b5061029e6104f9565b3480156102c157600080fd5b506101fe6102d0366004611592565b610504565b3480156102e157600080fd5b5061029e610526565b3480156102f657600080fd5b506101fe60145481565b34801561030c57600080fd5b5061029e61031b3660046115af565b61059a565b34801561032c57600080fd5b506000546001600160a01b03166101cf565b34801561034a57600080fd5b506101fe60155481565b34801561036057600080fd5b5060408051808201909152600581526450414e444160d81b6020820152610169565b34801561038e57600080fd5b5061029e61039d3660046115d1565b610613565b3480156103ae57600080fd5b5061019f6103bd366004611503565b610684565b3480156103ce57600080fd5b506101fe6103dd366004611603565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561041457600080fd5b5061029e610423366004611592565b610691565b600061043533848461077b565b5060015b92915050565b600061044c84848461089f565b61049e84336104998560405180606001604052806028815260200161179c602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610d5f565b61077b565b5060019392505050565b6000546001600160a01b031633146104db5760405162461bcd60e51b81526004016104d29061163c565b60405180910390fd5b60138054911515600160b01b0260ff60b01b19909216919091179055565b61050247610d99565b565b6001600160a01b03811660009081526002602052604081205461043990610dd3565b6000546001600160a01b031633146105505760405162461bcd60e51b81526004016104d29061163c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105c45760405162461bcd60e51b81526004016104d29061163c565b601482905560158190556105e16064670de0b6b3a7640000611687565b6014541015801561060657506106006064670de0b6b3a7640000611687565b60155410155b61060f57600080fd5b5050565b6000546001600160a01b0316331461063d5760405162461bcd60e51b81526004016104d29061163c565b6008849055600a8390556009829055600b8190556028818361065f86886116a9565b61066991906116a9565b61067391906116a9565b111561067e57600080fd5b50505050565b600061043533848461089f565b6000546001600160a01b031633146106bb5760405162461bcd60e51b81526004016104d29061163c565b6001600160a01b0381166107205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107dd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d2565b6001600160a01b03821661083e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d2565b6001600160a01b0382166109655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d2565b600081116109c75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104d2565b6000546001600160a01b038481169116148015906109f357506000546001600160a01b03838116911614155b15610c5857601354600160a01b900460ff16610a8c576000546001600160a01b03848116911614610a8c5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104d2565b601454811115610ade5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104d2565b6013546001600160a01b03838116911614610b635760155481610b0084610504565b610b0a91906116a9565b10610b635760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016104d2565b6000610b6e30610504565b6016549091508082101590610b849060026116c1565b8210610b9b57601654610b989060026116c1565b91505b808015610bb25750601354600160a81b900460ff16155b8015610bcc57506013546001600160a01b03868116911614155b8015610be15750601354600160b01b900460ff165b8015610c0657506001600160a01b03851660009081526005602052604090205460ff16155b8015610c2b57506001600160a01b03841660009081526005602052604090205460ff16155b15610c5557610c3982610e57565b4767016345785d8a0000811115610c5357610c5381610d99565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610c9a57506001600160a01b03831660009081526005602052604090205460ff165b80610ccc57506013546001600160a01b03858116911614801590610ccc57506013546001600160a01b03848116911614155b15610cd957506000610d53565b6013546001600160a01b038581169116148015610d0457506012546001600160a01b03848116911614155b15610d1657600854600c55600954600d555b6013546001600160a01b038481169116148015610d4157506012546001600160a01b03858116911614155b15610d5357600a54600c55600b54600d555b61067e84848484610fe0565b60008184841115610d835760405162461bcd60e51b81526004016104d29190611496565b506000610d9084866116e0565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561060f573d6000803e3d6000fd5b6000600654821115610e3a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104d2565b6000610e4461100e565b9050610e508382611031565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e9f57610e9f6116f7565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015610ef357600080fd5b505afa158015610f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2b919061170d565b81600181518110610f3e57610f3e6116f7565b6001600160a01b039283166020918202929092010152601254610f64913091168461077b565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f9d90859060009086903090429060040161172a565b600060405180830381600087803b158015610fb757600080fd5b505af1158015610fcb573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b80610fed57610fed611073565b610ff88484846110a1565b8061067e5761067e600e54600c55600f54600d55565b600080600061101b611198565b909250905061102a8282611031565b9250505090565b6000610e5083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111d8565b600c541580156110835750600d54155b1561108a57565b600c8054600e55600d8054600f5560009182905555565b6000806000806000806110b387611206565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506110e59087611263565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461111490866112a5565b6001600160a01b03891660009081526002602052604090205561113681611304565b611140848361134e565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161118591815260200190565b60405180910390a3505050505050505050565b6006546000908190670de0b6b3a76400006111b38282611031565b8210156111cf57505060065492670de0b6b3a764000092509050565b90939092509050565b600081836111f95760405162461bcd60e51b81526004016104d29190611496565b506000610d908486611687565b60008060008060008060008060006112238a600c54600d54611372565b925092509250600061123361100e565b905060008060006112468e8787876113c7565b919e509c509a509598509396509194505050505091939550919395565b6000610e5083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d5f565b6000806112b283856116a9565b905083811015610e505760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104d2565b600061130e61100e565b9050600061131c8383611417565b3060009081526002602052604090205490915061133990826112a5565b30600090815260026020526040902055505050565b60065461135b9083611263565b60065560075461136b90826112a5565b6007555050565b600080808061138c60646113868989611417565b90611031565b9050600061139f60646113868a89611417565b905060006113b7826113b18b86611263565b90611263565b9992985090965090945050505050565b60008080806113d68886611417565b905060006113e48887611417565b905060006113f28888611417565b90506000611404826113b18686611263565b939b939a50919850919650505050505050565b60008261142657506000610439565b600061143283856116c1565b90508261143f8583611687565b14610e505760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104d2565b600060208083528351808285015260005b818110156114c3578581018301518582016040015282016114a7565b818111156114d5576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461150057600080fd5b50565b6000806040838503121561151657600080fd5b8235611521816114eb565b946020939093013593505050565b60008060006060848603121561154457600080fd5b833561154f816114eb565b9250602084013561155f816114eb565b929592945050506040919091013590565b60006020828403121561158257600080fd5b81358015158114610e5057600080fd5b6000602082840312156115a457600080fd5b8135610e50816114eb565b600080604083850312156115c257600080fd5b50508035926020909101359150565b600080600080608085870312156115e757600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561161657600080fd5b8235611621816114eb565b91506020830135611631816114eb565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000826116a457634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156116bc576116bc611671565b500190565b60008160001904831182151516156116db576116db611671565b500290565b6000828210156116f2576116f2611671565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561171f57600080fd5b8151610e50816114eb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561177a5784516001600160a01b031683529383019391830191600101611755565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203fde96f9946de942d5717b2f28e2571f4e72dc28ba3804fdbc0ccd3b66d8115664736f6c63430008090033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c806370a08231116100ab5780638f9a55c01161006f5780638f9a55c01461033e57806395d89b4114610354578063a2a957bb14610382578063a9059cbb146103a2578063dd62ed3e146103c2578063f2fde38b1461040857600080fd5b806370a08231146102b5578063715018a6146102d55780637d1db4a5146102ea5780637ecaba83146103005780638da5cb5b1461032057600080fd5b80632fd689e3116100f25780632fd689e31461022c578063313ce5671461024257806349bd5a5e1461025e5780636d8aa8f81461027e5780636fc3eaec146102a057600080fd5b806306fdde031461013a578063095ea7b31461017f5780631694505e146101af57806318160ddd146101e757806323b872dd1461020c57600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5060408051808201909152600a8152692830b732309026b7b7b760b11b60208201525b6040516101769190611496565b60405180910390f35b34801561018b57600080fd5b5061019f61019a366004611503565b610428565b6040519015158152602001610176565b3480156101bb57600080fd5b506012546101cf906001600160a01b031681565b6040516001600160a01b039091168152602001610176565b3480156101f357600080fd5b50670de0b6b3a76400005b604051908152602001610176565b34801561021857600080fd5b5061019f61022736600461152f565b61043f565b34801561023857600080fd5b506101fe60165481565b34801561024e57600080fd5b5060405160098152602001610176565b34801561026a57600080fd5b506013546101cf906001600160a01b031681565b34801561028a57600080fd5b5061029e610299366004611570565b6104a8565b005b3480156102ac57600080fd5b5061029e6104f9565b3480156102c157600080fd5b506101fe6102d0366004611592565b610504565b3480156102e157600080fd5b5061029e610526565b3480156102f657600080fd5b506101fe60145481565b34801561030c57600080fd5b5061029e61031b3660046115af565b61059a565b34801561032c57600080fd5b506000546001600160a01b03166101cf565b34801561034a57600080fd5b506101fe60155481565b34801561036057600080fd5b5060408051808201909152600581526450414e444160d81b6020820152610169565b34801561038e57600080fd5b5061029e61039d3660046115d1565b610613565b3480156103ae57600080fd5b5061019f6103bd366004611503565b610684565b3480156103ce57600080fd5b506101fe6103dd366004611603565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561041457600080fd5b5061029e610423366004611592565b610691565b600061043533848461077b565b5060015b92915050565b600061044c84848461089f565b61049e84336104998560405180606001604052806028815260200161179c602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610d5f565b61077b565b5060019392505050565b6000546001600160a01b031633146104db5760405162461bcd60e51b81526004016104d29061163c565b60405180910390fd5b60138054911515600160b01b0260ff60b01b19909216919091179055565b61050247610d99565b565b6001600160a01b03811660009081526002602052604081205461043990610dd3565b6000546001600160a01b031633146105505760405162461bcd60e51b81526004016104d29061163c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105c45760405162461bcd60e51b81526004016104d29061163c565b601482905560158190556105e16064670de0b6b3a7640000611687565b6014541015801561060657506106006064670de0b6b3a7640000611687565b60155410155b61060f57600080fd5b5050565b6000546001600160a01b0316331461063d5760405162461bcd60e51b81526004016104d29061163c565b6008849055600a8390556009829055600b8190556028818361065f86886116a9565b61066991906116a9565b61067391906116a9565b111561067e57600080fd5b50505050565b600061043533848461089f565b6000546001600160a01b031633146106bb5760405162461bcd60e51b81526004016104d29061163c565b6001600160a01b0381166107205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107dd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d2565b6001600160a01b03821661083e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d2565b6001600160a01b0382166109655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d2565b600081116109c75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104d2565b6000546001600160a01b038481169116148015906109f357506000546001600160a01b03838116911614155b15610c5857601354600160a01b900460ff16610a8c576000546001600160a01b03848116911614610a8c5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104d2565b601454811115610ade5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104d2565b6013546001600160a01b03838116911614610b635760155481610b0084610504565b610b0a91906116a9565b10610b635760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016104d2565b6000610b6e30610504565b6016549091508082101590610b849060026116c1565b8210610b9b57601654610b989060026116c1565b91505b808015610bb25750601354600160a81b900460ff16155b8015610bcc57506013546001600160a01b03868116911614155b8015610be15750601354600160b01b900460ff165b8015610c0657506001600160a01b03851660009081526005602052604090205460ff16155b8015610c2b57506001600160a01b03841660009081526005602052604090205460ff16155b15610c5557610c3982610e57565b4767016345785d8a0000811115610c5357610c5381610d99565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610c9a57506001600160a01b03831660009081526005602052604090205460ff165b80610ccc57506013546001600160a01b03858116911614801590610ccc57506013546001600160a01b03848116911614155b15610cd957506000610d53565b6013546001600160a01b038581169116148015610d0457506012546001600160a01b03848116911614155b15610d1657600854600c55600954600d555b6013546001600160a01b038481169116148015610d4157506012546001600160a01b03858116911614155b15610d5357600a54600c55600b54600d555b61067e84848484610fe0565b60008184841115610d835760405162461bcd60e51b81526004016104d29190611496565b506000610d9084866116e0565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561060f573d6000803e3d6000fd5b6000600654821115610e3a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104d2565b6000610e4461100e565b9050610e508382611031565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e9f57610e9f6116f7565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015610ef357600080fd5b505afa158015610f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2b919061170d565b81600181518110610f3e57610f3e6116f7565b6001600160a01b039283166020918202929092010152601254610f64913091168461077b565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f9d90859060009086903090429060040161172a565b600060405180830381600087803b158015610fb757600080fd5b505af1158015610fcb573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b80610fed57610fed611073565b610ff88484846110a1565b8061067e5761067e600e54600c55600f54600d55565b600080600061101b611198565b909250905061102a8282611031565b9250505090565b6000610e5083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111d8565b600c541580156110835750600d54155b1561108a57565b600c8054600e55600d8054600f5560009182905555565b6000806000806000806110b387611206565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506110e59087611263565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461111490866112a5565b6001600160a01b03891660009081526002602052604090205561113681611304565b611140848361134e565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161118591815260200190565b60405180910390a3505050505050505050565b6006546000908190670de0b6b3a76400006111b38282611031565b8210156111cf57505060065492670de0b6b3a764000092509050565b90939092509050565b600081836111f95760405162461bcd60e51b81526004016104d29190611496565b506000610d908486611687565b60008060008060008060008060006112238a600c54600d54611372565b925092509250600061123361100e565b905060008060006112468e8787876113c7565b919e509c509a509598509396509194505050505091939550919395565b6000610e5083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d5f565b6000806112b283856116a9565b905083811015610e505760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104d2565b600061130e61100e565b9050600061131c8383611417565b3060009081526002602052604090205490915061133990826112a5565b30600090815260026020526040902055505050565b60065461135b9083611263565b60065560075461136b90826112a5565b6007555050565b600080808061138c60646113868989611417565b90611031565b9050600061139f60646113868a89611417565b905060006113b7826113b18b86611263565b90611263565b9992985090965090945050505050565b60008080806113d68886611417565b905060006113e48887611417565b905060006113f28888611417565b90506000611404826113b18686611263565b939b939a50919850919650505050505050565b60008261142657506000610439565b600061143283856116c1565b90508261143f8583611687565b14610e505760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104d2565b600060208083528351808285015260005b818110156114c3578581018301518582016040015282016114a7565b818111156114d5576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461150057600080fd5b50565b6000806040838503121561151657600080fd5b8235611521816114eb565b946020939093013593505050565b60008060006060848603121561154457600080fd5b833561154f816114eb565b9250602084013561155f816114eb565b929592945050506040919091013590565b60006020828403121561158257600080fd5b81358015158114610e5057600080fd5b6000602082840312156115a457600080fd5b8135610e50816114eb565b600080604083850312156115c257600080fd5b50508035926020909101359150565b600080600080608085870312156115e757600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561161657600080fd5b8235611621816114eb565b91506020830135611631816114eb565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000826116a457634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156116bc576116bc611671565b500190565b60008160001904831182151516156116db576116db611671565b500290565b6000828210156116f2576116f2611671565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561171f57600080fd5b8151610e50816114eb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561177a5784516001600160a01b031683529383019391830191600101611755565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203fde96f9946de942d5717b2f28e2571f4e72dc28ba3804fdbc0ccd3b66d8115664736f6c63430008090033

Deployed Bytecode Sourcemap

4310:12144:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6661:83;;;;;;;;;;-1:-1:-1;6731:5:0;;;;;;;;;;;;-1:-1:-1;;;6731:5:0;;;;6661:83;;;;;;;:::i;:::-;;;;;;;;7586:193;;;;;;;;;;-1:-1:-1;7586:193:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;7586:193:0;1072:187:1;5565:41:0;;;;;;;;;;-1:-1:-1;5565:41:0;;;;-1:-1:-1;;;;;5565:41:0;;;;;;-1:-1:-1;;;;;1454:32:1;;;1436:51;;1424:2;1409:18;5565:41:0;1264:229:1;6938:95:0;;;;;;;;;;-1:-1:-1;4857:18:0;6938:95;;;1644:25:1;;;1632:2;1617:18;6938:95:0;1498:177:1;7787:446:0;;;;;;;;;;-1:-1:-1;7787:446:0;;;;;:::i;:::-;;:::i;5865:51::-;;;;;;;;;;;;;;;;6847:83;;;;;;;;;;-1:-1:-1;6847:83:0;;4531:1;2283:36:1;;2271:2;2256:18;6847:83:0;2141:184:1;5613:28:0;;;;;;;;;;-1:-1:-1;5613:28:0;;;;-1:-1:-1;;;;;5613:28:0;;;12275:104;;;;;;;;;;-1:-1:-1;12275:104:0;;;;;:::i;:::-;;:::i;:::-;;12182:85;;;;;;;;;;;;;:::i;7041:138::-;;;;;;;;;;-1:-1:-1;7041:138:0;;;;;:::i;:::-;;:::i;1797:148::-;;;;;;;;;;;;;:::i;5762:44::-;;;;;;;;;;;;;;;;16187:262;;;;;;;;;;-1:-1:-1;16187:262:0;;;;;:::i;:::-;;:::i;1583:79::-;;;;;;;;;;-1:-1:-1;1621:7:0;1648:6;-1:-1:-1;;;;;1648:6:0;1583:79;;5813:45;;;;;;;;;;;;;;;;6752:87;;;;;;;;;;-1:-1:-1;6824:7:0;;;;;;;;;;;;-1:-1:-1;;;6824:7:0;;;;6752:87;;15785:375;;;;;;;;;;-1:-1:-1;15785:375:0;;;;;:::i;:::-;;:::i;7187:199::-;;;;;;;;;;-1:-1:-1;7187:199:0;;;;;:::i;:::-;;:::i;7394:184::-;;;;;;;;;;-1:-1:-1;7394:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7543:18:0;;;7511:7;7543:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7394:184;1953:244;;;;;;;;;;-1:-1:-1;1953:244:0;;;;;:::i;:::-;;:::i;7586:193::-;7688:4;7710:39;422:10;7733:7;7742:6;7710:8;:39::i;:::-;-1:-1:-1;7767:4:0;7586:193;;;;;:::o;7787:446::-;7919:4;7936:36;7946:6;7954:9;7965:6;7936:9;:36::i;:::-;7983:220;8006:6;422:10;8054:138;8110:6;8054:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8054:19:0;;;;;;:11;:19;;;;;;;;422:10;8054:33;;;;;;;;;;:37;:138::i;:::-;7983:8;:220::i;:::-;-1:-1:-1;8221:4:0;7787:446;;;;;:::o;12275:104::-;1710:6;;-1:-1:-1;;;;;1710:6:0;422:10;1710:22;1702:67;;;;-1:-1:-1;;;1702:67:0;;;;;;;:::i;:::-;;;;;;;;;12345:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12345:26:0::1;-1:-1:-1::0;;;;12345:26:0;;::::1;::::0;;;::::1;::::0;;12275:104::o;12182:85::-;12224:35;12237:21;12224:12;:35::i;:::-;12182:85::o;7041:138::-;-1:-1:-1;;;;;7154:16:0;;7107:7;7154:16;;;:7;:16;;;;;;7134:37;;:19;:37::i;1797:148::-;1710:6;;-1:-1:-1;;;;;1710:6:0;422:10;1710:22;1702:67;;;;-1:-1:-1;;;1702:67:0;;;;;;;:::i;:::-;1904:1:::1;1888:6:::0;;1867:40:::1;::::0;-1:-1:-1;;;;;1888:6:0;;::::1;::::0;1867:40:::1;::::0;1904:1;;1867:40:::1;1935:1;1918:19:::0;;-1:-1:-1;;;;;;1918:19:0::1;::::0;;1797:148::o;16187:262::-;1710:6;;-1:-1:-1;;;;;1710:6:0;422:10;1710:22;1702:67;;;;-1:-1:-1;;;1702:67:0;;;;;;;:::i;:::-;16292:12:::1;:26:::0;;;16329:14:::1;:30:::0;;;16396:11:::1;16404:3;4857:18;16396:11;:::i;:::-;16380:12;;:27;;:60;;;;-1:-1:-1::0;16429:11:0::1;16437:3;4857:18;16429:11;:::i;:::-;16411:14;;:29;;16380:60;16371:70;;;::::0;::::1;;16187:262:::0;;:::o;15785:375::-;1710:6;;-1:-1:-1;;;;;1710:6:0;422:10;1710:22;1702:67;;;;-1:-1:-1;;;1702:67:0;;;;;;;:::i;:::-;15919:14:::1;:30:::0;;;15960:15:::1;:32:::0;;;16003:12:::1;:26:::0;;;16040:13:::1;:28:::0;;;16149:2:::1;16056:12:::0;16018:11;16088:30:::1;15978:14:::0;15936:13;16088:30:::1;:::i;:::-;:43;;;;:::i;:::-;:57;;;;:::i;:::-;:63;;16079:73;;;::::0;::::1;;15785:375:::0;;;;:::o;7187:199::-;7292:4;7314:42;422:10;7338:9;7349:6;7314:9;:42::i;1953:244::-;1710:6;;-1:-1:-1;;;;;1710:6:0;422:10;1710:22;1702:67;;;;-1:-1:-1;;;1702:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2042:22:0;::::1;2034:73;;;::::0;-1:-1:-1;;;2034:73:0;;5154:2:1;2034:73:0::1;::::0;::::1;5136:21:1::0;5193:2;5173:18;;;5166:30;5232:34;5212:18;;;5205:62;-1:-1:-1;;;5283:18:1;;;5276:36;5329:19;;2034:73:0::1;4952:402:1::0;2034:73:0::1;2144:6;::::0;;2123:38:::1;::::0;-1:-1:-1;;;;;2123:38:0;;::::1;::::0;2144:6;::::1;::::0;2123:38:::1;::::0;::::1;2172:6;:17:::0;;-1:-1:-1;;;;;;2172:17:0::1;-1:-1:-1::0;;;;;2172:17:0;;;::::1;::::0;;;::::1;::::0;;1953:244::o;8924:369::-;-1:-1:-1;;;;;9051:19:0;;9043:68;;;;-1:-1:-1;;;9043:68:0;;5561:2:1;9043:68:0;;;5543:21:1;5600:2;5580:18;;;5573:30;5639:34;5619:18;;;5612:62;-1:-1:-1;;;5690:18:1;;;5683:34;5734:19;;9043:68:0;5359:400:1;9043:68:0;-1:-1:-1;;;;;9130:21:0;;9122:68;;;;-1:-1:-1;;;9122:68:0;;5966:2:1;9122:68:0;;;5948:21:1;6005:2;5985:18;;;5978:30;6044:34;6024:18;;;6017:62;-1:-1:-1;;;6095:18:1;;;6088:32;6137:19;;9122:68:0;5764:398:1;9122:68:0;-1:-1:-1;;;;;9201:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9253:32;;1644:25:1;;;9253:32:0;;1617:18:1;9253:32:0;;;;;;;8924:369;;;:::o;9301:2275::-;-1:-1:-1;;;;;9423:18:0;;9415:68;;;;-1:-1:-1;;;9415:68:0;;6369:2:1;9415:68:0;;;6351:21:1;6408:2;6388:18;;;6381:30;6447:34;6427:18;;;6420:62;-1:-1:-1;;;6498:18:1;;;6491:35;6543:19;;9415:68:0;6167:401:1;9415:68:0;-1:-1:-1;;;;;9502:16:0;;9494:64;;;;-1:-1:-1;;;9494:64:0;;6775:2:1;9494:64:0;;;6757:21:1;6814:2;6794:18;;;6787:30;6853:34;6833:18;;;6826:62;-1:-1:-1;;;6904:18:1;;;6897:33;6947:19;;9494:64:0;6573:399:1;9494:64:0;9586:1;9577:6;:10;9569:64;;;;-1:-1:-1;;;9569:64:0;;7179:2:1;9569:64:0;;;7161:21:1;7218:2;7198:18;;;7191:30;7257:34;7237:18;;;7230:62;-1:-1:-1;;;7308:18:1;;;7301:39;7357:19;;9569:64:0;6977:405:1;9569:64:0;1621:7;1648:6;-1:-1:-1;;;;;9650:15:0;;;1648:6;;9650:15;;;;:32;;-1:-1:-1;1621:7:0;1648:6;-1:-1:-1;;;;;9669:13:0;;;1648:6;;9669:13;;9650:32;9646:1204;;;9739:11;;-1:-1:-1;;;9739:11:0;;;;9734:144;;1621:7;1648:6;-1:-1:-1;;;;;9779:15:0;;;1648:6;;9779:15;9771:91;;;;-1:-1:-1;;;9771:91:0;;7589:2:1;9771:91:0;;;7571:21:1;7628:2;7608:18;;;7601:30;7667:34;7647:18;;;7640:62;7738:33;7718:18;;;7711:61;7789:19;;9771:91:0;7387:427:1;9771:91:0;9912:12;;9902:6;:22;;9894:63;;;;-1:-1:-1;;;9894:63:0;;8021:2:1;9894:63:0;;;8003:21:1;8060:2;8040:18;;;8033:30;8099;8079:18;;;8072:58;8147:18;;9894:63:0;7819:352:1;9894:63:0;9983:13;;-1:-1:-1;;;;;9977:19:0;;;9983:13;;9977:19;9974:146;;10050:14;;10041:6;10025:13;10035:2;10025:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10017:87;;;;-1:-1:-1;;;10017:87:0;;8378:2:1;10017:87:0;;;8360:21:1;8417:2;8397:18;;;8390:30;8456:34;8436:18;;;8429:62;-1:-1:-1;;;8507:18:1;;;8500:33;8550:19;;10017:87:0;8176:399:1;10017:87:0;10136:28;10167:24;10185:4;10167:9;:24::i;:::-;10245:19;;10136:55;;-1:-1:-1;10221:43:0;;;;;10308:21;;10328:1;10308:21;:::i;:::-;10284:20;:45;10281:142;;10386:19;;:21;;10406:1;10386:21;:::i;:::-;10363:44;;10281:142;10443:7;:18;;;;-1:-1:-1;10455:6:0;;-1:-1:-1;;;10455:6:0;;;;10454:7;10443:18;:43;;;;-1:-1:-1;10473:13:0;;-1:-1:-1;;;;;10465:21:0;;;10473:13;;10465:21;;10443:43;:58;;;;-1:-1:-1;10490:11:0;;-1:-1:-1;;;10490:11:0;;;;10443:58;:87;;;;-1:-1:-1;;;;;;10506:24:0;;;;;;:18;:24;;;;;;;;10505:25;10443:87;:114;;;;-1:-1:-1;;;;;;10535:22:0;;;;;;:18;:22;;;;;;;;10534:23;10443:114;10439:400;;;10578:38;10595:20;10578:16;:38::i;:::-;10664:21;10729:18;10708:39;;10704:120;;;10772:32;10785:18;10772:12;:32::i;:::-;10559:280;10439:400;9684:1166;;9646:1204;-1:-1:-1;;;;;10926:24:0;;10862:12;10926:24;;;:18;:24;;;;;;10877:4;;10926:24;;;:50;;-1:-1:-1;;;;;;10954:22:0;;;;;;:18;:22;;;;;;;;10926:50;10925:102;;;-1:-1:-1;10990:13:0;;-1:-1:-1;;;;;10982:21:0;;;10990:13;;10982:21;;;;:44;;-1:-1:-1;11013:13:0;;-1:-1:-1;;;;;11007:19:0;;;11013:13;;11007:19;;10982:44;10921:594;;;-1:-1:-1;11054:5:0;10921:594;;;11137:13;;-1:-1:-1;;;;;11129:21:0;;;11137:13;;11129:21;:55;;;;-1:-1:-1;11168:15:0;;-1:-1:-1;;;;;11154:30:0;;;11168:15;;11154:30;;11129:55;11126:162;;;11217:14;;11205:9;:26;11260:12;;11250:7;:22;11126:162;11347:13;;-1:-1:-1;;;;;11341:19:0;;;11347:13;;11341:19;:55;;;;-1:-1:-1;11380:15:0;;-1:-1:-1;;;;;11364:32:0;;;11380:15;;11364:32;;11341:55;11337:165;;;11429:15;;11417:9;:27;11473:13;;11463:7;:23;11337:165;11527:41;11542:4;11548:2;11552:6;11560:7;11527:14;:41::i;2561:224::-;2681:7;2717:12;2709:6;;;;2701:29;;;;-1:-1:-1;;;2701:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2741:9:0;2753:5;2757:1;2753;:5;:::i;:::-;2741:17;2561:224;-1:-1:-1;;;;;2561:224:0:o;12075:99::-;12132:17;;:34;;-1:-1:-1;;;;;12132:17:0;;;;:34;;;;;12159:6;;12132:17;:34;:17;:34;12159:6;12132:17;:34;;;;;;;;;;;;;;;;;;;8241:323;8336:7;8394;;8383;:18;;8361:110;;;;-1:-1:-1;;;8361:110:0;;9085:2:1;8361:110:0;;;9067:21:1;9124:2;9104:18;;;9097:30;9163:34;9143:18;;;9136:62;-1:-1:-1;;;9214:18:1;;;9207:40;9264:19;;8361:110:0;8883:406:1;8361:110:0;8482:19;8504:10;:8;:10::i;:::-;8482:32;-1:-1:-1;8532:24:0;:7;8482:32;8532:11;:24::i;:::-;8525:31;8241:323;-1:-1:-1;;;8241:323:0:o;11584:483::-;6010:6;:13;;-1:-1:-1;;;;6010:13:0;-1:-1:-1;;;6010:13:0;;;11686:16:::1;::::0;;11700:1:::1;11686:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11686:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11686:16:0::1;11662:40;;11731:4;11713;11718:1;11713:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11713:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11757:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11757:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11713:7;;11757:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11747:4;11752:1;11747:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11747:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11822:15:::1;::::0;11790:62:::1;::::0;11807:4:::1;::::0;11822:15:::1;11840:11:::0;11790:8:::1;:62::i;:::-;11863:15;::::0;:196:::1;::::0;-1:-1:-1;;;11863:196:0;;-1:-1:-1;;;;;11863:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11944:11;;11863:15:::1;::::0;11986:4;;12013::::1;::::0;12033:15:::1;::::0;11863:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6046:6:0;:14;;-1:-1:-1;;;;6046:14:0;;;-1:-1:-1;;;;11584:483:0:o;12387:282::-;12543:7;12538:28;;12552:14;:12;:14::i;:::-;12577:44;12595:6;12603:9;12614:6;12577:17;:44::i;:::-;12637:7;12632:29;;12646:15;8855:17;;8843:9;:29;8893:15;;8883:7;:25;8799:117;15348:164;15390:7;15411:15;15428;15447:19;:17;:19::i;:::-;15410:56;;-1:-1:-1;15410:56:0;-1:-1:-1;15484:20:0;15410:56;;15484:11;:20::i;:::-;15477:27;;;;15348:164;:::o;3047:132::-;3105:7;3132:39;3136:1;3139;3132:39;;;;;;;;;;;;;;;;;:3;:39::i;8572:219::-;8619:9;;:14;:30;;;;-1:-1:-1;8637:7:0;;:12;8619:30;8615:43;;;8572:219::o;8615:43::-;8690:9;;;8670:17;:29;8728:7;;;8710:15;:25;-1:-1:-1;8748:13:0;;;;8772:11;8572:219::o;12677:610::-;12824:15;12854:23;12892:12;12919:23;12957:12;12984:13;13011:19;13022:7;13011:10;:19::i;:::-;-1:-1:-1;;;;;13059:15:0;;;;;;:7;:15;;;;;;12809:221;;-1:-1:-1;12809:221:0;;-1:-1:-1;12809:221:0;;-1:-1:-1;12809:221:0;-1:-1:-1;12809:221:0;-1:-1:-1;12809:221:0;-1:-1:-1;13059:28:0;;12809:221;13059:19;:28::i;:::-;-1:-1:-1;;;;;13041:15:0;;;;;;;:7;:15;;;;;;:46;;;;13119:18;;;;;;;:39;;13142:15;13119:22;:39::i;:::-;-1:-1:-1;;;;;13098:18:0;;;;;;:7;:18;;;;;:60;13169:16;13179:5;13169:9;:16::i;:::-;13196:23;13208:4;13214;13196:11;:23::i;:::-;13252:9;-1:-1:-1;;;;;13235:44:0;13244:6;-1:-1:-1;;;;;13235:44:0;;13263:15;13235:44;;;;1644:25:1;;1632:2;1617:18;;1498:177;13235:44:0;;;;;;;;12798:489;;;;;;12677:610;;;:::o;15520:257::-;15618:7;;15571;;;;4857:18;15686:20;15618:7;4857:18;15686:11;:20::i;:::-;15676:7;:30;15672:61;;;-1:-1:-1;;15716:7:0;;;4857:18;;-1:-1:-1;15520:257:0;-1:-1:-1;15520:257:0:o;15672:61::-;15752:7;;15761;;-1:-1:-1;15520:257:0;-1:-1:-1;15520:257:0:o;3187:223::-;3307:7;3342:12;3335:5;3327:28;;;;-1:-1:-1;;;3327:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3366:9:0;3378:5;3382:1;3378;:5;:::i;13706:615::-;13806:7;13828;13850;13872;13894;13916;13952:23;13977:12;13991:13;14021:40;14033:7;14042:9;;14053:7;;14021:11;:40::i;:::-;13951:110;;;;;;14072:19;14094:10;:8;:10::i;:::-;14072:32;;14116:15;14133:23;14158:12;14187:46;14199:7;14208:4;14214:5;14221:11;14187;:46::i;:::-;14115:118;;-1:-1:-1;14115:118:0;-1:-1:-1;14115:118:0;-1:-1:-1;14284:15:0;;-1:-1:-1;14301:4:0;;-1:-1:-1;14307:5:0;;-1:-1:-1;;;;;13706:615:0;;;;;;;:::o;2417:136::-;2475:7;2502:43;2506:1;2509;2502:43;;;;;;;;;;;;;;;;;:3;:43::i;2230:179::-;2288:7;;2320:5;2324:1;2320;:5;:::i;:::-;2308:17;;2349:1;2344;:6;;2336:46;;;;-1:-1:-1;;;2336:46:0;;11001:2:1;2336:46:0;;;10983:21:1;11040:2;11020:18;;;11013:30;11079:29;11059:18;;;11052:57;11126:18;;2336:46:0;10799:351:1;13295:211:0;13348:19;13370:10;:8;:10::i;:::-;13348:32;-1:-1:-1;13391:13:0;13407:22;:5;13348:32;13407:9;:22::i;:::-;13481:4;13465:22;;;;:7;:22;;;;;;13391:38;;-1:-1:-1;13465:33:0;;13391:38;13465:26;:33::i;:::-;13456:4;13440:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13295:211:0:o;13514:147::-;13592:7;;:17;;13604:4;13592:11;:17::i;:::-;13582:7;:27;13633:10;;:20;;13648:4;13633:14;:20::i;:::-;13620:10;:33;-1:-1:-1;;13514:147:0:o;14329:469::-;14498:7;;;;14592:30;14618:3;14592:21;:7;14604:8;14592:11;:21::i;:::-;:25;;:30::i;:::-;14577:45;-1:-1:-1;14633:13:0;14649:28;14673:3;14649:19;:7;14661:6;14649:11;:19::i;:28::-;14633:44;-1:-1:-1;14688:23:0;14714:28;14633:44;14714:17;:7;14726:4;14714:11;:17::i;:::-;:21;;:28::i;:::-;14688:54;14778:4;;-1:-1:-1;14784:5:0;;-1:-1:-1;14329:469:0;;-1:-1:-1;;;;;14329:469:0:o;14806:534::-;15000:7;;;;15097:24;:7;15109:11;15097;:24::i;:::-;15079:42;-1:-1:-1;15132:12:0;15147:21;:4;15156:11;15147:8;:21::i;:::-;15132:36;-1:-1:-1;15179:13:0;15195:22;:5;15205:11;15195:9;:22::i;:::-;15179:38;-1:-1:-1;15228:23:0;15254:28;15179:38;15254:17;:7;15266:4;15254:11;:17::i;:28::-;15301:7;;;;-1:-1:-1;15327:4:0;;-1:-1:-1;14806:534:0;;-1:-1:-1;;;;;;;14806:534:0:o;2793:246::-;2851:7;2875:6;2871:47;;-1:-1:-1;2905:1:0;2898:8;;2871:47;2928:9;2940:5;2944:1;2940;:5;:::i;:::-;2928:17;-1:-1:-1;2973:1:0;2964:5;2968:1;2928:17;2964:5;:::i;:::-;:10;2956:56;;;;-1:-1:-1;;;2956:56:0;;11357:2:1;2956:56:0;;;11339:21:1;11396:2;11376:18;;;11369:30;11435:34;11415:18;;;11408:62;-1:-1:-1;;;11486:18:1;;;11479:31;11527:19;;2956:56:0;11155:397:1;14:597;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;671:70;616:131;:::o;752:315::-;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1680:456::-;1757:6;1765;1773;1826:2;1814:9;1805:7;1801:23;1797:32;1794:52;;;1842:1;1839;1832:12;1794:52;1881:9;1868:23;1900:31;1925:5;1900:31;:::i;:::-;1950:5;-1:-1:-1;2007:2:1;1992:18;;1979:32;2020:33;1979:32;2020:33;:::i;:::-;1680:456;;2072:7;;-1:-1:-1;;;2126:2:1;2111:18;;;;2098:32;;1680:456::o;2538:273::-;2594:6;2647:2;2635:9;2626:7;2622:23;2618:32;2615:52;;;2663:1;2660;2653:12;2615:52;2702:9;2689:23;2755:5;2748:13;2741:21;2734:5;2731:32;2721:60;;2777:1;2774;2767:12;2816:247;2875:6;2928:2;2916:9;2907:7;2903:23;2899:32;2896:52;;;2944:1;2941;2934:12;2896:52;2983:9;2970:23;3002:31;3027:5;3002:31;:::i;3068:248::-;3136:6;3144;3197:2;3185:9;3176:7;3172:23;3168:32;3165:52;;;3213:1;3210;3203:12;3165:52;-1:-1:-1;;3236:23:1;;;3306:2;3291:18;;;3278:32;;-1:-1:-1;3068:248:1:o;3321:385::-;3407:6;3415;3423;3431;3484:3;3472:9;3463:7;3459:23;3455:33;3452:53;;;3501:1;3498;3491:12;3452:53;-1:-1:-1;;3524:23:1;;;3594:2;3579:18;;3566:32;;-1:-1:-1;3645:2:1;3630:18;;3617:32;;3696:2;3681:18;3668:32;;-1:-1:-1;3321:385:1;-1:-1:-1;3321:385:1:o;3711:388::-;3779:6;3787;3840:2;3828:9;3819:7;3815:23;3811:32;3808:52;;;3856:1;3853;3846:12;3808:52;3895:9;3882:23;3914:31;3939:5;3914:31;:::i;:::-;3964:5;-1:-1:-1;4021:2:1;4006:18;;3993:32;4034:33;3993:32;4034:33;:::i;:::-;4086:7;4076:17;;;3711:388;;;;;:::o;4104:356::-;4306:2;4288:21;;;4325:18;;;4318:30;4384:34;4379:2;4364:18;;4357:62;4451:2;4436:18;;4104:356::o;4465:127::-;4526:10;4521:3;4517:20;4514:1;4507:31;4557:4;4554:1;4547:15;4581:4;4578:1;4571:15;4597:217;4637:1;4663;4653:132;;4707:10;4702:3;4698:20;4695:1;4688:31;4742:4;4739:1;4732:15;4770:4;4767:1;4760:15;4653:132;-1:-1:-1;4799:9:1;;4597:217::o;4819:128::-;4859:3;4890:1;4886:6;4883:1;4880:13;4877:39;;;4896:18;;:::i;:::-;-1:-1:-1;4932:9:1;;4819:128::o;8580:168::-;8620:7;8686:1;8682;8678:6;8674:14;8671:1;8668:21;8663:1;8656:9;8649:17;8645:45;8642:71;;;8693:18;;:::i;:::-;-1:-1:-1;8733:9:1;;8580:168::o;8753:125::-;8793:4;8821:1;8818;8815:8;8812:34;;;8826:18;;:::i;:::-;-1:-1:-1;8863:9:1;;8753:125::o;9426:127::-;9487:10;9482:3;9478:20;9475:1;9468:31;9518:4;9515:1;9508:15;9542:4;9539:1;9532:15;9558:251;9628:6;9681:2;9669:9;9660:7;9656:23;9652:32;9649:52;;;9697:1;9694;9687:12;9649:52;9729:9;9723:16;9748:31;9773:5;9748:31;:::i;9814:980::-;10076:4;10124:3;10113:9;10109:19;10155:6;10144:9;10137:25;10181:2;10219:6;10214:2;10203:9;10199:18;10192:34;10262:3;10257:2;10246:9;10242:18;10235:31;10286:6;10321;10315:13;10352:6;10344;10337:22;10390:3;10379:9;10375:19;10368:26;;10429:2;10421:6;10417:15;10403:29;;10450:1;10460:195;10474:6;10471:1;10468:13;10460:195;;;10539:13;;-1:-1:-1;;;;;10535:39:1;10523:52;;10630:15;;;;10595:12;;;;10571:1;10489:9;10460:195;;;-1:-1:-1;;;;;;;10711:32:1;;;;10706:2;10691:18;;10684:60;-1:-1:-1;;;10775:3:1;10760:19;10753:35;10672:3;9814:980;-1:-1:-1;;;9814:980:1:o

Swarm Source

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