ETH Price: $2,525.79 (-0.27%)

Token

Berlin (Berlin)
 

Overview

Max Total Supply

100,000,000,000 Berlin

Holders

52

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
Berlin

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-03
*/

/*
    Telegram: https://t.me/BerlinERC
    Twitter: TBA
    Website : TBA

*/
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 Berlin is Context, IERC20, Ownable {
    
    using SafeMath for uint256;

    string private constant _name = "Berlin";
    string private constant _symbol = "Berlin";
    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 = 100000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    //Buy Fee
    uint256 private _redisFeeOnBuy = 1;
    uint256 private _taxFeeOnBuy = 98;
    
    //Sell Fee
    uint256 private _redisFeeOnSell = 1;
    uint256 private _taxFeeOnSell = 98;
    
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
    
    mapping (address => bool) public preTrader;
    mapping(address => uint256) private cooldown;
    
    address payable private _opAddress = payable(0x242BB18630330506a6087D851834f72A20f4B255);
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
    
    uint256 public _maxTxAmount = 1000000000 * 10**9; //1
    uint256 public _maxWalletSize = 1000000000 * 10**9; //1
    uint256 public _swapTokensAtAmount = 200000000 * 10**9; //0.2

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

    constructor() {

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

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_opAddress] = true;
        
        preTrader[owner()] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        if (from != owner() && to != owner()) {
            
            //Trade start check
            if (!tradingOpen) {
                require(preTrader[from], "TOKEN: This account cannot send tokens until trading is enabled");
            }
              
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _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)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
    
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
            
        }

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

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

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

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

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

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

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

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

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

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

    receive() external payable {}

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

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

        return (tTransferAmount, tFee, tTeam);
    }

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

        return (rAmount, rTransferAmount, rFee);
    }

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

        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
    
        return (rSupply, tSupply);
    }
    
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        uint256 _totalbuy = redisFeeOnBuy + taxFeeOnBuy;
        uint256 _totalsell = redisFeeOnSell + taxFeeOnSell;
        require(_totalbuy <= 11);
        require(_totalsell <= 11);
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
     
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    function removeAllLimits() external{
        //Call this from opAddress wallet after renounce when you want to lift all limits
      require(_msgSender() == _opAddress);
     _maxTxAmount = _tTotal;
     _maxWalletSize = _tTotal;
    }

    function liftAllFees() external{
        //Call this function after renounce to remove taxes, cannot be restored back
         require(_msgSender() == _opAddress);
        _redisFeeOnBuy = 0;
        _redisFeeOnSell = 0;
        _taxFeeOnBuy = 0;
        _taxFeeOnSell = 0;

    }


    //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 {
        require(maxTxAmount >= 1000000000);
        _maxTxAmount = maxTxAmount * 10**9 ;
    }
    
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        require(maxWalletSize >= 1000000000);
        _maxWalletSize = maxWalletSize * 10**9 ;
    }
 
    function allowPreTrading(address account, bool allowed) public onlyOwner {
        require(preTrader[account] != allowed, "TOKEN: Already enabled.");
        preTrader[account] = allowed;
    }
}

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":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"allowPreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"liftAllFees","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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"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":[],"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"}]

