ETH Price: $3,433.94 (+2.46%)
Gas: 4 Gwei

Token

Holo Inu (HOLO)
 

Overview

Max Total Supply

1,000,000,000 HOLO

Holders

140

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,516,073.888390275 HOLO

Value
$0.00
0x7d7d934c2bb1f0e9515074e187d6cea143d279de
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:
HoloInu

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

//   Telegram: https://t.me/HoloInu
//   Website: https://HoloInu.rocks
   
// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

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

    string private constant _name = "Holo Inu";
    string private constant _symbol = "HOLO";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    //Buy Fee
    uint256 private _distroFeeOnBuy = 1;
    uint256 private _taxFeeOnBuy = 12;
    
    //Sell Fee
    uint256 private _distroFeeOnSell = 1;
    uint256 private _taxFeeOnSell = 12;
    
    //Original Fee
    uint256 private _distroFee = _distroFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    
    uint256 private _previousDistroFee = _distroFee;
    uint256 private _previousTaxFee = _taxFee;
    
    mapping(address => bool) public bots;
    mapping(address => uint256) private cooldown;
    
    address payable private _marketingAddress = payable(0x8Cd78d24ca80B4F4D8030A6AF47D68bf751c143E);
    address payable private _buyBackAddress = payable(0x7fCbe067feA6192b2B561437d1C8a750e6Ac43f8);
    address payable private _devAddress = payable(0x7f19D21bDF11D3c27325a3AbF9Ec6aC906cE7E7C);
    address payable private _dappAddress = payable(0x9Fc171Ee497BD77F5a7745B91A5E827ca63491B5);
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
    
    uint256 public _maxTxAmount = 5000000 * 10**9; //0.5% of total supply per txn
    uint256 public _maxWalletSize = 10000000 * 10**9; //1% of total supply
    uint256 public _swapTokensAtAmount = 100000 * 10**9; //0.1% 

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

    constructor() {
        
        _rOwned[_msgSender()] = _rTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromFee[_buyBackAddress] = true;
        _isExcludedFromFee[_devAddress] = true;
        _isExcludedFromFee[_dappAddress] = true;
        
        bots[address(0x00000000000000000000000000000000001)] = true;
        

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

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

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

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

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

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

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

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

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_distroFee == 0 && _taxFee == 0) return;
    
        _previousDistroFee = _distroFee;
        _previousTaxFee = _taxFee;
        
        _distroFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _distroFee = _previousDistroFee;
        _taxFee = _previousTaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {
            
            //Trade start check
            if (!tradingOpen)
            
            require(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!");
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
            
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        
        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)) {
                _distroFee = _distroFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
    
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _distroFee = _distroFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
            
        }

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

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

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount.div(2));
        _buyBackAddress.transfer(amount.div(6));
        _devAddress.transfer(amount.div(6));
        _dappAddress.transfer(amount.div(6));
    }

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

    function manualswap() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

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

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

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

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

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _distroFee, _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 distroFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(distroFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);

        return (tTransferAmount, tFee, tTeam);
    }

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

        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();

        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
    
        return (rSupply, tSupply);
    }
    
    function setFee(uint256 distroFeeOnBuy, uint256 distroFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _distroFeeOnBuy = distroFeeOnBuy;
        _distroFeeOnSell = distroFeeOnSell;
        
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
    
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
    
    //Set MAx transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }
    
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","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":[],"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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"distroFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"distroFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"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":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a670de0b6b3a764000060001962000472565b62000028906000196200044e565b60065560016008819055600c6009819055600a829055600b819055818155600d819055600e91909155600f55601280546001600160a01b0319908116738cd78d24ca80b4f4d8030a6af47d68bf751c143e17909155601380548216737fcbe067fea6192b2b561437d1c8a750e6ac43f8179055601480548216737f19d21bdf11d3c27325a3abf9ec6ac906ce7e7c17905560158054909116739fc171ee497bd77f5a7745b91a5e827ca63491b51790556017805461ffff60a81b1916600160b01b1790556611c37937e08000601855662386f26fc10000601955655af3107a4000601a553480156200011957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a01559260048083019392829003018186803b158015620001d257600080fd5b505afa158015620001e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020d91906200041e565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025657600080fd5b505afa1580156200026b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029191906200041e565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002da57600080fd5b505af1158015620002ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031591906200041e565b601780546001600160a01b0319166001600160a01b039283161790556000805482168152600560209081526040808320805460ff199081166001908117909255308552828520805482168317905560125486168552828520805482168317905560135486168552828520805482168317905560145486168552828520805482168317905560155490951684528184208054861682179055808452601083527f8c6065603763fec3f5742441d3833f3f43b982453612d76adb39a885e3006b5f8054909516179093559151670de0b6b3a7640000815233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000493565b60006020828403121562000430578081fd5b81516001600160a01b038116811462000447578182fd5b9392505050565b6000828210156200046d57634e487b7160e01b81526011600452602481fd5b500390565b6000826200048e57634e487b7160e01b81526012600452602481fd5b500690565b611b2c80620004a36000396000f3fe60806040526004361061019f5760003560e01c8063715018a6116100ec57806398a5c3151161008a578063bfd7928411610064578063bfd79284146104b0578063c3c8cd80146104e0578063dd62ed3e146104f5578063ea1644d51461053b57600080fd5b806398a5c31514610450578063a2a957bb14610470578063a9059cbb1461049057600080fd5b80638da5cb5b116100c65780638da5cb5b146103cf5780638f70ccf7146103ed5780638f9a55c01461040d57806395d89b411461042357600080fd5b8063715018a61461038457806374010ece146103995780637d1db4a5146103b957600080fd5b80632fd689e3116101595780636b999053116101335780636b9990531461030f5780636d8aa8f81461032f5780636fc3eaec1461034f57806370a082311461036457600080fd5b80632fd689e3146102bd578063313ce567146102d357806349bd5a5e146102ef57600080fd5b8062b8cf2a146101ab57806306fdde03146101cd578063095ea7b3146102105780631694505e1461024057806318160ddd1461027857806323b872dd1461029d57600080fd5b366101a657005b600080fd5b3480156101b757600080fd5b506101cb6101c63660046117dc565b61055b565b005b3480156101d957600080fd5b50604080518082019091526008815267486f6c6f20496e7560c01b60208201525b604051610207919061190c565b60405180910390f35b34801561021c57600080fd5b5061023061022b3660046117b1565b610608565b6040519015158152602001610207565b34801561024c57600080fd5b50601654610260906001600160a01b031681565b6040516001600160a01b039091168152602001610207565b34801561028457600080fd5b50670de0b6b3a76400005b604051908152602001610207565b3480156102a957600080fd5b506102306102b8366004611771565b61061f565b3480156102c957600080fd5b5061028f601a5481565b3480156102df57600080fd5b5060405160098152602001610207565b3480156102fb57600080fd5b50601754610260906001600160a01b031681565b34801561031b57600080fd5b506101cb61032a366004611701565b610688565b34801561033b57600080fd5b506101cb61034a3660046118a3565b6106d3565b34801561035b57600080fd5b506101cb61071b565b34801561037057600080fd5b5061028f61037f366004611701565b610748565b34801561039057600080fd5b506101cb61076a565b3480156103a557600080fd5b506101cb6103b43660046118c3565b6107de565b3480156103c557600080fd5b5061028f60185481565b3480156103db57600080fd5b506000546001600160a01b0316610260565b3480156103f957600080fd5b506101cb6104083660046118a3565b61080d565b34801561041957600080fd5b5061028f60195481565b34801561042f57600080fd5b50604080518082019091526004815263484f4c4f60e01b60208201526101fa565b34801561045c57600080fd5b506101cb61046b3660046118c3565b610855565b34801561047c57600080fd5b506101cb61048b3660046118db565b610884565b34801561049c57600080fd5b506102306104ab3660046117b1565b6108c2565b3480156104bc57600080fd5b506102306104cb366004611701565b60106020526000908152604090205460ff1681565b3480156104ec57600080fd5b506101cb6108cf565b34801561050157600080fd5b5061028f610510366004611739565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561054757600080fd5b506101cb6105563660046118c3565b610905565b6000546001600160a01b0316331461058e5760405162461bcd60e51b81526004016105859061195f565b60405180910390fd5b60005b8151811015610604576001601060008484815181106105c057634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806105fc81611a72565b915050610591565b5050565b6000610615338484610934565b5060015b92915050565b600061062c848484610a58565b61067e843361067985604051806060016040528060288152602001611acf602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610ecd565b610934565b5060019392505050565b6000546001600160a01b031633146106b25760405162461bcd60e51b81526004016105859061195f565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000546001600160a01b031633146106fd5760405162461bcd60e51b81526004016105859061195f565b60178054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b03161461073b57600080fd5b4761074581610f07565b50565b6001600160a01b03811660009081526002602052604081205461061990611012565b6000546001600160a01b031633146107945760405162461bcd60e51b81526004016105859061195f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108085760405162461bcd60e51b81526004016105859061195f565b601855565b6000546001600160a01b031633146108375760405162461bcd60e51b81526004016105859061195f565b60178054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b0316331461087f5760405162461bcd60e51b81526004016105859061195f565b601a55565b6000546001600160a01b031633146108ae5760405162461bcd60e51b81526004016105859061195f565b600893909355600a91909155600955600b55565b6000610615338484610a58565b6012546001600160a01b0316336001600160a01b0316146108ef57600080fd5b60006108fa30610748565b905061074581611096565b6000546001600160a01b0316331461092f5760405162461bcd60e51b81526004016105859061195f565b601955565b6001600160a01b0383166109965760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610585565b6001600160a01b0382166109f75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610585565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610abc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610585565b6001600160a01b038216610b1e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610585565b60008111610b805760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610585565b6000546001600160a01b03848116911614801590610bac57506000546001600160a01b03838116911614155b15610dc057601754600160a01b900460ff16610c1457601854811115610c145760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610585565b6001600160a01b03831660009081526010602052604090205460ff16158015610c5657506001600160a01b03821660009081526010602052604090205460ff16155b610cae5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610585565b6017546001600160a01b03838116911614610d335760195481610cd084610748565b610cda9190611a04565b10610d335760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610585565b6000610d3e30610748565b601a54601854919250821015908210610d575760185491505b808015610d6e5750601754600160a81b900460ff16155b8015610d8857506017546001600160a01b03868116911614155b8015610d9d5750601754600160b01b900460ff165b15610dbd57610dab82611096565b478015610dbb57610dbb47610f07565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610e0257506001600160a01b03831660009081526005602052604090205460ff165b80610e3457506017546001600160a01b03858116911614801590610e3457506017546001600160a01b03848116911614155b15610e4157506000610ebb565b6017546001600160a01b038581169116148015610e6c57506016546001600160a01b03848116911614155b15610e7e57600854600c55600954600d555b6017546001600160a01b038481169116148015610ea957506016546001600160a01b03858116911614155b15610ebb57600a54600c55600b54600d555b610ec78484848461123b565b50505050565b60008184841115610ef15760405162461bcd60e51b8152600401610585919061190c565b506000610efe8486611a5b565b95945050505050565b6012546001600160a01b03166108fc610f21836002611269565b6040518115909202916000818181858888f19350505050158015610f49573d6000803e3d6000fd5b506013546001600160a01b03166108fc610f64836006611269565b6040518115909202916000818181858888f19350505050158015610f8c573d6000803e3d6000fd5b506014546001600160a01b03166108fc610fa7836006611269565b6040518115909202916000818181858888f19350505050158015610fcf573d6000803e3d6000fd5b506015546001600160a01b03166108fc610fea836006611269565b6040518115909202916000818181858888f19350505050158015610604573d6000803e3d6000fd5b60006006548211156110795760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610585565b60006110836112ab565b905061108f8382611269565b9392505050565b6017805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110ec57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561114057600080fd5b505afa158015611154573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611178919061171d565b8160018151811061119957634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526016546111bf9130911684610934565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac947906111f8908590600090869030904290600401611994565b600060405180830381600087803b15801561121257600080fd5b505af1158015611226573d6000803e3d6000fd5b50506017805460ff60a81b1916905550505050565b80611248576112486112ce565b6112538484846112fc565b80610ec757610ec7600e54600c55600f54600d55565b600061108f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113f3565b60008060006112b8611421565b90925090506112c78282611269565b9250505090565b600c541580156112de5750600d54155b156112e557565b600c8054600e55600d8054600f5560009182905555565b60008060008060008061130e87611461565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061134090876114be565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461136f9086611500565b6001600160a01b0389166000908152600260205260409020556113918161155f565b61139b84836115a9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516113e091815260200190565b60405180910390a3505050505050505050565b600081836114145760405162461bcd60e51b8152600401610585919061190c565b506000610efe8486611a1c565b6006546000908190670de0b6b3a764000061143c8282611269565b82101561145857505060065492670de0b6b3a764000092509050565b90939092509050565b600080600080600080600080600061147e8a600c54600d546115cd565b925092509250600061148e6112ab565b905060008060006114a18e878787611622565b919e509c509a509598509396509194505050505091939550919395565b600061108f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ecd565b60008061150d8385611a04565b90508381101561108f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610585565b60006115696112ab565b905060006115778383611672565b306000908152600260205260409020549091506115949082611500565b30600090815260026020526040902055505050565b6006546115b690836114be565b6006556007546115c69082611500565b6007555050565b60008080806115e760646115e18989611672565b90611269565b905060006115fa60646115e18a89611672565b905060006116128261160c8b866114be565b906114be565b9992985090965090945050505050565b60008080806116318886611672565b9050600061163f8887611672565b9050600061164d8888611672565b9050600061165f8261160c86866114be565b939b939a50919850919650505050505050565b60008261168157506000610619565b600061168d8385611a3c565b90508261169a8583611a1c565b1461108f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610585565b80356116fc81611ab9565b919050565b600060208284031215611712578081fd5b813561108f81611ab9565b60006020828403121561172e578081fd5b815161108f81611ab9565b6000806040838503121561174b578081fd5b823561175681611ab9565b9150602083013561176681611ab9565b809150509250929050565b600080600060608486031215611785578081fd5b833561179081611ab9565b925060208401356117a081611ab9565b929592945050506040919091013590565b600080604083850312156117c3578182fd5b82356117ce81611ab9565b946020939093013593505050565b600060208083850312156117ee578182fd5b823567ffffffffffffffff80821115611805578384fd5b818501915085601f830112611818578384fd5b81358181111561182a5761182a611aa3565b8060051b604051601f19603f8301168101818110858211171561184f5761184f611aa3565b604052828152858101935084860182860187018a101561186d578788fd5b8795505b8386101561189657611882816116f1565b855260019590950194938601938601611871565b5098975050505050505050565b6000602082840312156118b4578081fd5b8135801515811461108f578182fd5b6000602082840312156118d4578081fd5b5035919050565b600080600080608085870312156118f0578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b818110156119385785810183015185820160400152820161191c565b818111156119495783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156119e35784516001600160a01b0316835293830193918301916001016119be565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611a1757611a17611a8d565b500190565b600082611a3757634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611a5657611a56611a8d565b500290565b600082821015611a6d57611a6d611a8d565b500390565b6000600019821415611a8657611a86611a8d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461074557600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204a275f5b93cb8edd464ab3ba84bf8dc3b2c5e140f51c7fb8ff289983433a5d8664736f6c63430008040033

Deployed Bytecode

0x60806040526004361061019f5760003560e01c8063715018a6116100ec57806398a5c3151161008a578063bfd7928411610064578063bfd79284146104b0578063c3c8cd80146104e0578063dd62ed3e146104f5578063ea1644d51461053b57600080fd5b806398a5c31514610450578063a2a957bb14610470578063a9059cbb1461049057600080fd5b80638da5cb5b116100c65780638da5cb5b146103cf5780638f70ccf7146103ed5780638f9a55c01461040d57806395d89b411461042357600080fd5b8063715018a61461038457806374010ece146103995780637d1db4a5146103b957600080fd5b80632fd689e3116101595780636b999053116101335780636b9990531461030f5780636d8aa8f81461032f5780636fc3eaec1461034f57806370a082311461036457600080fd5b80632fd689e3146102bd578063313ce567146102d357806349bd5a5e146102ef57600080fd5b8062b8cf2a146101ab57806306fdde03146101cd578063095ea7b3146102105780631694505e1461024057806318160ddd1461027857806323b872dd1461029d57600080fd5b366101a657005b600080fd5b3480156101b757600080fd5b506101cb6101c63660046117dc565b61055b565b005b3480156101d957600080fd5b50604080518082019091526008815267486f6c6f20496e7560c01b60208201525b604051610207919061190c565b60405180910390f35b34801561021c57600080fd5b5061023061022b3660046117b1565b610608565b6040519015158152602001610207565b34801561024c57600080fd5b50601654610260906001600160a01b031681565b6040516001600160a01b039091168152602001610207565b34801561028457600080fd5b50670de0b6b3a76400005b604051908152602001610207565b3480156102a957600080fd5b506102306102b8366004611771565b61061f565b3480156102c957600080fd5b5061028f601a5481565b3480156102df57600080fd5b5060405160098152602001610207565b3480156102fb57600080fd5b50601754610260906001600160a01b031681565b34801561031b57600080fd5b506101cb61032a366004611701565b610688565b34801561033b57600080fd5b506101cb61034a3660046118a3565b6106d3565b34801561035b57600080fd5b506101cb61071b565b34801561037057600080fd5b5061028f61037f366004611701565b610748565b34801561039057600080fd5b506101cb61076a565b3480156103a557600080fd5b506101cb6103b43660046118c3565b6107de565b3480156103c557600080fd5b5061028f60185481565b3480156103db57600080fd5b506000546001600160a01b0316610260565b3480156103f957600080fd5b506101cb6104083660046118a3565b61080d565b34801561041957600080fd5b5061028f60195481565b34801561042f57600080fd5b50604080518082019091526004815263484f4c4f60e01b60208201526101fa565b34801561045c57600080fd5b506101cb61046b3660046118c3565b610855565b34801561047c57600080fd5b506101cb61048b3660046118db565b610884565b34801561049c57600080fd5b506102306104ab3660046117b1565b6108c2565b3480156104bc57600080fd5b506102306104cb366004611701565b60106020526000908152604090205460ff1681565b3480156104ec57600080fd5b506101cb6108cf565b34801561050157600080fd5b5061028f610510366004611739565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561054757600080fd5b506101cb6105563660046118c3565b610905565b6000546001600160a01b0316331461058e5760405162461bcd60e51b81526004016105859061195f565b60405180910390fd5b60005b8151811015610604576001601060008484815181106105c057634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806105fc81611a72565b915050610591565b5050565b6000610615338484610934565b5060015b92915050565b600061062c848484610a58565b61067e843361067985604051806060016040528060288152602001611acf602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610ecd565b610934565b5060019392505050565b6000546001600160a01b031633146106b25760405162461bcd60e51b81526004016105859061195f565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000546001600160a01b031633146106fd5760405162461bcd60e51b81526004016105859061195f565b60178054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b03161461073b57600080fd5b4761074581610f07565b50565b6001600160a01b03811660009081526002602052604081205461061990611012565b6000546001600160a01b031633146107945760405162461bcd60e51b81526004016105859061195f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108085760405162461bcd60e51b81526004016105859061195f565b601855565b6000546001600160a01b031633146108375760405162461bcd60e51b81526004016105859061195f565b60178054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b0316331461087f5760405162461bcd60e51b81526004016105859061195f565b601a55565b6000546001600160a01b031633146108ae5760405162461bcd60e51b81526004016105859061195f565b600893909355600a91909155600955600b55565b6000610615338484610a58565b6012546001600160a01b0316336001600160a01b0316146108ef57600080fd5b60006108fa30610748565b905061074581611096565b6000546001600160a01b0316331461092f5760405162461bcd60e51b81526004016105859061195f565b601955565b6001600160a01b0383166109965760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610585565b6001600160a01b0382166109f75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610585565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610abc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610585565b6001600160a01b038216610b1e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610585565b60008111610b805760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610585565b6000546001600160a01b03848116911614801590610bac57506000546001600160a01b03838116911614155b15610dc057601754600160a01b900460ff16610c1457601854811115610c145760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610585565b6001600160a01b03831660009081526010602052604090205460ff16158015610c5657506001600160a01b03821660009081526010602052604090205460ff16155b610cae5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610585565b6017546001600160a01b03838116911614610d335760195481610cd084610748565b610cda9190611a04565b10610d335760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610585565b6000610d3e30610748565b601a54601854919250821015908210610d575760185491505b808015610d6e5750601754600160a81b900460ff16155b8015610d8857506017546001600160a01b03868116911614155b8015610d9d5750601754600160b01b900460ff165b15610dbd57610dab82611096565b478015610dbb57610dbb47610f07565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610e0257506001600160a01b03831660009081526005602052604090205460ff165b80610e3457506017546001600160a01b03858116911614801590610e3457506017546001600160a01b03848116911614155b15610e4157506000610ebb565b6017546001600160a01b038581169116148015610e6c57506016546001600160a01b03848116911614155b15610e7e57600854600c55600954600d555b6017546001600160a01b038481169116148015610ea957506016546001600160a01b03858116911614155b15610ebb57600a54600c55600b54600d555b610ec78484848461123b565b50505050565b60008184841115610ef15760405162461bcd60e51b8152600401610585919061190c565b506000610efe8486611a5b565b95945050505050565b6012546001600160a01b03166108fc610f21836002611269565b6040518115909202916000818181858888f19350505050158015610f49573d6000803e3d6000fd5b506013546001600160a01b03166108fc610f64836006611269565b6040518115909202916000818181858888f19350505050158015610f8c573d6000803e3d6000fd5b506014546001600160a01b03166108fc610fa7836006611269565b6040518115909202916000818181858888f19350505050158015610fcf573d6000803e3d6000fd5b506015546001600160a01b03166108fc610fea836006611269565b6040518115909202916000818181858888f19350505050158015610604573d6000803e3d6000fd5b60006006548211156110795760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610585565b60006110836112ab565b905061108f8382611269565b9392505050565b6017805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110ec57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561114057600080fd5b505afa158015611154573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611178919061171d565b8160018151811061119957634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526016546111bf9130911684610934565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac947906111f8908590600090869030904290600401611994565b600060405180830381600087803b15801561121257600080fd5b505af1158015611226573d6000803e3d6000fd5b50506017805460ff60a81b1916905550505050565b80611248576112486112ce565b6112538484846112fc565b80610ec757610ec7600e54600c55600f54600d55565b600061108f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113f3565b60008060006112b8611421565b90925090506112c78282611269565b9250505090565b600c541580156112de5750600d54155b156112e557565b600c8054600e55600d8054600f5560009182905555565b60008060008060008061130e87611461565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061134090876114be565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461136f9086611500565b6001600160a01b0389166000908152600260205260409020556113918161155f565b61139b84836115a9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516113e091815260200190565b60405180910390a3505050505050505050565b600081836114145760405162461bcd60e51b8152600401610585919061190c565b506000610efe8486611a1c565b6006546000908190670de0b6b3a764000061143c8282611269565b82101561145857505060065492670de0b6b3a764000092509050565b90939092509050565b600080600080600080600080600061147e8a600c54600d546115cd565b925092509250600061148e6112ab565b905060008060006114a18e878787611622565b919e509c509a509598509396509194505050505091939550919395565b600061108f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ecd565b60008061150d8385611a04565b90508381101561108f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610585565b60006115696112ab565b905060006115778383611672565b306000908152600260205260409020549091506115949082611500565b30600090815260026020526040902055505050565b6006546115b690836114be565b6006556007546115c69082611500565b6007555050565b60008080806115e760646115e18989611672565b90611269565b905060006115fa60646115e18a89611672565b905060006116128261160c8b866114be565b906114be565b9992985090965090945050505050565b60008080806116318886611672565b9050600061163f8887611672565b9050600061164d8888611672565b9050600061165f8261160c86866114be565b939b939a50919850919650505050505050565b60008261168157506000610619565b600061168d8385611a3c565b90508261169a8583611a1c565b1461108f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610585565b80356116fc81611ab9565b919050565b600060208284031215611712578081fd5b813561108f81611ab9565b60006020828403121561172e578081fd5b815161108f81611ab9565b6000806040838503121561174b578081fd5b823561175681611ab9565b9150602083013561176681611ab9565b809150509250929050565b600080600060608486031215611785578081fd5b833561179081611ab9565b925060208401356117a081611ab9565b929592945050506040919091013590565b600080604083850312156117c3578182fd5b82356117ce81611ab9565b946020939093013593505050565b600060208083850312156117ee578182fd5b823567ffffffffffffffff80821115611805578384fd5b818501915085601f830112611818578384fd5b81358181111561182a5761182a611aa3565b8060051b604051601f19603f8301168101818110858211171561184f5761184f611aa3565b604052828152858101935084860182860187018a101561186d578788fd5b8795505b8386101561189657611882816116f1565b855260019590950194938601938601611871565b5098975050505050505050565b6000602082840312156118b4578081fd5b8135801515811461108f578182fd5b6000602082840312156118d4578081fd5b5035919050565b600080600080608085870312156118f0578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b818110156119385785810183015185820160400152820161191c565b818111156119495783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156119e35784516001600160a01b0316835293830193918301916001016119be565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611a1757611a17611a8d565b500190565b600082611a3757634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611a5657611a56611a8d565b500290565b600082821015611a6d57611a6d611a8d565b500390565b6000600019821415611a8657611a86611a8d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461074557600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204a275f5b93cb8edd464ab3ba84bf8dc3b2c5e140f51c7fb8ff289983433a5d8664736f6c63430008040033

Deployed Bytecode Sourcemap

3895:13864:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13114:169;;;;;;;;;;-1:-1:-1;13114:169:0;;;;;:::i;:::-;;:::i;:::-;;6924:83;;;;;;;;;;-1:-1:-1;6994:5:0;;;;;;;;;;;;-1:-1:-1;;;6994:5:0;;;;6924:83;;;;;;;:::i;:::-;;;;;;;;7849:193;;;;;;;;;;-1:-1:-1;7849:193:0;;;;;:::i;:::-;;:::i;:::-;;;4333:14:1;;4326:22;4308:41;;4296:2;4281:18;7849:193:0;4263:92:1;5507:41:0;;;;;;;;;;-1:-1:-1;5507:41:0;;;;-1:-1:-1;;;;;5507:41:0;;;;;;-1:-1:-1;;;;;4124:32:1;;;4106:51;;4094:2;4079:18;5507:41:0;4061:102:1;7201:95:0;;;;;;;;;;-1:-1:-1;4445:18:0;7201:95;;;10071:25:1;;;10059:2;10044:18;7201:95:0;10026:76:1;8050:446:0;;;;;;;;;;-1:-1:-1;8050:446:0;;;;;:::i;:::-;;:::i;5864:51::-;;;;;;;;;;;;;;;;7110:83;;;;;;;;;;-1:-1:-1;7110:83:0;;4119:1;11237:36:1;;11225:2;11210:18;7110:83:0;11192:87:1;5555:28:0;;;;;;;;;;-1:-1:-1;5555:28:0;;;;-1:-1:-1;;;;;5555:28:0;;;13291:92;;;;;;;;;;-1:-1:-1;13291:92:0;;;;;:::i;:::-;;:::i;17372:101::-;;;;;;;;;;-1:-1:-1;17372:101:0;;;;;:::i;:::-;;:::i;12910:196::-;;;;;;;;;;;;;:::i;7304:138::-;;;;;;;;;;-1:-1:-1;7304:138:0;;;;;:::i;:::-;;:::i;1636:148::-;;;;;;;;;;;;;:::i;17512:108::-;;;;;;;;;;-1:-1:-1;17512:108:0;;;;;:::i;:::-;;:::i;5705:45::-;;;;;;;;;;;;;;;;1422:79;;;;;;;;;;-1:-1:-1;1460:7:0;1487:6;-1:-1:-1;;;;;1487:6:0;1422:79;;12592:101;;;;;;;;;;-1:-1:-1;12592:101:0;;;;;:::i;:::-;;:::i;5788:48::-;;;;;;;;;;;;;;;;7015:87;;;;;;;;;;-1:-1:-1;7087:7:0;;;;;;;;;;;;-1:-1:-1;;;7087:7:0;;;;7015:87;;17177:139;;;;;;;;;;-1:-1:-1;17177:139:0;;;;;:::i;:::-;;:::i;16818:307::-;;;;;;;;;;-1:-1:-1;16818:307:0;;;;;:::i;:::-;;:::i;7450:199::-;;;;;;;;;;-1:-1:-1;7450:199:0;;;;;:::i;:::-;;:::i;5006:36::-;;;;;;;;;;-1:-1:-1;5006:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12701:197;;;;;;;;;;;;;:::i;7657:184::-;;;;;;;;;;-1:-1:-1;7657:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7806:18:0;;;7774:7;7806:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7657:184;17632:115;;;;;;;;;;-1:-1:-1;17632:115:0;;;;;:::i;:::-;;:::i;13114:169::-;1549:6;;-1:-1:-1;;;;;1549:6:0;261:10;1549:22;1541:67;;;;-1:-1:-1;;;1541:67:0;;;;;;;:::i;:::-;;;;;;;;;13190:9:::1;13185:91;13209:5;:12;13205:1;:16;13185:91;;;13260:4;13243;:14;13248:5;13254:1;13248:8;;;;;;-1:-1:-1::0;;;13248:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13243:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13243:14:0;:21;;-1:-1:-1;;13243:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13223:3;::::1;::::0;::::1;:::i;:::-;;;;13185:91;;;;13114:169:::0;:::o;7849:193::-;7951:4;7973:39;261:10;7996:7;8005:6;7973:8;:39::i;:::-;-1:-1:-1;8030:4:0;7849:193;;;;;:::o;8050:446::-;8182:4;8199:36;8209:6;8217:9;8228:6;8199:9;:36::i;:::-;8246:220;8269:6;261:10;8317:138;8373:6;8317:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8317:19:0;;;;;;:11;:19;;;;;;;;261:10;8317:33;;;;;;;;;;:37;:138::i;:::-;8246:8;:220::i;:::-;-1:-1:-1;8484:4:0;8050:446;;;;;:::o;13291:92::-;1549:6;;-1:-1:-1;;;;;1549:6:0;261:10;1549:22;1541:67;;;;-1:-1:-1;;;1541:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13355:12:0::1;13370:5;13355:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;13355:20:0::1;::::0;;13291:92::o;17372:101::-;1549:6;;-1:-1:-1;;;;;1549:6:0;261:10;1549:22;1541:67;;;;-1:-1:-1;;;1541:67:0;;;;;;;:::i;:::-;17439:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17439:26:0::1;-1:-1:-1::0;;;;17439:26:0;;::::1;::::0;;;::::1;::::0;;17372:101::o;12910:196::-;12976:17;;-1:-1:-1;;;;;12976:17:0;261:10;-1:-1:-1;;;;;12960:33:0;;12952:42;;;;;;13034:21;13066:32;13034:21;13066:12;:32::i;:::-;12910:196;:::o;7304:138::-;-1:-1:-1;;;;;7417:16:0;;7370:7;7417:16;;;:7;:16;;;;;;7397:37;;:19;:37::i;1636:148::-;1549:6;;-1:-1:-1;;;;;1549:6:0;261:10;1549:22;1541:67;;;;-1:-1:-1;;;1541:67:0;;;;;;;:::i;:::-;1743:1:::1;1727:6:::0;;1706:40:::1;::::0;-1:-1:-1;;;;;1727:6:0;;::::1;::::0;1706:40:::1;::::0;1743:1;;1706:40:::1;1774:1;1757:19:::0;;-1:-1:-1;;;;;;1757:19:0::1;::::0;;1636:148::o;17512:108::-;1549:6;;-1:-1:-1;;;;;1549:6:0;261:10;1549:22;1541:67;;;;-1:-1:-1;;;1541:67:0;;;;;;;:::i;:::-;17586:12:::1;:26:::0;17512:108::o;12592:101::-;1549:6;;-1:-1:-1;;;;;1549:6:0;261:10;1549:22;1541:67;;;;-1:-1:-1;;;1541:67:0;;;;;;;:::i;:::-;12659:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12659:26:0::1;-1:-1:-1::0;;;;12659:26:0;;::::1;::::0;;;::::1;::::0;;12592:101::o;17177:139::-;1549:6;;-1:-1:-1;;;;;1549:6:0;261:10;1549:22;1541:67;;;;-1:-1:-1;;;1541:67:0;;;;;;;:::i;:::-;17268:19:::1;:40:::0;17177:139::o;16818:307::-;1549:6;;-1:-1:-1;;;;;1549:6:0;261:10;1549:22;1541:67;;;;-1:-1:-1;;;1541:67:0;;;;;;;:::i;:::-;16954:15:::1;:32:::0;;;;16997:16:::1;:34:::0;;;;17052:12:::1;:26:::0;17089:13:::1;:28:::0;16818:307::o;7450:199::-;7555:4;7577:42;261:10;7601:9;7612:6;7577:9;:42::i;12701:197::-;12767:17;;-1:-1:-1;;;;;12767:17:0;261:10;-1:-1:-1;;;;;12751:33:0;;12743:42;;;;;;12796:23;12822:24;12840:4;12822:9;:24::i;:::-;12796:50;;12857:33;12874:15;12857:16;:33::i;17632:115::-;1549:6;;-1:-1:-1;;;;;1549:6:0;261:10;1549:22;1541:67;;;;-1:-1:-1;;;1541:67:0;;;;;;;:::i;:::-;17709:14:::1;:30:::0;17632:115::o;9205:369::-;-1:-1:-1;;;;;9332:19:0;;9324:68;;;;-1:-1:-1;;;9324:68:0;;9722:2:1;9324:68:0;;;9704:21:1;9761:2;9741:18;;;9734:30;9800:34;9780:18;;;9773:62;-1:-1:-1;;;9851:18:1;;;9844:34;9895:19;;9324:68:0;9694:226:1;9324:68:0;-1:-1:-1;;;;;9411:21:0;;9403:68;;;;-1:-1:-1;;;9403:68:0;;6576:2:1;9403:68:0;;;6558:21:1;6615:2;6595:18;;;6588:30;6654:34;6634:18;;;6627:62;-1:-1:-1;;;6705:18:1;;;6698:32;6747:19;;9403:68:0;6548:224:1;9403:68:0;-1:-1:-1;;;;;9482:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9534:32;;10071:25:1;;;9534:32:0;;10044:18:1;9534:32:0;;;;;;;9205:369;;;:::o;9582:2247::-;-1:-1:-1;;;;;9704:18:0;;9696:68;;;;-1:-1:-1;;;9696:68:0;;8912:2:1;9696:68:0;;;8894:21:1;8951:2;8931:18;;;8924:30;8990:34;8970:18;;;8963:62;-1:-1:-1;;;9041:18:1;;;9034:35;9086:19;;9696:68:0;8884:227:1;9696:68:0;-1:-1:-1;;;;;9783:16:0;;9775:64;;;;-1:-1:-1;;;9775:64:0;;5404:2:1;9775:64:0;;;5386:21:1;5443:2;5423:18;;;5416:30;5482:34;5462:18;;;5455:62;-1:-1:-1;;;5533:18:1;;;5526:33;5576:19;;9775:64:0;5376:225:1;9775:64:0;9867:1;9858:6;:10;9850:64;;;;-1:-1:-1;;;9850:64:0;;8502:2:1;9850:64:0;;;8484:21:1;8541:2;8521:18;;;8514:30;8580:34;8560:18;;;8553:62;-1:-1:-1;;;8631:18:1;;;8624:39;8680:19;;9850:64:0;8474:231:1;9850:64:0;1460:7;1487:6;-1:-1:-1;;;;;9931:15:0;;;1487:6;;9931:15;;;;:32;;-1:-1:-1;1460:7:0;1487:6;-1:-1:-1;;;;;9950:13:0;;;1487:6;;9950:13;;9931:32;9927:1136;;;10032:11;;-1:-1:-1;;;10032:11:0;;;;10027:108;;10090:12;;10080:6;:22;;10072:63;;;;-1:-1:-1;;;10072:63:0;;6219:2:1;10072:63:0;;;6201:21:1;6258:2;6238:18;;;6231:30;6297;6277:18;;;6270:58;6345:18;;10072:63:0;6191:178:1;10072:63:0;-1:-1:-1;;;;;10159:10:0;;;;;;:4;:10;;;;;;;;10158:11;:24;;;;-1:-1:-1;;;;;;10174:8:0;;;;;;:4;:8;;;;;;;;10173:9;10158:24;10150:72;;;;-1:-1:-1;;;10150:72:0;;6979:2:1;10150:72:0;;;6961:21:1;7018:2;6998:18;;;6991:30;7057:34;7037:18;;;7030:62;-1:-1:-1;;;7108:18:1;;;7101:33;7151:19;;10150:72:0;6951:225:1;10150:72:0;10260:13;;-1:-1:-1;;;;;10254:19:0;;;10260:13;;10254:19;10251:146;;10327:14;;10318:6;10302:13;10312:2;10302:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10294:87;;;;-1:-1:-1;;;10294:87:0;;9318:2:1;10294:87:0;;;9300:21:1;9357:2;9337:18;;;9330:30;9396:34;9376:18;;;9369:62;-1:-1:-1;;;9447:18:1;;;9440:33;9490:19;;10294:87:0;9290:225:1;10294:87:0;10425:28;10456:24;10474:4;10456:9;:24::i;:::-;10534:19;;10597:12;;10425:55;;-1:-1:-1;10510:43:0;;;;10573:36;;10570:124;;10666:12;;10643:35;;10570:124;10726:7;:18;;;;-1:-1:-1;10738:6:0;;-1:-1:-1;;;10738:6:0;;;;10737:7;10726:18;:43;;;;-1:-1:-1;10756:13:0;;-1:-1:-1;;;;;10748:21:0;;;10756:13;;10748:21;;10726:43;:58;;;;-1:-1:-1;10773:11:0;;-1:-1:-1;;;10773:11:0;;;;10726:58;10722:330;;;10805:38;10822:20;10805:16;:38::i;:::-;10891:21;10935:22;;10931:106;;10982:35;10995:21;10982:12;:35::i;:::-;10722:330;;9927:1136;;;-1:-1:-1;;;;;11147:24:0;;11083:12;11147:24;;;:18;:24;;;;;;11098:4;;11147:24;;;:50;;-1:-1:-1;;;;;;11175:22:0;;;;;;:18;:22;;;;;;;;11147:50;11146:102;;;-1:-1:-1;11211:13:0;;-1:-1:-1;;;;;11203:21:0;;;11211:13;;11203:21;;;;:44;;-1:-1:-1;11234:13:0;;-1:-1:-1;;;;;11228:19:0;;;11234:13;;11228:19;;11203:44;11142:626;;;-1:-1:-1;11275:5:0;11142:626;;;11370:13;;-1:-1:-1;;;;;11362:21:0;;;11370:13;;11362:21;:55;;;;-1:-1:-1;11401:15:0;;-1:-1:-1;;;;;11387:30:0;;;11401:15;;11387:30;;11362:55;11359:164;;;11451:15;;11438:10;:28;11495:12;;11485:7;:22;11359:164;11586:13;;-1:-1:-1;;;;;11580:19:0;;;11586:13;;11580:19;:55;;;;-1:-1:-1;11619:15:0;;-1:-1:-1;;;;;11603:32:0;;;11619:15;;11603:32;;11580:55;11576:167;;;11669:16;;11656:10;:29;11714:13;;11704:7;:23;11576:167;11780:41;11795:4;11801:2;11805:6;11813:7;11780:14;:41::i;:::-;9582:2247;;;;:::o;2146:224::-;2266:7;2302:12;2294:6;;;;2286:29;;;;-1:-1:-1;;;2286:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2326:9:0;2338:5;2342:1;2338;:5;:::i;:::-;2326:17;2146:224;-1:-1:-1;;;;;2146:224:0:o;12335:249::-;12392:17;;-1:-1:-1;;;;;12392:17:0;:41;12419:13;:6;12430:1;12419:10;:13::i;:::-;12392:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12444:15:0;;-1:-1:-1;;;;;12444:15:0;:39;12469:13;:6;12480:1;12469:10;:13::i;:::-;12444:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12494:11:0;;-1:-1:-1;;;;;12494:11:0;:35;12515:13;:6;12526:1;12515:10;:13::i;:::-;12494:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12540:12:0;;-1:-1:-1;;;;;12540:12:0;:36;12562:13;:6;12573:1;12562:10;:13::i;:::-;12540:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8504:323;8599:7;8657;;8646;:18;;8624:110;;;;-1:-1:-1;;;8624:110:0;;5808:2:1;8624:110:0;;;5790:21:1;5847:2;5827:18;;;5820:30;5886:34;5866:18;;;5859:62;-1:-1:-1;;;5937:18:1;;;5930:40;5987:19;;8624:110:0;5780:232:1;8624:110:0;8745:19;8767:10;:8;:10::i;:::-;8745:32;-1:-1:-1;8795:24:0;:7;8745:32;8795:11;:24::i;:::-;8788:31;8504:323;-1:-1:-1;;;8504:323:0:o;11837:483::-;6017:6;:13;;-1:-1:-1;;;;6017:13:0;-1:-1:-1;;;6017:13:0;;;11939:16:::1;::::0;;11953:1:::1;11939:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11939:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11939:16:0::1;11915:40;;11984:4;11966;11971:1;11966:7;;;;;;-1:-1:-1::0;;;11966:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;11966:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12010:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12010:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11966:7;;12010:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12000:4;12005:1;12000:7;;;;;;-1:-1:-1::0;;;12000:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;12000:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12075:15:::1;::::0;12043:62:::1;::::0;12060:4:::1;::::0;12075:15:::1;12093:11:::0;12043:8:::1;:62::i;:::-;12116:15;::::0;:196:::1;::::0;-1:-1:-1;;;12116:196:0;;-1:-1:-1;;;;;12116:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12197:11;;12116:15:::1;::::0;12239:4;;12266::::1;::::0;12286:15:::1;::::0;12116:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6053:6:0;:14;;-1:-1:-1;;;;6053:14:0;;;-1:-1:-1;;;;11837:483:0:o;13391:282::-;13547:7;13542:28;;13556:14;:12;:14::i;:::-;13581:44;13599:6;13607:9;13618:6;13581:17;:44::i;:::-;13641:7;13636:29;;13650:15;9135:18;;9122:10;:31;9174:15;;9164:7;:25;9078:119;2632:132;2690:7;2717:39;2721:1;2724;2717:39;;;;;;;;;;;;;;;;;:3;:39::i;16369:166::-;16411:7;16432:15;16449;16468:19;:17;:19::i;:::-;16431:56;;-1:-1:-1;16431:56:0;-1:-1:-1;16507:20:0;16431:56;;16507:11;:20::i;:::-;16500:27;;;;16369:166;:::o;8835:235::-;8882:10;;:15;:31;;;;-1:-1:-1;8901:7:0;;:12;8882:31;8878:44;;;8835:235::o;8878:44::-;8959:10;;;8938:18;:31;8998:7;;;8980:15;:25;-1:-1:-1;9026:14:0;;;;9051:11;8835:235::o;13681:610::-;13828:15;13858:23;13896:12;13923:23;13961:12;13988:13;14015:19;14026:7;14015:10;:19::i;:::-;-1:-1:-1;;;;;14063:15:0;;;;;;:7;:15;;;;;;13813:221;;-1:-1:-1;13813:221:0;;-1:-1:-1;13813:221:0;;-1:-1:-1;13813:221:0;-1:-1:-1;13813:221:0;-1:-1:-1;13813:221:0;-1:-1:-1;14063:28:0;;13813:221;14063:19;:28::i;:::-;-1:-1:-1;;;;;14045:15:0;;;;;;;:7;:15;;;;;;:46;;;;14123:18;;;;;;;:39;;14146:15;14123:22;:39::i;:::-;-1:-1:-1;;;;;14102:18:0;;;;;;:7;:18;;;;;:60;14173:16;14183:5;14173:9;:16::i;:::-;14200:23;14212:4;14218;14200:11;:23::i;:::-;14256:9;-1:-1:-1;;;;;14239:44:0;14248:6;-1:-1:-1;;;;;14239:44:0;;14267:15;14239:44;;;;10071:25:1;;10059:2;10044:18;;10026:76;14239:44:0;;;;;;;;13681:610;;;;;;;;;:::o;2772:223::-;2892:7;2927:12;2920:5;2912:28;;;;-1:-1:-1;;;2912:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2951:9:0;2963:5;2967:1;2963;:5;:::i;16543:263::-;16641:7;;16594;;;;4445:18;16709:20;16641:7;4445:18;16709:11;:20::i;:::-;16699:7;:30;16695:61;;;-1:-1:-1;;16739:7:0;;;4445:18;;-1:-1:-1;16543:263:0;-1:-1:-1;16543:263:0:o;16695:61::-;16781:7;;16790;;-1:-1:-1;16543:263:0;-1:-1:-1;16543:263:0:o;14710:626::-;14810:7;14832;14854;14876;14898;14920;14956:23;14981:12;14995:13;15025:41;15037:7;15046:10;;15058:7;;15025:11;:41::i;:::-;14955:111;;;;;;15077:19;15099:10;:8;:10::i;:::-;15077:32;;15121:15;15138:23;15163:12;15192:46;15204:7;15213:4;15219:5;15226:11;15192;:46::i;:::-;15120:118;;-1:-1:-1;15120:118:0;-1:-1:-1;15120:118:0;-1:-1:-1;15299:15:0;;-1:-1:-1;15316:4:0;;-1:-1:-1;15322:5:0;;-1:-1:-1;;;;;14710:626:0;;;;;;;:::o;2002:136::-;2060:7;2087:43;2091:1;2094;2087:43;;;;;;;;;;;;;;;;;:3;:43::i;1815:179::-;1873:7;;1905:5;1909:1;1905;:5;:::i;:::-;1893:17;;1934:1;1929;:6;;1921:46;;;;-1:-1:-1;;;1921:46:0;;7383:2:1;1921:46:0;;;7365:21:1;7422:2;7402:18;;;7395:30;7461:29;7441:18;;;7434:57;7508:18;;1921:46:0;7355:177:1;14299:211:0;14352:19;14374:10;:8;:10::i;:::-;14352:32;-1:-1:-1;14395:13:0;14411:22;:5;14352:32;14411:9;:22::i;:::-;14485:4;14469:22;;;;:7;:22;;;;;;14395:38;;-1:-1:-1;14469:33:0;;14395:38;14469:26;:33::i;:::-;14460:4;14444:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14299:211:0:o;14518:147::-;14596:7;;:17;;14608:4;14596:11;:17::i;:::-;14586:7;:27;14637:10;;:20;;14652:4;14637:14;:20::i;:::-;14624:10;:33;-1:-1:-1;;14518:147:0:o;15344:473::-;15514:7;;;;15608:31;15635:3;15608:22;:7;15620:9;15608:11;:22::i;:::-;:26;;:31::i;:::-;15593:46;-1:-1:-1;15650:13:0;15666:28;15690:3;15666:19;:7;15678:6;15666:11;:19::i;:28::-;15650:44;-1:-1:-1;15705:23:0;15731:28;15650:44;15731:17;:7;15743:4;15731:11;:17::i;:::-;:21;;:28::i;:::-;15705:54;15797:4;;-1:-1:-1;15803:5:0;;-1:-1:-1;15344:473:0;;-1:-1:-1;;;;;15344:473:0:o;15825:536::-;16019:7;;;;16116:24;:7;16128:11;16116;:24::i;:::-;16098:42;-1:-1:-1;16151:12:0;16166:21;:4;16175:11;16166:8;:21::i;:::-;16151:36;-1:-1:-1;16198:13:0;16214:22;:5;16224:11;16214:9;:22::i;:::-;16198:38;-1:-1:-1;16247:23:0;16273:28;16198:38;16273:17;:7;16285:4;16273:11;:17::i;:28::-;16322:7;;;;-1:-1:-1;16348:4:0;;-1:-1:-1;15825:536:0;;-1:-1:-1;;;;;;;15825:536:0:o;2378:246::-;2436:7;2460:6;2456:47;;-1:-1:-1;2490:1:0;2483:8;;2456:47;2513:9;2525:5;2529:1;2525;:5;:::i;:::-;2513:17;-1:-1:-1;2558:1:0;2549:5;2553:1;2513:17;2549:5;:::i;:::-;:10;2541:56;;;;-1:-1:-1;;;2541:56:0;;7739:2:1;2541:56:0;;;7721:21:1;7778:2;7758:18;;;7751:30;7817:34;7797:18;;;7790:62;-1:-1:-1;;;7868:18:1;;;7861:31;7909:19;;2541:56:0;7711:223:1;14:134;82:20;;111:31;82:20;111:31;:::i;:::-;63:85;;;:::o;153:257::-;212:6;265:2;253:9;244:7;240:23;236:32;233:2;;;286:6;278;271:22;233:2;330:9;317:23;349:31;374:5;349:31;:::i;415:261::-;485:6;538:2;526:9;517:7;513:23;509:32;506:2;;;559:6;551;544:22;506:2;596:9;590:16;615:31;640:5;615:31;:::i;681:398::-;749:6;757;810:2;798:9;789:7;785:23;781:32;778:2;;;831:6;823;816:22;778:2;875:9;862:23;894:31;919:5;894:31;:::i;:::-;944:5;-1:-1:-1;1001:2:1;986:18;;973:32;1014:33;973:32;1014:33;:::i;:::-;1066:7;1056:17;;;768:311;;;;;:::o;1084:466::-;1161:6;1169;1177;1230:2;1218:9;1209:7;1205:23;1201:32;1198:2;;;1251:6;1243;1236:22;1198:2;1295:9;1282:23;1314:31;1339:5;1314:31;:::i;:::-;1364:5;-1:-1:-1;1421:2:1;1406:18;;1393:32;1434:33;1393:32;1434:33;:::i;:::-;1188:362;;1486:7;;-1:-1:-1;;;1540:2:1;1525:18;;;;1512:32;;1188:362::o;1555:325::-;1623:6;1631;1684:2;1672:9;1663:7;1659:23;1655:32;1652:2;;;1705:6;1697;1690:22;1652:2;1749:9;1736:23;1768:31;1793:5;1768:31;:::i;:::-;1818:5;1870:2;1855:18;;;;1842:32;;-1:-1:-1;;;1642:238:1:o;1885:1177::-;1969:6;2000:2;2043;2031:9;2022:7;2018:23;2014:32;2011:2;;;2064:6;2056;2049:22;2011:2;2109:9;2096:23;2138:18;2179:2;2171:6;2168:14;2165:2;;;2200:6;2192;2185:22;2165:2;2243:6;2232:9;2228:22;2218:32;;2288:7;2281:4;2277:2;2273:13;2269:27;2259:2;;2315:6;2307;2300:22;2259:2;2356;2343:16;2378:2;2374;2371:10;2368:2;;;2384:18;;:::i;:::-;2430:2;2427:1;2423:10;2462:2;2456:9;2525:2;2521:7;2516:2;2512;2508:11;2504:25;2496:6;2492:38;2580:6;2568:10;2565:22;2560:2;2548:10;2545:18;2542:46;2539:2;;;2591:18;;:::i;:::-;2627:2;2620:22;2677:18;;;2711:15;;;;-1:-1:-1;2746:11:1;;;2776;;;2772:20;;2769:33;-1:-1:-1;2766:2:1;;;2820:6;2812;2805:22;2766:2;2847:6;2838:15;;2862:169;2876:2;2873:1;2870:9;2862:169;;;2933:23;2952:3;2933:23;:::i;:::-;2921:36;;2894:1;2887:9;;;;;2977:12;;;;3009;;2862:169;;;-1:-1:-1;3050:6:1;1980:1082;-1:-1:-1;;;;;;;;1980:1082:1:o;3067:293::-;3123:6;3176:2;3164:9;3155:7;3151:23;3147:32;3144:2;;;3197:6;3189;3182:22;3144:2;3241:9;3228:23;3294:5;3287:13;3280:21;3273:5;3270:32;3260:2;;3321:6;3313;3306:22;3365:190;3424:6;3477:2;3465:9;3456:7;3452:23;3448:32;3445:2;;;3498:6;3490;3483:22;3445:2;-1:-1:-1;3526:23:1;;3435:120;-1:-1:-1;3435:120:1:o;3560:395::-;3646:6;3654;3662;3670;3723:3;3711:9;3702:7;3698:23;3694:33;3691:2;;;3745:6;3737;3730:22;3691:2;-1:-1:-1;;3773:23:1;;;3843:2;3828:18;;3815:32;;-1:-1:-1;3894:2:1;3879:18;;3866:32;;3945:2;3930:18;3917:32;;-1:-1:-1;3681:274:1;-1:-1:-1;3681:274:1:o;4594:603::-;4706:4;4735:2;4764;4753:9;4746:21;4796:6;4790:13;4839:6;4834:2;4823:9;4819:18;4812:34;4864:4;4877:140;4891:6;4888:1;4885:13;4877:140;;;4986:14;;;4982:23;;4976:30;4952:17;;;4971:2;4948:26;4941:66;4906:10;;4877:140;;;5035:6;5032:1;5029:13;5026:2;;;5105:4;5100:2;5091:6;5080:9;5076:22;5072:31;5065:45;5026:2;-1:-1:-1;5181:2:1;5160:15;-1:-1:-1;;5156:29:1;5141:45;;;;5188:2;5137:54;;4715:482;-1:-1:-1;;;4715:482:1:o;7939:356::-;8141:2;8123:21;;;8160:18;;;8153:30;8219:34;8214:2;8199:18;;8192:62;8286:2;8271:18;;8113:182::o;10107:983::-;10369:4;10417:3;10406:9;10402:19;10448:6;10437:9;10430:25;10474:2;10512:6;10507:2;10496:9;10492:18;10485:34;10555:3;10550:2;10539:9;10535:18;10528:31;10579:6;10614;10608:13;10645:6;10637;10630:22;10683:3;10672:9;10668:19;10661:26;;10722:2;10714:6;10710:15;10696:29;;10743:4;10756:195;10770:6;10767:1;10764:13;10756:195;;;10835:13;;-1:-1:-1;;;;;10831:39:1;10819:52;;10926:15;;;;10891:12;;;;10867:1;10785:9;10756:195;;;-1:-1:-1;;;;;;;11007:32:1;;;;11002:2;10987:18;;10980:60;-1:-1:-1;;;11071:3:1;11056:19;11049:35;10968:3;10378:712;-1:-1:-1;;;10378:712:1:o;11284:128::-;11324:3;11355:1;11351:6;11348:1;11345:13;11342:2;;;11361:18;;:::i;:::-;-1:-1:-1;11397:9:1;;11332:80::o;11417:217::-;11457:1;11483;11473:2;;-1:-1:-1;;;11508:31:1;;11562:4;11559:1;11552:15;11590:4;11515:1;11580:15;11473:2;-1:-1:-1;11619:9:1;;11463:171::o;11639:168::-;11679:7;11745:1;11741;11737:6;11733:14;11730:1;11727:21;11722:1;11715:9;11708:17;11704:45;11701:2;;;11752:18;;:::i;:::-;-1:-1:-1;11792:9:1;;11691:116::o;11812:125::-;11852:4;11880:1;11877;11874:8;11871:2;;;11885:18;;:::i;:::-;-1:-1:-1;11922:9:1;;11861:76::o;11942:135::-;11981:3;-1:-1:-1;;12002:17:1;;11999:2;;;12022:18;;:::i;:::-;-1:-1:-1;12069:1:1;12058:13;;11989:88::o;12082:127::-;12143:10;12138:3;12134:20;12131:1;12124:31;12174:4;12171:1;12164:15;12198:4;12195:1;12188:15;12214:127;12275:10;12270:3;12266:20;12263:1;12256:31;12306:4;12303:1;12296:15;12330:4;12327:1;12320:15;12346:131;-1:-1:-1;;;;;12421:31:1;;12411:42;;12401:2;;12467:1;12464;12457:12

Swarm Source

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