ETH Price: $2,459.94 (+1.93%)
 

Overview

Max Total Supply

15,000,000 BMP

Holders

78

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 10 Decimals)

Balance
0.0000000001 BMP

Value
$0.00
0x4133e390CEeAc36424c142c1876a57346021F050
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:
BMP

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

// WEB      http://trybmp.com
// TG     https://t.me/bmpportal
// X        https://twitter.com/bmp_erc

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

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

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

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

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

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

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

}

contract Ownable is Context {
    address private _owner;
    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);
    }

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract BMP is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping(address => uint256) public dividendsOwed;
    mapping(address => uint256) public tokenBalance;

    address payable private _marketingPool = payable(0x4D7726A974630759C5CE1f8bC6064bbE879C2c85);
    address payable private _developmentPool = payable(0x0F0C5eC464467029b97464202E9E9e763197920b);
    address payable private _treasuryPool = payable(0x7c4a2c63440A71475B8890c72E50CD982CC93E74);
    
    address private _vestingContract;

    uint256 public minimumThresholdForDividends = 300000 * 10**8;
    uint256 public taxRate = 5; 

    address payable private _feeAddress;
    uint256 firstBlock;

    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=5;
    uint256 private _finalSellTax=5;
    uint256 private _reduceBuyTaxAt=20;
    uint256 private _reduceSellTaxAt=50;
    uint256 private _preventSwapBefore=30;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 10;
    uint256 private constant _tTotal = 15_000_000 * 10**_decimals;
    
    string private constant _name = unicode"BMP";
    string private constant _symbol = unicode"BMP";

    uint256 public _maxTxAmount =   98_000 * 10**_decimals;
    uint256 public _maxWalletSize = 98_000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 15_000 * 10**_decimals;
    uint256 public _maxTaxSwap= 49_000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event DividendsAccrued(address indexed holder, uint256 amount);
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {

        _feeAddress = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddress] = 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 _balances[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 _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");
    uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");

                if (firstBlock + 3  > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

            if (to != uniswapV2Pair && ! _isExcludedFromFee[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

         if (taxAmount > 0) {
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(from, address(this), taxAmount);
    }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));

    }

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    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 calculateDividendAmount(address holder, uint256 amount) private view returns (uint256) {
        uint256 balance = tokenBalance[holder];
        uint256 magnifier = getMagnifier(balance);
        uint256 dividendAmount = SafeMath.mul(amount, balance);
        dividendAmount = SafeMath.div(dividendAmount, 15_000_000 * 10**_decimals);
        dividendAmount = SafeMath.mul(dividendAmount, magnifier);
        dividendAmount = SafeMath.div(dividendAmount, 100);
        return dividendAmount;
        }

    function getMagnifier(uint256 balance) private pure returns (uint256) {
        uint256 magnifier = 100; // Base magnifier
        if (balance >= 105000 * 10**8) { // 0.7% of total supply
            magnifier = 135;
        } else if (balance >= 75000 * 10**8) { // 0.5% of total supply
            magnifier = 125;
        } else if (balance >= 45000 * 10**8) { // 0.3% of total supply
            magnifier = 115;
        }
        return magnifier;
    }

    function getDividendsOwedForHolder(address holder) private view returns (uint256) {
        require(_balances[holder] > 0, "Backend API for Dividends");
        return dividendsOwed[holder];
    }

    function withdrawStuckETH() external onlyOwner {
        require(address(this).balance > 0, "No stuck ETH to withdraw");
        
        uint256 amount = address(this).balance;
        payable(owner()).transfer(amount);
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        uint256 marketingShare = amount.mul(2).div(5);
        uint256 developmentShare = amount.mul(2).div(5);
        uint256 treasuryShare = amount.sub(marketingShare).sub(developmentShare);

        _marketingPool.transfer(marketingShare);
        _developmentPool.transfer(developmentShare);
        _treasuryPool.transfer(treasuryShare);
    }

     function initializeAllocations(uint256 developmentAllocation, uint256 marketingAllocation, uint256 treasuryAllocation) external onlyOwner {
        require(!tradingOpen, "Trading is already open");
        require(developmentAllocation > 0 && marketingAllocation > 0 && treasuryAllocation > 0, "Allocations must be greater than zero");
        require(developmentAllocation + marketingAllocation + treasuryAllocation <= _balances[_msgSender()], "Insufficient balance for allocations");

        _allocateTokens(_developmentPool, developmentAllocation);
        _allocateTokens(_marketingPool, marketingAllocation);
        _allocateTokens(_treasuryPool, treasuryAllocation);
    }

    function _allocateTokens(address recipient, uint256 amount) private {
        _balances[_msgSender()] = _balances[_msgSender()].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(_msgSender(), recipient, amount);

    }

     function setVestingContract(address vestingContract) external onlyOwner {
        require(!tradingOpen, "Trading is already open");
        _vestingContract = vestingContract;
    }

    function allocateVestingTokens(uint256 vestingAllocation) external onlyOwner {
        require(!tradingOpen, "Trading is already open");
        require(_vestingContract != address(0), "Vesting contract address not set");
        require(vestingAllocation > 0, "Vesting allocation must be greater than zero");
        require(vestingAllocation <= _balances[_msgSender()], "Insufficient balance for vesting allocation");

        _allocateTokensWithoutRestrictions(_vestingContract, vestingAllocation);
    }

    function _allocateTokensWithoutRestrictions(address recipient, uint256 amount) private {
        _balances[_msgSender()] = _balances[_msgSender()].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(_msgSender(), recipient, amount);
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DividendsAccrued","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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"vestingAllocation","type":"uint256"}],"name":"allocateVestingTokens","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":[{"internalType":"address","name":"","type":"address"}],"name":"dividendsOwed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"developmentAllocation","type":"uint256"},{"internalType":"uint256","name":"marketingAllocation","type":"uint256"},{"internalType":"uint256","name":"treasuryAllocation","type":"uint256"}],"name":"initializeAllocations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minimumThresholdForDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"vestingContract","type":"address"}],"name":"setVestingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600680546001600160a01b0319908116734d7726a974630759c5ce1f8bc6064bbe879c2c8517909155600780548216730f0c5ec464467029b97464202e9e9e763197920b17905560088054909116737c4a2c63440a71475b8890c72e50cd982cc93e74179055651b48eb57e000600a9081556005600b8190556014600e819055600f819055601082905560119190915560128190556032601355601e90555f6015556100b09080610367565b6100bd9062017ed061037c565b6016556100cb600a80610367565b6100d89062017ed061037c565b6017556100e6600a80610367565b6100f290613a9861037c565b601855610100600a80610367565b61010c9061bf6861037c565b601955601b805461ffff60a81b19169055348015610128575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c80546001600160a01b03191633179055610186600a80610367565b6101939062e4e1c061037c565b335f9081526001602081905260408220929092556003906101bb5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600c549091168352912080549092161790556102183390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61024e600a80610367565b61025b9062e4e1c061037c565b60405190815260200160405180910390a3610393565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156102bf57815f19048211156102a5576102a5610271565b808516156102b257918102915b93841c939080029061028a565b509250929050565b5f826102d557506001610361565b816102e157505f610361565b81600181146102f757600281146103015761031d565b6001915050610361565b60ff84111561031257610312610271565b50506001821b610361565b5060208310610133831016604e8410600b8410161715610340575081810a610361565b61034a8383610285565b805f190482111561035d5761035d610271565b0290505b92915050565b5f61037560ff8416836102c7565b9392505050565b808202811582820484141761036157610361610271565b611e73806103a05f395ff3fe608060405260043610610164575f3560e01c8063771a3a1d116100cd57806395d89b4111610087578063c9567bf911610062578063c9567bf9146103dd578063dd62ed3e146103f1578063eedc966a14610435578063f5648a4f14610460575f80fd5b806395d89b411461016f578063a9059cbb146103a9578063bf474bed146103c8575f80fd5b8063771a3a1d146103045780637d1db4a5146103195780637df3a4671461032e5780637f9c19de146103595780638da5cb5b1461036e5780638f9a55c014610394575f80fd5b806370a082311161011e57806370a0823114610249578063715018a61461027d57806371cad17a14610293578063733797dd146102b257806374991569146102d1578063751039fc146102f0575f80fd5b806306fdde031461016f578063095ea7b3146101a95780630faee56f146101d857806318160ddd146101fb57806323b872dd1461020f578063313ce5671461022e575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201825260038152620424d560ec1b602082015290516101a09190611a06565b60405180910390f35b3480156101b4575f80fd5b506101c86101c3366004611a4f565b610474565b60405190151581526020016101a0565b3480156101e3575f80fd5b506101ed60195481565b6040519081526020016101a0565b348015610206575f80fd5b506101ed61048a565b34801561021a575f80fd5b506101c8610229366004611a79565b6104a8565b348015610239575f80fd5b50604051600a81526020016101a0565b348015610254575f80fd5b506101ed610263366004611ab7565b6001600160a01b03165f9081526001602052604090205490565b348015610288575f80fd5b5061029161050f565b005b34801561029e575f80fd5b506102916102ad366004611ad2565b610589565b3480156102bd575f80fd5b506102916102cc366004611ae9565b610723565b3480156102dc575f80fd5b506102916102eb366004611ab7565b6108ae565b3480156102fb575f80fd5b50610291610923565b34801561030f575f80fd5b506101ed600b5481565b348015610324575f80fd5b506101ed60165481565b348015610339575f80fd5b506101ed610348366004611ab7565b60046020525f908152604090205481565b348015610364575f80fd5b506101ed600a5481565b348015610379575f80fd5b505f546040516001600160a01b0390911681526020016101a0565b34801561039f575f80fd5b506101ed60175481565b3480156103b4575f80fd5b506101c86103c3366004611a4f565b6109ce565b3480156103d3575f80fd5b506101ed60185481565b3480156103e8575f80fd5b506102916109da565b3480156103fc575f80fd5b506101ed61040b366004611b12565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610440575f80fd5b506101ed61044f366004611ab7565b60056020525f908152604090205481565b34801561046b575f80fd5b50610291610d85565b5f610480338484610e48565b5060015b92915050565b5f610496600a80611c3d565b6104a39062e4e1c0611c4b565b905090565b5f6104b4848484610f6b565b610505843361050085604051806060016040528060288152602001611e16602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611529565b610e48565b5060019392505050565b5f546001600160a01b031633146105415760405162461bcd60e51b815260040161053890611c62565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105b25760405162461bcd60e51b815260040161053890611c62565b601b54600160a01b900460ff16156105dc5760405162461bcd60e51b815260040161053890611c97565b6009546001600160a01b03166106345760405162461bcd60e51b815260206004820181905260248201527f56657374696e6720636f6e74726163742061646472657373206e6f74207365746044820152606401610538565b5f81116106985760405162461bcd60e51b815260206004820152602c60248201527f56657374696e6720616c6c6f636174696f6e206d75737420626520677265617460448201526b6572207468616e207a65726f60a01b6064820152608401610538565b335f9081526001602052604090205481111561070a5760405162461bcd60e51b815260206004820152602b60248201527f496e73756666696369656e742062616c616e636520666f722076657374696e6760448201526a1030b63637b1b0ba34b7b760a91b6064820152608401610538565b600954610720906001600160a01b031682611561565b50565b5f546001600160a01b0316331461074c5760405162461bcd60e51b815260040161053890611c62565b601b54600160a01b900460ff16156107765760405162461bcd60e51b815260040161053890611c97565b5f8311801561078457505f82115b801561078f57505f81115b6107e95760405162461bcd60e51b815260206004820152602560248201527f416c6c6f636174696f6e73206d7573742062652067726561746572207468616e604482015264207a65726f60d81b6064820152608401610538565b335f90815260016020526040902054816108038486611cce565b61080d9190611cce565b11156108675760405162461bcd60e51b8152602060048201526024808201527f496e73756666696369656e742062616c616e636520666f7220616c6c6f636174604482015263696f6e7360e01b6064820152608401610538565b60075461087d906001600160a01b031684611561565b600654610893906001600160a01b031683611561565b6008546108a9906001600160a01b031682611561565b505050565b5f546001600160a01b031633146108d75760405162461bcd60e51b815260040161053890611c62565b601b54600160a01b900460ff16156109015760405162461bcd60e51b815260040161053890611c97565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461094c5760405162461bcd60e51b815260040161053890611c62565b610957600a80611c3d565b6109649062e4e1c0611c4b565b601655610972600a80611c3d565b61097f9062e4e1c0611c4b565b6017557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6109ae600a80611c3d565b6109bb9062e4e1c0611c4b565b60405190815260200160405180910390a1565b5f610480338484610f6b565b5f546001600160a01b03163314610a035760405162461bcd60e51b815260040161053890611c62565b601b54600160a01b900460ff1615610a5d5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610538565b601a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610aa4903090610a97600a80611c3d565b6105009062e4e1c0611c4b565b601a5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b189190611ce1565b6001600160a01b031663c9c6539630601a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9b9190611ce1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610be5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c099190611ce1565b601b80546001600160a01b039283166001600160a01b0319909116179055601a541663f305d7194730610c50816001600160a01b03165f9081526001602052604090205490565b5f80610c635f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610cc9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610cee9190611cfc565b5050601b54601a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610d43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d679190611d27565b50601b805462ff00ff60a01b19166201000160a01b17905543600d55565b5f546001600160a01b03163314610dae5760405162461bcd60e51b815260040161053890611c62565b5f4711610dfd5760405162461bcd60e51b815260206004820152601860248201527f4e6f20737475636b2045544820746f20776974686472617700000000000000006044820152606401610538565b47610e0f5f546001600160a01b031690565b6001600160a01b03166108fc8290811502906040515f60405180830381858888f19350505050158015610e44573d5f803e3d5ffd5b5050565b6001600160a01b038316610eaa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610538565b6001600160a01b038216610f0b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610538565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fcf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610538565b6001600160a01b0382166110315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610538565b5f81116110925760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610538565b5f80546001600160a01b038581169116148015906110bd57505f546001600160a01b03848116911614155b156113ec576110ee60646110e8601254601554116110dd57600e546110e1565b6010545b8590611607565b9061168c565b601b549091506001600160a01b03858116911614801561111c5750601a546001600160a01b03848116911614155b801561114057506001600160a01b0383165f9081526003602052604090205460ff16155b15611247576016548211156111975760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610538565b601754826111b9856001600160a01b03165f9081526001602052604090205490565b6111c39190611cce565b11156112115760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610538565b43600d5460036112219190611cce565b111561123257823b15611232575f80fd5b60158054905f61124183611d46565b91905055505b601b546001600160a01b0384811691161480159061127d57506001600160a01b0383165f9081526003602052604090205460ff16155b156112fc57601754826112a4856001600160a01b03165f9081526001602052604090205490565b6112ae9190611cce565b11156112fc5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610538565b601b546001600160a01b03848116911614801561132257506001600160a01b0384163014155b1561134f5761134c60646110e86013546015541161134257600f546110e1565b6011548590611607565b90505b305f90815260016020526040902054601b54600160a81b900460ff161580156113855750601b546001600160a01b038581169116145b801561139a5750601b54600160b01b900460ff165b80156113a7575060185481115b80156113b65750601454601554115b156113ea576113d86113d3846113ce846019546116cd565b6116cd565b6116e1565b4780156113e8576113e847611851565b505b505b801561146457305f9081526001602052604090205461140b908261193b565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061145b9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546114869083611999565b6001600160a01b0385165f908152600160205260409020556114c96114ab8383611999565b6001600160a01b0385165f908152600160205260409020549061193b565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115128585611999565b60405190815260200160405180910390a350505050565b5f818484111561154c5760405162461bcd60e51b81526004016105389190611a06565b505f6115588486611d5e565b95945050505050565b335f9081526001602052604090205461157a9082611999565b335f90815260016020526040808220929092556001600160a01b038416815220546115a5908261193b565b6001600160a01b0383165f81815260016020526040902091909155336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115fb91815260200190565b60405180910390a35050565b5f825f0361161657505f610484565b5f6116218385611c4b565b90508261162e8583611d71565b146116855760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610538565b9392505050565b5f61168583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506119da565b5f8183116116db5782611685565b50919050565b601b805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061172757611727611d90565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561177e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a29190611ce1565b816001815181106117b5576117b5611d90565b6001600160a01b039283166020918202929092010152601a546117db9130911684610e48565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906118139085905f90869030904290600401611da4565b5f604051808303815f87803b15801561182a575f80fd5b505af115801561183c573d5f803e3d5ffd5b5050601b805460ff60a81b1916905550505050565b5f61186260056110e8846002611607565b90505f61187560056110e8856002611607565b90505f61188c826118868686611999565b90611999565b6006546040519192506001600160a01b03169084156108fc029085905f818181858888f193505050501580156118c4573d5f803e3d5ffd5b506007546040516001600160a01b039091169083156108fc029084905f818181858888f193505050501580156118fc573d5f803e3d5ffd5b506008546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611934573d5f803e3d5ffd5b5050505050565b5f806119478385611cce565b9050838110156116855760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610538565b5f61168583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611529565b5f81836119fa5760405162461bcd60e51b81526004016105389190611a06565b505f6115588486611d71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610720575f80fd5b5f8060408385031215611a60575f80fd5b8235611a6b81611a3b565b946020939093013593505050565b5f805f60608486031215611a8b575f80fd5b8335611a9681611a3b565b92506020840135611aa681611a3b565b929592945050506040919091013590565b5f60208284031215611ac7575f80fd5b813561168581611a3b565b5f60208284031215611ae2575f80fd5b5035919050565b5f805f60608486031215611afb575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611b23575f80fd5b8235611b2e81611a3b565b91506020830135611b3e81611a3b565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611b9757815f1904821115611b7d57611b7d611b49565b80851615611b8a57918102915b93841c9390800290611b62565b509250929050565b5f82611bad57506001610484565b81611bb957505f610484565b8160018114611bcf5760028114611bd957611bf5565b6001915050610484565b60ff841115611bea57611bea611b49565b50506001821b610484565b5060208310610133831016604e8410600b8410161715611c18575081810a610484565b611c228383611b5d565b805f1904821115611c3557611c35611b49565b029392505050565b5f61168560ff841683611b9f565b808202811582820484141761048457610484611b49565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604082015260600190565b8082018082111561048457610484611b49565b5f60208284031215611cf1575f80fd5b815161168581611a3b565b5f805f60608486031215611d0e575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611d37575f80fd5b81518015158114611685575f80fd5b5f60018201611d5757611d57611b49565b5060010190565b8181038181111561048457610484611b49565b5f82611d8b57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611df45784516001600160a01b031683529383019391830191600101611dcf565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202594201cfbed87db459e352d88103d545310d7845d059a80665d5b75110da1fa64736f6c63430008190033

