ETH Price: $3,099.04 (-1.68%)

Token

Shadow Shuffle (SHUFFLE)
 

Overview

Max Total Supply

100,000,000 SHUFFLE

Holders

99

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
699,999.999999999 SHUFFLE

Value
$0.00
0xb51074B09f8799e597E9F39178cAeD303F26433A
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:
ShadowShuffle

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-05
*/

/*

Shadow Shuffle

Use $SHUFFLE for easy, secure crypto transactions. Supports SOL, ETH, BTC, BSC with a 2% fee. Transaction times are 15 mins to 2 hrs.

Web: https://shadowshuffle.cash
Tg: https://t.me/shadowshuffle
X: https://twitter.com/ShuffleShadow
Bot: t.me/ShadowShuffle_bot
Docs: https://shadowshuffle.gitbook.io/shadowshuffle-whitepaper/conclusion

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.18;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function owner() public view returns (address) {
        return _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;
    }
}

contract ShadowShuffle is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping(address => uint256) private _rOwned;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;

    uint8 private constant _decimals = 9;
    string private constant _name = "Shadow Shuffle";
    string private constant _symbol = "SHUFFLE";

    uint256 private _rTotal = (MAX - (MAX % _totalSupply));
    uint256 private constant MAX = ~uint256(0);

    uint256 private _feeOnBuy = 5;
    uint256 private _feeOnSell = 5;

    uint256 private _backedUpFee = _fee;
    uint256 private _fee = _feeOnSell;

    address payable private _treasuryAddress =
        payable(0x9b713D7c1f8828A50b5147f6B24eC4aE82d4037C);

    bool private _maxTxn = false;
    bool private _maxWallet = false;

    uint256 private constant _totalSupply = 100_000_000 * 10**9;
    uint256 public _maxTxnSize = 1_000_000 * 10**9;
    uint256 public _maxHoldSize = 2_000_000 * 10**9;
    uint256 public _minSwappableAmount = 1000 * 10**9;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private autoSwapEnabled = true;
    bool private swapping = false;
    bool private marketOpened;

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

    constructor() {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

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

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

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

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

    function excludeMultipleAccountsFromFees(
        address[] calldata accounts,
        bool excluded
    ) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

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

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

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

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        return (_rTotal, _totalSupply);
    }

    function toggleautoSwapEnabled(bool _autoSwapEnabled) public onlyOwner {
        autoSwapEnabled = _autoSwapEnabled;
    }

    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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount has to be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function switchTrading(bool _marketOpened) public onlyOwner {
        marketOpened = _marketOpened;
    }

    function dropFee() private {
        if (_fee == 0) return;

        _backedUpFee = _fee;

        _fee = 0;
    }

    function restoreFee() private {
        _fee = _backedUpFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "Can't approve from zero address");
        require(spender != address(0), "Can't approve to zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "Cant transfer from address zero");
        require(to != address(0), "Cant transfer to address zero");
        require(amount > 0, "Amount should be above zero");

        if (from != owner() && to != owner()) {
            //Trade start check
            if (!marketOpened) {
                require(
                    from == owner(),
                    "Only owner can trade before trading activation"
                );
            }

            require(amount <= _maxTxnSize, "Exceeded max transaction limit");

            if (to != uniswapV2Pair) {
                require(
                    balanceOf(to) + amount < _maxHoldSize,
                    "Exceeds max hold balance"
                );
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool swapAllowed = contractTokenBalance >= _minSwappableAmount;

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

            if (
                swapAllowed &&
                !swapping &&
                from != uniswapV2Pair &&
                autoSwapEnabled &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                covertToNative(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    transferEthToDev(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else {
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _fee = _feeOnBuy;
            }

            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _fee = _feeOnSell;
            }
        }

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

    function covertToNative(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 transferEthToDev(uint256 amount) private {
        _treasuryAddress.transfer(amount);
    }

    function forceSwap() external {
        require(_msgSender() == _treasuryAddress);
        uint256 contractETHBalance = address(this).balance;
        transferEthToDev(contractETHBalance);
    }

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

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) dropFee();
        _transferApplyingFees(sender, recipient, amount);
        if (!takeFee) restoreFee();
    }

    function manualswap() external {
        require(_msgSender() == _treasuryAddress);
        uint256 contractBalance = balanceOf(address(this));
        covertToNative(contractBalance);
    }

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

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

    function setMinSwapTokensThreshold(uint256 minSwappableAmount)
        public
        onlyOwner
    {
        _minSwappableAmount = minSwappableAmount;
    }

    function _transferApplyingFees(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 tTransferAmount,
            uint256 tTeam
        ) = _getFeeValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _transferFeeDev(tTeam);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

    function _getFeeValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tTeam) = _getTValues(tAmount, _fee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount) = _getRValues(
            tAmount,
            tTeam,
            currentRate
        );
        return (rAmount, rTransferAmount, tTransferAmount, tTeam);
    }

    function updateFee(uint256 feeOnBuy, uint256 feeOnSell) public onlyOwner {
        require(
            feeOnBuy >= 0 && feeOnBuy <= 95,
            "Buy tax must be between 0% and 95%"
        );
        require(
            feeOnSell >= 0 && feeOnSell <= 95,
            "Sell tax must be between 0% and 95%"
        );

        _feeOnBuy = feeOnBuy;
        _feeOnSell = feeOnSell;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxnSize = maxTxAmount; 
    }

    receive() external payable {}

    function setMaxHoldSize(uint256 maxHoldSize) public onlyOwner {
        _maxHoldSize = maxHoldSize;
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tTeam,
        uint256 currentRate
    ) private pure returns (uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rTeam);
        return (rAmount, rTransferAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"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":"_maxHoldSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxnSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minSwappableAmount","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":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","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":"maxHoldSize","type":"uint256"}],"name":"setMaxHoldSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minSwappableAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_marketOpened","type":"bool"}],"name":"switchTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_autoSwapEnabled","type":"bool"}],"name":"toggleautoSwapEnabled","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"},{"inputs":[{"internalType":"uint256","name":"feeOnBuy","type":"uint256"},{"internalType":"uint256","name":"feeOnSell","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a67016345785d8a000060001962000370565b620000289060001962000393565b6005908155600681905560078190556009805460085555600a80546001600160b01b031916739b713d7c1f8828a50b5147f6b24ec4ae82d4037c17905566038d7ea4c68000600b5566071afd498d0000600c5564e8d4a51000600d55600f805461ffff60a01b1916600160a01b179055348015620000a557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506005543360009081526002602090815260409182902092909255600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa15801562000163573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001899190620003bb565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fd9190620003bb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200024b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002719190620003bb565b600f80546001600160a01b0319166001600160a01b03929092169190911790553060009081526004602081905260408220805460ff1916600190811790915591620002c46000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600a5490911681526004909252902080549091166001179055620003133390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200036191815260200190565b60405180910390a350620003ed565b6000826200038e57634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115620003b557634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620003ce57600080fd5b81516001600160a01b0381168114620003e657600080fd5b9392505050565b6119cc80620003fd6000396000f3fe6080604052600436106101855760003560e01c8063874949c9116100d1578063b2021e0a1161008a578063dd62ed3e11610064578063dd62ed3e14610489578063df778d26146104cf578063e5c43633146104e4578063f2fde38b146104fa57600080fd5b8063b2021e0a14610434578063c3c8cd8014610454578063c492f0461461046957600080fd5b8063874949c9146103705780638da5cb5b1461039057806395d89b41146103ae57806398a5c315146103de5780639e0ba25d146103fe578063a9059cbb1461041457600080fd5b8063313ce5671161013e5780636279c694116101185780636279c6941461030557806370a082311461031b578063715018a61461033b57806374010ece1461035057600080fd5b8063313ce567146102a957806349bd5a5e146102c5578063577009e4146102e557600080fd5b806306fdde0314610191578063095ea7b3146101da5780631694505e1461020a57806318160ddd1461024257806323b872dd146102675780632740c1971461028757600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b5060408051808201909152600e81526d536861646f772053687566666c6560901b60208201525b6040516101d191906115f5565b60405180910390f35b3480156101e657600080fd5b506101fa6101f5366004611658565b61051a565b60405190151581526020016101d1565b34801561021657600080fd5b50600e5461022a906001600160a01b031681565b6040516001600160a01b0390911681526020016101d1565b34801561024e57600080fd5b5067016345785d8a00005b6040519081526020016101d1565b34801561027357600080fd5b506101fa610282366004611684565b610531565b34801561029357600080fd5b506102a76102a23660046116c5565b61059a565b005b3480156102b557600080fd5b50604051600981526020016101d1565b3480156102d157600080fd5b50600f5461022a906001600160a01b031681565b3480156102f157600080fd5b506102a76103003660046116e7565b610691565b34801561031157600080fd5b50610259600c5481565b34801561032757600080fd5b50610259610336366004611700565b6106c0565b34801561034757600080fd5b506102a76106e2565b34801561035c57600080fd5b506102a761036b3660046116e7565b610756565b34801561037c57600080fd5b506102a761038b366004611732565b610785565b34801561039c57600080fd5b506000546001600160a01b031661022a565b3480156103ba57600080fd5b5060408051808201909152600781526653485546464c4560c81b60208201526101c4565b3480156103ea57600080fd5b506102a76103f93660046116e7565b6107cd565b34801561040a57600080fd5b50610259600b5481565b34801561042057600080fd5b506101fa61042f366004611658565b6107fc565b34801561044057600080fd5b506102a761044f366004611732565b610809565b34801561046057600080fd5b506102a7610851565b34801561047557600080fd5b506102a761048436600461174d565b61088a565b34801561049557600080fd5b506102596104a43660046117d1565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156104db57600080fd5b506102a761092b565b3480156104f057600080fd5b50610259600d5481565b34801561050657600080fd5b506102a7610515366004611700565b610955565b6000610527338484610a3f565b5060015b92915050565b600061053e848484610b4c565b610590843361058b85604051806060016040528060258152602001611972602591396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610f9b565b610a3f565b5060019392505050565b6000546001600160a01b031633146105cd5760405162461bcd60e51b81526004016105c49061180a565b60405180910390fd5b605f8211156106295760405162461bcd60e51b815260206004820152602260248201527f42757920746178206d757374206265206265747765656e20302520616e642039604482015261352560f01b60648201526084016105c4565b605f8111156106865760405162461bcd60e51b815260206004820152602360248201527f53656c6c20746178206d757374206265206265747765656e20302520616e642060448201526239352560e81b60648201526084016105c4565b600691909155600755565b6000546001600160a01b031633146106bb5760405162461bcd60e51b81526004016105c49061180a565b600c55565b6001600160a01b03811660009081526002602052604081205461052b90610fd5565b6000546001600160a01b0316331461070c5760405162461bcd60e51b81526004016105c49061180a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146107805760405162461bcd60e51b81526004016105c49061180a565b600b55565b6000546001600160a01b031633146107af5760405162461bcd60e51b81526004016105c49061180a565b600f8054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146107f75760405162461bcd60e51b81526004016105c49061180a565b600d55565b6000610527338484610b4c565b6000546001600160a01b031633146108335760405162461bcd60e51b81526004016105c49061180a565b600f8054911515600160b01b0260ff60b01b19909216919091179055565b600a546001600160a01b0316336001600160a01b03161461087157600080fd5b600061087c306106c0565b90506108878161105b565b50565b6000546001600160a01b031633146108b45760405162461bcd60e51b81526004016105c49061180a565b60005b828110156109255781600460008686858181106108d6576108d661183f565b90506020020160208101906108eb9190611700565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061091d8161186b565b9150506108b7565b50505050565b600a546001600160a01b0316336001600160a01b03161461094b57600080fd5b47610887816111d5565b6000546001600160a01b0316331461097f5760405162461bcd60e51b81526004016105c49061180a565b6001600160a01b0381166109e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105c4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610a955760405162461bcd60e51b815260206004820152601f60248201527f43616e277420617070726f76652066726f6d207a65726f20616464726573730060448201526064016105c4565b6001600160a01b038216610aeb5760405162461bcd60e51b815260206004820152601d60248201527f43616e277420617070726f766520746f207a65726f206164647265737300000060448201526064016105c4565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ba25760405162461bcd60e51b815260206004820152601f60248201527f43616e74207472616e736665722066726f6d2061646472657373207a65726f0060448201526064016105c4565b6001600160a01b038216610bf85760405162461bcd60e51b815260206004820152601d60248201527f43616e74207472616e7366657220746f2061646472657373207a65726f00000060448201526064016105c4565b60008111610c485760405162461bcd60e51b815260206004820152601b60248201527f416d6f756e742073686f756c642062652061626f7665207a65726f000000000060448201526064016105c4565b6000546001600160a01b03848116911614801590610c7457506000546001600160a01b03838116911614155b15610ea057600f54600160b01b900460ff16610cfe576000546001600160a01b03848116911614610cfe5760405162461bcd60e51b815260206004820152602e60248201527f4f6e6c79206f776e65722063616e207472616465206265666f7265207472616460448201526d34b7339030b1ba34bb30ba34b7b760911b60648201526084016105c4565b600b54811115610d505760405162461bcd60e51b815260206004820152601e60248201527f4578636565646564206d6178207472616e73616374696f6e206c696d6974000060448201526064016105c4565b600f546001600160a01b03838116911614610dc957600c5481610d72846106c0565b610d7c9190611884565b10610dc95760405162461bcd60e51b815260206004820152601860248201527f45786365656473206d617820686f6c642062616c616e6365000000000000000060448201526064016105c4565b6000610dd4306106c0565b600d54600b54919250821015908210610ded57600b5491505b808015610e045750600f54600160a81b900460ff16155b8015610e1e5750600f546001600160a01b03868116911614155b8015610e335750600f54600160a01b900460ff165b8015610e5857506001600160a01b03851660009081526004602052604090205460ff16155b8015610e7d57506001600160a01b03841660009081526004602052604090205460ff16155b15610e9d57610e8b8261105b565b478015610e9b57610e9b476111d5565b505b50505b6001600160a01b03831660009081526004602052604090205460019060ff1680610ee257506001600160a01b03831660009081526004602052604090205460ff165b80610f145750600f546001600160a01b03858116911614801590610f145750600f546001600160a01b03848116911614155b15610f2157506000610f8f565b600f546001600160a01b038581169116148015610f4c5750600e546001600160a01b03848116911614155b15610f58576006546009555b600f546001600160a01b038481169116148015610f835750600e546001600160a01b03858116911614155b15610f8f576007546009555b61092584848484611213565b60008184841115610fbf5760405162461bcd60e51b81526004016105c491906115f5565b506000610fcc8486611897565b95945050505050565b600060055482111561103e5760405162461bcd60e51b815260206004820152602c60248201527f416d6f756e742068617320746f206265206c657373207468616e20746f74616c60448201526b207265666c656374696f6e7360a01b60648201526084016105c4565b600061104861123b565b90506110548382611269565b9392505050565b600f805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110a3576110a361183f565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112091906118aa565b816001815181106111335761113361183f565b6001600160a01b039283166020918202929092010152600e546111599130911684610a3f565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906111929085906000908690309042906004016118c7565b600060405180830381600087803b1580156111ac57600080fd5b505af11580156111c0573d6000803e3d6000fd5b5050600f805460ff60a81b1916905550505050565b600a546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561120f573d6000803e3d6000fd5b5050565b80611220576112206112ab565b61122b8484846112c4565b8061092557610925600854600955565b60008060006112536005549067016345785d8a000090565b90925090506112628282611269565b9250505090565b600061105483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113a7565b6009546000036112b757565b6009805460085560009055565b6000806000806112d3856113d5565b6001600160a01b038b1660009081526002602052604090205493975091955093509150611300908561141c565b6001600160a01b03808916600090815260026020526040808220939093559088168152205461132f908461145e565b6001600160a01b038716600090815260026020526040902055611351816114bd565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161139691815260200190565b60405180910390a350505050505050565b600081836113c85760405162461bcd60e51b81526004016105c491906115f5565b506000610fcc8486611938565b6000806000806000806113ea87600954611507565b9150915060006113f861123b565b90506000806114088a858561153a565b909b909a5094985092965092945050505050565b600061105483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f9b565b60008061146b8385611884565b9050838110156110545760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105c4565b60006114c761123b565b905060006114d58383611573565b306000908152600260205260409020549091506114f2908261145e565b30600090815260026020526040902055505050565b60008080611520606461151a8787611573565b90611269565b9050600061152e868361141c565b96919550909350505050565b600080806115488685611573565b905060006115568686611573565b90506000611564838361141c565b92989297509195505050505050565b6000826000036115855750600061052b565b6000611591838561195a565b90508261159e8583611938565b146110545760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105c4565b600060208083528351808285015260005b8181101561162257858101830151858201604001528201611606565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461088757600080fd5b6000806040838503121561166b57600080fd5b823561167681611643565b946020939093013593505050565b60008060006060848603121561169957600080fd5b83356116a481611643565b925060208401356116b481611643565b929592945050506040919091013590565b600080604083850312156116d857600080fd5b50508035926020909101359150565b6000602082840312156116f957600080fd5b5035919050565b60006020828403121561171257600080fd5b813561105481611643565b8035801515811461172d57600080fd5b919050565b60006020828403121561174457600080fd5b6110548261171d565b60008060006040848603121561176257600080fd5b833567ffffffffffffffff8082111561177a57600080fd5b818601915086601f83011261178e57600080fd5b81358181111561179d57600080fd5b8760208260051b85010111156117b257600080fd5b6020928301955093506117c8918601905061171d565b90509250925092565b600080604083850312156117e457600080fd5b82356117ef81611643565b915060208301356117ff81611643565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161187d5761187d611855565b5060010190565b8082018082111561052b5761052b611855565b8181038181111561052b5761052b611855565b6000602082840312156118bc57600080fd5b815161105481611643565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119175784516001600160a01b0316835293830193918301916001016118f2565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261195557634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761052b5761052b61185556fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122091dedcfde227d860a5909d7664b9acf3e6ab11377b266efa57bc52584e0ba28e64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101855760003560e01c8063874949c9116100d1578063b2021e0a1161008a578063dd62ed3e11610064578063dd62ed3e14610489578063df778d26146104cf578063e5c43633146104e4578063f2fde38b146104fa57600080fd5b8063b2021e0a14610434578063c3c8cd8014610454578063c492f0461461046957600080fd5b8063874949c9146103705780638da5cb5b1461039057806395d89b41146103ae57806398a5c315146103de5780639e0ba25d146103fe578063a9059cbb1461041457600080fd5b8063313ce5671161013e5780636279c694116101185780636279c6941461030557806370a082311461031b578063715018a61461033b57806374010ece1461035057600080fd5b8063313ce567146102a957806349bd5a5e146102c5578063577009e4146102e557600080fd5b806306fdde0314610191578063095ea7b3146101da5780631694505e1461020a57806318160ddd1461024257806323b872dd146102675780632740c1971461028757600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b5060408051808201909152600e81526d536861646f772053687566666c6560901b60208201525b6040516101d191906115f5565b60405180910390f35b3480156101e657600080fd5b506101fa6101f5366004611658565b61051a565b60405190151581526020016101d1565b34801561021657600080fd5b50600e5461022a906001600160a01b031681565b6040516001600160a01b0390911681526020016101d1565b34801561024e57600080fd5b5067016345785d8a00005b6040519081526020016101d1565b34801561027357600080fd5b506101fa610282366004611684565b610531565b34801561029357600080fd5b506102a76102a23660046116c5565b61059a565b005b3480156102b557600080fd5b50604051600981526020016101d1565b3480156102d157600080fd5b50600f5461022a906001600160a01b031681565b3480156102f157600080fd5b506102a76103003660046116e7565b610691565b34801561031157600080fd5b50610259600c5481565b34801561032757600080fd5b50610259610336366004611700565b6106c0565b34801561034757600080fd5b506102a76106e2565b34801561035c57600080fd5b506102a761036b3660046116e7565b610756565b34801561037c57600080fd5b506102a761038b366004611732565b610785565b34801561039c57600080fd5b506000546001600160a01b031661022a565b3480156103ba57600080fd5b5060408051808201909152600781526653485546464c4560c81b60208201526101c4565b3480156103ea57600080fd5b506102a76103f93660046116e7565b6107cd565b34801561040a57600080fd5b50610259600b5481565b34801561042057600080fd5b506101fa61042f366004611658565b6107fc565b34801561044057600080fd5b506102a761044f366004611732565b610809565b34801561046057600080fd5b506102a7610851565b34801561047557600080fd5b506102a761048436600461174d565b61088a565b34801561049557600080fd5b506102596104a43660046117d1565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156104db57600080fd5b506102a761092b565b3480156104f057600080fd5b50610259600d5481565b34801561050657600080fd5b506102a7610515366004611700565b610955565b6000610527338484610a3f565b5060015b92915050565b600061053e848484610b4c565b610590843361058b85604051806060016040528060258152602001611972602591396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610f9b565b610a3f565b5060019392505050565b6000546001600160a01b031633146105cd5760405162461bcd60e51b81526004016105c49061180a565b60405180910390fd5b605f8211156106295760405162461bcd60e51b815260206004820152602260248201527f42757920746178206d757374206265206265747765656e20302520616e642039604482015261352560f01b60648201526084016105c4565b605f8111156106865760405162461bcd60e51b815260206004820152602360248201527f53656c6c20746178206d757374206265206265747765656e20302520616e642060448201526239352560e81b60648201526084016105c4565b600691909155600755565b6000546001600160a01b031633146106bb5760405162461bcd60e51b81526004016105c49061180a565b600c55565b6001600160a01b03811660009081526002602052604081205461052b90610fd5565b6000546001600160a01b0316331461070c5760405162461bcd60e51b81526004016105c49061180a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146107805760405162461bcd60e51b81526004016105c49061180a565b600b55565b6000546001600160a01b031633146107af5760405162461bcd60e51b81526004016105c49061180a565b600f8054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146107f75760405162461bcd60e51b81526004016105c49061180a565b600d55565b6000610527338484610b4c565b6000546001600160a01b031633146108335760405162461bcd60e51b81526004016105c49061180a565b600f8054911515600160b01b0260ff60b01b19909216919091179055565b600a546001600160a01b0316336001600160a01b03161461087157600080fd5b600061087c306106c0565b90506108878161105b565b50565b6000546001600160a01b031633146108b45760405162461bcd60e51b81526004016105c49061180a565b60005b828110156109255781600460008686858181106108d6576108d661183f565b90506020020160208101906108eb9190611700565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061091d8161186b565b9150506108b7565b50505050565b600a546001600160a01b0316336001600160a01b03161461094b57600080fd5b47610887816111d5565b6000546001600160a01b0316331461097f5760405162461bcd60e51b81526004016105c49061180a565b6001600160a01b0381166109e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105c4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610a955760405162461bcd60e51b815260206004820152601f60248201527f43616e277420617070726f76652066726f6d207a65726f20616464726573730060448201526064016105c4565b6001600160a01b038216610aeb5760405162461bcd60e51b815260206004820152601d60248201527f43616e277420617070726f766520746f207a65726f206164647265737300000060448201526064016105c4565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ba25760405162461bcd60e51b815260206004820152601f60248201527f43616e74207472616e736665722066726f6d2061646472657373207a65726f0060448201526064016105c4565b6001600160a01b038216610bf85760405162461bcd60e51b815260206004820152601d60248201527f43616e74207472616e7366657220746f2061646472657373207a65726f00000060448201526064016105c4565b60008111610c485760405162461bcd60e51b815260206004820152601b60248201527f416d6f756e742073686f756c642062652061626f7665207a65726f000000000060448201526064016105c4565b6000546001600160a01b03848116911614801590610c7457506000546001600160a01b03838116911614155b15610ea057600f54600160b01b900460ff16610cfe576000546001600160a01b03848116911614610cfe5760405162461bcd60e51b815260206004820152602e60248201527f4f6e6c79206f776e65722063616e207472616465206265666f7265207472616460448201526d34b7339030b1ba34bb30ba34b7b760911b60648201526084016105c4565b600b54811115610d505760405162461bcd60e51b815260206004820152601e60248201527f4578636565646564206d6178207472616e73616374696f6e206c696d6974000060448201526064016105c4565b600f546001600160a01b03838116911614610dc957600c5481610d72846106c0565b610d7c9190611884565b10610dc95760405162461bcd60e51b815260206004820152601860248201527f45786365656473206d617820686f6c642062616c616e6365000000000000000060448201526064016105c4565b6000610dd4306106c0565b600d54600b54919250821015908210610ded57600b5491505b808015610e045750600f54600160a81b900460ff16155b8015610e1e5750600f546001600160a01b03868116911614155b8015610e335750600f54600160a01b900460ff165b8015610e5857506001600160a01b03851660009081526004602052604090205460ff16155b8015610e7d57506001600160a01b03841660009081526004602052604090205460ff16155b15610e9d57610e8b8261105b565b478015610e9b57610e9b476111d5565b505b50505b6001600160a01b03831660009081526004602052604090205460019060ff1680610ee257506001600160a01b03831660009081526004602052604090205460ff165b80610f145750600f546001600160a01b03858116911614801590610f145750600f546001600160a01b03848116911614155b15610f2157506000610f8f565b600f546001600160a01b038581169116148015610f4c5750600e546001600160a01b03848116911614155b15610f58576006546009555b600f546001600160a01b038481169116148015610f835750600e546001600160a01b03858116911614155b15610f8f576007546009555b61092584848484611213565b60008184841115610fbf5760405162461bcd60e51b81526004016105c491906115f5565b506000610fcc8486611897565b95945050505050565b600060055482111561103e5760405162461bcd60e51b815260206004820152602c60248201527f416d6f756e742068617320746f206265206c657373207468616e20746f74616c60448201526b207265666c656374696f6e7360a01b60648201526084016105c4565b600061104861123b565b90506110548382611269565b9392505050565b600f805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110a3576110a361183f565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112091906118aa565b816001815181106111335761113361183f565b6001600160a01b039283166020918202929092010152600e546111599130911684610a3f565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906111929085906000908690309042906004016118c7565b600060405180830381600087803b1580156111ac57600080fd5b505af11580156111c0573d6000803e3d6000fd5b5050600f805460ff60a81b1916905550505050565b600a546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561120f573d6000803e3d6000fd5b5050565b80611220576112206112ab565b61122b8484846112c4565b8061092557610925600854600955565b60008060006112536005549067016345785d8a000090565b90925090506112628282611269565b9250505090565b600061105483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113a7565b6009546000036112b757565b6009805460085560009055565b6000806000806112d3856113d5565b6001600160a01b038b1660009081526002602052604090205493975091955093509150611300908561141c565b6001600160a01b03808916600090815260026020526040808220939093559088168152205461132f908461145e565b6001600160a01b038716600090815260026020526040902055611351816114bd565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161139691815260200190565b60405180910390a350505050505050565b600081836113c85760405162461bcd60e51b81526004016105c491906115f5565b506000610fcc8486611938565b6000806000806000806113ea87600954611507565b9150915060006113f861123b565b90506000806114088a858561153a565b909b909a5094985092965092945050505050565b600061105483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f9b565b60008061146b8385611884565b9050838110156110545760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105c4565b60006114c761123b565b905060006114d58383611573565b306000908152600260205260409020549091506114f2908261145e565b30600090815260026020526040902055505050565b60008080611520606461151a8787611573565b90611269565b9050600061152e868361141c565b96919550909350505050565b600080806115488685611573565b905060006115568686611573565b90506000611564838361141c565b92989297509195505050505050565b6000826000036115855750600061052b565b6000611591838561195a565b90508261159e8583611938565b146110545760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105c4565b600060208083528351808285015260005b8181101561162257858101830151858201604001528201611606565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461088757600080fd5b6000806040838503121561166b57600080fd5b823561167681611643565b946020939093013593505050565b60008060006060848603121561169957600080fd5b83356116a481611643565b925060208401356116b481611643565b929592945050506040919091013590565b600080604083850312156116d857600080fd5b50508035926020909101359150565b6000602082840312156116f957600080fd5b5035919050565b60006020828403121561171257600080fd5b813561105481611643565b8035801515811461172d57600080fd5b919050565b60006020828403121561174457600080fd5b6110548261171d565b60008060006040848603121561176257600080fd5b833567ffffffffffffffff8082111561177a57600080fd5b818601915086601f83011261178e57600080fd5b81358181111561179d57600080fd5b8760208260051b85010111156117b257600080fd5b6020928301955093506117c8918601905061171d565b90509250925092565b600080604083850312156117e457600080fd5b82356117ef81611643565b915060208301356117ff81611643565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161187d5761187d611855565b5060010190565b8082018082111561052b5761052b611855565b8181038181111561052b5761052b611855565b6000602082840312156118bc57600080fd5b815161105481611643565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119175784516001600160a01b0316835293830193918301916001016118f2565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261195557634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761052b5761052b61185556fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122091dedcfde227d860a5909d7664b9acf3e6ab11377b266efa57bc52584e0ba28e64736f6c63430008120033

Deployed Bytecode Sourcemap

4528:11741:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7171:83;;;;;;;;;;-1:-1:-1;7241:5:0;;;;;;;;;;;;-1:-1:-1;;;7241:5:0;;;;7171:83;;;;;;;:::i;:::-;;;;;;;;8095:193;;;;;;;;;;-1:-1:-1;8095:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8095:193:0;1023:187:1;5646:41:0;;;;;;;;;;-1:-1:-1;5646:41:0;;;;-1:-1:-1;;;;;5646:41:0;;;;;;-1:-1:-1;;;;;1404:32:1;;;1386:51;;1374:2;1359:18;5646:41:0;1215:228:1;6558:100:0;;;;;;;;;;-1:-1:-1;5455:19:0;6558:100;;;1594:25:1;;;1582:2;1567:18;6558:100:0;1448:177:1;13265:443:0;;;;;;;;;;-1:-1:-1;13265:443:0;;;;;:::i;:::-;;:::i;15200:402::-;;;;;;;;;;-1:-1:-1;15200:402:0;;;;;:::i;:::-;;:::i;:::-;;7080:83;;;;;;;;;;-1:-1:-1;7080:83:0;;4842:1;2486:36:1;;2474:2;2459:18;7080:83:0;2344:184:1;5694:28:0;;;;;;;;;;-1:-1:-1;5694:28:0;;;;-1:-1:-1;;;;;5694:28:0;;;15794:107;;;;;;;;;;-1:-1:-1;15794:107:0;;;;;:::i;:::-;;:::i;5534:47::-;;;;;;;;;;;;;;;;6666:138;;;;;;;;;;-1:-1:-1;6666:138:0;;;;;:::i;:::-;;:::i;4084:148::-;;;;;;;;;;;;;:::i;15641:108::-;;;;;;;;;;-1:-1:-1;15641:108:0;;;;;:::i;:::-;;:::i;7771:124::-;;;;;;;;;;-1:-1:-1;7771:124:0;;;;;:::i;:::-;;:::i;3997:79::-;;;;;;;;;;-1:-1:-1;4035:7:0;4062:6;-1:-1:-1;;;;;4062:6:0;3997:79;;7262:87;;;;;;;;;;-1:-1:-1;7334:7:0;;;;;;;;;;;;-1:-1:-1;;;7334:7:0;;;;7262:87;;13716:162;;;;;;;;;;-1:-1:-1;13716:162:0;;;;;:::i;:::-;;:::i;5481:46::-;;;;;;;;;;;;;;;;13058:199;;;;;;;;;;-1:-1:-1;13058:199:0;;;;;:::i;:::-;;:::i;8629:107::-;;;;;;;;;;-1:-1:-1;8629:107:0;;;;;:::i;:::-;;:::i;12856:194::-;;;;;;;;;;;;;:::i;6812:260::-;;;;;;;;;;-1:-1:-1;6812:260:0;;;;;:::i;:::-;;:::i;7903:184::-;;;;;;;;;;-1:-1:-1;7903:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8052:18:0;;;8020:7;8052:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7903:184;12192:198;;;;;;;;;;;;;:::i;5588:49::-;;;;;;;;;;;;;;;;4240:281;;;;;;;;;;-1:-1:-1;4240:281:0;;;;;:::i;:::-;;:::i;8095:193::-;8197:4;8219:39;1309:10;8242:7;8251:6;8219:8;:39::i;:::-;-1:-1:-1;8276:4:0;8095:193;;;;;:::o;13265:443::-;13397:4;13414:36;13424:6;13432:9;13443:6;13414:9;:36::i;:::-;13461:217;13484:6;1309:10;13532:135;13588:6;13532:135;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13532:19:0;;;;;;:11;:19;;;;;;;;1309:10;13532:33;;;;;;;;;;:37;:135::i;:::-;13461:8;:217::i;:::-;-1:-1:-1;13696:4:0;13265:443;;;;;:::o;15200:402::-;3910:6;;-1:-1:-1;;;;;3910:6:0;1309:10;3910:22;3902:67;;;;-1:-1:-1;;;3902:67:0;;;;;;;:::i;:::-;;;;;;;;;15335:2:::1;15323:8;:14;;15284:115;;;::::0;-1:-1:-1;;;15284:115:0;;5178:2:1;15284:115:0::1;::::0;::::1;5160:21:1::0;5217:2;5197:18;;;5190:30;5256:34;5236:18;;;5229:62;-1:-1:-1;;;5307:18:1;;;5300:32;5349:19;;15284:115:0::1;4976:398:1::0;15284:115:0::1;15463:2;15450:9;:15;;15410:118;;;::::0;-1:-1:-1;;;15410:118:0;;5581:2:1;15410:118:0::1;::::0;::::1;5563:21:1::0;5620:2;5600:18;;;5593:30;5659:34;5639:18;;;5632:62;-1:-1:-1;;;5710:18:1;;;5703:33;5753:19;;15410:118:0::1;5379:399:1::0;15410:118:0::1;15541:9;:20:::0;;;;15572:10:::1;:22:::0;15200:402::o;15794:107::-;3910:6;;-1:-1:-1;;;;;3910:6:0;1309:10;3910:22;3902:67;;;;-1:-1:-1;;;3902:67:0;;;;;;;:::i;:::-;15867:12:::1;:26:::0;15794:107::o;6666:138::-;-1:-1:-1;;;;;6779:16:0;;6732:7;6779:16;;;:7;:16;;;;;;6759:37;;:19;:37::i;4084:148::-;3910:6;;-1:-1:-1;;;;;3910:6:0;1309:10;3910:22;3902:67;;;;-1:-1:-1;;;3902:67:0;;;;;;;:::i;:::-;4191:1:::1;4175:6:::0;;4154:40:::1;::::0;-1:-1:-1;;;;;4175:6:0;;::::1;::::0;4154:40:::1;::::0;4191:1;;4154:40:::1;4222:1;4205:19:::0;;-1:-1:-1;;;;;;4205:19:0::1;::::0;;4084:148::o;15641:108::-;3910:6;;-1:-1:-1;;;;;3910:6:0;1309:10;3910:22;3902:67;;;;-1:-1:-1;;;3902:67:0;;;;;;;:::i;:::-;15715:11:::1;:25:::0;15641:108::o;7771:124::-;3910:6;;-1:-1:-1;;;;;3910:6:0;1309:10;3910:22;3902:67;;;;-1:-1:-1;;;3902:67:0;;;;;;;:::i;:::-;7853:15:::1;:34:::0;;;::::1;;-1:-1:-1::0;;;7853:34:0::1;-1:-1:-1::0;;;;7853:34:0;;::::1;::::0;;;::::1;::::0;;7771:124::o;13716:162::-;3910:6;;-1:-1:-1;;;;;3910:6:0;1309:10;3910:22;3902:67;;;;-1:-1:-1;;;3902:67:0;;;;;;;:::i;:::-;13830:19:::1;:40:::0;13716:162::o;13058:199::-;13163:4;13185:42;1309:10;13209:9;13220:6;13185:9;:42::i;8629:107::-;3910:6;;-1:-1:-1;;;;;3910:6:0;1309:10;3910:22;3902:67;;;;-1:-1:-1;;;3902:67:0;;;;;;;:::i;:::-;8700:12:::1;:28:::0;;;::::1;;-1:-1:-1::0;;;8700:28:0::1;-1:-1:-1::0;;;;8700:28:0;;::::1;::::0;;;::::1;::::0;;8629:107::o;12856:194::-;12922:16;;-1:-1:-1;;;;;12922:16:0;1309:10;-1:-1:-1;;;;;12906:32:0;;12898:41;;;;;;12950:23;12976:24;12994:4;12976:9;:24::i;:::-;12950:50;;13011:31;13026:15;13011:14;:31::i;:::-;12887:163;12856:194::o;6812:260::-;3910:6;;-1:-1:-1;;;;;3910:6:0;1309:10;3910:22;3902:67;;;;-1:-1:-1;;;3902:67:0;;;;;;;:::i;:::-;6955:9:::1;6950:115;6970:19:::0;;::::1;6950:115;;;7045:8;7011:18;:31;7030:8;;7039:1;7030:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7011:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;7011:31:0;:42;;-1:-1:-1;;7011:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;6991:3;::::1;::::0;::::1;:::i;:::-;;;;6950:115;;;;6812:260:::0;;;:::o;12192:198::-;12257:16;;-1:-1:-1;;;;;12257:16:0;1309:10;-1:-1:-1;;;;;12241:32:0;;12233:41;;;;;;12314:21;12346:36;12314:21;12346:16;:36::i;4240:281::-;3910:6;;-1:-1:-1;;;;;3910:6:0;1309:10;3910:22;3902:67;;;;-1:-1:-1;;;3902:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4343:22:0;::::1;4321:110;;;::::0;-1:-1:-1;;;4321:110:0;;6389:2:1;4321:110:0::1;::::0;::::1;6371:21:1::0;6428:2;6408:18;;;6401:30;6467:34;6447:18;;;6440:62;-1:-1:-1;;;6518:18:1;;;6511:36;6564:19;;4321:110:0::1;6187:402:1::0;4321:110:0::1;4468:6;::::0;;4447:38:::1;::::0;-1:-1:-1;;;;;4447:38:0;;::::1;::::0;4468:6;::::1;::::0;4447:38:::1;::::0;::::1;4496:6;:17:::0;;-1:-1:-1;;;;;;4496:17:0::1;-1:-1:-1::0;;;;;4496:17:0;;;::::1;::::0;;;::::1;::::0;;4240:281::o;8948:361::-;-1:-1:-1;;;;;9075:19:0;;9067:63;;;;-1:-1:-1;;;9067:63:0;;6796:2:1;9067:63:0;;;6778:21:1;6835:2;6815:18;;;6808:30;6874:33;6854:18;;;6847:61;6925:18;;9067:63:0;6594:355:1;9067:63:0;-1:-1:-1;;;;;9149:21:0;;9141:63;;;;-1:-1:-1;;;9141:63:0;;7156:2:1;9141:63:0;;;7138:21:1;7195:2;7175:18;;;7168:30;7234:31;7214:18;;;7207:59;7283:18;;9141:63:0;6954:353:1;9141:63:0;-1:-1:-1;;;;;9217:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9269:32;;1594:25:1;;;9269:32:0;;1567:18:1;9269:32:0;;;;;;;8948:361;;;:::o;9317:2268::-;-1:-1:-1;;;;;9439:18:0;;9431:62;;;;-1:-1:-1;;;9431:62:0;;7514:2:1;9431:62:0;;;7496:21:1;7553:2;7533:18;;;7526:30;7592:33;7572:18;;;7565:61;7643:18;;9431:62:0;7312:355:1;9431:62:0;-1:-1:-1;;;;;9512:16:0;;9504:58;;;;-1:-1:-1;;;9504:58:0;;7874:2:1;9504:58:0;;;7856:21:1;7913:2;7893:18;;;7886:30;7952:31;7932:18;;;7925:59;8001:18;;9504:58:0;7672:353:1;9504:58:0;9590:1;9581:6;:10;9573:50;;;;-1:-1:-1;;;9573:50:0;;8232:2:1;9573:50:0;;;8214:21:1;8271:2;8251:18;;;8244:30;8310:29;8290:18;;;8283:57;8357:18;;9573:50:0;8030:351:1;9573:50:0;4035:7;4062:6;-1:-1:-1;;;;;9640:15:0;;;4062:6;;9640:15;;;;:32;;-1:-1:-1;4035:7:0;4062:6;-1:-1:-1;;;;;9659:13:0;;;4062:6;;9659:13;;9640:32;9636:1384;;;9727:12;;-1:-1:-1;;;9727:12:0;;;;9722:189;;4035:7;4062:6;-1:-1:-1;;;;;9790:15:0;;;4062:6;;9790:15;9760:135;;;;-1:-1:-1;;;9760:135:0;;8588:2:1;9760:135:0;;;8570:21:1;8627:2;8607:18;;;8600:30;8666:34;8646:18;;;8639:62;-1:-1:-1;;;8717:18:1;;;8710:44;8771:19;;9760:135:0;8386:410:1;9760:135:0;9945:11;;9935:6;:21;;9927:64;;;;-1:-1:-1;;;9927:64:0;;9003:2:1;9927:64:0;;;8985:21:1;9042:2;9022:18;;;9015:30;9081:32;9061:18;;;9054:60;9131:18;;9927:64:0;8801:354:1;9927:64:0;10018:13;;-1:-1:-1;;;;;10012:19:0;;;10018:13;;10012:19;10008:195;;10107:12;;10098:6;10082:13;10092:2;10082:9;:13::i;:::-;:22;;;;:::i;:::-;:37;10052:135;;;;-1:-1:-1;;;10052:135:0;;9492:2:1;10052:135:0;;;9474:21:1;9531:2;9511:18;;;9504:30;9570:26;9550:18;;;9543:54;9614:18;;10052:135:0;9290:348:1;10052:135:0;10219:28;10250:24;10268:4;10250:9;:24::i;:::-;10332:19;;10396:11;;10219:55;;-1:-1:-1;10308:43:0;;;;10372:35;;10368:110;;10451:11;;10428:34;;10368:110;10516:11;:41;;;;-1:-1:-1;10549:8:0;;-1:-1:-1;;;10549:8:0;;;;10548:9;10516:41;:83;;;;-1:-1:-1;10586:13:0;;-1:-1:-1;;;;;10578:21:0;;;10586:13;;10578:21;;10516:83;:119;;;;-1:-1:-1;10620:15:0;;-1:-1:-1;;;10620:15:0;;;;10516:119;:165;;;;-1:-1:-1;;;;;;10657:24:0;;;;;;:18;:24;;;;;;;;10656:25;10516:165;:209;;;;-1:-1:-1;;;;;;10703:22:0;;;;;;:18;:22;;;;;;;;10702:23;10516:209;10494:515;;;10760:36;10775:20;10760:14;:36::i;:::-;10844:21;10888:22;;10884:110;;10935:39;10952:21;10935:16;:39::i;:::-;10741:268;10494:515;9674:1346;;9636:1384;-1:-1:-1;;;;;11083:24:0;;11032:12;11083:24;;;:18;:24;;;;;;11047:4;;11083:24;;;:50;;-1:-1:-1;;;;;;11111:22:0;;;;;;:18;:22;;;;;;;;11083:50;11082:115;;;-1:-1:-1;11160:13:0;;-1:-1:-1;;;;;11152:21:0;;;11160:13;;11152:21;;;;:44;;-1:-1:-1;11183:13:0;;-1:-1:-1;;;;;11177:19:0;;;11183:13;;11177:19;;11152:44;11064:460;;;-1:-1:-1;11234:5:0;11064:460;;;11284:13;;-1:-1:-1;;;;;11276:21:0;;;11284:13;;11276:21;:55;;;;-1:-1:-1;11315:15:0;;-1:-1:-1;;;;;11301:30:0;;;11315:15;;11301:30;;11276:55;11272:112;;;11359:9;;11352:4;:16;11272:112;11410:13;;-1:-1:-1;;;;;11404:19:0;;;11410:13;;11404:19;:55;;;;-1:-1:-1;11443:15:0;;-1:-1:-1;;;;;11427:32:0;;;11443:15;;11427:32;;11404:55;11400:113;;;11487:10;;11480:4;:17;11400:113;11536:41;11551:4;11557:2;11561:6;11569:7;11536:14;:41::i;2722:224::-;2842:7;2878:12;2870:6;;;;2862:29;;;;-1:-1:-1;;;2862:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2902:9:0;2914:5;2918:1;2914;:5;:::i;:::-;2902:17;2722:224;-1:-1:-1;;;;;2722:224:0:o;8296:325::-;8391:7;8449;;8438;:18;;8416:112;;;;-1:-1:-1;;;8416:112:0;;9978:2:1;8416:112:0;;;9960:21:1;10017:2;9997:18;;;9990:30;10056:34;10036:18;;;10029:62;-1:-1:-1;;;10107:18:1;;;10100:42;10159:19;;8416:112:0;9776:408:1;8416:112:0;8539:19;8561:10;:8;:10::i;:::-;8539:32;-1:-1:-1;8589:24:0;:7;8539:32;8589:11;:24::i;:::-;8582:31;8296:325;-1:-1:-1;;;8296:325:0:o;11593:481::-;5877:8;:15;;-1:-1:-1;;;;5877:15:0;-1:-1:-1;;;5877:15:0;;;11693:16:::1;::::0;;11707:1:::1;11693:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11693:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11693:16:0::1;11669:40;;11738:4;11720;11725:1;11720:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11720:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11764:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11764:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11720:7;;11764:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11754:4;11759:1;11754:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11754:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11829:15:::1;::::0;11797:62:::1;::::0;11814:4:::1;::::0;11829:15:::1;11847:11:::0;11797:8:::1;:62::i;:::-;11870:15;::::0;:196:::1;::::0;-1:-1:-1;;;11870:196:0;;-1:-1:-1;;;;;11870:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11951:11;;11870:15:::1;::::0;11993:4;;12020::::1;::::0;12040:15:::1;::::0;11870:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5915:8:0;:16;;-1:-1:-1;;;;5915:16:0;;;-1:-1:-1;;;;11593:481:0:o;12082:102::-;12143:16;;:33;;-1:-1:-1;;;;;12143:16:0;;;;:33;;;;;12169:6;;12143:16;:33;:16;:33;12169:6;12143:16;:33;;;;;;;;;;;;;;;;;;;;;12082:102;:::o;12570:278::-;12726:7;12721:23;;12735:9;:7;:9::i;:::-;12755:48;12777:6;12785:9;12796:6;12755:21;:48::i;:::-;12819:7;12814:26;;12828:12;8920;;8913:4;:19;8872:68;12398:164;12440:7;12461:15;12478;12497:19;7733:7;;;5455:19;;7645:118;12497:19;12460:56;;-1:-1:-1;12460:56:0;-1:-1:-1;12534:20:0;12460:56;;12534:11;:20::i;:::-;12527:27;;;;12398:164;:::o;2954:132::-;3012:7;3039:39;3043:1;3046;3039:39;;;;;;;;;;;;;;;;;:3;:39::i;8744:120::-;8786:4;;8794:1;8786:9;8782:22;;8744:120::o;8782:22::-;8831:4;;;8816:12;:19;-1:-1:-1;8848:8:0;;8744:120::o;13886:535::-;14037:15;14067:23;14105;14143:13;14170:22;14184:7;14170:13;:22::i;:::-;-1:-1:-1;;;;;14221:15:0;;;;;;:7;:15;;;;;;14022:170;;-1:-1:-1;14022:170:0;;-1:-1:-1;14022:170:0;-1:-1:-1;14022:170:0;-1:-1:-1;14221:28:0;;14022:170;14221:19;:28::i;:::-;-1:-1:-1;;;;;14203:15:0;;;;;;;:7;:15;;;;;;:46;;;;14281:18;;;;;;;:39;;14304:15;14281:22;:39::i;:::-;-1:-1:-1;;;;;14260:18:0;;;;;;:7;:18;;;;;:60;14331:22;14347:5;14331:15;:22::i;:::-;14386:9;-1:-1:-1;;;;;14369:44:0;14378:6;-1:-1:-1;;;;;14369:44:0;;14397:15;14369:44;;;;1594:25:1;;1582:2;1567:18;;1448:177;14369:44:0;;;;;;;;14011:410;;;;13886:535;;;:::o;2491:223::-;2611:7;2646:12;2639:5;2631:28;;;;-1:-1:-1;;;2631:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2670:9:0;2682:5;2686:1;2682;:5;:::i;14654:538::-;14757:7;14779;14801;14823;14859:23;14884:13;14901:26;14913:7;14922:4;;14901:11;:26::i;:::-;14858:69;;;;14938:19;14960:10;:8;:10::i;:::-;14938:32;;14982:15;14999:23;15026:90;15052:7;15074:5;15094:11;15026;:90::i;:::-;14981:135;;;;-1:-1:-1;15161:15:0;;-1:-1:-1;15178:5:0;;-1:-1:-1;14654:538:0;;-1:-1:-1;;;;;14654:538:0:o;2347:136::-;2405:7;2432:43;2436:1;2439;2432:43;;;;;;;;;;;;;;;;;:3;:43::i;2160:179::-;2218:7;;2250:5;2254:1;2250;:5;:::i;:::-;2238:17;;2279:1;2274;:6;;2266:46;;;;-1:-1:-1;;;2266:46:0;;11986:2:1;2266:46:0;;;11968:21:1;12025:2;12005:18;;;11998:30;12064:29;12044:18;;;12037:57;12111:18;;2266:46:0;11784:351:1;14429:217:0;14488:19;14510:10;:8;:10::i;:::-;14488:32;-1:-1:-1;14531:13:0;14547:22;:5;14488:32;14547:9;:22::i;:::-;14621:4;14605:22;;;;:7;:22;;;;;;14531:38;;-1:-1:-1;14605:33:0;;14531:38;14605:26;:33::i;:::-;14596:4;14580:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14429:217:0:o;7357:280::-;7457:7;;;7507:25;7528:3;7507:16;:7;7519:3;7507:11;:16::i;:::-;:20;;:25::i;:::-;7491:41;-1:-1:-1;7543:23:0;7569:18;:7;7491:41;7569:11;:18::i;:::-;7543:44;7623:5;;-1:-1:-1;7357:280:0;;-1:-1:-1;;;;7357:280:0:o;15909:357::-;16039:7;;;16086:24;:7;16098:11;16086;:24::i;:::-;16068:42;-1:-1:-1;16121:13:0;16137:22;:5;16147:11;16137:9;:22::i;:::-;16121:38;-1:-1:-1;16170:23:0;16196:18;:7;16121:38;16196:11;:18::i;:::-;16233:7;;;;-1:-1:-1;15909:357:0;;-1:-1:-1;;;;;;15909:357:0:o;3094:246::-;3152:7;3176:1;3181;3176:6;3172:47;;-1:-1:-1;3206:1:0;3199:8;;3172:47;3229:9;3241:5;3245:1;3241;:5;:::i;:::-;3229:17;-1:-1:-1;3274:1:0;3265:5;3269:1;3229:17;3265:5;:::i;:::-;:10;3257:56;;;;-1:-1:-1;;;3257:56:0;;12515:2:1;3257:56:0;;;12497:21:1;12554:2;12534:18;;;12527:30;12593:34;12573:18;;;12566:62;-1:-1:-1;;;12644:18:1;;;12637:31;12685:19;;3257:56:0;12313:397:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1630:456::-;1707:6;1715;1723;1776:2;1764:9;1755:7;1751:23;1747:32;1744:52;;;1792:1;1789;1782:12;1744:52;1831:9;1818:23;1850:31;1875:5;1850:31;:::i;:::-;1900:5;-1:-1:-1;1957:2:1;1942:18;;1929:32;1970:33;1929:32;1970:33;:::i;:::-;1630:456;;2022:7;;-1:-1:-1;;;2076:2:1;2061:18;;;;2048:32;;1630:456::o;2091:248::-;2159:6;2167;2220:2;2208:9;2199:7;2195:23;2191:32;2188:52;;;2236:1;2233;2226:12;2188:52;-1:-1:-1;;2259:23:1;;;2329:2;2314:18;;;2301:32;;-1:-1:-1;2091:248:1:o;2741:180::-;2800:6;2853:2;2841:9;2832:7;2828:23;2824:32;2821:52;;;2869:1;2866;2859:12;2821:52;-1:-1:-1;2892:23:1;;2741:180;-1:-1:-1;2741:180:1:o;2926:247::-;2985:6;3038:2;3026:9;3017:7;3013:23;3009:32;3006:52;;;3054:1;3051;3044:12;3006:52;3093:9;3080:23;3112:31;3137:5;3112:31;:::i;3178:160::-;3243:20;;3299:13;;3292:21;3282:32;;3272:60;;3328:1;3325;3318:12;3272:60;3178:160;;;:::o;3343:180::-;3399:6;3452:2;3440:9;3431:7;3427:23;3423:32;3420:52;;;3468:1;3465;3458:12;3420:52;3491:26;3507:9;3491:26;:::i;3528:689::-;3620:6;3628;3636;3689:2;3677:9;3668:7;3664:23;3660:32;3657:52;;;3705:1;3702;3695:12;3657:52;3745:9;3732:23;3774:18;3815:2;3807:6;3804:14;3801:34;;;3831:1;3828;3821:12;3801:34;3869:6;3858:9;3854:22;3844:32;;3914:7;3907:4;3903:2;3899:13;3895:27;3885:55;;3936:1;3933;3926:12;3885:55;3976:2;3963:16;4002:2;3994:6;3991:14;3988:34;;;4018:1;4015;4008:12;3988:34;4073:7;4066:4;4056:6;4053:1;4049:14;4045:2;4041:23;4037:34;4034:47;4031:67;;;4094:1;4091;4084:12;4031:67;4125:4;4117:13;;;;-1:-1:-1;4149:6:1;-1:-1:-1;4174:37:1;;4190:20;;;-1:-1:-1;4174:37:1;:::i;:::-;4164:47;;3528:689;;;;;:::o;4222:388::-;4290:6;4298;4351:2;4339:9;4330:7;4326:23;4322:32;4319:52;;;4367:1;4364;4357:12;4319:52;4406:9;4393:23;4425:31;4450:5;4425:31;:::i;:::-;4475:5;-1:-1:-1;4532:2:1;4517:18;;4504:32;4545:33;4504:32;4545:33;:::i;:::-;4597:7;4587:17;;;4222:388;;;;;:::o;4615:356::-;4817:2;4799:21;;;4836:18;;;4829:30;4895:34;4890:2;4875:18;;4868:62;4962:2;4947:18;;4615:356::o;5783:127::-;5844:10;5839:3;5835:20;5832:1;5825:31;5875:4;5872:1;5865:15;5899:4;5896:1;5889:15;5915:127;5976:10;5971:3;5967:20;5964:1;5957:31;6007:4;6004:1;5997:15;6031:4;6028:1;6021:15;6047:135;6086:3;6107:17;;;6104:43;;6127:18;;:::i;:::-;-1:-1:-1;6174:1:1;6163:13;;6047:135::o;9160:125::-;9225:9;;;9246:10;;;9243:36;;;9259:18;;:::i;9643:128::-;9710:9;;;9731:11;;;9728:37;;;9745:18;;:::i;10321:251::-;10391:6;10444:2;10432:9;10423:7;10419:23;10415:32;10412:52;;;10460:1;10457;10450:12;10412:52;10492:9;10486:16;10511:31;10536:5;10511:31;:::i;10577:980::-;10839:4;10887:3;10876:9;10872:19;10918:6;10907:9;10900:25;10944:2;10982:6;10977:2;10966:9;10962:18;10955:34;11025:3;11020:2;11009:9;11005:18;10998:31;11049:6;11084;11078:13;11115:6;11107;11100:22;11153:3;11142:9;11138:19;11131:26;;11192:2;11184:6;11180:15;11166:29;;11213:1;11223:195;11237:6;11234:1;11231:13;11223:195;;;11302:13;;-1:-1:-1;;;;;11298:39:1;11286:52;;11393:15;;;;11358:12;;;;11334:1;11252:9;11223:195;;;-1:-1:-1;;;;;;;11474:32:1;;;;11469:2;11454:18;;11447:60;-1:-1:-1;;;11538:3:1;11523:19;11516:35;11435:3;10577:980;-1:-1:-1;;;10577:980:1:o;11562:217::-;11602:1;11628;11618:132;;11672:10;11667:3;11663:20;11660:1;11653:31;11707:4;11704:1;11697:15;11735:4;11732:1;11725:15;11618:132;-1:-1:-1;11764:9:1;;11562:217::o;12140:168::-;12213:9;;;12244;;12261:15;;;12255:22;;12241:37;12231:71;;12282:18;;:::i

Swarm Source

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