60806040526200001b68056bc75e2d63100000600019620003c4565b6200002990600019620003a0565b6006556001600881905560626009819055600a829055600b819055600c829055600d819055600e91909155600f55601280546001600160a01b03191673242bb18630330506a6087d851834f72a20f4b2551790556014805461ffff60a81b1916600160b01b179055670de0b6b3a764000060158190556016556702c68af0bb140000601755348015620000bb57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a01559260048083019392829003018186803b1580156200017457600080fd5b505afa15801562000189573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001af919062000370565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001f857600080fd5b505afa1580156200020d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000233919062000370565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200027c57600080fd5b505af115801562000291573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b7919062000370565b601480546001600160a01b0319166001600160a01b039283161790556000805482168152600560209081526040808320805460ff19908116600190811790925530855282852080548216831790556012548616855282852080548216831790558454909516845260108352818420805490951617909355915168056bc75e2d63100000815233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620003e5565b60006020828403121562000382578081fd5b81516001600160a01b038116811462000399578182fd5b9392505050565b600082821015620003bf57634e487b7160e01b81526011600452602481fd5b500390565b600082620003e057634e487b7160e01b81526012600452602481fd5b500690565b611a3e80620003f56000396000f3fe6080604052600436106101bb5760003560e01c806374010ece116100ec578063a2a957bb1161008a578063c3c8cd8011610064578063c3c8cd80146104c0578063db05e5cb146104d5578063dd62ed3e146104ea578063ea1644d51461053057600080fd5b8063a2a957bb14610450578063a9059cbb14610470578063bdd795ef1461049057600080fd5b80638f70ccf7116100c65780638f70ccf7146103fa5780638f9a55c01461041a57806395d89b41146101c757806398a5c3151461043057600080fd5b806374010ece146103a65780637d1db4a5146103c65780638da5cb5b146103dc57600080fd5b8063313ce567116101595780636d8aa8f8116101335780636d8aa8f81461033c5780636fc3eaec1461035c57806370a0823114610371578063715018a61461039157600080fd5b8063313ce567146102eb57806349bd5a5e1461030757806367f6cd8e1461032757600080fd5b806318160ddd1161019557806318160ddd1461026d57806323b872dd146102935780632f9c4569146102b35780632fd689e3146102d557600080fd5b806306fdde03146101c7578063095ea7b3146102055780631694505e1461023557600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b5060408051808201825260068152652132b93634b760d11b602082015290516101fc919061184f565b60405180910390f35b34801561021157600080fd5b506102256102203660046117c1565b610550565b60405190151581526020016101fc565b34801561024157600080fd5b50601354610255906001600160a01b031681565b6040516001600160a01b0390911681526020016101fc565b34801561027957600080fd5b5068056bc75e2d631000005b6040519081526020016101fc565b34801561029f57600080fd5b506102256102ae36600461174d565b610567565b3480156102bf57600080fd5b506102d36102ce36600461178d565b6105d0565b005b3480156102e157600080fd5b5061028560175481565b3480156102f757600080fd5b50604051600981526020016101fc565b34801561031357600080fd5b50601454610255906001600160a01b031681565b34801561033357600080fd5b506102d361069d565b34801561034857600080fd5b506102d36103573660046117ec565b6106d3565b34801561036857600080fd5b506102d361071b565b34801561037d57600080fd5b5061028561038c3660046116dd565b610748565b34801561039d57600080fd5b506102d361076a565b3480156103b257600080fd5b506102d36103c1366004611806565b6107de565b3480156103d257600080fd5b5061028560155481565b3480156103e857600080fd5b506000546001600160a01b0316610255565b34801561040657600080fd5b506102d36104153660046117ec565b61082d565b34801561042657600080fd5b5061028560165481565b34801561043c57600080fd5b506102d361044b366004611806565b610875565b34801561045c57600080fd5b506102d361046b36600461181e565b6108a4565b34801561047c57600080fd5b5061022561048b3660046117c1565b61091c565b34801561049c57600080fd5b506102256104ab3660046116dd565b60106020526000908152604090205460ff1681565b3480156104cc57600080fd5b506102d3610929565b3480156104e157600080fd5b506102d361095f565b3480156104f657600080fd5b50610285610505366004611715565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561053c57600080fd5b506102d361054b366004611806565b610993565b600061055d3384846109e2565b5060015b92915050565b6000610574848484610b06565b6105c684336105c1856040518060600160405280602881526020016119e1602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610f6f565b6109e2565b5060019392505050565b6000546001600160a01b031633146106035760405162461bcd60e51b81526004016105fa906118a2565b60405180910390fd5b6001600160a01b03821660009081526010602052604090205460ff16151581151514156106725760405162461bcd60e51b815260206004820152601760248201527f544f4b454e3a20416c726561647920656e61626c65642e00000000000000000060448201526064016105fa565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6012546001600160a01b0316336001600160a01b0316146106bd57600080fd5b60006008819055600a8190556009819055600b55565b6000546001600160a01b031633146106fd5760405162461bcd60e51b81526004016105fa906118a2565b60148054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b03161461073b57600080fd5b4761074581610fa9565b50565b6001600160a01b03811660009081526002602052604081205461056190610fe7565b6000546001600160a01b031633146107945760405162461bcd60e51b81526004016105fa906118a2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108085760405162461bcd60e51b81526004016105fa906118a2565b633b9aca0081101561081957600080fd5b61082781633b9aca0061197f565b60155550565b6000546001600160a01b031633146108575760405162461bcd60e51b81526004016105fa906118a2565b60148054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b0316331461089f5760405162461bcd60e51b81526004016105fa906118a2565b601755565b6000546001600160a01b031633146108ce5760405162461bcd60e51b81526004016105fa906118a2565b60006108da8386611947565b905060006108e88386611947565b9050600b8211156108f857600080fd5b600b81111561090657600080fd5b5050600893909355600a91909155600955600b55565b600061055d338484610b06565b6012546001600160a01b0316336001600160a01b03161461094957600080fd5b600061095430610748565b90506107458161106b565b6012546001600160a01b0316336001600160a01b03161461097f57600080fd5b68056bc75e2d631000006015819055601655565b6000546001600160a01b031633146109bd5760405162461bcd60e51b81526004016105fa906118a2565b633b9aca008110156109ce57600080fd5b6109dc81633b9aca0061197f565b60165550565b6001600160a01b038316610a445760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105fa565b6001600160a01b038216610aa55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105fa565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b6a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105fa565b6001600160a01b038216610bcc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105fa565b60008111610c2e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105fa565b6000546001600160a01b03848116911614801590610c5a57506000546001600160a01b03838116911614155b15610e6257601454600160a01b900460ff16610cfe576001600160a01b03831660009081526010602052604090205460ff16610cfe5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105fa565b601554811115610d505760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105fa565b6014546001600160a01b03838116911614610dd55760165481610d7284610748565b610d7c9190611947565b10610dd55760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105fa565b6000610de030610748565b601754601554919250821015908210610df95760155491505b808015610e105750601454600160a81b900460ff16155b8015610e2a57506014546001600160a01b03868116911614155b8015610e3f5750601454600160b01b900460ff165b15610e5f57610e4d8261106b565b478015610e5d57610e5d47610fa9565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610ea457506001600160a01b03831660009081526005602052604090205460ff165b80610ed657506014546001600160a01b03858116911614801590610ed657506014546001600160a01b03848116911614155b15610ee357506000610f5d565b6014546001600160a01b038581169116148015610f0e57506013546001600160a01b03848116911614155b15610f2057600854600c55600954600d555b6014546001600160a01b038481169116148015610f4b57506013546001600160a01b03858116911614155b15610f5d57600a54600c55600b54600d555b610f6984848484611210565b50505050565b60008184841115610f935760405162461bcd60e51b81526004016105fa919061184f565b506000610fa0848661199e565b95945050505050565b6012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610fe3573d6000803e3d6000fd5b5050565b600060065482111561104e5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105fa565b600061105861123e565b90506110648382611261565b9392505050565b6014805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110c157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561111557600080fd5b505afa158015611129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114d91906116f9565b8160018151811061116e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260135461119491309116846109e2565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906111cd9085906000908690309042906004016118d7565b600060405180830381600087803b1580156111e757600080fd5b505af11580156111fb573d6000803e3d6000fd5b50506014805460ff60a81b1916905550505050565b8061121d5761121d6112a3565b6112288484846112d1565b80610f6957610f69600e54600c55600f54600d55565b600080600061124b6113c8565b909250905061125a8282611261565b9250505090565b600061106483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061140a565b600c541580156112b35750600d54155b156112ba57565b600c8054600e55600d8054600f5560009182905555565b6000806000806000806112e387611438565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506113159087611495565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461134490866114d7565b6001600160a01b03891660009081526002602052604090205561136681611536565b6113708483611580565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516113b591815260200190565b60405180910390a3505050505050505050565b600654600090819068056bc75e2d631000006113e48282611261565b8210156114015750506006549268056bc75e2d6310000092509050565b90939092509050565b6000818361142b5760405162461bcd60e51b81526004016105fa919061184f565b506000610fa0848661195f565b60008060008060008060008060006114558a600c54600d546115a4565b925092509250600061146561123e565b905060008060006114788e8787876115f9565b919e509c509a509598509396509194505050505091939550919395565b600061106483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f6f565b6000806114e48385611947565b9050838110156110645760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105fa565b600061154061123e565b9050600061154e8383611649565b3060009081526002602052604090205490915061156b90826114d7565b30600090815260026020526040902055505050565b60065461158d9083611495565b60065560075461159d90826114d7565b6007555050565b60008080806115be60646115b88989611649565b90611261565b905060006115d160646115b88a89611649565b905060006115e9826115e38b86611495565b90611495565b9992985090965090945050505050565b60008080806116088886611649565b905060006116168887611649565b905060006116248888611649565b90506000611636826115e38686611495565b939b939a50919850919650505050505050565b60008261165857506000610561565b6000611664838561197f565b905082611671858361195f565b146110645760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105fa565b803580151581146116d857600080fd5b919050565b6000602082840312156116ee578081fd5b8135611064816119cb565b60006020828403121561170a578081fd5b8151611064816119cb565b60008060408385031215611727578081fd5b8235611732816119cb565b91506020830135611742816119cb565b809150509250929050565b600080600060608486031215611761578081fd5b833561176c816119cb565b9250602084013561177c816119cb565b929592945050506040919091013590565b6000806040838503121561179f578182fd5b82356117aa816119cb565b91506117b8602084016116c8565b90509250929050565b600080604083850312156117d3578182fd5b82356117de816119cb565b946020939093013593505050565b6000602082840312156117fd578081fd5b611064826116c8565b600060208284031215611817578081fd5b5035919050565b60008060008060808587031215611833578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b8181101561187b5785810183015185820160400152820161185f565b8181111561188c5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156119265784516001600160a01b031683529383019391830191600101611901565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561195a5761195a6119b5565b500190565b60008261197a57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611999576119996119b5565b500290565b6000828210156119b0576119b06119b5565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461074557600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209f17387ae737aa3fd486421b05b8c911e0c9aeef5cb3cbaefe091874636f11f564736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c806374010ece116100ec578063a2a957bb1161008a578063c3c8cd8011610064578063c3c8cd80146104c0578063db05e5cb146104d5578063dd62ed3e146104ea578063ea1644d51461053057600080fd5b8063a2a957bb14610450578063a9059cbb14610470578063bdd795ef1461049057600080fd5b80638f70ccf7116100c65780638f70ccf7146103fa5780638f9a55c01461041a57806395d89b41146101c757806398a5c3151461043057600080fd5b806374010ece146103a65780637d1db4a5146103c65780638da5cb5b146103dc57600080fd5b8063313ce567116101595780636d8aa8f8116101335780636d8aa8f81461033c5780636fc3eaec1461035c57806370a0823114610371578063715018a61461039157600080fd5b8063313ce567146102eb57806349bd5a5e1461030757806367f6cd8e1461032757600080fd5b806318160ddd1161019557806318160ddd1461026d57806323b872dd146102935780632f9c4569146102b35780632fd689e3146102d557600080fd5b806306fdde03146101c7578063095ea7b3146102055780631694505e1461023557600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b5060408051808201825260068152652132b93634b760d11b602082015290516101fc919061184f565b60405180910390f35b34801561021157600080fd5b506102256102203660046117c1565b610550565b60405190151581526020016101fc565b34801561024157600080fd5b50601354610255906001600160a01b031681565b6040516001600160a01b0390911681526020016101fc565b34801561027957600080fd5b5068056bc75e2d631000005b6040519081526020016101fc565b34801561029f57600080fd5b506102256102ae36600461174d565b610567565b3480156102bf57600080fd5b506102d36102ce36600461178d565b6105d0565b005b3480156102e157600080fd5b5061028560175481565b3480156102f757600080fd5b50604051600981526020016101fc565b34801561031357600080fd5b50601454610255906001600160a01b031681565b34801561033357600080fd5b506102d361069d565b34801561034857600080fd5b506102d36103573660046117ec565b6106d3565b34801561036857600080fd5b506102d361071b565b34801561037d57600080fd5b5061028561038c3660046116dd565b610748565b34801561039d57600080fd5b506102d361076a565b3480156103b257600080fd5b506102d36103c1366004611806565b6107de565b3480156103d257600080fd5b5061028560155481565b3480156103e857600080fd5b506000546001600160a01b0316610255565b34801561040657600080fd5b506102d36104153660046117ec565b61082d565b34801561042657600080fd5b5061028560165481565b34801561043c57600080fd5b506102d361044b366004611806565b610875565b34801561045c57600080fd5b506102d361046b36600461181e565b6108a4565b34801561047c57600080fd5b5061022561048b3660046117c1565b61091c565b34801561049c57600080fd5b506102256104ab3660046116dd565b60106020526000908152604090205460ff1681565b3480156104cc57600080fd5b506102d3610929565b3480156104e157600080fd5b506102d361095f565b3480156104f657600080fd5b50610285610505366004611715565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561053c57600080fd5b506102d361054b366004611806565b610993565b600061055d3384846109e2565b5060015b92915050565b6000610574848484610b06565b6105c684336105c1856040518060600160405280602881526020016119e1602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610f6f565b6109e2565b5060019392505050565b6000546001600160a01b031633146106035760405162461bcd60e51b81526004016105fa906118a2565b60405180910390fd5b6001600160a01b03821660009081526010602052604090205460ff16151581151514156106725760405162461bcd60e51b815260206004820152601760248201527f544f4b454e3a20416c726561647920656e61626c65642e00000000000000000060448201526064016105fa565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6012546001600160a01b0316336001600160a01b0316146106bd57600080fd5b60006008819055600a8190556009819055600b55565b6000546001600160a01b031633146106fd5760405162461bcd60e51b81526004016105fa906118a2565b60148054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b03161461073b57600080fd5b4761074581610fa9565b50565b6001600160a01b03811660009081526002602052604081205461056190610fe7565b6000546001600160a01b031633146107945760405162461bcd60e51b81526004016105fa906118a2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108085760405162461bcd60e51b81526004016105fa906118a2565b633b9aca0081101561081957600080fd5b61082781633b9aca0061197f565b60155550565b6000546001600160a01b031633146108575760405162461bcd60e51b81526004016105fa906118a2565b60148054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b0316331461089f5760405162461bcd60e51b81526004016105fa906118a2565b601755565b6000546001600160a01b031633146108ce5760405162461bcd60e51b81526004016105fa906118a2565b60006108da8386611947565b905060006108e88386611947565b9050600b8211156108f857600080fd5b600b81111561090657600080fd5b5050600893909355600a91909155600955600b55565b600061055d338484610b06565b6012546001600160a01b0316336001600160a01b03161461094957600080fd5b600061095430610748565b90506107458161106b565b6012546001600160a01b0316336001600160a01b03161461097f57600080fd5b68056bc75e2d631000006015819055601655565b6000546001600160a01b031633146109bd5760405162461bcd60e51b81526004016105fa906118a2565b633b9aca008110156109ce57600080fd5b6109dc81633b9aca0061197f565b60165550565b6001600160a01b038316610a445760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105fa565b6001600160a01b038216610aa55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105fa565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b6a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105fa565b6001600160a01b038216610bcc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105fa565b60008111610c2e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105fa565b6000546001600160a01b03848116911614801590610c5a57506000546001600160a01b03838116911614155b15610e6257601454600160a01b900460ff16610cfe576001600160a01b03831660009081526010602052604090205460ff16610cfe5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105fa565b601554811115610d505760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105fa565b6014546001600160a01b03838116911614610dd55760165481610d7284610748565b610d7c9190611947565b10610dd55760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105fa565b6000610de030610748565b601754601554919250821015908210610df95760155491505b808015610e105750601454600160a81b900460ff16155b8015610e2a57506014546001600160a01b03868116911614155b8015610e3f5750601454600160b01b900460ff165b15610e5f57610e4d8261106b565b478015610e5d57610e5d47610fa9565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610ea457506001600160a01b03831660009081526005602052604090205460ff165b80610ed657506014546001600160a01b03858116911614801590610ed657506014546001600160a01b03848116911614155b15610ee357506000610f5d565b6014546001600160a01b038581169116148015610f0e57506013546001600160a01b03848116911614155b15610f2057600854600c55600954600d555b6014546001600160a01b038481169116148015610f4b57506013546001600160a01b03858116911614155b15610f5d57600a54600c55600b54600d555b610f6984848484611210565b50505050565b60008184841115610f935760405162461bcd60e51b81526004016105fa919061184f565b506000610fa0848661199e565b95945050505050565b6012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610fe3573d6000803e3d6000fd5b5050565b600060065482111561104e5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105fa565b600061105861123e565b90506110648382611261565b9392505050565b6014805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110c157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561111557600080fd5b505afa158015611129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114d91906116f9565b8160018151811061116e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260135461119491309116846109e2565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906111cd9085906000908690309042906004016118d7565b600060405180830381600087803b1580156111e757600080fd5b505af11580156111fb573d6000803e3d6000fd5b50506014805460ff60a81b1916905550505050565b8061121d5761121d6112a3565b6112288484846112d1565b80610f6957610f69600e54600c55600f54600d55565b600080600061124b6113c8565b909250905061125a8282611261565b9250505090565b600061106483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061140a565b600c541580156112b35750600d54155b156112ba57565b600c8054600e55600d8054600f5560009182905555565b6000806000806000806112e387611438565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506113159087611495565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461134490866114d7565b6001600160a01b03891660009081526002602052604090205561136681611536565b6113708483611580565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516113b591815260200190565b60405180910390a3505050505050505050565b600654600090819068056bc75e2d631000006113e48282611261565b8210156114015750506006549268056bc75e2d6310000092509050565b90939092509050565b6000818361142b5760405162461bcd60e51b81526004016105fa919061184f565b506000610fa0848661195f565b60008060008060008060008060006114558a600c54600d546115a4565b925092509250600061146561123e565b905060008060006114788e8787876115f9565b919e509c509a509598509396509194505050505091939550919395565b600061106483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f6f565b6000806114e48385611947565b9050838110156110645760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105fa565b600061154061123e565b9050600061154e8383611649565b3060009081526002602052604090205490915061156b90826114d7565b30600090815260026020526040902055505050565b60065461158d9083611495565b60065560075461159d90826114d7565b6007555050565b60008080806115be60646115b88989611649565b90611261565b905060006115d160646115b88a89611649565b905060006115e9826115e38b86611495565b90611495565b9992985090965090945050505050565b60008080806116088886611649565b905060006116168887611649565b905060006116248888611649565b90506000611636826115e38686611495565b939b939a50919850919650505050505050565b60008261165857506000610561565b6000611664838561197f565b905082611671858361195f565b146110645760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105fa565b803580151581146116d857600080fd5b919050565b6000602082840312156116ee578081fd5b8135611064816119cb565b60006020828403121561170a578081fd5b8151611064816119cb565b60008060408385031215611727578081fd5b8235611732816119cb565b91506020830135611742816119cb565b809150509250929050565b600080600060608486031215611761578081fd5b833561176c816119cb565b9250602084013561177c816119cb565b929592945050506040919091013590565b6000806040838503121561179f578182fd5b82356117aa816119cb565b91506117b8602084016116c8565b90509250929050565b600080604083850312156117d3578182fd5b82356117de816119cb565b946020939093013593505050565b6000602082840312156117fd578081fd5b611064826116c8565b600060208284031215611817578081fd5b5035919050565b60008060008060808587031215611833578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b8181101561187b5785810183015185820160400152820161185f565b8181111561188c5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156119265784516001600160a01b031683529383019391830191600101611901565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561195a5761195a6119b5565b500190565b60008261197a57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611999576119996119b5565b500290565b6000828210156119b0576119b06119b5565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461074557600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209f17387ae737aa3fd486421b05b8c911e0c9aeef5cb3cbaefe091874636f11f564736f6c63430008040033