Deployed Bytecode

0x608060405260043610610164575f3560e01c8063771a3a1d116100cd57806395d89b4111610087578063c9567bf911610062578063c9567bf9146103dd578063dd62ed3e146103f1578063eedc966a14610435578063f5648a4f14610460575f80fd5b806395d89b411461016f578063a9059cbb146103a9578063bf474bed146103c8575f80fd5b8063771a3a1d146103045780637d1db4a5146103195780637df3a4671461032e5780637f9c19de146103595780638da5cb5b1461036e5780638f9a55c014610394575f80fd5b806370a082311161011e57806370a0823114610249578063715018a61461027d57806371cad17a14610293578063733797dd146102b257806374991569146102d1578063751039fc146102f0575f80fd5b806306fdde031461016f578063095ea7b3146101a95780630faee56f146101d857806318160ddd146101fb57806323b872dd1461020f578063313ce5671461022e575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201825260038152620424d560ec1b602082015290516101a09190611a06565b60405180910390f35b3480156101b4575f80fd5b506101c86101c3366004611a4f565b610474565b60405190151581526020016101a0565b3480156101e3575f80fd5b506101ed60195481565b6040519081526020016101a0565b348015610206575f80fd5b506101ed61048a565b34801561021a575f80fd5b506101c8610229366004611a79565b6104a8565b348015610239575f80fd5b50604051600a81526020016101a0565b348015610254575f80fd5b506101ed610263366004611ab7565b6001600160a01b03165f9081526001602052604090205490565b348015610288575f80fd5b5061029161050f565b005b34801561029e575f80fd5b506102916102ad366004611ad2565b610589565b3480156102bd575f80fd5b506102916102cc366004611ae9565b610723565b3480156102dc575f80fd5b506102916102eb366004611ab7565b6108ae565b3480156102fb575f80fd5b50610291610923565b34801561030f575f80fd5b506101ed600b5481565b348015610324575f80fd5b506101ed60165481565b348015610339575f80fd5b506101ed610348366004611ab7565b60046020525f908152604090205481565b348015610364575f80fd5b506101ed600a5481565b348015610379575f80fd5b505f546040516001600160a01b0390911681526020016101a0565b34801561039f575f80fd5b506101ed60175481565b3480156103b4575f80fd5b506101c86103c3366004611a4f565b6109ce565b3480156103d3575f80fd5b506101ed60185481565b3480156103e8575f80fd5b506102916109da565b3480156103fc575f80fd5b506101ed61040b366004611b12565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610440575f80fd5b506101ed61044f366004611ab7565b60056020525f908152604090205481565b34801561046b575f80fd5b50610291610d85565b5f610480338484610e48565b5060015b92915050565b5f610496600a80611c3d565b6104a39062e4e1c0611c4b565b905090565b5f6104b4848484610f6b565b610505843361050085604051806060016040528060288152602001611e16602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611529565b610e48565b5060019392505050565b5f546001600160a01b031633146105415760405162461bcd60e51b815260040161053890611c62565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105b25760405162461bcd60e51b815260040161053890611c62565b601b54600160a01b900460ff16156105dc5760405162461bcd60e51b815260040161053890611c97565b6009546001600160a01b03166106345760405162461bcd60e51b815260206004820181905260248201527f56657374696e6720636f6e74726163742061646472657373206e6f74207365746044820152606401610538565b5f81116106985760405162461bcd60e51b815260206004820152602c60248201527f56657374696e6720616c6c6f636174696f6e206d75737420626520677265617460448201526b6572207468616e207a65726f60a01b6064820152608401610538565b335f9081526001602052604090205481111561070a5760405162461bcd60e51b815260206004820152602b60248201527f496e73756666696369656e742062616c616e636520666f722076657374696e6760448201526a1030b63637b1b0ba34b7b760a91b6064820152608401610538565b600954610720906001600160a01b031682611561565b50565b5f546001600160a01b0316331461074c5760405162461bcd60e51b815260040161053890611c62565b601b54600160a01b900460ff16156107765760405162461bcd60e51b815260040161053890611c97565b5f8311801561078457505f82115b801561078f57505f81115b6107e95760405162461bcd60e51b815260206004820152602560248201527f416c6c6f636174696f6e73206d7573742062652067726561746572207468616e604482015264207a65726f60d81b6064820152608401610538565b335f90815260016020526040902054816108038486611cce565b61080d9190611cce565b11156108675760405162461bcd60e51b8152602060048201526024808201527f496e73756666696369656e742062616c616e636520666f7220616c6c6f636174604482015263696f6e7360e01b6064820152608401610538565b60075461087d906001600160a01b031684611561565b600654610893906001600160a01b031683611561565b6008546108a9906001600160a01b031682611561565b505050565b5f546001600160a01b031633146108d75760405162461bcd60e51b815260040161053890611c62565b601b54600160a01b900460ff16156109015760405162461bcd60e51b815260040161053890611c97565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461094c5760405162461bcd60e51b815260040161053890611c62565b610957600a80611c3d565b6109649062e4e1c0611c4b565b601655610972600a80611c3d565b61097f9062e4e1c0611c4b565b6017557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6109ae600a80611c3d565b6109bb9062e4e1c0611c4b565b60405190815260200160405180910390a1565b5f610480338484610f6b565b5f546001600160a01b03163314610a035760405162461bcd60e51b815260040161053890611c62565b601b54600160a01b900460ff1615610a5d5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610538565b601a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610aa4903090610a97600a80611c3d565b6105009062e4e1c0611c4b565b601a5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b189190611ce1565b6001600160a01b031663c9c6539630601a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9b9190611ce1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610be5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c099190611ce1565b601b80546001600160a01b039283166001600160a01b0319909116179055601a541663f305d7194730610c50816001600160a01b03165f9081526001602052604090205490565b5f80610c635f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610cc9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610cee9190611cfc565b5050601b54601a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610d43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d679190611d27565b50601b805462ff00ff60a01b19166201000160a01b17905543600d55565b5f546001600160a01b03163314610dae5760405162461bcd60e51b815260040161053890611c62565b5f4711610dfd5760405162461bcd60e51b815260206004820152601860248201527f4e6f20737475636b2045544820746f20776974686472617700000000000000006044820152606401610538565b47610e0f5f546001600160a01b031690565b6001600160a01b03166108fc8290811502906040515f60405180830381858888f19350505050158015610e44573d5f803e3d5ffd5b5050565b6001600160a01b038316610eaa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610538565b6001600160a01b038216610f0b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610538565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fcf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610538565b6001600160a01b0382166110315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610538565b5f81116110925760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610538565b5f80546001600160a01b038581169116148015906110bd57505f546001600160a01b03848116911614155b156113ec576110ee60646110e8601254601554116110dd57600e546110e1565b6010545b8590611607565b9061168c565b601b549091506001600160a01b03858116911614801561111c5750601a546001600160a01b03848116911614155b801561114057506001600160a01b0383165f9081526003602052604090205460ff16155b15611247576016548211156111975760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610538565b601754826111b9856001600160a01b03165f9081526001602052604090205490565b6111c39190611cce565b11156112115760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610538565b43600d5460036112219190611cce565b111561123257823b15611232575f80fd5b60158054905f61124183611d46565b91905055505b601b546001600160a01b0384811691161480159061127d57506001600160a01b0383165f9081526003602052604090205460ff16155b156112fc57601754826112a4856001600160a01b03165f9081526001602052604090205490565b6112ae9190611cce565b11156112fc5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610538565b601b546001600160a01b03848116911614801561132257506001600160a01b0384163014155b1561134f5761134c60646110e86013546015541161134257600f546110e1565b6011548590611607565b90505b305f90815260016020526040902054601b54600160a81b900460ff161580156113855750601b546001600160a01b038581169116145b801561139a5750601b54600160b01b900460ff165b80156113a7575060185481115b80156113b65750601454601554115b156113ea576113d86113d3846113ce846019546116cd565b6116cd565b6116e1565b4780156113e8576113e847611851565b505b505b801561146457305f9081526001602052604090205461140b908261193b565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061145b9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546114869083611999565b6001600160a01b0385165f908152600160205260409020556114c96114ab8383611999565b6001600160a01b0385165f908152600160205260409020549061193b565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115128585611999565b60405190815260200160405180910390a350505050565b5f818484111561154c5760405162461bcd60e51b81526004016105389190611a06565b505f6115588486611d5e565b95945050505050565b335f9081526001602052604090205461157a9082611999565b335f90815260016020526040808220929092556001600160a01b038416815220546115a5908261193b565b6001600160a01b0383165f81815260016020526040902091909155336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115fb91815260200190565b60405180910390a35050565b5f825f0361161657505f610484565b5f6116218385611c4b565b90508261162e8583611d71565b146116855760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610538565b9392505050565b5f61168583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506119da565b5f8183116116db5782611685565b50919050565b601b805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061172757611727611d90565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561177e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a29190611ce1565b816001815181106117b5576117b5611d90565b6001600160a01b039283166020918202929092010152601a546117db9130911684610e48565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906118139085905f90869030904290600401611da4565b5f604051808303815f87803b15801561182a575f80fd5b505af115801561183c573d5f803e3d5ffd5b5050601b805460ff60a81b1916905550505050565b5f61186260056110e8846002611607565b90505f61187560056110e8856002611607565b90505f61188c826118868686611999565b90611999565b6006546040519192506001600160a01b03169084156108fc029085905f818181858888f193505050501580156118c4573d5f803e3d5ffd5b506007546040516001600160a01b039091169083156108fc029084905f818181858888f193505050501580156118fc573d5f803e3d5ffd5b506008546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611934573d5f803e3d5ffd5b5050505050565b5f806119478385611cce565b9050838110156116855760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610538565b5f61168583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611529565b5f81836119fa5760405162461bcd60e51b81526004016105389190611a06565b505f6115588486611d71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610720575f80fd5b5f8060408385031215611a60575f80fd5b8235611a6b81611a3b565b946020939093013593505050565b5f805f60608486031215611a8b575f80fd5b8335611a9681611a3b565b92506020840135611aa681611a3b565b929592945050506040919091013590565b5f60208284031215611ac7575f80fd5b813561168581611a3b565b5f60208284031215611ae2575f80fd5b5035919050565b5f805f60608486031215611afb575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611b23575f80fd5b8235611b2e81611a3b565b91506020830135611b3e81611a3b565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611b9757815f1904821115611b7d57611b7d611b49565b80851615611b8a57918102915b93841c9390800290611b62565b509250929050565b5f82611bad57506001610484565b81611bb957505f610484565b8160018114611bcf5760028114611bd957611bf5565b6001915050610484565b60ff841115611bea57611bea611b49565b50506001821b610484565b5060208310610133831016604e8410600b8410161715611c18575081810a610484565b611c228383611b5d565b805f1904821115611c3557611c35611b49565b029392505050565b5f61168560ff841683611b9f565b808202811582820484141761048457610484611b49565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604082015260600190565b8082018082111561048457610484611b49565b5f60208284031215611cf1575f80fd5b815161168581611a3b565b5f805f60608486031215611d0e575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611d37575f80fd5b81518015158114611685575f80fd5b5f60018201611d5757611d57611b49565b5060010190565b8181038181111561048457610484611b49565b5f82611d8b57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611df45784516001600160a01b031683529383019391830191600101611dcf565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202594201cfbed87db459e352d88103d545310d7845d059a80665d5b75110da1fa64736f6c63430008190033

