ETH Price: $3,423.77 (+3.30%)

Token

MAIGA Bot (MAIGA)
 

Overview

Max Total Supply

10,000,000,000,000,000,000,000,000,000 MAIGA

Holders

47

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
212,500,000,000,000,000,000,000,000 MAIGA

Value
$0.00
0x1462847baabfd707f4677d7faa9f417a7253bd56
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:
MAIGA

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-18
*/

/*

https://x.com/MAIGA_Bot

https://t.me/maigabotportal

https://maigabot.com/

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.25;

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

interface IERC20 {
    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 totalSupply() 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 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);
    }

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

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

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

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

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

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

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

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

    string private constant _name = "MAIGA Bot";
    string private constant _symbol = "MAIGA";
    uint8 private constant _decimals = 18;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    address payable private _developmentAddress =
        payable(0xb536466E8E76Dea1b05480ca9eF8d9847b0ff85C);
    address payable private _marketingAddress =
        payable(0xb536466E8E76Dea1b05480ca9eF8d9847b0ff85C);

    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    uint256 public _maxTxAmount = 250000000 * 10**18;
    uint256 public _maxWalletSize = 250000000 * 10**18;
    uint256 public _swapTokensAtAmount = 100000000 * 10**18;
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
        uint256 private constant _tTotal = 10000000000*10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 15;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 15;

    mapping(address => bool) public bots;
    mapping(address => uint256) public _buyMap;
    mapping(address => bool) private botGuard;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

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

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

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

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

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

    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function totalSupply() public pure override returns (uint256) {return _tTotal;}
    function balanceOf(address account) public view override returns (uint256) {return tokenFromReflection(_rOwned[account]);}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(_msgSender(), recipient, amount); return true;}
    function allowance(address owner, address spender) public view override returns (uint256){return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(_msgSender(), spender, amount);return true;}
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

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

    function manualswap() external {
        require(
            _msgSender() == _developmentAddress ||
                _msgSender() == _marketingAddress
        );
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

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

    function manualsend() external {
        require(
            _msgSender() == _developmentAddress ||
                _msgSender() == _marketingAddress
        );
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

    function setNewFee(
        uint256 redisFeeOnBuy,
        uint256 redisFeeOnSell,
        uint256 taxFeeOnBuy,
        uint256 taxFeeOnSell
    ) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

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

        bool allowTransfer = false;

        if (
            from != owner() && to != owner() && !botGuard[from] && !botGuard[to]
        ) {
            // Trade start check
            if (tradingOpen || botGuard[from]) {
                allowTransfer = true;
            } else {
                revert(
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(
                !bots[from] && !bots[to],
                "TOKEN: Your account is blacklisted!"
            );

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

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

        if (allowTransfer) {
            bool takeFee = true;

            // Transfer Tokens
            if (
                (_isExcludedFromFee[from] || _isExcludedFromFee[to]) ||
                (from != uniswapV2Pair && to != uniswapV2Pair)
            ) {
                takeFee = false;
            } else {
                // Set Fee for Buys
                if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                    _redisFee = _redisFeeOnBuy;
                    _taxFee = _taxFeeOnBuy;
                }

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount)
        public
        onlyOwner
    {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

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

    function updateTXNrequirements(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function updateMaxWallet(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_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":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"manualsend","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":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","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":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setNewFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"updateTXNrequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526004805473b536466e8e76dea1b05480ca9ef8d9847b0ff85c6001600160a01b03199182168117909255600580549091169091179055601354600681905560145460078190556acecb8f27f4200f3a00000060088190556009556a52b7d2dcc80cd2e4000000600a55600b91909155600c5561008d6b204fce5e3e250261100000005f19610355565b610098905f19610374565b600f9081555f601181905560128290556013556014556019805461ffff60a81b1916600160b01b1790553480156100cd575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600f54335f9081526002602090815260409182902092909255601880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015610186573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101aa9190610399565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102199190610399565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610263573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102879190610399565b601980546001600160a01b0319166001600160a01b039283161790555f805482168152600e6020526040808220805460ff1990811660019081179092553084528284208054821683179055600454851684528284208054821683179055600554909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b204fce5e3e2502611000000060405161034791815260200190565b60405180910390a3506103c6565b5f8261036f57634e487b7160e01b5f52601260045260245ffd5b500690565b8181038181111561039357634e487b7160e01b5f52601160045260245ffd5b92915050565b5f602082840312156103a9575f80fd5b81516001600160a01b03811681146103bf575f80fd5b9392505050565b611aed806103d35f395ff3fe6080604052600436106101b2575f3560e01c80637d1db4a5116100e7578063af28192c11610087578063c3c8cd8011610062578063c3c8cd80146104ea578063c492f046146104fe578063dd62ed3e1461051d578063f2fde38b14610561575f80fd5b8063af28192c1461047e578063b89d825f1461049d578063bfd79284146104bc575f80fd5b80638f9a55c0116100c25780638f9a55c0146103fe57806395d89b411461041357806398a5c31514610440578063a9059cbb1461045f575f80fd5b80637d1db4a5146103a25780637f2feddc146103b75780638da5cb5b146103e2575f80fd5b806330d35dee116101525780636d8aa8f81161012d5780636d8aa8f81461033c5780636fc3eaec1461035b57806370a082311461036f578063715018a61461038e575f80fd5b806330d35dee146102e3578063313ce5671461030257806349bd5a5e1461031d575f80fd5b806318160ddd1161018d57806318160ddd146102665780631c499ab01461028e57806323b872dd146102af5780632fd689e3146102ce575f80fd5b806306fdde03146101bd578063095ea7b3146102005780631694505e1461022f575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b5060408051808201909152600981526813505251d048109bdd60ba1b60208201525b6040516101f79190611713565b60405180910390f35b34801561020b575f80fd5b5061021f61021a36600461175c565b610580565b60405190151581526020016101f7565b34801561023a575f80fd5b5060185461024e906001600160a01b031681565b6040516001600160a01b0390911681526020016101f7565b348015610271575f80fd5b506b204fce5e3e250261100000005b6040519081526020016101f7565b348015610299575f80fd5b506102ad6102a8366004611786565b610596565b005b3480156102ba575f80fd5b5061021f6102c936600461179d565b6105cd565b3480156102d9575f80fd5b50610280600a5481565b3480156102ee575f80fd5b506102ad6102fd3660046117ef565b610634565b34801561030d575f80fd5b50604051601281526020016101f7565b348015610328575f80fd5b5060195461024e906001600160a01b031681565b348015610347575f80fd5b506102ad6103563660046117ef565b61067b565b348015610366575f80fd5b506102ad6106c2565b34801561037a575f80fd5b50610280610389366004611808565b61070c565b348015610399575f80fd5b506102ad61072d565b3480156103ad575f80fd5b5061028060085481565b3480156103c2575f80fd5b506102806103d1366004611808565b60166020525f908152604090205481565b3480156103ed575f80fd5b505f546001600160a01b031661024e565b348015610409575f80fd5b5061028060095481565b34801561041e575f80fd5b506040805180820190915260058152644d4149474160d81b60208201526101ea565b34801561044b575f80fd5b506102ad61045a366004611786565b61079e565b34801561046a575f80fd5b5061021f61047936600461175c565b6107cc565b348015610489575f80fd5b506102ad610498366004611823565b6107d8565b3480156104a8575f80fd5b506102ad6104b7366004611786565b610815565b3480156104c7575f80fd5b5061021f6104d6366004611808565b60156020525f908152604090205460ff1681565b3480156104f5575f80fd5b506102ad610843565b348015610509575f80fd5b506102ad610518366004611852565b610895565b348015610528575f80fd5b506102806105373660046118d1565b6001600160a01b039182165f908152600d6020908152604080832093909416825291909152205490565b34801561056c575f80fd5b506102ad61057b366004611808565b610928565b5f61058c338484610a0f565b5060015b92915050565b5f546001600160a01b031633146105c85760405162461bcd60e51b81526004016105bf90611908565b60405180910390fd5b600955565b5f6105d9848484610b32565b61062a843361062585604051806060016040528060288152602001611a90602891396001600160a01b038a165f908152600d602090815260408083203384529091529020549190611013565b610a0f565b5060019392505050565b5f546001600160a01b0316331461065d5760405162461bcd60e51b81526004016105bf90611908565b60198054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b031633146106a45760405162461bcd60e51b81526004016105bf90611908565b60198054911515600160b01b0260ff60b01b19909216919091179055565b6004546001600160a01b0316336001600160a01b031614806106f757506005546001600160a01b0316336001600160a01b0316145b6106ff575f80fd5b476107098161104b565b50565b6001600160a01b0381165f9081526002602052604081205461059090611086565b5f546001600160a01b031633146107565760405162461bcd60e51b81526004016105bf90611908565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107c75760405162461bcd60e51b81526004016105bf90611908565b600a55565b5f61058c338484610b32565b5f546001600160a01b031633146108015760405162461bcd60e51b81526004016105bf90611908565b601193909355601391909155601255601455565b5f546001600160a01b0316331461083e5760405162461bcd60e51b81526004016105bf90611908565b600855565b6004546001600160a01b0316336001600160a01b0316148061087857506005546001600160a01b0316336001600160a01b0316145b610880575f80fd5b5f61088a3061070c565b905061070981611108565b5f546001600160a01b031633146108be5760405162461bcd60e51b81526004016105bf90611908565b5f5b828110156109225781600e5f8686858181106108de576108de61193d565b90506020020160208101906108f39190611808565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016108c0565b50505050565b5f546001600160a01b031633146109515760405162461bcd60e51b81526004016105bf90611908565b6001600160a01b0381166109b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105bf565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610a715760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105bf565b6001600160a01b038216610ad25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105bf565b6001600160a01b038381165f818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105bf565b6001600160a01b038216610bf85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105bf565b5f8111610c595760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105bf565b5f80546001600160a01b03858116911614801590610c8457505f546001600160a01b03848116911614155b8015610ca857506001600160a01b0384165f9081526017602052604090205460ff16155b8015610ccc57506001600160a01b0383165f9081526017602052604090205460ff16155b15610eb457601954600160a01b900460ff1680610d0057506001600160a01b0384165f9081526017602052604090205460ff165b15610d0d57506001610d7b565b60405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105bf565b600854821115610dcd5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105bf565b6001600160a01b0384165f9081526015602052604090205460ff16158015610e0d57506001600160a01b0383165f9081526015602052604090205460ff16155b610e655760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016105bf565b6019546001600160a01b03848116911614610eaf5760095482610e878561070c565b610e919190611965565b1115610eaf5760405162461bcd60e51b81526004016105bf90611978565b610f02565b6019546001600160a01b03848116911614610efe5760095482610ed68561070c565b610ee09190611965565b1115610efe5760405162461bcd60e51b81526004016105bf90611978565b5060015b8015610922576001600160a01b0384165f908152600e602052604090205460019060ff1680610f4857506001600160a01b0384165f908152600e602052604090205460ff165b80610f7a57506019546001600160a01b03868116911614801590610f7a57506019546001600160a01b03858116911614155b15610f8657505f611000565b6019546001600160a01b038681169116148015610fb157506018546001600160a01b03858116911614155b15610fc3576011546006556012546007555b6019546001600160a01b038581169116148015610fee57506018546001600160a01b03868116911614155b15611000576013546006556014546007555b61100c85858584611278565b5050505050565b5f81848411156110365760405162461bcd60e51b81526004016105bf9190611713565b505f61104284866119bb565b95945050505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611082573d5f803e3d5ffd5b5050565b5f600f548211156110ec5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105bf565b5f6110f56112a6565b905061110183826112c7565b9392505050565b6019805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061114e5761114e61193d565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c991906119ce565b816001815181106111dc576111dc61193d565b6001600160a01b0392831660209182029290920101526018546112029130911684610a0f565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac9479061123a9085905f908690309042906004016119e9565b5f604051808303815f87803b158015611251575f80fd5b505af1158015611263573d5f803e3d5ffd5b50506019805460ff60a81b1916905550505050565b8061128557611285611308565b611290848484611335565b8061092257610922600b54600655600c54600755565b5f805f6112b1611426565b90925090506112c082826112c7565b9250505090565b5f61110183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061146d565b6006541580156113185750600754155b1561131f57565b60068054600b5560078054600c555f9182905555565b5f805f805f8061134487611499565b6001600160a01b038f165f90815260026020526040902054959b5093995091975095509350915061137590876114ee565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546113a3908661152f565b6001600160a01b0389165f908152600260205260409020556113c48161158d565b6113ce84836115d3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161141391815260200190565b60405180910390a3505050505050505050565b600f545f9081906b204fce5e3e2502611000000061144482826112c7565b821015611464575050600f54926b204fce5e3e2502611000000092509050565b90939092509050565b5f818361148d5760405162461bcd60e51b81526004016105bf9190611713565b505f6110428486611a59565b5f805f805f805f805f6114b18a6006546007546115f7565b9250925092505f6114c06112a6565b90505f805f6114d18e878787611649565b919e509c509a509598509396509194505050505091939550919395565b5f61110183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611013565b5f8061153b8385611965565b9050838110156111015760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105bf565b5f6115966112a6565b90505f6115a38383611695565b305f908152600260205260409020549091506115bf908261152f565b305f90815260026020526040902055505050565b600f546115e090836114ee565b600f556010546115f0908261152f565b6010555050565b5f808080611610606461160a8989611695565b906112c7565b90505f611622606461160a8a89611695565b90505f611639826116338b866114ee565b906114ee565b9992985090965090945050505050565b5f8080806116578886611695565b90505f6116648887611695565b90505f6116718888611695565b90505f6116828261163386866114ee565b939b939a50919850919650505050505050565b5f825f036116a457505f610590565b5f6116af8385611a78565b9050826116bc8583611a59565b146111015760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105bf565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610709575f80fd5b5f806040838503121561176d575f80fd5b823561177881611748565b946020939093013593505050565b5f60208284031215611796575f80fd5b5035919050565b5f805f606084860312156117af575f80fd5b83356117ba81611748565b925060208401356117ca81611748565b929592945050506040919091013590565b803580151581146117ea575f80fd5b919050565b5f602082840312156117ff575f80fd5b611101826117db565b5f60208284031215611818575f80fd5b813561110181611748565b5f805f8060808587031215611836575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611864575f80fd5b833567ffffffffffffffff81111561187a575f80fd5b8401601f8101861361188a575f80fd5b803567ffffffffffffffff8111156118a0575f80fd5b8660208260051b84010111156118b4575f80fd5b6020918201945092506118c89085016117db565b90509250925092565b5f80604083850312156118e2575f80fd5b82356118ed81611748565b915060208301356118fd81611748565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561059057610590611951565b60208082526023908201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696040820152627a652160e81b606082015260800190565b8181038181111561059057610590611951565b5f602082840312156119de575f80fd5b815161110181611748565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611a395783516001600160a01b0316835260209384019390920191600101611a12565b50506001600160a01b039590951660608401525050608001529392505050565b5f82611a7357634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176105905761059061195156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ae3a2508a73c991f171d4a7d258cd453acc227afe1be0566cd0517b2cec4e9fc64736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106101b2575f3560e01c80637d1db4a5116100e7578063af28192c11610087578063c3c8cd8011610062578063c3c8cd80146104ea578063c492f046146104fe578063dd62ed3e1461051d578063f2fde38b14610561575f80fd5b8063af28192c1461047e578063b89d825f1461049d578063bfd79284146104bc575f80fd5b80638f9a55c0116100c25780638f9a55c0146103fe57806395d89b411461041357806398a5c31514610440578063a9059cbb1461045f575f80fd5b80637d1db4a5146103a25780637f2feddc146103b75780638da5cb5b146103e2575f80fd5b806330d35dee116101525780636d8aa8f81161012d5780636d8aa8f81461033c5780636fc3eaec1461035b57806370a082311461036f578063715018a61461038e575f80fd5b806330d35dee146102e3578063313ce5671461030257806349bd5a5e1461031d575f80fd5b806318160ddd1161018d57806318160ddd146102665780631c499ab01461028e57806323b872dd146102af5780632fd689e3146102ce575f80fd5b806306fdde03146101bd578063095ea7b3146102005780631694505e1461022f575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b5060408051808201909152600981526813505251d048109bdd60ba1b60208201525b6040516101f79190611713565b60405180910390f35b34801561020b575f80fd5b5061021f61021a36600461175c565b610580565b60405190151581526020016101f7565b34801561023a575f80fd5b5060185461024e906001600160a01b031681565b6040516001600160a01b0390911681526020016101f7565b348015610271575f80fd5b506b204fce5e3e250261100000005b6040519081526020016101f7565b348015610299575f80fd5b506102ad6102a8366004611786565b610596565b005b3480156102ba575f80fd5b5061021f6102c936600461179d565b6105cd565b3480156102d9575f80fd5b50610280600a5481565b3480156102ee575f80fd5b506102ad6102fd3660046117ef565b610634565b34801561030d575f80fd5b50604051601281526020016101f7565b348015610328575f80fd5b5060195461024e906001600160a01b031681565b348015610347575f80fd5b506102ad6103563660046117ef565b61067b565b348015610366575f80fd5b506102ad6106c2565b34801561037a575f80fd5b50610280610389366004611808565b61070c565b348015610399575f80fd5b506102ad61072d565b3480156103ad575f80fd5b5061028060085481565b3480156103c2575f80fd5b506102806103d1366004611808565b60166020525f908152604090205481565b3480156103ed575f80fd5b505f546001600160a01b031661024e565b348015610409575f80fd5b5061028060095481565b34801561041e575f80fd5b506040805180820190915260058152644d4149474160d81b60208201526101ea565b34801561044b575f80fd5b506102ad61045a366004611786565b61079e565b34801561046a575f80fd5b5061021f61047936600461175c565b6107cc565b348015610489575f80fd5b506102ad610498366004611823565b6107d8565b3480156104a8575f80fd5b506102ad6104b7366004611786565b610815565b3480156104c7575f80fd5b5061021f6104d6366004611808565b60156020525f908152604090205460ff1681565b3480156104f5575f80fd5b506102ad610843565b348015610509575f80fd5b506102ad610518366004611852565b610895565b348015610528575f80fd5b506102806105373660046118d1565b6001600160a01b039182165f908152600d6020908152604080832093909416825291909152205490565b34801561056c575f80fd5b506102ad61057b366004611808565b610928565b5f61058c338484610a0f565b5060015b92915050565b5f546001600160a01b031633146105c85760405162461bcd60e51b81526004016105bf90611908565b60405180910390fd5b600955565b5f6105d9848484610b32565b61062a843361062585604051806060016040528060288152602001611a90602891396001600160a01b038a165f908152600d602090815260408083203384529091529020549190611013565b610a0f565b5060019392505050565b5f546001600160a01b0316331461065d5760405162461bcd60e51b81526004016105bf90611908565b60198054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b031633146106a45760405162461bcd60e51b81526004016105bf90611908565b60198054911515600160b01b0260ff60b01b19909216919091179055565b6004546001600160a01b0316336001600160a01b031614806106f757506005546001600160a01b0316336001600160a01b0316145b6106ff575f80fd5b476107098161104b565b50565b6001600160a01b0381165f9081526002602052604081205461059090611086565b5f546001600160a01b031633146107565760405162461bcd60e51b81526004016105bf90611908565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107c75760405162461bcd60e51b81526004016105bf90611908565b600a55565b5f61058c338484610b32565b5f546001600160a01b031633146108015760405162461bcd60e51b81526004016105bf90611908565b601193909355601391909155601255601455565b5f546001600160a01b0316331461083e5760405162461bcd60e51b81526004016105bf90611908565b600855565b6004546001600160a01b0316336001600160a01b0316148061087857506005546001600160a01b0316336001600160a01b0316145b610880575f80fd5b5f61088a3061070c565b905061070981611108565b5f546001600160a01b031633146108be5760405162461bcd60e51b81526004016105bf90611908565b5f5b828110156109225781600e5f8686858181106108de576108de61193d565b90506020020160208101906108f39190611808565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016108c0565b50505050565b5f546001600160a01b031633146109515760405162461bcd60e51b81526004016105bf90611908565b6001600160a01b0381166109b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105bf565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610a715760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105bf565b6001600160a01b038216610ad25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105bf565b6001600160a01b038381165f818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105bf565b6001600160a01b038216610bf85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105bf565b5f8111610c595760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105bf565b5f80546001600160a01b03858116911614801590610c8457505f546001600160a01b03848116911614155b8015610ca857506001600160a01b0384165f9081526017602052604090205460ff16155b8015610ccc57506001600160a01b0383165f9081526017602052604090205460ff16155b15610eb457601954600160a01b900460ff1680610d0057506001600160a01b0384165f9081526017602052604090205460ff165b15610d0d57506001610d7b565b60405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105bf565b600854821115610dcd5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105bf565b6001600160a01b0384165f9081526015602052604090205460ff16158015610e0d57506001600160a01b0383165f9081526015602052604090205460ff16155b610e655760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016105bf565b6019546001600160a01b03848116911614610eaf5760095482610e878561070c565b610e919190611965565b1115610eaf5760405162461bcd60e51b81526004016105bf90611978565b610f02565b6019546001600160a01b03848116911614610efe5760095482610ed68561070c565b610ee09190611965565b1115610efe5760405162461bcd60e51b81526004016105bf90611978565b5060015b8015610922576001600160a01b0384165f908152600e602052604090205460019060ff1680610f4857506001600160a01b0384165f908152600e602052604090205460ff165b80610f7a57506019546001600160a01b03868116911614801590610f7a57506019546001600160a01b03858116911614155b15610f8657505f611000565b6019546001600160a01b038681169116148015610fb157506018546001600160a01b03858116911614155b15610fc3576011546006556012546007555b6019546001600160a01b038581169116148015610fee57506018546001600160a01b03868116911614155b15611000576013546006556014546007555b61100c85858584611278565b5050505050565b5f81848411156110365760405162461bcd60e51b81526004016105bf9190611713565b505f61104284866119bb565b95945050505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611082573d5f803e3d5ffd5b5050565b5f600f548211156110ec5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105bf565b5f6110f56112a6565b905061110183826112c7565b9392505050565b6019805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061114e5761114e61193d565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c991906119ce565b816001815181106111dc576111dc61193d565b6001600160a01b0392831660209182029290920101526018546112029130911684610a0f565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac9479061123a9085905f908690309042906004016119e9565b5f604051808303815f87803b158015611251575f80fd5b505af1158015611263573d5f803e3d5ffd5b50506019805460ff60a81b1916905550505050565b8061128557611285611308565b611290848484611335565b8061092257610922600b54600655600c54600755565b5f805f6112b1611426565b90925090506112c082826112c7565b9250505090565b5f61110183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061146d565b6006541580156113185750600754155b1561131f57565b60068054600b5560078054600c555f9182905555565b5f805f805f8061134487611499565b6001600160a01b038f165f90815260026020526040902054959b5093995091975095509350915061137590876114ee565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546113a3908661152f565b6001600160a01b0389165f908152600260205260409020556113c48161158d565b6113ce84836115d3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161141391815260200190565b60405180910390a3505050505050505050565b600f545f9081906b204fce5e3e2502611000000061144482826112c7565b821015611464575050600f54926b204fce5e3e2502611000000092509050565b90939092509050565b5f818361148d5760405162461bcd60e51b81526004016105bf9190611713565b505f6110428486611a59565b5f805f805f805f805f6114b18a6006546007546115f7565b9250925092505f6114c06112a6565b90505f805f6114d18e878787611649565b919e509c509a509598509396509194505050505091939550919395565b5f61110183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611013565b5f8061153b8385611965565b9050838110156111015760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105bf565b5f6115966112a6565b90505f6115a38383611695565b305f908152600260205260409020549091506115bf908261152f565b305f90815260026020526040902055505050565b600f546115e090836114ee565b600f556010546115f0908261152f565b6010555050565b5f808080611610606461160a8989611695565b906112c7565b90505f611622606461160a8a89611695565b90505f611639826116338b866114ee565b906114ee565b9992985090965090945050505050565b5f8080806116578886611695565b90505f6116648887611695565b90505f6116718888611695565b90505f6116828261163386866114ee565b939b939a50919850919650505050505050565b5f825f036116a457505f610590565b5f6116af8385611a78565b9050826116bc8583611a59565b146111015760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105bf565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610709575f80fd5b5f806040838503121561176d575f80fd5b823561177881611748565b946020939093013593505050565b5f60208284031215611796575f80fd5b5035919050565b5f805f606084860312156117af575f80fd5b83356117ba81611748565b925060208401356117ca81611748565b929592945050506040919091013590565b803580151581146117ea575f80fd5b919050565b5f602082840312156117ff575f80fd5b611101826117db565b5f60208284031215611818575f80fd5b813561110181611748565b5f805f8060808587031215611836575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611864575f80fd5b833567ffffffffffffffff81111561187a575f80fd5b8401601f8101861361188a575f80fd5b803567ffffffffffffffff8111156118a0575f80fd5b8660208260051b84010111156118b4575f80fd5b6020918201945092506118c89085016117db565b90509250925092565b5f80604083850312156118e2575f80fd5b82356118ed81611748565b915060208301356118fd81611748565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561059057610590611951565b60208082526023908201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696040820152627a652160e81b606082015260800190565b8181038181111561059057610590611951565b5f602082840312156119de575f80fd5b815161110181611748565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611a395783516001600160a01b0316835260209384019390920191600101611a12565b50506001600160a01b039590951660608401525050608001529392505050565b5f82611a7357634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176105905761059061195156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ae3a2508a73c991f171d4a7d258cd453acc227afe1be0566cd0517b2cec4e9fc64736f6c634300081a0033

Deployed Bytecode Sourcemap

4173:13280:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6748:67;;;;;;;;;;-1:-1:-1;6808:5:0;;;;;;;;;;;;-1:-1:-1;;;6808:5:0;;;;6748:67;;;;;;;:::i;:::-;;;;;;;;7464:135;;;;;;;;;;-1:-1:-1;7464:135:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;7464:135:0;945:187:1;5740:41:0;;;;;;;;;;-1:-1:-1;5740:41:0;;;;-1:-1:-1;;;;;5740:41:0;;;;;;-1:-1:-1;;;;;1327:32:1;;;1309:51;;1297:2;1282:18;5740:41:0;1137:229:1;6971:79:0;;;;;;;;;;-1:-1:-1;5318:18:0;6971:79;;;1517:25:1;;;1505:2;1490:18;6971:79:0;1371:177:1;17066:114:0;;;;;;;;;;-1:-1:-1;17066:114:0;;;;;:::i;:::-;;:::i;:::-;;7605:446;;;;;;;;;;-1:-1:-1;7605:446:0;;;;;:::i;:::-;;:::i;4936:55::-;;;;;;;;;;;;;;;;8166:100;;;;;;;;;;-1:-1:-1;8166:100:0;;;;;:::i;:::-;;:::i;6898:67::-;;;;;;;;;;-1:-1:-1;6898:67:0;;4391:2;2789:36:1;;2777:2;2762:18;6898:67:0;2647:184:1;5788:28:0;;;;;;;;;;-1:-1:-1;5788:28:0;;;;-1:-1:-1;;;;;5788:28:0;;;16835:101;;;;;;;;;;-1:-1:-1;16835:101:0;;;;;:::i;:::-;;:::i;8849:276::-;;;;;;;;;;;;;:::i;7056:122::-;;;;;;;;;;-1:-1:-1;7056:122:0;;;;;:::i;:::-;;:::i;1775:148::-;;;;;;;;;;;;;:::i;4824:48::-;;;;;;;;;;;;;;;;5641:42;;;;;;;;;;-1:-1:-1;5641:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;1561:79;;;;;;;;;;-1:-1:-1;1599:7:0;1626:6;-1:-1:-1;;;;;1626:6:0;1561:79;;4879:50;;;;;;;;;;;;;;;;6821:71;;;;;;;;;;-1:-1:-1;6883:7:0;;;;;;;;;;;;-1:-1:-1;;;6883:7:0;;;;6821:71;;16665:162;;;;;;;;;;-1:-1:-1;16665:162:0;;;;;:::i;:::-;;:::i;7184:142::-;;;;;;;;;;-1:-1:-1;7184:142:0;;;;;:::i;:::-;;:::i;10811:337::-;;;;;;;;;;-1:-1:-1;10811:337:0;;;;;:::i;:::-;;:::i;16944:114::-;;;;;;;;;;-1:-1:-1;16944:114:0;;;;;:::i;:::-;;:::i;5598:36::-;;;;;;;;;;-1:-1:-1;5598:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8274:277;;;;;;;;;;;;;:::i;17188:260::-;;;;;;;;;;-1:-1:-1;17188:260:0;;;;;:::i;:::-;;:::i;7332:126::-;;;;;;;;;;-1:-1:-1;7332:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;7429:18:0;;;7413:7;7429:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7332:126;1931:281;;;;;;;;;;-1:-1:-1;1931:281:0;;;;;:::i;:::-;;:::i;7464:135::-;7539:4;7546:39;269:10;7569:7;7578:6;7546:8;:39::i;:::-;-1:-1:-1;7593:4:0;7464:135;;;;;:::o;17066:114::-;1688:6;;-1:-1:-1;;;;;1688:6:0;269:10;1688:22;1680:67;;;;-1:-1:-1;;;1680:67:0;;;;;;;:::i;:::-;;;;;;;;;17142:14:::1;:30:::0;17066:114::o;7605:446::-;7737:4;7754:36;7764:6;7772:9;7783:6;7754:9;:36::i;:::-;7801:220;7824:6;269:10;7872:138;7928:6;7872:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7872:19:0;;;;;;:11;:19;;;;;;;;269:10;7872:33;;;;;;;;;;:37;:138::i;:::-;7801:8;:220::i;:::-;-1:-1:-1;8039:4:0;7605:446;;;;;:::o;8166:100::-;1688:6;;-1:-1:-1;;;;;1688:6:0;269:10;1688:22;1680:67;;;;-1:-1:-1;;;1680:67:0;;;;;;;:::i;:::-;8232:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;8232:26:0::1;-1:-1:-1::0;;;;8232:26:0;;::::1;::::0;;;::::1;::::0;;8166:100::o;16835:101::-;1688:6;;-1:-1:-1;;;;;1688:6:0;269:10;1688:22;1680:67;;;;-1:-1:-1;;;1680:67:0;;;;;;;:::i;:::-;16902:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16902:26:0::1;-1:-1:-1::0;;;;16902:26:0;;::::1;::::0;;;::::1;::::0;;16835:101::o;8849:276::-;8929:19;;-1:-1:-1;;;;;8929:19:0;269:10;-1:-1:-1;;;;;8913:35:0;;:89;;;-1:-1:-1;8985:17:0;;-1:-1:-1;;;;;8985:17:0;269:10;-1:-1:-1;;;;;8969:33:0;;8913:89;8891:122;;;;;;9053:21;9085:32;9053:21;9085:12;:32::i;:::-;8880:245;8849:276::o;7056:122::-;-1:-1:-1;;;;;7159:16:0;;7122:7;7159:16;;;:7;:16;;;;;;7139:37;;:19;:37::i;1775:148::-;1688:6;;-1:-1:-1;;;;;1688:6:0;269:10;1688:22;1680:67;;;;-1:-1:-1;;;1680:67:0;;;;;;;:::i;:::-;1882:1:::1;1866:6:::0;;1845:40:::1;::::0;-1:-1:-1;;;;;1866:6:0;;::::1;::::0;1845:40:::1;::::0;1882:1;;1845:40:::1;1913:1;1896:19:::0;;-1:-1:-1;;;;;;1896:19:0::1;::::0;;1775:148::o;16665:162::-;1688:6;;-1:-1:-1;;;;;1688:6:0;269:10;1688:22;1680:67;;;;-1:-1:-1;;;1680:67:0;;;;;;;:::i;:::-;16779:19:::1;:40:::0;16665:162::o;7184:142::-;7262:4;7269:42;269:10;7293:9;7304:6;7269:9;:42::i;10811:337::-;1688:6;;-1:-1:-1;;;;;1688:6:0;269:10;1688:22;1680:67;;;;-1:-1:-1;;;1680:67:0;;;;;;;:::i;:::-;10991:14:::1;:30:::0;;;;11032:15:::1;:32:::0;;;;11075:12:::1;:26:::0;11112:13:::1;:28:::0;10811:337::o;16944:114::-;1688:6;;-1:-1:-1;;;;;1688:6:0;269:10;1688:22;1680:67;;;;-1:-1:-1;;;1680:67:0;;;;;;;:::i;:::-;17024:12:::1;:26:::0;16944:114::o;8274:277::-;8354:19;;-1:-1:-1;;;;;8354:19:0;269:10;-1:-1:-1;;;;;8338:35:0;;:89;;;-1:-1:-1;8410:17:0;;-1:-1:-1;;;;;8410:17:0;269:10;-1:-1:-1;;;;;8394:33:0;;8338:89;8316:122;;;;;;8449:23;8475:24;8493:4;8475:9;:24::i;:::-;8449:50;;8510:33;8527:15;8510:16;:33::i;17188:260::-;1688:6;;-1:-1:-1;;;;;1688:6:0;269:10;1688:22;1680:67;;;;-1:-1:-1;;;1680:67:0;;;;;;;:::i;:::-;17331:9:::1;17326:115;17346:19:::0;;::::1;17326:115;;;17421:8;17387:18;:31;17406:8;;17415:1;17406:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17387:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17387:31:0;:42;;-1:-1:-1;;17387:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;17367:3:0::1;17326:115;;;;17188:260:::0;;;:::o;1931:281::-;1688:6;;-1:-1:-1;;;;;1688:6:0;269:10;1688:22;1680:67;;;;-1:-1:-1;;;1680:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2034:22:0;::::1;2012:110;;;::::0;-1:-1:-1;;;2012:110:0;;5665:2:1;2012:110:0::1;::::0;::::1;5647:21:1::0;5704:2;5684:18;;;5677:30;5743:34;5723:18;;;5716:62;-1:-1:-1;;;5794:18:1;;;5787:36;5840:19;;2012:110:0::1;5463:402:1::0;2012:110:0::1;2159:6;::::0;;2138:38:::1;::::0;-1:-1:-1;;;;;2138:38:0;;::::1;::::0;2159:6;::::1;::::0;2138:38:::1;::::0;::::1;2187:6;:17:::0;;-1:-1:-1;;;;;;2187:17:0::1;-1:-1:-1::0;;;;;2187:17:0;;;::::1;::::0;;;::::1;::::0;;1931:281::o;9751:369::-;-1:-1:-1;;;;;9878:19:0;;9870:68;;;;-1:-1:-1;;;9870:68:0;;6072:2:1;9870:68:0;;;6054:21:1;6111:2;6091:18;;;6084:30;6150:34;6130:18;;;6123:62;-1:-1:-1;;;6201:18:1;;;6194:34;6245:19;;9870:68:0;5870:400:1;9870:68:0;-1:-1:-1;;;;;9957:21:0;;9949:68;;;;-1:-1:-1;;;9949:68:0;;6477:2:1;9949:68:0;;;6459:21:1;6516:2;6496:18;;;6489:30;6555:34;6535:18;;;6528:62;-1:-1:-1;;;6606:18:1;;;6599:32;6648:19;;9949:68:0;6275:398:1;9949:68:0;-1:-1:-1;;;;;10028:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10080:32;;1517:25:1;;;10080:32:0;;1490:18:1;10080:32:0;;;;;;;9751:369;;;:::o;11156:2389::-;-1:-1:-1;;;;;11278:18:0;;11270:68;;;;-1:-1:-1;;;11270:68:0;;6880:2:1;11270:68:0;;;6862:21:1;6919:2;6899:18;;;6892:30;6958:34;6938:18;;;6931:62;-1:-1:-1;;;7009:18:1;;;7002:35;7054:19;;11270:68:0;6678:401:1;11270:68:0;-1:-1:-1;;;;;11357:16:0;;11349:64;;;;-1:-1:-1;;;11349:64:0;;7286:2:1;11349:64:0;;;7268:21:1;7325:2;7305:18;;;7298:30;7364:34;7344:18;;;7337:62;-1:-1:-1;;;7415:18:1;;;7408:33;7458:19;;11349:64:0;7084:399:1;11349:64:0;11441:1;11432:6;:10;11424:64;;;;-1:-1:-1;;;11424:64:0;;7690:2:1;11424:64:0;;;7672:21:1;7729:2;7709:18;;;7702:30;7768:34;7748:18;;;7741:62;-1:-1:-1;;;7819:18:1;;;7812:39;7868:19;;11424:64:0;7488:405:1;11424:64:0;11501:18;1626:6;;-1:-1:-1;;;;;11558:15:0;;;1626:6;;11558:15;;;;:32;;-1:-1:-1;1599:7:0;1626:6;-1:-1:-1;;;;;11577:13:0;;;1626:6;;11577:13;;11558:32;:51;;;;-1:-1:-1;;;;;;11595:14:0;;;;;;:8;:14;;;;;;;;11594:15;11558:51;:68;;;;-1:-1:-1;;;;;;11614:12:0;;;;;;:8;:12;;;;;;;;11613:13;11558:68;11540:1121;;;11691:11;;-1:-1:-1;;;11691:11:0;;;;;:29;;-1:-1:-1;;;;;;11706:14:0;;;;;;:8;:14;;;;;;;;11691:29;11687:244;;;-1:-1:-1;11757:4:0;11687:244;;;11802:113;;-1:-1:-1;;;11802:113:0;;8100:2:1;11802:113:0;;;8082:21:1;8139:2;8119:18;;;8112:30;8178:34;8158:18;;;8151:62;8249:33;8229:18;;;8222:61;8300:19;;11802:113:0;7898:427:1;11687:244:0;11965:12;;11955:6;:22;;11947:63;;;;-1:-1:-1;;;11947:63:0;;8532:2:1;11947:63:0;;;8514:21:1;8571:2;8551:18;;;8544:30;8610;8590:18;;;8583:58;8658:18;;11947:63:0;8330:352:1;11947:63:0;-1:-1:-1;;;;;12052:10:0;;;;;;:4;:10;;;;;;;;12051:11;:24;;;;-1:-1:-1;;;;;;12067:8:0;;;;;;:4;:8;;;;;;;;12066:9;12051:24;12025:121;;;;-1:-1:-1;;;12025:121:0;;8889:2:1;12025:121:0;;;8871:21:1;8928:2;8908:18;;;8901:30;8967:34;8947:18;;;8940:62;-1:-1:-1;;;9018:18:1;;;9011:33;9061:19;;12025:121:0;8687:399:1;12025:121:0;12173:13;;-1:-1:-1;;;;;12167:19:0;;;12173:13;;12167:19;12163:209;;12263:14;;12253:6;12237:13;12247:2;12237:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;12207:149;;;;-1:-1:-1;;;12207:149:0;;;;;;;:::i;:::-;11540:1121;;;12416:13;;-1:-1:-1;;;;;12410:19:0;;;12416:13;;12410:19;12406:209;;12506:14;;12496:6;12480:13;12490:2;12480:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;12450:149;;;;-1:-1:-1;;;12450:149:0;;;;;;;:::i;:::-;-1:-1:-1;12645:4:0;11540:1121;12677:13;12673:865;;;-1:-1:-1;;;;;12798:24:0;;12707:12;12798:24;;;:18;:24;;;;;;12722:4;;12798:24;;;:50;;-1:-1:-1;;;;;;12826:22:0;;;;;;:18;:22;;;;;;;;12798:50;12797:119;;;-1:-1:-1;12879:13:0;;-1:-1:-1;;;;;12871:21:0;;;12879:13;;12871:21;;;;:44;;-1:-1:-1;12902:13:0;;-1:-1:-1;;;;;12896:19:0;;;12902:13;;12896:19;;12871:44;12775:694;;;-1:-1:-1;12961:5:0;12775:694;;;13056:13;;-1:-1:-1;;;;;13048:21:0;;;13056:13;;13048:21;:55;;;;-1:-1:-1;13087:15:0;;-1:-1:-1;;;;;13073:30:0;;;13087:15;;13073:30;;13048:55;13044:175;;;13140:14;;13128:9;:26;13187:12;;13177:7;:22;13044:175;13287:13;;-1:-1:-1;;;;;13281:19:0;;;13287:13;;13281:19;:55;;;;-1:-1:-1;13320:15:0;;-1:-1:-1;;;;;13304:32:0;;;13320:15;;13304:32;;13281:55;13277:177;;;13373:15;;13361:9;:27;13421:13;;13411:7;:23;13277:177;13485:41;13500:4;13506:2;13510:6;13518:7;13485:14;:41::i;:::-;12692:846;11259:2286;11156:2389;;;:::o;3317:224::-;3437:7;3473:12;3465:6;;;;3457:29;;;;-1:-1:-1;;;3457:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3497:9:0;3509:5;3513:1;3509;:5;:::i;:::-;3497:17;3317:224;-1:-1:-1;;;;;3317:224:0:o;8059:99::-;8116:17;;:34;;-1:-1:-1;;;;;8116:17:0;;;;:34;;;;;8143:6;;8116:17;:34;:17;:34;8143:6;8116:17;:34;;;;;;;;;;;;;;;;;;;;;8059:99;:::o;10128:323::-;10223:7;10281;;10270;:18;;10248:110;;;;-1:-1:-1;;;10248:110:0;;10092:2:1;10248:110:0;;;10074:21:1;10131:2;10111:18;;;10104:30;10170:34;10150:18;;;10143:62;-1:-1:-1;;;10221:18:1;;;10214:40;10271:19;;10248:110:0;9890:406:1;10248:110:0;10369:19;10391:10;:8;:10::i;:::-;10369:32;-1:-1:-1;10419:24:0;:7;10369:32;10419:11;:24::i;:::-;10412:31;10128:323;-1:-1:-1;;;10128:323:0:o;13553:483::-;6017:6;:13;;-1:-1:-1;;;;6017:13:0;-1:-1:-1;;;6017:13:0;;;13655:16:::1;::::0;;13669:1:::1;13655:16:::0;;;;;::::1;::::0;;-1:-1:-1;;13655:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13655:16:0::1;13631:40;;13700:4;13682;13687:1;13682:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13682:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13726:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13726:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13682:7;;13726:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13716:4;13721:1;13716:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13716:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13791:15:::1;::::0;13759:62:::1;::::0;13776:4:::1;::::0;13791:15:::1;13809:11:::0;13759:8:::1;:62::i;:::-;13832:15;::::0;:196:::1;::::0;-1:-1:-1;;;13832:196:0;;-1:-1:-1;;;;;13832:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13913:11;;13832:15:::1;::::0;13955:4;;13982::::1;::::0;14002:15:::1;::::0;13832:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6053:6:0;:14;;-1:-1:-1;;;;6053:14:0;;;-1:-1:-1;;;;13553:483:0:o;8559:282::-;8715:7;8710:28;;8724:14;:12;:14::i;:::-;8749:44;8767:6;8775:9;8786:6;8749:17;:44::i;:::-;8809:7;8804:29;;8818:15;10742:17;;10730:9;:29;10780:15;;10770:7;:25;10686:117;16184:164;16226:7;16247:15;16264;16283:19;:17;:19::i;:::-;16246:56;;-1:-1:-1;16246:56:0;-1:-1:-1;16320:20:0;16246:56;;16320:11;:20::i;:::-;16313:27;;;;16184:164;:::o;3803:132::-;3861:7;3888:39;3892:1;3895;3888:39;;;;;;;;;;;;;;;;;:3;:39::i;10459:219::-;10506:9;;:14;:30;;;;-1:-1:-1;10524:7:0;;:12;10506:30;10502:43;;;10459:219::o;10502:43::-;10577:9;;;10557:17;:29;10615:7;;;10597:15;:25;-1:-1:-1;10635:13:0;;;;10659:11;10459:219::o;9133:610::-;9280:15;9310:23;9348:12;9375:23;9413:12;9440:13;9467:19;9478:7;9467:10;:19::i;:::-;-1:-1:-1;;;;;9515:15:0;;;;;;:7;:15;;;;;;9265:221;;-1:-1:-1;9265:221:0;;-1:-1:-1;9265:221:0;;-1:-1:-1;9265:221:0;-1:-1:-1;9265:221:0;-1:-1:-1;9265:221:0;-1:-1:-1;9515:28:0;;9265:221;9515:19;:28::i;:::-;-1:-1:-1;;;;;9497:15:0;;;;;;;:7;:15;;;;;;:46;;;;9575:18;;;;;;;:39;;9598:15;9575:22;:39::i;:::-;-1:-1:-1;;;;;9554:18:0;;;;;;:7;:18;;;;;:60;9625:16;9635:5;9625:9;:16::i;:::-;9652:23;9664:4;9670;9652:11;:23::i;:::-;9708:9;-1:-1:-1;;;;;9691:44:0;9700:6;-1:-1:-1;;;;;9691:44:0;;9719:15;9691:44;;;;1517:25:1;;1505:2;1490:18;;1371:177;9691:44:0;;;;;;;;9254:489;;;;;;9133:610;;;:::o;16356:257::-;16454:7;;16407;;;;5318:18;16522:20;16454:7;5318:18;16522:11;:20::i;:::-;16512:7;:30;16508:61;;;-1:-1:-1;;16552:7:0;;;5318:18;;-1:-1:-1;16356:257:0;-1:-1:-1;16356:257:0:o;16508:61::-;16588:7;;16597;;-1:-1:-1;16356:257:0;-1:-1:-1;16356:257:0:o;3943:223::-;4063:7;4098:12;4091:5;4083:28;;;;-1:-1:-1;;;4083:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4122:9:0;4134:5;4138:1;4134;:5;:::i;14455:702::-;14555:7;14577;14599;14621;14643;14665;14701:23;14726:12;14740:13;14757:90;14783:7;14805:9;;14829:7;;14757:11;:90::i;:::-;14700:147;;;;;;14858:19;14880:10;:8;:10::i;:::-;14858:32;;14902:15;14919:23;14944:12;14960:109;14986:7;15008:4;15027:5;15047:11;14960;:109::i;:::-;14901:168;;-1:-1:-1;14901:168:0;-1:-1:-1;14901:168:0;-1:-1:-1;15120:15:0;;-1:-1:-1;15137:4:0;;-1:-1:-1;15143:5:0;;-1:-1:-1;;;;;14455:702:0;;;;;;;:::o;3173:136::-;3231:7;3258:43;3262:1;3265;3258:43;;;;;;;;;;;;;;;;;:3;:43::i;2986:179::-;3044:7;;3076:5;3080:1;3076;:5;:::i;:::-;3064:17;;3105:1;3100;:6;;3092:46;;;;-1:-1:-1;;;3092:46:0;;12077:2:1;3092:46:0;;;12059:21:1;12116:2;12096:18;;;12089:30;12155:29;12135:18;;;12128:57;12202:18;;3092:46:0;11875:351:1;14044:211:0;14097:19;14119:10;:8;:10::i;:::-;14097:32;-1:-1:-1;14140:13:0;14156:22;:5;14097:32;14156:9;:22::i;:::-;14230:4;14214:22;;;;:7;:22;;;;;;14140:38;;-1:-1:-1;14214:33:0;;14140:38;14214:26;:33::i;:::-;14205:4;14189:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14044:211:0:o;14263:147::-;14341:7;;:17;;14353:4;14341:11;:17::i;:::-;14331:7;:27;14382:10;;:20;;14397:4;14382:14;:20::i;:::-;14369:10;:33;-1:-1:-1;;14263:147:0:o;15165:469::-;15334:7;;;;15428:30;15454:3;15428:21;:7;15440:8;15428:11;:21::i;:::-;:25;;:30::i;:::-;15413:45;-1:-1:-1;15469:13:0;15485:28;15509:3;15485:19;:7;15497:6;15485:11;:19::i;:28::-;15469:44;-1:-1:-1;15524:23:0;15550:28;15469:44;15550:17;:7;15562:4;15550:11;:17::i;:::-;:21;;:28::i;:::-;15524:54;15614:4;;-1:-1:-1;15620:5:0;;-1:-1:-1;15165:469:0;;-1:-1:-1;;;;;15165:469:0:o;15642:534::-;15836:7;;;;15933:24;:7;15945:11;15933;:24::i;:::-;15915:42;-1:-1:-1;15968:12:0;15983:21;:4;15992:11;15983:8;:21::i;:::-;15968:36;-1:-1:-1;16015:13:0;16031:22;:5;16041:11;16031:9;:22::i;:::-;16015:38;-1:-1:-1;16064:23:0;16090:28;16015:38;16090:17;:7;16102:4;16090:11;:17::i;:28::-;16137:7;;;;-1:-1:-1;16163:4:0;;-1:-1:-1;15642:534:0;;-1:-1:-1;;;;;;;15642:534:0:o;3549:246::-;3607:7;3631:1;3636;3631:6;3627:47;;-1:-1:-1;3661:1:0;3654:8;;3627:47;3684:9;3696:5;3700:1;3696;:5;:::i;:::-;3684:17;-1:-1:-1;3729:1:0;3720:5;3724:1;3684:17;3720:5;:::i;:::-;:10;3712:56;;;;-1:-1:-1;;;3712:56:0;;12606:2:1;3712:56:0;;;12588:21:1;12645:2;12625:18;;;12618:30;12684:34;12664:18;;;12657:62;-1:-1:-1;;;12735:18:1;;;12728:31;12776:19;;3712:56:0;12404:397:1;14:418;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:367;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1553:226::-;1612:6;1665:2;1653:9;1644:7;1640:23;1636:32;1633:52;;;1681:1;1678;1671:12;1633:52;-1:-1:-1;1726:23:1;;1553:226;-1:-1:-1;1553:226:1:o;1784:508::-;1861:6;1869;1877;1930:2;1918:9;1909:7;1905:23;1901:32;1898:52;;;1946:1;1943;1936:12;1898:52;1985:9;1972:23;2004:31;2029:5;2004:31;:::i;:::-;2054:5;-1:-1:-1;2111:2:1;2096:18;;2083:32;2124:33;2083:32;2124:33;:::i;:::-;1784:508;;2176:7;;-1:-1:-1;;;2256:2:1;2241:18;;;;2228:32;;1784:508::o;2297:160::-;2362:20;;2418:13;;2411:21;2401:32;;2391:60;;2447:1;2444;2437:12;2391:60;2297:160;;;:::o;2462:180::-;2518:6;2571:2;2559:9;2550:7;2546:23;2542:32;2539:52;;;2587:1;2584;2577:12;2539:52;2610:26;2626:9;2610:26;:::i;3044:247::-;3103:6;3156:2;3144:9;3135:7;3131:23;3127:32;3124:52;;;3172:1;3169;3162:12;3124:52;3211:9;3198:23;3230:31;3255:5;3230:31;:::i;3296:587::-;3382:6;3390;3398;3406;3459:3;3447:9;3438:7;3434:23;3430:33;3427:53;;;3476:1;3473;3466:12;3427:53;-1:-1:-1;;3521:23:1;;;3641:2;3626:18;;3613:32;;-1:-1:-1;3744:2:1;3729:18;;3716:32;;3847:2;3832:18;3819:32;;-1:-1:-1;3296:587:1;-1:-1:-1;3296:587:1:o;3888:684::-;3980:6;3988;3996;4049:2;4037:9;4028:7;4024:23;4020:32;4017:52;;;4065:1;4062;4055:12;4017:52;4105:9;4092:23;4138:18;4130:6;4127:30;4124:50;;;4170:1;4167;4160:12;4124:50;4193:22;;4246:4;4238:13;;4234:27;-1:-1:-1;4224:55:1;;4275:1;4272;4265:12;4224:55;4315:2;4302:16;4341:18;4333:6;4330:30;4327:50;;;4373:1;4370;4363:12;4327:50;4428:7;4421:4;4411:6;4408:1;4404:14;4400:2;4396:23;4392:34;4389:47;4386:67;;;4449:1;4446;4439:12;4386:67;4480:4;4472:13;;;;-1:-1:-1;4504:6:1;-1:-1:-1;4529:37:1;;4545:20;;4529:37;:::i;:::-;4519:47;;3888:684;;;;;:::o;4577:388::-;4645:6;4653;4706:2;4694:9;4685:7;4681:23;4677:32;4674:52;;;4722:1;4719;4712:12;4674:52;4761:9;4748:23;4780:31;4805:5;4780:31;:::i;:::-;4830:5;-1:-1:-1;4887:2:1;4872:18;;4859:32;4900:33;4859:32;4900:33;:::i;:::-;4952:7;4942:17;;;4577:388;;;;;:::o;4970:356::-;5172:2;5154:21;;;5191:18;;;5184:30;5250:34;5245:2;5230:18;;5223:62;5317:2;5302:18;;4970:356::o;5331:127::-;5392:10;5387:3;5383:20;5380:1;5373:31;5423:4;5420:1;5413:15;5447:4;5444:1;5437:15;9091:127;9152:10;9147:3;9143:20;9140:1;9133:31;9183:4;9180:1;9173:15;9207:4;9204:1;9197:15;9223:125;9288:9;;;9309:10;;;9306:36;;;9322:18;;:::i;9353:399::-;9555:2;9537:21;;;9594:2;9574:18;;;9567:30;9633:34;9628:2;9613:18;;9606:62;-1:-1:-1;;;9699:2:1;9684:18;;9677:33;9742:3;9727:19;;9353:399::o;9757:128::-;9824:9;;;9845:11;;;9842:37;;;9859:18;;:::i;10433:251::-;10503:6;10556:2;10544:9;10535:7;10531:23;10527:32;10524:52;;;10572:1;10569;10562:12;10524:52;10604:9;10598:16;10623:31;10648:5;10623:31;:::i;10689:959::-;10951:4;10999:3;10988:9;10984:19;11030:6;11019:9;11012:25;11073:6;11068:2;11057:9;11053:18;11046:34;11116:3;11111:2;11100:9;11096:18;11089:31;11140:6;11175;11169:13;11206:6;11198;11191:22;11244:3;11233:9;11229:19;11222:26;;11283:2;11275:6;11271:15;11257:29;;11304:1;11314:195;11328:6;11325:1;11322:13;11314:195;;;11393:13;;-1:-1:-1;;;;;11389:39:1;11377:52;;11458:2;11484:15;;;;11449:12;;;;11425:1;11343:9;11314:195;;;-1:-1:-1;;;;;;;11565:32:1;;;;11560:2;11545:18;;11538:60;-1:-1:-1;;11629:3:1;11614:19;11607:35;11526:3;10689:959;-1:-1:-1;;;10689:959:1:o;11653:217::-;11693:1;11719;11709:132;;11763:10;11758:3;11754:20;11751:1;11744:31;11798:4;11795:1;11788:15;11826:4;11823:1;11816:15;11709:132;-1:-1:-1;11855:9:1;;11653:217::o;12231:168::-;12304:9;;;12335;;12352:15;;;12346:22;;12332:37;12322:71;;12373:18;;:::i

Swarm Source

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