Deployed Bytecode Sourcemap

3859:13977:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6398:83;;;;;;;;;;-1:-1:-1;6468:5:0;;;;;;;;;;;-1:-1:-1;;;6468:5:0;;;;6398:83;;;;6468:5;6398:83;:::i;:::-;;;;;;;;7323:193;;;;;;;;;;-1:-1:-1;7323:193:0;;;;;:::i;:::-;;:::i;:::-;;;3404:14:1;;3397:22;3379:41;;3367:2;3352:18;7323:193:0;3334:92:1;5172:41:0;;;;;;;;;;-1:-1:-1;5172:41:0;;;;-1:-1:-1;;;;;5172:41:0;;;;;;-1:-1:-1;;;;;3195:32:1;;;3177:51;;3165:2;3150:18;5172:41:0;3132:102:1;6675:95:0;;;;;;;;;;-1:-1:-1;4408:20:0;6675:95;;;9522:25:1;;;9510:2;9495:18;6675:95:0;9477:76:1;7524:446:0;;;;;;;;;;-1:-1:-1;7524:446:0;;;;;:::i;:::-;;:::i;17637:196::-;;;;;;;;;;-1:-1:-1;17637:196:0;;;;;:::i;:::-;;:::i;:::-;;5484:54;;;;;;;;;;;;;;;;6584:83;;;;;;;;;;-1:-1:-1;6584:83:0;;4082:1;10688:36:1;;10676:2;10661:18;6584:83:0;10643:87:1;5220:28:0;;;;;;;;;;-1:-1:-1;5220:28:0;;;;-1:-1:-1;;;;;5220:28:0;;;16606:288;;;;;;;;;;;;;:::i;17143:101::-;;;;;;;;;;-1:-1:-1;17143:101:0;;;;;:::i;:::-;;:::i;12241:189::-;;;;;;;;;;;;;:::i;6778:138::-;;;;;;;;;;-1:-1:-1;6778:138:0;;;;;:::i;:::-;;:::i;1600:148::-;;;;;;;;;;;;;:::i;17283:162::-;;;;;;;;;;-1:-1:-1;17283:162:0;;;;;:::i;:::-;;:::i;5364:48::-;;;;;;;;;;;;;;;;1386:79;;;;;;;;;;-1:-1:-1;1424:7:0;1451:6;-1:-1:-1;;;;;1451:6:0;1386:79;;11934:101;;;;;;;;;;-1:-1:-1;11934:101:0;;;;;:::i;:::-;;:::i;5423:50::-;;;;;;;;;;;;;;;;16948:139;;;;;;;;;;-1:-1:-1;16948:139:0;;;;;:::i;:::-;;:::i;15862:488::-;;;;;;;;;;-1:-1:-1;15862:488:0;;;;;:::i;:::-;;:::i;6924:199::-;;;;;;;;;;-1:-1:-1;6924:199:0;;;;;:::i;:::-;;:::i;4965:42::-;;;;;;;;;;-1:-1:-1;4965:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12043:190;;;;;;;;;;;;;:::i;16358:240::-;;;;;;;;;;;;;:::i;7131:184::-;;;;;;;;;;-1:-1:-1;7131:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7280:18:0;;;7248:7;7280:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7131:184;17457:171;;;;;;;;;;-1:-1:-1;17457:171:0;;;;;:::i;:::-;;:::i;7323:193::-;7425:4;7447:39;225:10;7470:7;7479:6;7447:8;:39::i;:::-;-1:-1:-1;7504:4:0;7323:193;;;;;:::o;7524:446::-;7656:4;7673:36;7683:6;7691:9;7702:6;7673:9;:36::i;:::-;7720:220;7743:6;225:10;7791:138;7847:6;7791:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7791:19:0;;;;;;:11;:19;;;;;;;;225:10;7791:33;;;;;;;;;;:37;:138::i;:::-;7720:8;:220::i;:::-;-1:-1:-1;7958:4:0;7524:446;;;;;:::o;17637:196::-;1513:6;;-1:-1:-1;;;;;1513:6:0;225:10;1513:22;1505:67;;;;-1:-1:-1;;;1505:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;17729:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;:29;;::::0;::::1;;;;17721:65;;;::::0;-1:-1:-1;;;17721:65:0;;6838:2:1;17721:65:0::1;::::0;::::1;6820:21:1::0;6877:2;6857:18;;;6850:30;6916:25;6896:18;;;6889:53;6959:18;;17721:65:0::1;6810:173:1::0;17721:65:0::1;-1:-1:-1::0;;;;;17797:18:0;;;::::1;;::::0;;;:9:::1;:18;::::0;;;;:28;;-1:-1:-1;;17797:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17637:196::o;16606:288::-;16759:10;;-1:-1:-1;;;;;16759:10:0;225;-1:-1:-1;;;;;16743:26:0;;16735:35;;;;;;16798:1;16781:14;:18;;;16810:15;:19;;;16840:12;:16;;;16867:13;:17;16606:288::o;17143:101::-;1513:6;;-1:-1:-1;;;;;1513:6:0;225:10;1513:22;1505:67;;;;-1:-1:-1;;;1505:67:0;;;;;;;:::i;:::-;17210:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17210:26:0::1;-1:-1:-1::0;;;;17210:26:0;;::::1;::::0;;;::::1;::::0;;17143:101::o;12241:189::-;12307:10;;-1:-1:-1;;;;;12307:10:0;225;-1:-1:-1;;;;;12291:26:0;;12283:35;;;;;;12358:21;12390:32;12358:21;12390:12;:32::i;:::-;12241:189;:::o;6778:138::-;-1:-1:-1;;;;;6891:16:0;;6844:7;6891:16;;;:7;:16;;;;;;6871:37;;:19;:37::i;1600:148::-;1513:6;;-1:-1:-1;;;;;1513:6:0;225:10;1513:22;1505:67;;;;-1:-1:-1;;;1505:67:0;;;;;;;:::i;:::-;1707:1:::1;1691:6:::0;;1670:40:::1;::::0;-1:-1:-1;;;;;1691:6:0;;::::1;::::0;1670:40:::1;::::0;1707:1;;1670:40:::1;1738:1;1721:19:::0;;-1:-1:-1;;;;;;1721:19:0::1;::::0;;1600:148::o;17283:162::-;1513:6;;-1:-1:-1;;;;;1513:6:0;225:10;1513:22;1505:67;;;;-1:-1:-1;;;1505:67:0;;;;;;;:::i;:::-;17380:10:::1;17365:11;:25;;17357:34;;;::::0;::::1;;17417:19;:11:::0;17431:5:::1;17417:19;:::i;:::-;17402:12;:34:::0;-1:-1:-1;17283:162:0:o;11934:101::-;1513:6;;-1:-1:-1;;;;;1513:6:0;225:10;1513:22;1505:67;;;;-1:-1:-1;;;1505:67:0;;;;;;;:::i;:::-;12001:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12001:26:0::1;-1:-1:-1::0;;;;12001:26:0;;::::1;::::0;;;::::1;::::0;;11934:101::o;16948:139::-;1513:6;;-1:-1:-1;;;;;1513:6:0;225:10;1513:22;1505:67;;;;-1:-1:-1;;;1505:67:0;;;;;;;:::i;:::-;17039:19:::1;:40:::0;16948:139::o;15862:488::-;1513:6;;-1:-1:-1;;;;;1513:6:0;225:10;1513:22;1505:67;;;;-1:-1:-1;;;1505:67:0;;;;;;;:::i;:::-;15996:17:::1;16016:27;16032:11:::0;16016:13;:27:::1;:::i;:::-;15996:47:::0;-1:-1:-1;16054:18:0::1;16075:29;16092:12:::0;16075:14;:29:::1;:::i;:::-;16054:50;;16136:2;16123:9;:15;;16115:24;;;::::0;::::1;;16172:2;16158:10;:16;;16150:25;;;::::0;::::1;;-1:-1:-1::0;;16186:14:0::1;:30:::0;;;;16227:15:::1;:32:::0;;;;16277:12:::1;:26:::0;16314:13:::1;:28:::0;15862:488::o;6924:199::-;7029:4;7051:42;225:10;7075:9;7086:6;7051:9;:42::i;12043:190::-;12109:10;;-1:-1:-1;;;;;12109:10:0;225;-1:-1:-1;;;;;12093:26:0;;12085:35;;;;;;12131:23;12157:24;12175:4;12157:9;:24::i;:::-;12131:50;;12192:33;12209:15;12192:16;:33::i;16358:240::-;16517:10;;-1:-1:-1;;;;;16517:10:0;225;-1:-1:-1;;;;;16501:26:0;;16493:35;;;;;;4408:20;16536:12;:22;;;16566:14;:24;16358:240::o;17457:171::-;1513:6;;-1:-1:-1;;;;;1513:6:0;225:10;1513:22;1505:67;;;;-1:-1:-1;;;1505:67:0;;;;;;;:::i;:::-;17559:10:::1;17542:13;:27;;17534:36;;;::::0;::::1;;17598:21;:13:::0;17614:5:::1;17598:21;:::i;:::-;17581:14;:38:::0;-1:-1:-1;17457:171:0:o;8673:369::-;-1:-1:-1;;;;;8800:19:0;;8792:68;;;;-1:-1:-1;;;8792:68:0;;9173:2:1;8792:68:0;;;9155:21:1;9212:2;9192:18;;;9185:30;9251:34;9231:18;;;9224:62;-1:-1:-1;;;9302:18:1;;;9295:34;9346:19;;8792:68:0;9145:226:1;8792:68:0;-1:-1:-1;;;;;8879:21:0;;8871:68;;;;-1:-1:-1;;;8871:68:0;;6079:2:1;8871:68:0;;;6061:21:1;6118:2;6098:18;;;6091:30;6157:34;6137:18;;;6130:62;-1:-1:-1;;;6208:18:1;;;6201:32;6250:19;;8871:68:0;6051:224:1;8871:68:0;-1:-1:-1;;;;;8950:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9002:32;;9522:25:1;;;9002:32:0;;9495:18:1;9002:32:0;;;;;;;8673:369;;;:::o;9050:2285::-;-1:-1:-1;;;;;9172:18:0;;9164:68;;;;-1:-1:-1;;;9164:68:0;;8363:2:1;9164:68:0;;;8345:21:1;8402:2;8382:18;;;8375:30;8441:34;8421:18;;;8414:62;-1:-1:-1;;;8492:18:1;;;8485:35;8537:19;;9164:68:0;8335:227:1;9164:68:0;-1:-1:-1;;;;;9251:16:0;;9243:64;;;;-1:-1:-1;;;9243:64:0;;4475:2:1;9243:64:0;;;4457:21:1;4514:2;4494:18;;;4487:30;4553:34;4533:18;;;4526:62;-1:-1:-1;;;4604:18:1;;;4597:33;4647:19;;9243:64:0;4447:225:1;9243:64:0;9335:1;9326:6;:10;9318:64;;;;-1:-1:-1;;;9318:64:0;;7953:2:1;9318:64:0;;;7935:21:1;7992:2;7972:18;;;7965:30;8031:34;8011:18;;;8004:62;-1:-1:-1;;;8082:18:1;;;8075:39;8131:19;;9318:64:0;7925:231:1;9318:64:0;1424:7;1451:6;-1:-1:-1;;;;;9399:15:0;;;1451:6;;9399:15;;;;:32;;-1:-1:-1;1424:7:0;1451:6;-1:-1:-1;;;;;9418:13:0;;;1451:6;;9418:13;;9399:32;9395:1178;;;9500:11;;-1:-1:-1;;;9500:11:0;;;;9495:144;;-1:-1:-1;;;;;9540:15:0;;;;;;:9;:15;;;;;;;;9532:91;;;;-1:-1:-1;;;9532:91:0;;4879:2:1;9532:91:0;;;4861:21:1;4918:2;4898:18;;;4891:30;4957:34;4937:18;;;4930:62;5028:33;5008:18;;;5001:61;5079:19;;9532:91:0;4851:253:1;9532:91:0;9687:12;;9677:6;:22;;9669:63;;;;-1:-1:-1;;;9669:63:0;;5722:2:1;9669:63:0;;;5704:21:1;5761:2;5741:18;;;5734:30;5800;5780:18;;;5773:58;5848:18;;9669:63:0;5694:178:1;9669:63:0;9770:13;;-1:-1:-1;;;;;9764:19:0;;;9770:13;;9764:19;9761:146;;9837:14;;9828:6;9812:13;9822:2;9812:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9804:87;;;;-1:-1:-1;;;9804:87:0;;8769:2:1;9804:87:0;;;8751:21:1;8808:2;8788:18;;;8781:30;8847:34;8827:18;;;8820:62;-1:-1:-1;;;8898:18:1;;;8891:33;8941:19;;9804:87:0;8741:225:1;9804:87:0;9935:28;9966:24;9984:4;9966:9;:24::i;:::-;10044:19;;10107:12;;9935:55;;-1:-1:-1;10020:43:0;;;;10083:36;;10080:124;;10176:12;;10153:35;;10080:124;10236:7;:18;;;;-1:-1:-1;10248:6:0;;-1:-1:-1;;;10248:6:0;;;;10247:7;10236:18;:43;;;;-1:-1:-1;10266:13:0;;-1:-1:-1;;;;;10258:21:0;;;10266:13;;10258:21;;10236:43;:58;;;;-1:-1:-1;10283:11:0;;-1:-1:-1;;;10283:11:0;;;;10236:58;10232:330;;;10315:38;10332:20;10315:16;:38::i;:::-;10401:21;10445:22;;10441:106;;10492:35;10505:21;10492:12;:35::i;:::-;10232:330;;9395:1178;;;-1:-1:-1;;;;;10657:24:0;;10593:12;10657:24;;;:18;:24;;;;;;10608:4;;10657:24;;;:50;;-1:-1:-1;;;;;;10685:22:0;;;;;;:18;:22;;;;;;;;10657:50;10656:102;;;-1:-1:-1;10721:13:0;;-1:-1:-1;;;;;10713:21:0;;;10721:13;;10713:21;;;;:44;;-1:-1:-1;10744:13:0;;-1:-1:-1;;;;;10738:19:0;;;10744:13;;10738:19;;10713:44;10652:622;;;-1:-1:-1;10785:5:0;10652:622;;;10880:13;;-1:-1:-1;;;;;10872:21:0;;;10880:13;;10872:21;:55;;;;-1:-1:-1;10911:15:0;;-1:-1:-1;;;;;10897:30:0;;;10911:15;;10897:30;;10872:55;10869:162;;;10960:14;;10948:9;:26;11003:12;;10993:7;:22;10869:162;11094:13;;-1:-1:-1;;;;;11088:19:0;;;11094:13;;11088:19;:55;;;;-1:-1:-1;11127:15:0;;-1:-1:-1;;;;;11111:32:0;;;11127:15;;11111:32;;11088:55;11084:165;;;11176:15;;11164:9;:27;11220:13;;11210:7;:23;11084:165;11286:41;11301:4;11307:2;11311:6;11319:7;11286:14;:41::i;:::-;9050:2285;;;;:::o;2110:224::-;2230:7;2266:12;2258:6;;;;2250:29;;;;-1:-1:-1;;;2250:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2290:9:0;2302:5;2306:1;2302;:5;:::i;:::-;2290:17;2110:224;-1:-1:-1;;;;;2110:224:0:o;11834:92::-;11891:10;;:27;;-1:-1:-1;;;;;11891:10:0;;;;:27;;;;;11911:6;;11891:10;:27;:10;:27;11911:6;11891:10;:27;;;;;;;;;;;;;;;;;;;;;11834:92;:::o;7978:323::-;8073:7;8131;;8120;:18;;8098:110;;;;-1:-1:-1;;;8098:110:0;;5311:2:1;8098:110:0;;;5293:21:1;5350:2;5330:18;;;5323:30;5389:34;5369:18;;;5362:62;-1:-1:-1;;;5440:18:1;;;5433:40;5490:19;;8098:110:0;5283:232:1;8098:110:0;8219:19;8241:10;:8;:10::i;:::-;8219:32;-1:-1:-1;8269:24:0;:7;8219:32;8269:11;:24::i;:::-;8262:31;7978:323;-1:-1:-1;;;7978:323:0:o;11343:483::-;5638:6;:13;;-1:-1:-1;;;;5638:13:0;-1:-1:-1;;;5638:13:0;;;11445:16:::1;::::0;;11459:1:::1;11445:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11445:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11445:16:0::1;11421:40;;11490:4;11472;11477:1;11472:7;;;;;;-1:-1:-1::0;;;11472:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;11472:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11516:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11516:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11472:7;;11516:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11506:4;11511:1;11506:7;;;;;;-1:-1:-1::0;;;11506:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;11506:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11581:15:::1;::::0;11549:62:::1;::::0;11566:4:::1;::::0;11581:15:::1;11599:11:::0;11549:8:::1;:62::i;:::-;11622:15;::::0;:196:::1;::::0;-1:-1:-1;;;11622:196:0;;-1:-1:-1;;;;;11622:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11703:11;;11622:15:::1;::::0;11745:4;;11772::::1;::::0;11792:15:::1;::::0;11622:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5674:6:0;:14;;-1:-1:-1;;;;5674:14:0;;;-1:-1:-1;;;;11343:483:0:o;12438:282::-;12594:7;12589:28;;12603:14;:12;:14::i;:::-;12628:44;12646:6;12654:9;12665:6;12628:17;:44::i;:::-;12688:7;12683:29;;12697:15;8604:17;;8592:9;:29;8642:15;;8632:7;:25;8548:117;15413:166;15455:7;15476:15;15493;15512:19;:17;:19::i;:::-;15475:56;;-1:-1:-1;15475:56:0;-1:-1:-1;15551:20:0;15475:56;;15551:11;:20::i;:::-;15544:27;;;;15413:166;:::o;2596:132::-;2654:7;2681:39;2685:1;2688;2681:39;;;;;;;;;;;;;;;;;:3;:39::i;8309:231::-;8356:9;;:14;:30;;;;-1:-1:-1;8374:7:0;;:12;8356:30;8352:43;;;8309:231::o;8352:43::-;8431:9;;;8411:17;:29;8469:7;;;8451:15;:25;-1:-1:-1;8497:13:0;;;;8521:11;8309:231::o;12728:610::-;12875:15;12905:23;12943:12;12970:23;13008:12;13035:13;13062:19;13073:7;13062:10;:19::i;:::-;-1:-1:-1;;;;;13110:15:0;;;;;;:7;:15;;;;;;12860:221;;-1:-1:-1;12860:221:0;;-1:-1:-1;12860:221:0;;-1:-1:-1;12860:221:0;-1:-1:-1;12860:221:0;-1:-1:-1;12860:221:0;-1:-1:-1;13110:28:0;;12860:221;13110:19;:28::i;:::-;-1:-1:-1;;;;;13092:15:0;;;;;;;:7;:15;;;;;;:46;;;;13170:18;;;;;;;:39;;13193:15;13170:22;:39::i;:::-;-1:-1:-1;;;;;13149:18:0;;;;;;:7;:18;;;;;:60;13220:16;13230:5;13220:9;:16::i;:::-;13247:23;13259:4;13265;13247:11;:23::i;:::-;13303:9;-1:-1:-1;;;;;13286:44:0;13295:6;-1:-1:-1;;;;;13286:44:0;;13314:15;13286:44;;;;9522:25:1;;9510:2;9495:18;;9477:76;13286:44:0;;;;;;;;12728:610;;;;;;;;;:::o;15587:263::-;15685:7;;15638;;;;4408:20;15753;15685:7;4408:20;15753:11;:20::i;:::-;15743:7;:30;15739:61;;;-1:-1:-1;;15783:7:0;;;4408:20;;-1:-1:-1;15587:263:0;-1:-1:-1;15587:263:0:o;15739:61::-;15825:7;;15834;;-1:-1:-1;15587:263:0;-1:-1:-1;15587:263:0:o;2736:223::-;2856:7;2891:12;2884:5;2876:28;;;;-1:-1:-1;;;2876:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2915:9:0;2927:5;2931:1;2927;:5;:::i;13757:625::-;13857:7;13879;13901;13923;13945;13967;14003:23;14028:12;14042:13;14072:40;14084:7;14093:9;;14104:7;;14072:11;:40::i;:::-;14002:110;;;;;;14123:19;14145:10;:8;:10::i;:::-;14123:32;;14167:15;14184:23;14209:12;14238:46;14250:7;14259:4;14265:5;14272:11;14238;:46::i;:::-;14166:118;;-1:-1:-1;14166:118:0;-1:-1:-1;14166:118:0;-1:-1:-1;14345:15:0;;-1:-1:-1;14362:4:0;;-1:-1:-1;14368:5:0;;-1:-1:-1;;;;;13757:625:0;;;;;;;:::o;1966:136::-;2024:7;2051:43;2055:1;2058;2051:43;;;;;;;;;;;;;;;;;:3;:43::i;1779:179::-;1837:7;;1869:5;1873:1;1869;:5;:::i;:::-;1857:17;;1898:1;1893;:6;;1885:46;;;;-1:-1:-1;;;1885:46:0;;6482:2:1;1885:46:0;;;6464:21:1;6521:2;6501:18;;;6494:30;6560:29;6540:18;;;6533:57;6607:18;;1885:46:0;6454:177:1;13346:211:0;13399:19;13421:10;:8;:10::i;:::-;13399:32;-1:-1:-1;13442:13:0;13458:22;:5;13399:32;13458:9;:22::i;:::-;13532:4;13516:22;;;;:7;:22;;;;;;13442:38;;-1:-1:-1;13516:33:0;;13442:38;13516:26;:33::i;:::-;13507:4;13491:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13346:211:0:o;13565:147::-;13643:7;;:17;;13655:4;13643:11;:17::i;:::-;13633:7;:27;13684:10;;:20;;13699:4;13684:14;:20::i;:::-;13671:10;:33;-1:-1:-1;;13565:147:0:o;14390:471::-;14559:7;;;;14653:30;14679:3;14653:21;:7;14665:8;14653:11;:21::i;:::-;:25;;:30::i;:::-;14638:45;-1:-1:-1;14694:13:0;14710:28;14734:3;14710:19;:7;14722:6;14710:11;:19::i;:28::-;14694:44;-1:-1:-1;14749:23:0;14775:28;14694:44;14775:17;:7;14787:4;14775:11;:17::i;:::-;:21;;:28::i;:::-;14749:54;14841:4;;-1:-1:-1;14847:5:0;;-1:-1:-1;14390:471:0;;-1:-1:-1;;;;;14390:471:0:o;14869:536::-;15063:7;;;;15160:24;:7;15172:11;15160;:24::i;:::-;15142:42;-1:-1:-1;15195:12:0;15210:21;:4;15219:11;15210:8;:21::i;:::-;15195:36;-1:-1:-1;15242:13:0;15258:22;:5;15268:11;15258:9;:22::i;:::-;15242:38;-1:-1:-1;15291:23:0;15317:28;15242:38;15317:17;:7;15329:4;15317:11;:17::i;:28::-;15366:7;;;;-1:-1:-1;15392:4:0;;-1:-1:-1;14869:536:0;;-1:-1:-1;;;;;;;14869:536:0:o;2342:246::-;2400:7;2424:6;2420:47;;-1:-1:-1;2454:1:0;2447:8;;2420:47;2477:9;2489:5;2493:1;2489;:5;:::i;:::-;2477:17;-1:-1:-1;2522:1:0;2513:5;2517:1;2477:17;2513:5;:::i;:::-;:10;2505:56;;;;-1:-1:-1;;;2505:56:0;;7190:2:1;2505:56:0;;;7172:21:1;7229:2;7209:18;;;7202:30;7268:34;7248:18;;;7241:62;-1:-1:-1;;;7319:18:1;;;7312:31;7360:19;;2505:56:0;7162:223:1;14:160;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;707:398::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:2;;;857:6;849;842:22;804:2;901:9;888:23;920:31;945:5;920:31;:::i;:::-;970:5;-1:-1:-1;1027:2:1;1012:18;;999:32;1040:33;999:32;1040:33;:::i;:::-;1092:7;1082:17;;;794:311;;;;;:::o;1110:466::-;1187:6;1195;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1277:6;1269;1262:22;1224:2;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;-1:-1:-1;1447:2:1;1432:18;;1419:32;1460:33;1419:32;1460:33;:::i;:::-;1214:362;;1512:7;;-1:-1:-1;;;1566:2:1;1551:18;;;;1538:32;;1214:362::o;1581:325::-;1646:6;1654;1707:2;1695:9;1686:7;1682:23;1678:32;1675:2;;;1728:6;1720;1713:22;1675:2;1772:9;1759:23;1791:31;1816:5;1791:31;:::i;:::-;1841:5;-1:-1:-1;1865:35:1;1896:2;1881:18;;1865:35;:::i;:::-;1855:45;;1665:241;;;;;:::o;1911:325::-;1979:6;1987;2040:2;2028:9;2019:7;2015:23;2011:32;2008:2;;;2061:6;2053;2046:22;2008:2;2105:9;2092:23;2124:31;2149:5;2124:31;:::i;:::-;2174:5;2226:2;2211:18;;;;2198:32;;-1:-1:-1;;;1998:238:1:o;2241:190::-;2297:6;2350:2;2338:9;2329:7;2325:23;2321:32;2318:2;;;2371:6;2363;2356:22;2318:2;2399:26;2415:9;2399:26;:::i;2436:190::-;2495:6;2548:2;2536:9;2527:7;2523:23;2519:32;2516:2;;;2569:6;2561;2554:22;2516:2;-1:-1:-1;2597:23:1;;2506:120;-1:-1:-1;2506:120:1:o;2631:395::-;2717:6;2725;2733;2741;2794:3;2782:9;2773:7;2769:23;2765:33;2762:2;;;2816:6;2808;2801:22;2762:2;-1:-1:-1;;2844:23:1;;;2914:2;2899:18;;2886:32;;-1:-1:-1;2965:2:1;2950:18;;2937:32;;3016:2;3001:18;2988:32;;-1:-1:-1;2752:274:1;-1:-1:-1;2752:274:1:o;3665:603::-;3777:4;3806:2;3835;3824:9;3817:21;3867:6;3861:13;3910:6;3905:2;3894:9;3890:18;3883:34;3935:4;3948:140;3962:6;3959:1;3956:13;3948:140;;;4057:14;;;4053:23;;4047:30;4023:17;;;4042:2;4019:26;4012:66;3977:10;;3948:140;;;4106:6;4103:1;4100:13;4097:2;;;4176:4;4171:2;4162:6;4151:9;4147:22;4143:31;4136:45;4097:2;-1:-1:-1;4252:2:1;4231:15;-1:-1:-1;;4227:29:1;4212:45;;;;4259:2;4208:54;;3786:482;-1:-1:-1;;;3786:482:1:o;7390:356::-;7592:2;7574:21;;;7611:18;;;7604:30;7670:34;7665:2;7650:18;;7643:62;7737:2;7722:18;;7564:182::o;9558:983::-;9820:4;9868:3;9857:9;9853:19;9899:6;9888:9;9881:25;9925:2;9963:6;9958:2;9947:9;9943:18;9936:34;10006:3;10001:2;9990:9;9986:18;9979:31;10030:6;10065;10059:13;10096:6;10088;10081:22;10134:3;10123:9;10119:19;10112:26;;10173:2;10165:6;10161:15;10147:29;;10194:4;10207:195;10221:6;10218:1;10215:13;10207:195;;;10286:13;;-1:-1:-1;;;;;10282:39:1;10270:52;;10377:15;;;;10342:12;;;;10318:1;10236:9;10207:195;;;-1:-1:-1;;;;;;;10458:32:1;;;;10453:2;10438:18;;10431:60;-1:-1:-1;;;10522:3:1;10507:19;10500:35;10419:3;9829:712;-1:-1:-1;;;9829:712:1:o;10735:128::-;10775:3;10806:1;10802:6;10799:1;10796:13;10793:2;;;10812:18;;:::i;:::-;-1:-1:-1;10848:9:1;;10783:80::o;10868:217::-;10908:1;10934;10924:2;;-1:-1:-1;;;10959:31:1;;11013:4;11010:1;11003:15;11041:4;10966:1;11031:15;10924:2;-1:-1:-1;11070:9:1;;10914:171::o;11090:168::-;11130:7;11196:1;11192;11188:6;11184:14;11181:1;11178:21;11173:1;11166:9;11159:17;11155:45;11152:2;;;11203:18;;:::i;:::-;-1:-1:-1;11243:9:1;;11142:116::o;11263:125::-;11303:4;11331:1;11328;11325:8;11322:2;;;11336:18;;:::i;:::-;-1:-1:-1;11373:9:1;;11312:76::o;11393:127::-;11454:10;11449:3;11445:20;11442:1;11435:31;11485:4;11482:1;11475:15;11509:4;11506:1;11499:15;11525:131;-1:-1:-1;;;;;11600:31:1;;11590:42;;11580:2;;11646:1;11643;11636:12

Swarm Source

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