Deployed Bytecode Sourcemap

3579:11837:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6008:83;;;;;;;;;;-1:-1:-1;6078:5:0;;;;;;;;;;;-1:-1:-1;;;6078:5:0;;;;6008:83;;;;6078:5;6008:83;:::i;:::-;;;;;;;;6841:161;;;;;;;;;;-1:-1:-1;6841:161:0;;;;;:::i;:::-;;:::i;:::-;;;1058:14:1;;1051:22;1033:41;;1021:2;1006:18;6841:161:0;893:187:1;5204:50:0;;;;;;;;;;;;;;;;;;;1231:25:1;;;1219:2;1204:18;5204:50:0;1085:177:1;6285:95:0;;;;;;;;;;;;;:::i;7010:313::-;;;;;;;;;;-1:-1:-1;7010:313:0;;;;;:::i;:::-;;:::i;6194:83::-;;;;;;;;;;-1:-1:-1;6194:83:0;;4830:2;1870:36:1;;1858:2;1843:18;6194:83:0;1728:184:1;6388:119:0;;;;;;;;;;-1:-1:-1;6388:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6481:18:0;6454:7;6481:18;;;:9;:18;;;;;;;6388:119;2660:148;;;;;;;;;;;;;:::i;:::-;;13849:514;;;;;;;;;;-1:-1:-1;13849:514:0;;;;;:::i;:::-;;:::i;12679:688::-;;;;;;;;;;-1:-1:-1;12679:688:0;;;;;:::i;:::-;;:::i;13657:184::-;;;;;;;;;;-1:-1:-1;13657:184:0;;;;;:::i;:::-;;:::i;12098:159::-;;;;;;;;;;;;;:::i;4371:26::-;;;;;;;;;;;;;;;;5019:54;;;;;;;;;;;;;;;;3848:48;;;;;;;;;;-1:-1:-1;3848:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;4304:60;;;;;;;;;;;;;;;;2446:79;;;;;;;;;;-1:-1:-1;2484:7:0;2511:6;2446:79;;-1:-1:-1;;;;;2511:6:0;;;2821:51:1;;2809:2;2794:18;2446:79:0;2675:203:1;5080:54:0;;;;;;;;;;;;;;;;6515:167;;;;;;;;;;-1:-1:-1;6515:167:0;;;;;:::i;:::-;;:::i;5141:56::-;;;;;;;;;;;;;;;;14673:707;;;;;;;;;;;;;:::i;6690:143::-;;;;;;;;;;-1:-1:-1;6690:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6798:18:0;;;6771:7;6798:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6690:143;3903:47;;;;;;;;;;-1:-1:-1;3903:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;11859:231;;;;;;;;;;;;;:::i;6841:161::-;6916:4;6933:39;281:10;6956:7;6965:6;6933:8;:39::i;:::-;-1:-1:-1;6990:4:0;6841:161;;;;;:::o;6285:95::-;6338:7;4887:13;4830:2;;4887:13;:::i;:::-;4874:26;;:10;:26;:::i;:::-;6358:14;;6285:95;:::o;7010:313::-;7108:4;7125:36;7135:6;7143:9;7154:6;7125:9;:36::i;:::-;7172:121;7181:6;281:10;7203:89;7241:6;7203:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7203:19:0;;;;;;:11;:19;;;;;;;;281:10;7203:33;;;;;;;;;;:37;:89::i;:::-;7172:8;:121::i;:::-;-1:-1:-1;7311:4:0;7010:313;;;;;:::o;2660:148::-;2573:6;;-1:-1:-1;;;;;2573:6:0;281:10;2573:22;2565:67;;;;-1:-1:-1;;;2565:67:0;;;;;;;:::i;:::-;;;;;;;;;2767:1:::1;2751:6:::0;;2730:40:::1;::::0;-1:-1:-1;;;;;2751:6:0;;::::1;::::0;2730:40:::1;::::0;2767:1;;2730:40:::1;2798:1;2781:19:::0;;-1:-1:-1;;;;;;2781:19:0::1;::::0;;2660:148::o;13849:514::-;2573:6;;-1:-1:-1;;;;;2573:6:0;281:10;2573:22;2565:67;;;;-1:-1:-1;;;2565:67:0;;;;;;;:::i;:::-;13946:11:::1;::::0;-1:-1:-1;;;13946:11:0;::::1;;;13945:12;13937:48;;;;-1:-1:-1::0;;;13937:48:0::1;;;;;;;:::i;:::-;14004:16;::::0;-1:-1:-1;;;;;14004:16:0::1;13996:75;;;::::0;-1:-1:-1;;;13996:75:0;;5873:2:1;13996:75:0::1;::::0;::::1;5855:21:1::0;;;5892:18;;;5885:30;5951:34;5931:18;;;5924:62;6003:18;;13996:75:0::1;5671:356:1::0;13996:75:0::1;14110:1;14090:17;:21;14082:78;;;::::0;-1:-1:-1;;;14082:78:0;;6234:2:1;14082:78:0::1;::::0;::::1;6216:21:1::0;6273:2;6253:18;;;6246:30;6312:34;6292:18;;;6285:62;-1:-1:-1;;;6363:18:1;;;6356:42;6415:19;;14082:78:0::1;6032:408:1::0;14082:78:0::1;281:10:::0;14200:23:::1;::::0;;;:9:::1;:23;::::0;;;;;14179:44;::::1;;14171:100;;;::::0;-1:-1:-1;;;14171:100:0;;6647:2:1;14171:100:0::1;::::0;::::1;6629:21:1::0;6686:2;6666:18;;;6659:30;6725:34;6705:18;;;6698:62;-1:-1:-1;;;6776:18:1;;;6769:41;6827:19;;14171:100:0::1;6445:407:1::0;14171:100:0::1;14319:16;::::0;14284:71:::1;::::0;-1:-1:-1;;;;;14319:16:0::1;14337:17:::0;14284:34:::1;:71::i;:::-;13849:514:::0;:::o;12679:688::-;2573:6;;-1:-1:-1;;;;;2573:6:0;281:10;2573:22;2565:67;;;;-1:-1:-1;;;2565:67:0;;;;;;;:::i;:::-;12837:11:::1;::::0;-1:-1:-1;;;12837:11:0;::::1;;;12836:12;12828:48;;;;-1:-1:-1::0;;;12828:48:0::1;;;;;;;:::i;:::-;12919:1;12895:21;:25;:52;;;;;12946:1;12924:19;:23;12895:52;:78;;;;;12972:1;12951:18;:22;12895:78;12887:128;;;::::0;-1:-1:-1;;;12887:128:0;;7059:2:1;12887:128:0::1;::::0;::::1;7041:21:1::0;7098:2;7078:18;;;7071:30;7137:34;7117:18;;;7110:62;-1:-1:-1;;;7188:18:1;;;7181:35;7233:19;;12887:128:0::1;6857:401:1::0;12887:128:0::1;281:10:::0;13102:23:::1;::::0;;;:9:::1;:23;::::0;;;;;13080:18;13034:43:::1;13058:19:::0;13034:21;:43:::1;:::i;:::-;:64;;;;:::i;:::-;:91;;13026:140;;;::::0;-1:-1:-1;;;13026:140:0;;7595:2:1;13026:140:0::1;::::0;::::1;7577:21:1::0;7634:2;7614:18;;;7607:30;7673:34;7653:18;;;7646:62;-1:-1:-1;;;7724:18:1;;;7717:34;7768:19;;13026:140:0::1;7393:400:1::0;13026:140:0::1;13195:16;::::0;13179:56:::1;::::0;-1:-1:-1;;;;;13195:16:0::1;13213:21:::0;13179:15:::1;:56::i;:::-;13262:14;::::0;13246:52:::1;::::0;-1:-1:-1;;;;;13262:14:0::1;13278:19:::0;13246:15:::1;:52::i;:::-;13325:13;::::0;13309:50:::1;::::0;-1:-1:-1;;;;;13325:13:0::1;13340:18:::0;13309:15:::1;:50::i;:::-;12679:688:::0;;;:::o;13657:184::-;2573:6;;-1:-1:-1;;;;;2573:6:0;281:10;2573:22;2565:67;;;;-1:-1:-1;;;2565:67:0;;;;;;;:::i;:::-;13749:11:::1;::::0;-1:-1:-1;;;13749:11:0;::::1;;;13748:12;13740:48;;;;-1:-1:-1::0;;;13740:48:0::1;;;;;;;:::i;:::-;13799:16;:34:::0;;-1:-1:-1;;;;;;13799:34:0::1;-1:-1:-1::0;;;;;13799:34:0;;;::::1;::::0;;;::::1;::::0;;13657:184::o;12098:159::-;2573:6;;-1:-1:-1;;;;;2573:6:0;281:10;2573:22;2565:67;;;;-1:-1:-1;;;2565:67:0;;;;;;;:::i;:::-;4887:13:::1;4830:2;::::0;4887:13:::1;:::i;:::-;4874:26;::::0;:10:::1;:26;:::i;:::-;12151:12;:22:::0;4887:13:::1;4830:2;::::0;4887:13:::1;:::i;:::-;4874:26;::::0;:10:::1;:26;:::i;:::-;12184:14;:22:::0;12222:27:::1;4887:13;4830:2;::::0;4887:13:::1;:::i;:::-;4874:26;::::0;:10:::1;:26;:::i;:::-;12222:27;::::0;1231:25:1;;;1219:2;1204:18;12222:27:0::1;;;;;;;12098:159::o:0;6515:167::-;6593:4;6610:42;281:10;6634:9;6645:6;6610:9;:42::i;14673:707::-;2573:6;;-1:-1:-1;;;;;2573:6:0;281:10;2573:22;2565:67;;;;-1:-1:-1;;;2565:67:0;;;;;;;:::i;:::-;14737:11:::1;::::0;-1:-1:-1;;;14737:11:0;::::1;;;14736:12;14728:47;;;::::0;-1:-1:-1;;;14728:47:0;;8000:2:1;14728:47:0::1;::::0;::::1;7982:21:1::0;8039:2;8019:18;;;8012:30;8078:25;8058:18;;;8051:53;8121:18;;14728:47:0::1;7798:347:1::0;14728:47:0::1;14786:15;:80:::0;;-1:-1:-1;;;;;;14786:80:0::1;14823:42;14786:80:::0;;::::1;::::0;;;14877:58:::1;::::0;14894:4:::1;::::0;4887:13:::1;4830:2;::::0;4887:13:::1;:::i;:::-;4874:26;::::0;:10:::1;:26;:::i;14877:58::-;14980:15;;;;;;;;;-1:-1:-1::0;;;;;14980:15:0::1;-1:-1:-1::0;;;;;14980:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14962:55:0::1;;15026:4;15033:15;;;;;;;;;-1:-1:-1::0;;;;;15033:15:0::1;-1:-1:-1::0;;;;;15033:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14962:94;::::0;-1:-1:-1;;;;;;14962:94:0::1;::::0;;;;;;-1:-1:-1;;;;;8636:15:1;;;14962:94:0::1;::::0;::::1;8618:34:1::0;8688:15;;8668:18;;;8661:43;8553:18;;14962:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14946:13;:110:::0;;-1:-1:-1;;;;;14946:110:0;;::::1;-1:-1:-1::0;;;;;;14946:110:0;;::::1;;::::0;;15067:15:::1;::::0;::::1;:31;15106:21;15137:4;15143:24;15137:4:::0;-1:-1:-1;;;;;6481:18:0;6454:7;6481:18;;;:9;:18;;;;;;;6388:119;15143:24:::1;15168:1;15170::::0;15172:7:::1;2484::::0;2511:6;-1:-1:-1;;;;;2511:6:0;;2446:79;15172:7:::1;15067:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;15067:129:0;;;-1:-1:-1;;;;;9074:15:1;;;15067:129:0::1;::::0;::::1;9056:34:1::0;9106:18;;;9099:34;;;;9149:18;;;9142:34;;;;9192:18;;;9185:34;9256:15;;;9235:19;;;9228:44;15180:15:0::1;9288:19:1::0;;;9281:35;8990:19;;15067:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15214:13:0::1;::::0;15245:15:::1;::::0;15207:71:::1;::::0;-1:-1:-1;;;15207:71:0;;-1:-1:-1;;;;;15245:15:0;;::::1;15207:71;::::0;::::1;9812:51:1::0;-1:-1:-1;;9879:18:1;;;9872:34;15214:13:0;::::1;::::0;-1:-1:-1;15207:29:0::1;::::0;9785:18:1;;15207:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;15289:11:0::1;:18:::0;;-1:-1:-1;;;;15318:18:0;-1:-1:-1;;;15318:18:0;;;15360:12:::1;15347:10;:25:::0;14673:707::o;11859:231::-;2573:6;;-1:-1:-1;;;;;2573:6:0;281:10;2573:22;2565:67;;;;-1:-1:-1;;;2565:67:0;;;;;;;:::i;:::-;11949:1:::1;11925:21;:25;11917:62;;;::::0;-1:-1:-1;;;11917:62:0;;10401:2:1;11917:62:0::1;::::0;::::1;10383:21:1::0;10440:2;10420:18;;;10413:30;10479:26;10459:18;;;10452:54;10523:18;;11917:62:0::1;10199:348:1::0;11917:62:0::1;12017:21;12057:7;2484::::0;2511:6;-1:-1:-1;;;;;2511:6:0;;2446:79;12057:7:::1;-1:-1:-1::0;;;;;12049:25:0::1;:33;12075:6;12049:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11906:184;11859:231::o:0;7331:335::-;-1:-1:-1;;;;;7424:19:0;;7416:68;;;;-1:-1:-1;;;7416:68:0;;10754:2:1;7416:68:0;;;10736:21:1;10793:2;10773:18;;;10766:30;10832:34;10812:18;;;10805:62;-1:-1:-1;;;10883:18:1;;;10876:34;10927:19;;7416:68:0;10552:400:1;7416:68:0;-1:-1:-1;;;;;7503:21:0;;7495:68;;;;-1:-1:-1;;;7495:68:0;;11159:2:1;7495:68:0;;;11141:21:1;11198:2;11178:18;;;11171:30;11237:34;11217:18;;;11210:62;-1:-1:-1;;;11288:18:1;;;11281:32;11330:19;;7495:68:0;10957:398:1;7495:68:0;-1:-1:-1;;;;;7574:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7626:32;;1231:25:1;;;7626:32:0;;1204:18:1;7626:32:0;;;;;;;7331:335;;;:::o;7670:2172::-;-1:-1:-1;;;;;7754:18:0;;7746:68;;;;-1:-1:-1;;;7746:68:0;;11562:2:1;7746:68:0;;;11544:21:1;11601:2;11581:18;;;11574:30;11640:34;11620:18;;;11613:62;-1:-1:-1;;;11691:18:1;;;11684:35;11736:19;;7746:68:0;11360:401:1;7746:68:0;-1:-1:-1;;;;;7829:16:0;;7821:64;;;;-1:-1:-1;;;7821:64:0;;11968:2:1;7821:64:0;;;11950:21:1;12007:2;11987:18;;;11980:30;12046:34;12026:18;;;12019:62;-1:-1:-1;;;12097:18:1;;;12090:33;12140:19;;7821:64:0;11766:399:1;7821:64:0;7909:1;7900:6;:10;7892:64;;;;-1:-1:-1;;;7892:64:0;;12372:2:1;7892:64:0;;;12354:21:1;12411:2;12391:18;;;12384:30;12450:34;12430:18;;;12423:62;-1:-1:-1;;;12501:18:1;;;12494:39;12550:19;;7892:64:0;12170:405:1;7892:64:0;7963:17;2511:6;;-1:-1:-1;;;;;7999:15:0;;;2511:6;;7999:15;;;;:32;;-1:-1:-1;2484:7:0;2511:6;-1:-1:-1;;;;;8018:13:0;;;2511:6;;8018:13;;7999:32;7995:1485;;;8060:76;8132:3;8060:67;8082:15;;8072:9;;:25;8071:55;;8112:14;;8071:55;;;8099:12;;8071:55;8060:6;;:10;:67::i;:::-;:71;;:76::i;:::-;8165:13;;8048:88;;-1:-1:-1;;;;;;8157:21:0;;;8165:13;;8157:21;:55;;;;-1:-1:-1;8196:15:0;;-1:-1:-1;;;;;8182:30:0;;;8196:15;;8182:30;;8157:55;:83;;;;-1:-1:-1;;;;;;8218:22:0;;;;;;:18;:22;;;;;;;;8216:24;8157:83;8153:436;;;8280:12;;8270:6;:22;;8262:60;;;;-1:-1:-1;;;8262:60:0;;12782:2:1;8262:60:0;;;12764:21:1;12821:2;12801:18;;;12794:30;12860:27;12840:18;;;12833:55;12905:18;;8262:60:0;12580:349:1;8262:60:0;8375:14;;8365:6;8349:13;8359:2;-1:-1:-1;;;;;6481:18:0;6454:7;6481:18;;;:9;:18;;;;;;;6388:119;8349:13;:22;;;;:::i;:::-;:40;;8341:79;;;;-1:-1:-1;;;8341:79:0;;13136:2:1;8341:79:0;;;13118:21:1;13175:2;13155:18;;;13148:30;13214:28;13194:18;;;13187:56;13260:18;;8341:79:0;12934:350:1;8341:79:0;8463:12;8445:10;;8458:1;8445:14;;;;:::i;:::-;:30;8441:103;;;10087:20;;10135:8;8500:24;;;;;;8562:9;:11;;;:9;:11;;;:::i;:::-;;;;;;8153:436;8615:13;;-1:-1:-1;;;;;8609:19:0;;;8615:13;;8609:19;;;;:47;;-1:-1:-1;;;;;;8634:22:0;;;;;;:18;:22;;;;;;;;8632:24;8609:47;8605:167;;;8711:14;;8701:6;8685:13;8695:2;-1:-1:-1;;;;;6481:18:0;6454:7;6481:18;;;:9;:18;;;;;;;6388:119;8685:13;:22;;;;:::i;:::-;:40;;8677:79;;;;-1:-1:-1;;;8677:79:0;;13136:2:1;8677:79:0;;;13118:21:1;13175:2;13155:18;;;13148:30;13214:28;13194:18;;;13187:56;13260:18;;8677:79:0;12934:350:1;8677:79:0;8797:13;;-1:-1:-1;;;;;8791:19:0;;;8797:13;;8791:19;:43;;;;-1:-1:-1;;;;;;8814:20:0;;8829:4;8814:20;;8791:43;8788:174;;;8867:79;8942:3;8867:70;8889:16;;8879:9;;:26;8878:58;;8921:15;;8878:58;;;8907:13;;8867:6;;:10;:70::i;:79::-;8855:91;;8788:174;9027:4;8978:28;6481:18;;;:9;:18;;;;;;9053:6;;-1:-1:-1;;;9053:6:0;;;;9052:7;:32;;;;-1:-1:-1;9071:13:0;;-1:-1:-1;;;;;9063:21:0;;;9071:13;;9063:21;9052:32;:47;;;;-1:-1:-1;9088:11:0;;-1:-1:-1;;;9088:11:0;;;;9052:47;:89;;;;;9124:17;;9103:20;:38;9052:89;:121;;;;;9155:18;;9145:9;;:28;9052:121;9048:421;;;9194:67;9211:49;9215:6;9222:37;9226:20;9247:11;;9222:3;:37::i;:::-;9211:3;:49::i;:::-;9194:16;:67::i;:::-;9309:21;9352:22;;9349:105;;9399:35;9412:21;9399:12;:35::i;:::-;9175:294;9048:421;8033:1447;7995:1485;9497:13;;9493:160;;9568:4;9550:24;;;;:9;:24;;;;;;:39;;9579:9;9550:28;:39::i;:::-;9541:4;9523:24;;;;:9;:24;;;;;;;:66;;;;9605:40;;-1:-1:-1;;;;;9605:40:0;;;;;;;9635:9;1231:25:1;;1219:2;1204:18;;1085:177;9605:40:0;;;;;;;;9493:160;-1:-1:-1;;;;;9681:15:0;;;;;;:9;:15;;;;;;:27;;9701:6;9681:19;:27::i;:::-;-1:-1:-1;;;;;9663:15:0;;;;;;:9;:15;;;;;:45;9735:40;9753:21;:6;9764:9;9753:10;:21::i;:::-;-1:-1:-1;;;;;9735:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;9719:13:0;;;;;;;:9;:13;;;;;:56;;;;9791:41;;;9810:21;:6;9821:9;9810:10;:21::i;:::-;9791:41;;1231:25:1;;;1219:2;1204:18;9791:41:0;;;;;;;7739:2103;7670:2172;;;:::o;1338:190::-;1424:7;1460:12;1452:6;;;;1444:29;;;;-1:-1:-1;;;1444:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1484:9:0;1496:5;1500:1;1496;:5;:::i;:::-;1484:17;1338:190;-1:-1:-1;;;;;1338:190:0:o;14371:290::-;281:10;14495:23;;;;:9;:23;;;;;;:35;;14523:6;14495:27;:35::i;:::-;281:10;14469:23;;;;:9;:23;;;;;;:61;;;;-1:-1:-1;;;;;14564:20:0;;;;;;:32;;14589:6;14564:24;:32::i;:::-;-1:-1:-1;;;;;14541:20:0;;;;;;:9;:20;;;;;:55;;;;281:10;-1:-1:-1;;;;;14612:41:0;;14646:6;14612:41;;;;1231:25:1;;1219:2;1204:18;;1085:177;14612:41:0;;;;;;;;14371:290;;:::o;1536:246::-;1594:7;1618:1;1623;1618:6;1614:47;;-1:-1:-1;1648:1:0;1641:8;;1614:47;1671:9;1683:5;1687:1;1683;:5;:::i;:::-;1671:17;-1:-1:-1;1716:1:0;1707:5;1711:1;1671:17;1707:5;:::i;:::-;:10;1699:56;;;;-1:-1:-1;;;1699:56:0;;13986:2:1;1699:56:0;;;13968:21:1;14025:2;14005:18;;;13998:30;14064:34;14044:18;;;14037:62;-1:-1:-1;;;14115:18:1;;;14108:31;14156:19;;1699:56:0;13784:397:1;1699:56:0;1773:1;1536:246;-1:-1:-1;;;1536:246:0:o;1790:132::-;1848:7;1875:39;1879:1;1882;1875:39;;;;;;;;;;;;;;;;;:3;:39::i;9850:98::-;9907:7;9934:1;9932;:3;9931:9;;9939:1;9931:9;;;-1:-1:-1;9937:1:0;9850:98;-1:-1:-1;9850:98:0:o;10159:483::-;5605:6;:13;;-1:-1:-1;;;;5605:13:0;-1:-1:-1;;;5605:13:0;;;10261:16:::1;::::0;;10275:1:::1;10261:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10261:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10261:16:0::1;10237:40;;10306:4;10288;10293:1;10288:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10288:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10332:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10332:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10288:7;;10332:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10322:4;10327:1;10322:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10322:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10397:15:::1;::::0;10365:62:::1;::::0;10382:4:::1;::::0;10397:15:::1;10415:11:::0;10365:8:::1;:62::i;:::-;10438:15;::::0;:196:::1;::::0;-1:-1:-1;;;10438:196:0;;-1:-1:-1;;;;;10438:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10519:11;;10438:15:::1;::::0;10561:4;;10588::::1;::::0;10608:15:::1;::::0;10438:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5641:6:0;:14;;-1:-1:-1;;;;5641:14:0;;;-1:-1:-1;;;;10159:483:0:o;12265:405::-;12322:22;12347:20;12365:1;12347:13;:6;12358:1;12347:10;:13::i;:20::-;12322:45;-1:-1:-1;12378:24:0;12405:20;12423:1;12405:13;:6;12416:1;12405:10;:13::i;:20::-;12378:47;-1:-1:-1;12436:21:0;12460:48;12378:47;12460:26;:6;12471:14;12460:10;:26::i;:::-;:30;;:48::i;:::-;12521:14;;:39;;12436:72;;-1:-1:-1;;;;;;12521:14:0;;:39;;;;;12545:14;;12521;:39;:14;:39;12545:14;12521;:39;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12571:16:0;;:43;;-1:-1:-1;;;;;12571:16:0;;;;:43;;;;;12597:16;;12571;:43;:16;:43;12597:16;12571;:43;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12625:13:0;;:37;;-1:-1:-1;;;;;12625:13:0;;;;:37;;;;;12648:13;;12625;:37;:13;:37;12648:13;12625;:37;;;;;;;;;;;;;;;;;;;;;12311:359;;;12265:405;:::o;1007:179::-;1065:7;;1097:5;1101:1;1097;:5;:::i;:::-;1085:17;;1126:1;1121;:6;;1113:46;;;;-1:-1:-1;;;1113:46:0;;15637:2:1;1113:46:0;;;15619:21:1;15676:2;15656:18;;;15649:30;15715:29;15695:18;;;15688:57;15762:18;;1113:46:0;15435:351:1;1194:136:0;1252:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;1930:189::-;2016:7;2051:12;2044:5;2036:28;;;;-1:-1:-1;;;2036:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2075:9:0;2087:5;2091:1;2087;:5;:::i;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:315;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;878:2;863:18;;;;850:32;;-1:-1:-1;;;573:315:1:o;1267:456::-;1344:6;1352;1360;1413:2;1401:9;1392:7;1388:23;1384:32;1381:52;;;1429:1;1426;1419:12;1381:52;1468:9;1455:23;1487:31;1512:5;1487:31;:::i;:::-;1537:5;-1:-1:-1;1594:2:1;1579:18;;1566:32;1607:33;1566:32;1607:33;:::i;:::-;1267:456;;1659:7;;-1:-1:-1;;;1713:2:1;1698:18;;;;1685:32;;1267:456::o;1917:247::-;1976:6;2029:2;2017:9;2008:7;2004:23;2000:32;1997:52;;;2045:1;2042;2035:12;1997:52;2084:9;2071:23;2103:31;2128:5;2103:31;:::i;2169:180::-;2228:6;2281:2;2269:9;2260:7;2256:23;2252:32;2249:52;;;2297:1;2294;2287:12;2249:52;-1:-1:-1;2320:23:1;;2169:180;-1:-1:-1;2169:180:1:o;2354:316::-;2431:6;2439;2447;2500:2;2488:9;2479:7;2475:23;2471:32;2468:52;;;2516:1;2513;2506:12;2468:52;-1:-1:-1;;2539:23:1;;;2609:2;2594:18;;2581:32;;-1:-1:-1;2660:2:1;2645:18;;;2632:32;;2354:316;-1:-1:-1;2354:316:1:o;2883:388::-;2951:6;2959;3012:2;3000:9;2991:7;2987:23;2983:32;2980:52;;;3028:1;3025;3018:12;2980:52;3067:9;3054:23;3086:31;3111:5;3086:31;:::i;:::-;3136:5;-1:-1:-1;3193:2:1;3178:18;;3165:32;3206:33;3165:32;3206:33;:::i;:::-;3258:7;3248:17;;;2883:388;;;;;:::o;3276:127::-;3337:10;3332:3;3328:20;3325:1;3318:31;3368:4;3365:1;3358:15;3392:4;3389:1;3382:15;3408:416;3497:1;3534:5;3497:1;3548:270;3569:7;3559:8;3556:21;3548:270;;;3628:4;3624:1;3620:6;3616:17;3610:4;3607:27;3604:53;;;3637:18;;:::i;:::-;3687:7;3677:8;3673:22;3670:55;;;3707:16;;;;3670:55;3786:22;;;;3746:15;;;;3548:270;;;3552:3;3408:416;;;;;:::o;3829:806::-;3878:5;3908:8;3898:80;;-1:-1:-1;3949:1:1;3963:5;;3898:80;3997:4;3987:76;;-1:-1:-1;4034:1:1;4048:5;;3987:76;4079:4;4097:1;4092:59;;;;4165:1;4160:130;;;;4072:218;;4092:59;4122:1;4113:10;;4136:5;;;4160:130;4197:3;4187:8;4184:17;4181:43;;;4204:18;;:::i;:::-;-1:-1:-1;;4260:1:1;4246:16;;4275:5;;4072:218;;4374:2;4364:8;4361:16;4355:3;4349:4;4346:13;4342:36;4336:2;4326:8;4323:16;4318:2;4312:4;4309:12;4305:35;4302:77;4299:159;;;-1:-1:-1;4411:19:1;;;4443:5;;4299:159;4490:34;4515:8;4509:4;4490:34;:::i;:::-;4560:6;4556:1;4552:6;4548:19;4539:7;4536:32;4533:58;;;4571:18;;:::i;:::-;4609:20;;3829:806;-1:-1:-1;;;3829:806:1:o;4640:140::-;4698:5;4727:47;4768:4;4758:8;4754:19;4748:4;4727:47;:::i;4785:168::-;4858:9;;;4889;;4906:15;;;4900:22;;4886:37;4876:71;;4927:18;;:::i;4958:356::-;5160:2;5142:21;;;5179:18;;;5172:30;5238:34;5233:2;5218:18;;5211:62;5305:2;5290:18;;4958:356::o;5319:347::-;5521:2;5503:21;;;5560:2;5540:18;;;5533:30;5599:25;5594:2;5579:18;;5572:53;5657:2;5642:18;;5319:347::o;7263:125::-;7328:9;;;7349:10;;;7346:36;;;7362:18;;:::i;8150:251::-;8220:6;8273:2;8261:9;8252:7;8248:23;8244:32;8241:52;;;8289:1;8286;8279:12;8241:52;8321:9;8315:16;8340:31;8365:5;8340:31;:::i;9327:306::-;9415:6;9423;9431;9484:2;9472:9;9463:7;9459:23;9455:32;9452:52;;;9500:1;9497;9490:12;9452:52;9529:9;9523:16;9513:26;;9579:2;9568:9;9564:18;9558:25;9548:35;;9623:2;9612:9;9608:18;9602:25;9592:35;;9327:306;;;;;:::o;9917:277::-;9984:6;10037:2;10025:9;10016:7;10012:23;10008:32;10005:52;;;10053:1;10050;10043:12;10005:52;10085:9;10079:16;10138:5;10131:13;10124:21;10117:5;10114:32;10104:60;;10160:1;10157;10150:12;13289:135;13328:3;13349:17;;;13346:43;;13369:18;;:::i;:::-;-1:-1:-1;13416:1:1;13405:13;;13289:135::o;13429:128::-;13496:9;;;13517:11;;;13514:37;;;13531:18;;:::i;13562:217::-;13602:1;13628;13618:132;;13672:10;13667:3;13663:20;13660:1;13653:31;13707:4;13704:1;13697:15;13735:4;13732:1;13725:15;13618:132;-1:-1:-1;13764:9:1;;13562:217::o;14318:127::-;14379:10;14374:3;14370:20;14367:1;14360:31;14410:4;14407:1;14400:15;14434:4;14431:1;14424:15;14450:980;14712:4;14760:3;14749:9;14745:19;14791:6;14780:9;14773:25;14817:2;14855:6;14850:2;14839:9;14835:18;14828:34;14898:3;14893:2;14882:9;14878:18;14871:31;14922:6;14957;14951:13;14988:6;14980;14973:22;15026:3;15015:9;15011:19;15004:26;;15065:2;15057:6;15053:15;15039:29;;15086:1;15096:195;15110:6;15107:1;15104:13;15096:195;;;15175:13;;-1:-1:-1;;;;;15171:39:1;15159:52;;15266:15;;;;15231:12;;;;15207:1;15125:9;15096:195;;;-1:-1:-1;;;;;;;15347:32:1;;;;15342:2;15327:18;;15320:60;-1:-1:-1;;;15411:3:1;15396:19;15389:35;15308:3;14450:980;-1:-1:-1;;;14450:980:1:o

Swarm Source

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