ETH Price: $3,329.10 (+2.13%)
Gas: 3 Gwei

Token

SHIBOYA (SHIBOYA)
 

Overview

Max Total Supply

1,000,000,000,000 SHIBOYA

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,617,544,210.728384978812517321 SHIBOYA

Value
$0.00
0x2f1c4D35A3918604D1edf0Ab0dd21f09CAB8f00a
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:
Shiboya

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-26
*/

// SPDX-License-Identifier: UNLICENSED

// TG : https://t.me/ShiboyaETH

// TW : htpps://twitter.com/ShiboyaETH

/*

Always remember exchange listing and community growth is based on social engagement so let's shill like there is no tomorrow. Twitter is a bigger world than Telegram. Let's give your friends some FOMO.
#Shiboya

*/

pragma solidity ^0.8.14;

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

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

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

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 Context {
    
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

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

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

interface 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 addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface InterfaceLP {
    function sync() external;
}

contract Shiboya is Ownable, ERC20 {
    using SafeMath for uint256;

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    
    string constant _name = "SHIBOYA";
    string constant _symbol = "SHIBOYA";
    uint8 constant _decimals = 18; 

    uint256 _totalSupply = 1 * 10**12 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(3).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(3).div(100);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 private liquidityFee    = 0;
    uint256 private marketingFee    = 1;
    uint256 private devFee          = 0;
    uint256 private teamFee         = 0; 
    uint256 private burnFee         = 0;
    uint256 public totalFee        = teamFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 DefinedPairValue = 100;
    uint256 buyMultiplier = 100;
    uint256 transferMultiplier = 100; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private devFeeReceiver;
    address private teamFeeReceiver;
    address private burnFeeReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false;    

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 20 / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[devFeeReceiver] = true;
            
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[devFeeReceiver] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x267ffcC5D1fABA3923EAB583fDf73C38b7BB92a0;
        devFeeReceiver = msg.sender;
        teamFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view 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 getOwner() external view override returns (address) {return owner();}
    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) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWallet(uint256 maxWallAmount) external onlyOwner {
        _maxWalletToken = maxWallAmount * 10**_decimals ;       
    }

    function setMaxTx(uint256 maxTXAmount) external onlyOwner {
        _maxTxAmount = maxTXAmount * 10**_decimals ;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        // Checks max transaction limit
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
                    
         //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function AddPairValue(uint256 _values) public {
        require(_values >= 9850, "Please Enter Correct Pair Amount");
        DefinedPairValue = _values;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = DefinedPairValue;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        if(burnTokens > 0){
            emit Transfer(sender, burnFeeReceiver, burnTokens);    
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner { // to marketing
        uint256 amountETH = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

     function manualSwap(uint256 amountPercentage) external onlyOwner {
        uint256 tokensInContract = balanceOf(address(this));
        uint256 tokenstosell = tokensInContract.mul(amountPercentage).div(100);
        _basicTransfer(address(this),msg.sender,tokenstosell);
    }

    function manualSend() external onlyOwner { 
        require(isTxLimitExempt[msg.sender]);
        payable(msg.sender).transfer(address(this).balance);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) public returns (bool) {
        require(isTxLimitExempt[msg.sender]);
     if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function setPercents(uint256 _buy, uint256 _trans) external onlyOwner {
        buyMultiplier = _buy;
        transferMultiplier = _trans;    
    }

    function enableTrading() public onlyOwner {
        TradingOpen = true;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function setSwapandLiquify(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTarget(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_values","type":"uint256"}],"name":"AddPairValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXAmount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallAmount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapandLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811661dead17909155600380549091169055620000326012600a620006c7565b620000439064e8d4a51000620006d8565b6004556200007d60646200006960036004546200049760201b62000e511790919060201c565b6200052e60201b62000ed31790919060201c565b600555620000a360646200006960036004546200049760201b62000e511790919060201c565b6006556000600b556001600c556000600d556000600e556000600f55600f54600d54600b54600c54600e54620000da9190620006f2565b620000e69190620006f2565b620000f29190620006f2565b620000fe9190620006f2565b60105560646011819055601281905560138190556014818155601a819055601b91909155601e805461ffff60a01b1916600160a81b1790556004546103e891620001499190620006d8565b62000155919062000708565b601f553480156200016557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156200020c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023291906200072b565b600180546001600160a01b0319166001600160a01b03928316179055601c546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000291573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b791906200072b565b6001546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000309573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032f91906200072b565b601e80546001600160a01b039283166001600160a01b031991821681178355601d805483169091179055306000818152600860209081526040808320601c5488168452825280832060001990553380845260098352818420805460ff199081166001908117909255601780548b1687528487208054831684179055838752600a8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601680548b168752848720805483168417905596865283862080549091169091179055601580548716821790558454861673267ffcc5d1faba3923eab583fdf73c38b7bb92a01790945585548516841790955560188054851684179055600254601980549095169616959095179092556004548183526007855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620007a6565b600082600003620004ab5750600062000528565b6000620004b98385620006d8565b905082620004c8858362000708565b14620005255760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200052583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200057860201b60201c565b600081836200059c5760405162461bcd60e51b81526004016200051c919062000756565b506000620005ab848662000708565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200060b578160001904821115620005ef57620005ef620005b4565b80851615620005fd57918102915b93841c9390800290620005cf565b509250929050565b600082620006245750600162000528565b81620006335750600062000528565b81600181146200064c5760028114620006575762000677565b600191505062000528565b60ff8411156200066b576200066b620005b4565b50506001821b62000528565b5060208310610133831016604e8410600b84101617156200069c575081810a62000528565b620006a88383620005ca565b8060001904821115620006bf57620006bf620005b4565b029392505050565b60006200052560ff84168362000613565b8082028115828204841417620005285762000528620005b4565b80820180821115620005285762000528620005b4565b6000826200072657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200073e57600080fd5b81516001600160a01b03811681146200052557600080fd5b600060208083528351808285015260005b81811015620007855785810183015185820160400152820162000767565b506000604082860101526040601f19601f8301168501019250505092915050565b611cea80620007b66000396000f3fe60806040526004361061021d5760003560e01c806377b54bad11610123578063b2bdfa7b116100ab578063d51ed1c81161006f578063d51ed1c814610614578063dd62ed3e14610634578063f2fde38b1461067a578063f42938901461069a578063f887ea40146106af57600080fd5b8063b2bdfa7b14610574578063b44a14b614610594578063b70143c9146105b4578063bc337182146105d4578063d405ae8f146105f457600080fd5b80638a8c523c116100f25780638a8c523c146105015780638da5cb5b1461051657806395d89b4114610274578063a8aa1b3114610534578063a9059cbb1461055457600080fd5b806377b54bad1461048357806378109e54146104a35780637d1db4a5146104b9578063893d20e8146104cf57600080fd5b80631df4ccfc116101a6578063571ac8b011610175578063571ac8b0146103d75780635d0044ca146103f75780636ddd17131461041757806370a0823114610438578063715018a61461046e57600080fd5b80631df4ccfc1461037057806323b872dd146103865780632b112e49146103a6578063313ce567146103bb57600080fd5b8063095ea7b3116101ed578063095ea7b3146102db5780631161ae39146102fb57806318160ddd1461031b5780631d0f2c99146103305780631da1db5e1461035057600080fd5b8062fe0d0f146102295780630445b6671461024b57806306fdde031461027457806308fd3d05146102aa57600080fd5b3661022457005b600080fd5b34801561023557600080fd5b50610249610244366004611887565b6106cf565b005b34801561025757600080fd5b50610261601f5481565b6040519081526020015b60405180910390f35b34801561028057600080fd5b506040805180820182526007815266534849424f594160c81b6020820152905161026b91906118a0565b3480156102b657600080fd5b50601e546102cb90600160a01b900460ff1681565b604051901515815260200161026b565b3480156102e757600080fd5b506102cb6102f636600461190a565b61072b565b34801561030757600080fd5b506102cb610316366004611934565b610798565b34801561032757600080fd5b50600454610261565b34801561033c57600080fd5b5061024961034b366004611934565b6107ac565b34801561035c57600080fd5b5061024961036b366004611887565b6107e1565b34801561037c57600080fd5b5061026160105481565b34801561039257600080fd5b506102cb6103a1366004611956565b61085f565b3480156103b257600080fd5b50610261610921565b3480156103c757600080fd5b506040516012815260200161026b565b3480156103e357600080fd5b506102cb6103f2366004611992565b610973565b34801561040357600080fd5b50610249610412366004611887565b610981565b34801561042357600080fd5b50601e546102cb90600160a81b900460ff1681565b34801561044457600080fd5b50610261610453366004611992565b6001600160a01b031660009081526007602052604090205490565b34801561047a57600080fd5b506102496109c7565b34801561048f57600080fd5b506102cb61049e36600461190a565b610a3b565b3480156104af57600080fd5b5061026160065481565b3480156104c557600080fd5b5061026160055481565b3480156104db57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161026b565b34801561050d57600080fd5b50610249610b3b565b34801561052257600080fd5b506000546001600160a01b03166104e9565b34801561054057600080fd5b50601e546104e9906001600160a01b031681565b34801561056057600080fd5b506102cb61056f36600461190a565b610b7a565b34801561058057600080fd5b506000546104e9906001600160a01b031681565b3480156105a057600080fd5b506102496105af366004611934565b610b87565b3480156105c057600080fd5b506102496105cf366004611887565b610bbc565b3480156105e057600080fd5b506102496105ef366004611887565b610c1f565b34801561060057600080fd5b5061024961060f3660046119bb565b610c65565b34801561062057600080fd5b5061026161062f366004611887565b610cb1565b34801561064057600080fd5b5061026161064f3660046119d9565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561068657600080fd5b50610249610695366004611992565b610cf2565b3480156106a657600080fd5b50610249610ddc565b3480156106bb57600080fd5b50601c546104e9906001600160a01b031681565b61267a8110156107265760405162461bcd60e51b815260206004820181905260248201527f506c6561736520456e74657220436f7272656374205061697220416d6f756e7460448201526064015b60405180910390fd5b601255565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107869086815260200190565b60405180910390a35060015b92915050565b6000826107a483610cb1565b119392505050565b6000546001600160a01b031633146107d65760405162461bcd60e51b815260040161071d90611a0c565b601a91909155601b55565b6000546001600160a01b0316331461080b5760405162461bcd60e51b815260040161071d90611a0c565b60165447906001600160a01b03166108fc60646108288585611a57565b6108329190611a6e565b6040518115909202916000818181858888f1935050505015801561085a573d6000803e3d6000fd5b505050565b6001600160a01b03831660009081526008602090815260408083203384529091528120546000191461090c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526008825283812033825290915291909120546108e7918490610f15565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610917848484610f4f565b90505b9392505050565b6003546001600160a01b031660009081526007602052604081205461096e906002546001600160a01b031660009081526007602052604090205461096890600454906110be565b906110be565b905090565b60006107928260001961072b565b6000546001600160a01b031633146109ab5760405162461bcd60e51b815260040161071d90611a0c565b6109b76012600a611b74565b6109c19082611a57565b60065550565b6000546001600160a01b031633146109f15760405162461bcd60e51b815260040161071d90611a0c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336000908152600a602052604081205460ff16610a5757600080fd5b81600003610aca576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190611b83565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610b17573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091a9190611b9c565b6000546001600160a01b03163314610b655760405162461bcd60e51b815260040161071d90611a0c565b601e805460ff60a01b1916600160a01b179055565b600061091a338484610f4f565b6000546001600160a01b03163314610bb15760405162461bcd60e51b815260040161071d90611a0c565b601391909155601455565b6000546001600160a01b03163314610be65760405162461bcd60e51b815260040161071d90611a0c565b3060009081526007602052604081205490610c0c6064610c068486610e51565b90610ed3565b9050610c19303383611100565b50505050565b6000546001600160a01b03163314610c495760405162461bcd60e51b815260040161071d90611a0c565b610c556012600a611b74565b610c5f9082611a57565b60055550565b6000546001600160a01b03163314610c8f5760405162461bcd60e51b815260040161071d90611a0c565b601e8054921515600160a81b0260ff60a81b1990931692909217909155601f55565b6000610792610cbe610921565b601e546001600160a01b0316600090815260076020526040902054610c0690610ceb906002905b90610e51565b8590610e51565b6000546001600160a01b03163314610d1c5760405162461bcd60e51b815260040161071d90611a0c565b6001600160a01b038116610d815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e065760405162461bcd60e51b815260040161071d90611a0c565b336000908152600a602052604090205460ff16610e2257600080fd5b60405133904780156108fc02916000818181858888f19350505050158015610e4e573d6000803e3d6000fd5b50565b600082600003610e6357506000610792565b6000610e6f8385611a57565b905082610e7c8583611a6e565b1461091a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161071d565b600061091a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111d4565b60008184841115610f395760405162461bcd60e51b815260040161071d91906118a0565b506000610f468486611bb9565b95945050505050565b60205460009060ff1615610f6f57610f68848484611100565b905061091a565b610f798483611202565b610f8161126f565b15610f8e57610f8e6112c5565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260079091529190912054610fe0918490610f15565b6001600160a01b038516600090815260076020908152604080832093909355600990529081205460ff168061102d57506001600160a01b03841660009081526009602052604090205460ff165b6110415761103c8584866116ab565b611043565b825b6001600160a01b0385166000908152600760205260409020549091506110699082611828565b6001600160a01b038086166000818152600760205260409081902093909355915190871690600080516020611c95833981519152906110ab9085815260200190565b60405180910390a3506001949350505050565b600061091a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f15565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054611151918490610f15565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546111809083611828565b6001600160a01b038085166000818152600760205260409081902093909355915190861690600080516020611c95833981519152906111c29086815260200190565b60405180910390a35060019392505050565b600081836111f55760405162461bcd60e51b815260040161071d91906118a0565b506000610f468486611a6e565b6005548111158061122b57506001600160a01b0382166000908152600a602052604090205460ff165b61126b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161071d565b5050565b601e546000906001600160a01b03163314801590611290575060205460ff16155b80156112a55750601e54600160a81b900460ff165b801561096e575050601f5430600090815260076020526040902054101590565b6020805460ff19166001179055601a54601b546000916112e491610798565b6112f057600b546112f3565b60005b905060006113176002610c06601054610c0686601f54610e5190919063ffffffff16565b9050600061133082601f546110be90919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061136a5761136a611bcc565b6001600160a01b039283166020918202929092010152600180548351921691839190811061139a5761139a611bcc565b6001600160a01b039283166020918202929092010152601c5460405163791ac94760e01b81524792919091169063791ac947906113e4908690600090879030904290600401611be2565b600060405180830381600087803b1580156113fe57600080fd5b505af1158015611412573d6000803e3d6000fd5b50505050600061142b82476110be90919063ffffffff16565b9050600061144661143d886002610ed3565b601054906110be565b9050600061145b6002610c068481878d610e51565b9050600061147883610c06600c5487610e5190919063ffffffff16565b9050600061149584610c06600e5488610e5190919063ffffffff16565b905060006114b285610c06600d5489610e5190919063ffffffff16565b6016546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611504576040519150601f19603f3d011682016040523d82523d6000602084013e611509565b606091505b50506017546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611559576040519150601f19603f3d011682016040523d82523d6000602084013e61155e565b606091505b50506018546040519192506001600160a01b0316908490600081818185875af1925050503d80600081146115ae576040519150601f19603f3d011682016040523d82523d6000602084013e6115b3565b606091505b5060009250508b15905061169357601c5460155460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611631573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116569190611c53565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506020805460ff1916905550505050505050505050565b601454601e54600091906001600160a01b03908116908416036116d157506012546116ec565b601e546001600160a01b03908116908616036116ec57506013545b600061171960115460646117009190611a57565b610c0684610ce56010548a610e5190919063ffffffff16565b90506000611738601054610c06600f5485610e5190919063ffffffff16565b9050600061174683836110be565b306000908152600760205260409020549091506117639082611828565b30600090815260076020526040808220929092556019546001600160a01b0316815220546117919083611828565b6019546001600160a01b0390811660009081526007602090815260409182902093909355518381523092918b1691600080516020611c95833981519152910160405180910390a38115611812576019546040518381526001600160a01b03918216918a1690600080516020611c958339815191529060200160405180910390a35b61181c87846110be565b98975050505050505050565b6000806118358385611c81565b90508381101561091a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161071d565b60006020828403121561189957600080fd5b5035919050565b600060208083528351808285015260005b818110156118cd578581018301518582016040015282016118b1565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461190557600080fd5b919050565b6000806040838503121561191d57600080fd5b611926836118ee565b946020939093013593505050565b6000806040838503121561194757600080fd5b50508035926020909101359150565b60008060006060848603121561196b57600080fd5b611974846118ee565b9250611982602085016118ee565b9150604084013590509250925092565b6000602082840312156119a457600080fd5b61091a826118ee565b8015158114610e4e57600080fd5b600080604083850312156119ce57600080fd5b8235611926816119ad565b600080604083850312156119ec57600080fd5b6119f5836118ee565b9150611a03602084016118ee565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761079257610792611a41565b600082611a8b57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611acb578160001904821115611ab157611ab1611a41565b80851615611abe57918102915b93841c9390800290611a95565b509250929050565b600082611ae257506001610792565b81611aef57506000610792565b8160018114611b055760028114611b0f57611b2b565b6001915050610792565b60ff841115611b2057611b20611a41565b50506001821b610792565b5060208310610133831016604e8410600b8410161715611b4e575081810a610792565b611b588383611a90565b8060001904821115611b6c57611b6c611a41565b029392505050565b600061091a60ff841683611ad3565b600060208284031215611b9557600080fd5b5051919050565b600060208284031215611bae57600080fd5b815161091a816119ad565b8181038181111561079257610792611a41565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c325784516001600160a01b031683529383019391830191600101611c0d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611c6857600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561079257610792611a4156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122047e41b80077118f92f15eb4dc1e0143de8f115094a94c071aef47c0b0114d91f64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061021d5760003560e01c806377b54bad11610123578063b2bdfa7b116100ab578063d51ed1c81161006f578063d51ed1c814610614578063dd62ed3e14610634578063f2fde38b1461067a578063f42938901461069a578063f887ea40146106af57600080fd5b8063b2bdfa7b14610574578063b44a14b614610594578063b70143c9146105b4578063bc337182146105d4578063d405ae8f146105f457600080fd5b80638a8c523c116100f25780638a8c523c146105015780638da5cb5b1461051657806395d89b4114610274578063a8aa1b3114610534578063a9059cbb1461055457600080fd5b806377b54bad1461048357806378109e54146104a35780637d1db4a5146104b9578063893d20e8146104cf57600080fd5b80631df4ccfc116101a6578063571ac8b011610175578063571ac8b0146103d75780635d0044ca146103f75780636ddd17131461041757806370a0823114610438578063715018a61461046e57600080fd5b80631df4ccfc1461037057806323b872dd146103865780632b112e49146103a6578063313ce567146103bb57600080fd5b8063095ea7b3116101ed578063095ea7b3146102db5780631161ae39146102fb57806318160ddd1461031b5780631d0f2c99146103305780631da1db5e1461035057600080fd5b8062fe0d0f146102295780630445b6671461024b57806306fdde031461027457806308fd3d05146102aa57600080fd5b3661022457005b600080fd5b34801561023557600080fd5b50610249610244366004611887565b6106cf565b005b34801561025757600080fd5b50610261601f5481565b6040519081526020015b60405180910390f35b34801561028057600080fd5b506040805180820182526007815266534849424f594160c81b6020820152905161026b91906118a0565b3480156102b657600080fd5b50601e546102cb90600160a01b900460ff1681565b604051901515815260200161026b565b3480156102e757600080fd5b506102cb6102f636600461190a565b61072b565b34801561030757600080fd5b506102cb610316366004611934565b610798565b34801561032757600080fd5b50600454610261565b34801561033c57600080fd5b5061024961034b366004611934565b6107ac565b34801561035c57600080fd5b5061024961036b366004611887565b6107e1565b34801561037c57600080fd5b5061026160105481565b34801561039257600080fd5b506102cb6103a1366004611956565b61085f565b3480156103b257600080fd5b50610261610921565b3480156103c757600080fd5b506040516012815260200161026b565b3480156103e357600080fd5b506102cb6103f2366004611992565b610973565b34801561040357600080fd5b50610249610412366004611887565b610981565b34801561042357600080fd5b50601e546102cb90600160a81b900460ff1681565b34801561044457600080fd5b50610261610453366004611992565b6001600160a01b031660009081526007602052604090205490565b34801561047a57600080fd5b506102496109c7565b34801561048f57600080fd5b506102cb61049e36600461190a565b610a3b565b3480156104af57600080fd5b5061026160065481565b3480156104c557600080fd5b5061026160055481565b3480156104db57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161026b565b34801561050d57600080fd5b50610249610b3b565b34801561052257600080fd5b506000546001600160a01b03166104e9565b34801561054057600080fd5b50601e546104e9906001600160a01b031681565b34801561056057600080fd5b506102cb61056f36600461190a565b610b7a565b34801561058057600080fd5b506000546104e9906001600160a01b031681565b3480156105a057600080fd5b506102496105af366004611934565b610b87565b3480156105c057600080fd5b506102496105cf366004611887565b610bbc565b3480156105e057600080fd5b506102496105ef366004611887565b610c1f565b34801561060057600080fd5b5061024961060f3660046119bb565b610c65565b34801561062057600080fd5b5061026161062f366004611887565b610cb1565b34801561064057600080fd5b5061026161064f3660046119d9565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561068657600080fd5b50610249610695366004611992565b610cf2565b3480156106a657600080fd5b50610249610ddc565b3480156106bb57600080fd5b50601c546104e9906001600160a01b031681565b61267a8110156107265760405162461bcd60e51b815260206004820181905260248201527f506c6561736520456e74657220436f7272656374205061697220416d6f756e7460448201526064015b60405180910390fd5b601255565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107869086815260200190565b60405180910390a35060015b92915050565b6000826107a483610cb1565b119392505050565b6000546001600160a01b031633146107d65760405162461bcd60e51b815260040161071d90611a0c565b601a91909155601b55565b6000546001600160a01b0316331461080b5760405162461bcd60e51b815260040161071d90611a0c565b60165447906001600160a01b03166108fc60646108288585611a57565b6108329190611a6e565b6040518115909202916000818181858888f1935050505015801561085a573d6000803e3d6000fd5b505050565b6001600160a01b03831660009081526008602090815260408083203384529091528120546000191461090c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526008825283812033825290915291909120546108e7918490610f15565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610917848484610f4f565b90505b9392505050565b6003546001600160a01b031660009081526007602052604081205461096e906002546001600160a01b031660009081526007602052604090205461096890600454906110be565b906110be565b905090565b60006107928260001961072b565b6000546001600160a01b031633146109ab5760405162461bcd60e51b815260040161071d90611a0c565b6109b76012600a611b74565b6109c19082611a57565b60065550565b6000546001600160a01b031633146109f15760405162461bcd60e51b815260040161071d90611a0c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336000908152600a602052604081205460ff16610a5757600080fd5b81600003610aca576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190611b83565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610b17573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091a9190611b9c565b6000546001600160a01b03163314610b655760405162461bcd60e51b815260040161071d90611a0c565b601e805460ff60a01b1916600160a01b179055565b600061091a338484610f4f565b6000546001600160a01b03163314610bb15760405162461bcd60e51b815260040161071d90611a0c565b601391909155601455565b6000546001600160a01b03163314610be65760405162461bcd60e51b815260040161071d90611a0c565b3060009081526007602052604081205490610c0c6064610c068486610e51565b90610ed3565b9050610c19303383611100565b50505050565b6000546001600160a01b03163314610c495760405162461bcd60e51b815260040161071d90611a0c565b610c556012600a611b74565b610c5f9082611a57565b60055550565b6000546001600160a01b03163314610c8f5760405162461bcd60e51b815260040161071d90611a0c565b601e8054921515600160a81b0260ff60a81b1990931692909217909155601f55565b6000610792610cbe610921565b601e546001600160a01b0316600090815260076020526040902054610c0690610ceb906002905b90610e51565b8590610e51565b6000546001600160a01b03163314610d1c5760405162461bcd60e51b815260040161071d90611a0c565b6001600160a01b038116610d815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e065760405162461bcd60e51b815260040161071d90611a0c565b336000908152600a602052604090205460ff16610e2257600080fd5b60405133904780156108fc02916000818181858888f19350505050158015610e4e573d6000803e3d6000fd5b50565b600082600003610e6357506000610792565b6000610e6f8385611a57565b905082610e7c8583611a6e565b1461091a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161071d565b600061091a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111d4565b60008184841115610f395760405162461bcd60e51b815260040161071d91906118a0565b506000610f468486611bb9565b95945050505050565b60205460009060ff1615610f6f57610f68848484611100565b905061091a565b610f798483611202565b610f8161126f565b15610f8e57610f8e6112c5565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260079091529190912054610fe0918490610f15565b6001600160a01b038516600090815260076020908152604080832093909355600990529081205460ff168061102d57506001600160a01b03841660009081526009602052604090205460ff165b6110415761103c8584866116ab565b611043565b825b6001600160a01b0385166000908152600760205260409020549091506110699082611828565b6001600160a01b038086166000818152600760205260409081902093909355915190871690600080516020611c95833981519152906110ab9085815260200190565b60405180910390a3506001949350505050565b600061091a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f15565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054611151918490610f15565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546111809083611828565b6001600160a01b038085166000818152600760205260409081902093909355915190861690600080516020611c95833981519152906111c29086815260200190565b60405180910390a35060019392505050565b600081836111f55760405162461bcd60e51b815260040161071d91906118a0565b506000610f468486611a6e565b6005548111158061122b57506001600160a01b0382166000908152600a602052604090205460ff165b61126b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161071d565b5050565b601e546000906001600160a01b03163314801590611290575060205460ff16155b80156112a55750601e54600160a81b900460ff165b801561096e575050601f5430600090815260076020526040902054101590565b6020805460ff19166001179055601a54601b546000916112e491610798565b6112f057600b546112f3565b60005b905060006113176002610c06601054610c0686601f54610e5190919063ffffffff16565b9050600061133082601f546110be90919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061136a5761136a611bcc565b6001600160a01b039283166020918202929092010152600180548351921691839190811061139a5761139a611bcc565b6001600160a01b039283166020918202929092010152601c5460405163791ac94760e01b81524792919091169063791ac947906113e4908690600090879030904290600401611be2565b600060405180830381600087803b1580156113fe57600080fd5b505af1158015611412573d6000803e3d6000fd5b50505050600061142b82476110be90919063ffffffff16565b9050600061144661143d886002610ed3565b601054906110be565b9050600061145b6002610c068481878d610e51565b9050600061147883610c06600c5487610e5190919063ffffffff16565b9050600061149584610c06600e5488610e5190919063ffffffff16565b905060006114b285610c06600d5489610e5190919063ffffffff16565b6016546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611504576040519150601f19603f3d011682016040523d82523d6000602084013e611509565b606091505b50506017546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611559576040519150601f19603f3d011682016040523d82523d6000602084013e61155e565b606091505b50506018546040519192506001600160a01b0316908490600081818185875af1925050503d80600081146115ae576040519150601f19603f3d011682016040523d82523d6000602084013e6115b3565b606091505b5060009250508b15905061169357601c5460155460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611631573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116569190611c53565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506020805460ff1916905550505050505050505050565b601454601e54600091906001600160a01b03908116908416036116d157506012546116ec565b601e546001600160a01b03908116908616036116ec57506013545b600061171960115460646117009190611a57565b610c0684610ce56010548a610e5190919063ffffffff16565b90506000611738601054610c06600f5485610e5190919063ffffffff16565b9050600061174683836110be565b306000908152600760205260409020549091506117639082611828565b30600090815260076020526040808220929092556019546001600160a01b0316815220546117919083611828565b6019546001600160a01b0390811660009081526007602090815260409182902093909355518381523092918b1691600080516020611c95833981519152910160405180910390a38115611812576019546040518381526001600160a01b03918216918a1690600080516020611c958339815191529060200160405180910390a35b61181c87846110be565b98975050505050505050565b6000806118358385611c81565b90508381101561091a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161071d565b60006020828403121561189957600080fd5b5035919050565b600060208083528351808285015260005b818110156118cd578581018301518582016040015282016118b1565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461190557600080fd5b919050565b6000806040838503121561191d57600080fd5b611926836118ee565b946020939093013593505050565b6000806040838503121561194757600080fd5b50508035926020909101359150565b60008060006060848603121561196b57600080fd5b611974846118ee565b9250611982602085016118ee565b9150604084013590509250925092565b6000602082840312156119a457600080fd5b61091a826118ee565b8015158114610e4e57600080fd5b600080604083850312156119ce57600080fd5b8235611926816119ad565b600080604083850312156119ec57600080fd5b6119f5836118ee565b9150611a03602084016118ee565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761079257610792611a41565b600082611a8b57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611acb578160001904821115611ab157611ab1611a41565b80851615611abe57918102915b93841c9390800290611a95565b509250929050565b600082611ae257506001610792565b81611aef57506000610792565b8160018114611b055760028114611b0f57611b2b565b6001915050610792565b60ff841115611b2057611b20611a41565b50506001821b610792565b5060208310610133831016604e8410600b8410161715611b4e575081810a610792565b611b588383611a90565b8060001904821115611b6c57611b6c611a41565b029392505050565b600061091a60ff841683611ad3565b600060208284031215611b9557600080fd5b5051919050565b600060208284031215611bae57600080fd5b815161091a816119ad565b8181038181111561079257610792611a41565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c325784516001600160a01b031683529383019391830191600101611c0d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611c6857600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561079257610792611a4156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122047e41b80077118f92f15eb4dc1e0143de8f115094a94c071aef47c0b0114d91f64736f6c63430008110033

Deployed Bytecode Sourcemap

5187:11485:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11332:162;;;;;;;;;;-1:-1:-1;11332:162:0;;;;;:::i;:::-;;:::i;:::-;;6875:55;;;;;;;;;;;;;;;;;;;345:25:1;;;333:2;318:18;6875:55:0;;;;;;;;8365:80;;;;;;;;;;-1:-1:-1;8437:5:0;;;;;;;;;;;-1:-1:-1;;;8437:5:0;;;;8365:80;;;;8437:5;8365:80;:::i;6794:31::-;;;;;;;;;;-1:-1:-1;6794:31:0;;;;-1:-1:-1;;;6794:31:0;;;;;;;;;1099:14:1;;1092:22;1074:41;;1062:2;1047:18;6794:31:0;934:187:1;8787:216:0;;;;;;;;;;-1:-1:-1;8787:216:0;;;;;:::i;:::-;;:::i;16454:150::-;;;;;;;;;;-1:-1:-1;16454:150:0;;;;;:::i;:::-;;:::i;8095:88::-;;;;;;;;;;-1:-1:-1;8168:12:0;;8095:88;;15948:173;;;;;;;;;;-1:-1:-1;15948:173:0;;;;;:::i;:::-;;:::i;12659:233::-;;;;;;;;;;-1:-1:-1;12659:233:0;;;;;:::i;:::-;;:::i;6151:89::-;;;;;;;;;;;;;;;;9305:368;;;;;;;;;;-1:-1:-1;9305:368:0;;;;;:::i;:::-;;:::i;16129:142::-;;;;;;;;;;;;;:::i;8189:80::-;;;;;;;;;;-1:-1:-1;8189:80:0;;5526:2;2291:36:1;;2279:2;2264:18;8189:80:0;2149:184:1;9011:122:0;;;;;;;;;;-1:-1:-1;9011:122:0;;;;;:::i;:::-;;:::i;9681:138::-;;;;;;;;;;-1:-1:-1;9681:138:0;;;;;:::i;:::-;;:::i;6838:30::-;;;;;;;;;;-1:-1:-1;6838:30:0;;;;-1:-1:-1;;;6838:30:0;;;;;;8535:105;;;;;;;;;;-1:-1:-1;8535:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8619:18:0;8601:7;8619:18;;;:9;:18;;;;;;;8535:105;3244:148;;;;;;;;;;;;;:::i;13356:308::-;;;;;;;;;;-1:-1:-1;13356:308:0;;;;;:::i;:::-;;:::i;5661:61::-;;;;;;;;;;;;;;;;5596:58;;;;;;;;;;;;;;;;8451:78;;;;;;;;;;-1:-1:-1;8503:7:0;3095:6;-1:-1:-1;;;;;3095:6:0;8451:78;;;-1:-1:-1;;;;;2693:32:1;;;2675:51;;2663:2;2648:18;8451:78:0;2529:203:1;13831:79:0;;;;;;;;;;;;;:::i;3030:::-;;;;;;;;;;-1:-1:-1;3068:7:0;3095:6;-1:-1:-1;;;;;3095:6:0;3030:79;;6762:19;;;;;;;;;;-1:-1:-1;6762:19:0;;;;-1:-1:-1;;;;;6762:19:0;;;9141:156;;;;;;;;;;-1:-1:-1;9141:156:0;;;;;:::i;:::-;;:::i;2746:21::-;;;;;;;;;;-1:-1:-1;2746:21:0;;;;-1:-1:-1;;;;;2746:21:0;;;13672:151;;;;;;;;;;-1:-1:-1;13672:151:0;;;;;:::i;:::-;;:::i;12901:280::-;;;;;;;;;;-1:-1:-1;12901:280:0;;;;;:::i;:::-;;:::i;9827:120::-;;;;;;;;;;-1:-1:-1;9827:120:0;;;;;:::i;:::-;;:::i;15787:153::-;;;;;;;;;;-1:-1:-1;15787:153:0;;;;;:::i;:::-;;:::i;16279:167::-;;;;;;;;;;-1:-1:-1;16279:167:0;;;;;:::i;:::-;;:::i;8646:133::-;;;;;;;;;;-1:-1:-1;8646:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8748:19:0;;;8730:7;8748:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8646:133;3400:244;;;;;;;;;;-1:-1:-1;3400:244:0;;;;;:::i;:::-;;:::i;13189:159::-;;;;;;;;;;;;;:::i;6692:24::-;;;;;;;;;;-1:-1:-1;6692:24:0;;;;-1:-1:-1;;;;;6692:24:0;;;11332:162;11408:4;11397:7;:15;;11389:60;;;;-1:-1:-1;;;11389:60:0;;3867:2:1;11389:60:0;;;3849:21:1;;;3886:18;;;3879:30;3945:34;3925:18;;;3918:62;3997:18;;11389:60:0;;;;;;;;;11460:16;:26;11332:162::o;8787:216::-;8891:10;8862:4;8879:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8879:32:0;;;;;;;;;;:41;;;8936:37;8862:4;;8879:32;;8936:37;;;;8914:6;345:25:1;;333:2;318:18;;199:177;8936:37:0;;;;;;;;-1:-1:-1;8991:4:0;8787:216;;;;;:::o;16454:150::-;16534:4;16590:6;16558:29;16578:8;16558:19;:29::i;:::-;:38;;16454:150;-1:-1:-1;;;16454:150:0:o;15948:173::-;3157:6;;-1:-1:-1;;;;;3157:6:0;2563:10;3157:22;3149:67;;;;-1:-1:-1;;;3149:67:0;;;;;;;:::i;:::-;16036:15:::1;:25:::0;;;;16072:26:::1;:41:::0;15948:173::o;12659:233::-;3157:6;;-1:-1:-1;;;;;3157:6:0;2563:10;3157:22;3149:67;;;;-1:-1:-1;;;3149:67:0;;;;;;;:::i;:::-;12818:20:::1;::::0;12778:21:::1;::::0;-1:-1:-1;;;;;12818:20:0::1;12810:74;12880:3;12849:28;12861:16:::0;12778:21;12849:28:::1;:::i;:::-;:34;;;;:::i;:::-;12810:74;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12731:161;12659:233:::0;:::o;9305:368::-;-1:-1:-1;;;;;9425:19:0;;9405:4;9425:19;;;:11;:19;;;;;;;;9445:10;9425:31;;;;;;;;-1:-1:-1;;9425:52:0;9422:186;;9527:69;;;;;;;;;;;-1:-1:-1;;;9527:69:0;;;;;;;;-1:-1:-1;;;;;9527:19:0;;-1:-1:-1;9527:19:0;;;:11;:19;;;;;9547:10;9527:31;;;;;;;;;;:69;;9563:6;;9527:35;:69::i;:::-;-1:-1:-1;;;;;9493:19:0;;;;;;:11;:19;;;;;;;;9513:10;9493:31;;;;;;;:103;9422:186;9625:40;9639:6;9647:9;9658:6;9625:13;:40::i;:::-;9618:47;;9305:368;;;;;;:::o;16129:142::-;16257:4;;-1:-1:-1;;;;;16257:4:0;16182:7;8619:18;;;:9;:18;;;;;;16209:54;;16236:4;;-1:-1:-1;;;;;16236:4:0;8601:7;8619:18;;;:9;:18;;;;;;16209:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;16202:61;;16129:142;:::o;9011:122::-;9066:4;9090:35;9098:7;-1:-1:-1;;9090:7:0;:35::i;9681:138::-;3157:6;;-1:-1:-1;;;;;3157:6:0;2563:10;3157:22;3149:67;;;;-1:-1:-1;;;3149:67:0;;;;;;;:::i;:::-;9790:13:::1;5526:2;9790;:13;:::i;:::-;9774:29;::::0;:13;:29:::1;:::i;:::-;9756:15;:47:::0;-1:-1:-1;9681:138:0:o;3244:148::-;3157:6;;-1:-1:-1;;;;;3157:6:0;2563:10;3157:22;3149:67;;;;-1:-1:-1;;;3149:67:0;;;;;;;:::i;:::-;3351:1:::1;3335:6:::0;;3314:40:::1;::::0;-1:-1:-1;;;;;3335:6:0;;::::1;::::0;3314:40:::1;::::0;3351:1;;3314:40:::1;3382:1;3365:19:::0;;-1:-1:-1;;;;;;3365:19:0::1;::::0;;3244:148::o;13356:308::-;13476:10;13435:4;13460:27;;;:15;:27;;;;;;;;13452:36;;;;;;13499:6;13509:1;13499:11;13496:95;;13535:44;;-1:-1:-1;;;13535:44:0;;13573:4;13535:44;;;2675:51:1;-1:-1:-1;;;;;13535:29:0;;;;;2648:18:1;;13535:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13526:53;;13496:95;13608:48;;-1:-1:-1;;;13608:48:0;;13637:10;13608:48;;;6660:51:1;6727:18;;;6720:34;;;-1:-1:-1;;;;;13608:28:0;;;;;6633:18:1;;13608:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13831:79::-;3157:6;;-1:-1:-1;;;;;3157:6:0;2563:10;3157:22;3149:67;;;;-1:-1:-1;;;3149:67:0;;;;;;;:::i;:::-;13884:11:::1;:18:::0;;-1:-1:-1;;;;13884:18:0::1;-1:-1:-1::0;;;13884:18:0::1;::::0;;13831:79::o;9141:156::-;9221:4;9245:44;9259:10;9271:9;9282:6;9245:13;:44::i;13672:151::-;3157:6;;-1:-1:-1;;;;;3157:6:0;2563:10;3157:22;3149:67;;;;-1:-1:-1;;;3149:67:0;;;;;;;:::i;:::-;13753:13:::1;:20:::0;;;;13784:18:::1;:27:::0;13672:151::o;12901:280::-;3157:6;;-1:-1:-1;;;;;3157:6:0;2563:10;3157:22;3149:67;;;;-1:-1:-1;;;3149:67:0;;;;;;;:::i;:::-;13022:4:::1;12977:24;8619:18:::0;;;:9;:18;;;;;;;13062:47:::1;13105:3;13062:38;8619:18:::0;13083:16;13062:20:::1;:38::i;:::-;:42:::0;::::1;:47::i;:::-;13039:70;;13120:53;13143:4;13149:10;13160:12;13120:14;:53::i;:::-;;12966:215;;12901:280:::0;:::o;9827:120::-;3157:6;;-1:-1:-1;;;;;3157:6:0;2563:10;3157:22;3149:67;;;;-1:-1:-1;;;3149:67:0;;;;;;;:::i;:::-;9925:13:::1;5526:2;9925;:13;:::i;:::-;9911:27;::::0;:11;:27:::1;:::i;:::-;9896:12;:42:::0;-1:-1:-1;9827:120:0:o;15787:153::-;3157:6;;-1:-1:-1;;;;;3157:6:0;2563:10;3157:22;3149:67;;;;-1:-1:-1;;;3149:67:0;;;;;;;:::i;:::-;15876:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;15876:22:0::1;-1:-1:-1::0;;;;15876:22:0;;::::1;::::0;;;::::1;::::0;;;15909:13:::1;:23:::0;15787:153::o;16279:167::-;16347:7;16374:64;16415:22;:20;:22::i;:::-;16397:4;;-1:-1:-1;;;;;16397:4:0;8601:7;8619:18;;;:9;:18;;;;;;16374:36;;16387:22;;16407:1;;16387:15;:19;;:22::i;:::-;16374:8;;:12;:36::i;3400:244::-;3157:6;;-1:-1:-1;;;;;3157:6:0;2563:10;3157:22;3149:67;;;;-1:-1:-1;;;3149:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3489:22:0;::::1;3481:73;;;::::0;-1:-1:-1;;;3481:73:0;;7217:2:1;3481:73:0::1;::::0;::::1;7199:21:1::0;7256:2;7236:18;;;7229:30;7295:34;7275:18;;;7268:62;-1:-1:-1;;;7346:18:1;;;7339:36;7392:19;;3481:73:0::1;7015:402:1::0;3481:73:0::1;3591:6;::::0;;3570:38:::1;::::0;-1:-1:-1;;;;;3570:38:0;;::::1;::::0;3591:6;::::1;::::0;3570:38:::1;::::0;::::1;3619:6;:17:::0;;-1:-1:-1;;;;;;3619:17:0::1;-1:-1:-1::0;;;;;3619:17:0;;;::::1;::::0;;;::::1;::::0;;3400:244::o;13189:159::-;3157:6;;-1:-1:-1;;;;;3157:6:0;2563:10;3157:22;3149:67;;;;-1:-1:-1;;;3149:67:0;;;;;;;:::i;:::-;13266:10:::1;13250:27;::::0;;;:15:::1;:27;::::0;;;;;::::1;;13242:36;;;::::0;::::1;;13289:51;::::0;13297:10:::1;::::0;13318:21:::1;13289:51:::0;::::1;;;::::0;::::1;::::0;;;13318:21;13297:10;13289:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13189:159::o:0;925:250::-;983:7;1007:1;1012;1007:6;1003:47;;-1:-1:-1;1037:1:0;1030:8;;1003:47;1062:9;1074:5;1078:1;1074;:5;:::i;:::-;1062:17;-1:-1:-1;1107:1:0;1098:5;1102:1;1062:17;1098:5;:::i;:::-;:10;1090:56;;;;-1:-1:-1;;;1090:56:0;;7624:2:1;1090:56:0;;;7606:21:1;7663:2;7643:18;;;7636:30;7702:34;7682:18;;;7675:62;-1:-1:-1;;;7753:18:1;;;7746:31;7794:19;;1090:56:0;7422:397:1;1181:132:0;1239:7;1266:39;1270:1;1273;1266:39;;;;;;;;;;;;;;;;;:3;:39::i;727:192::-;813:7;849:12;841:6;;;;833:29;;;;-1:-1:-1;;;833:29:0;;;;;;;;:::i;:::-;-1:-1:-1;873:9:0;885:5;889:1;885;:5;:::i;:::-;873:17;727:192;-1:-1:-1;;;;;727:192:0:o;9955:731::-;10067:6;;10047:4;;10067:6;;10064:63;;;10083:41;10098:6;10106:9;10117:6;10083:14;:41::i;:::-;10076:48;;;;10064:63;10180:28;10193:6;10201;10180:12;:28::i;:::-;10225:16;:14;:16::i;:::-;10222:35;;;10244:10;:8;:10::i;:::-;10337:53;;;;;;;;;;;-1:-1:-1;;;10337:53:0;;;;;;;;-1:-1:-1;;;;;10337:17:0;;-1:-1:-1;10337:17:0;;;:9;:17;;;;;;;;:53;;10359:6;;10337:21;:53::i;:::-;-1:-1:-1;;;;;10317:17:0;;;;;;:9;:17;;;;;;;;:73;;;;10429:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;10452:22:0;;;;;;:11;:22;;;;;;;;10429:45;10428:93;;10487:34;10495:6;10503;10511:9;10487:7;:34::i;:::-;10428:93;;;10478:6;10428:93;-1:-1:-1;;;;;10555:20:0;;;;;;:9;:20;;;;;;10403:118;;-1:-1:-1;10555:40:0;;10403:118;10555:24;:40::i;:::-;-1:-1:-1;;;;;10532:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10613:43;;;;;;-1:-1:-1;;;;;;;;;;;10613:43:0;;;10641:14;345:25:1;;333:2;318:18;;199:177;10613:43:0;;;;;;;;-1:-1:-1;10674:4:0;;9955:731;-1:-1:-1;;;;9955:731:0:o;585:136::-;643:7;670:43;674:1;677;670:43;;;;;;;;;;;;;;;;;:3;:43::i;10698:330::-;10828:53;;;;;;;;;;;-1:-1:-1;;;10828:53:0;;;;;;;;-1:-1:-1;;;;;10828:17:0;;10791:4;10828:17;;;:9;:17;;;;;;;:53;;10850:6;;10828:21;:53::i;:::-;-1:-1:-1;;;;;10808:17:0;;;;;;;:9;:17;;;;;;:73;;;;10915:20;;;;;;;:32;;10940:6;10915:24;:32::i;:::-;-1:-1:-1;;;;;10892:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10963:35;;;;;;-1:-1:-1;;;;;;;;;;;10963:35:0;;;10991:6;345:25:1;;333:2;318:18;;199:177;10963:35:0;;;;;;;;-1:-1:-1;11016:4:0;10698:330;;;;;:::o;1319:189::-;1405:7;1440:12;1433:5;1425:28;;;;-1:-1:-1;;;1425:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1464:9:0;1476:5;1480:1;1476;:5;:::i;11036:166::-;11133:12;;11123:6;:22;;:49;;;-1:-1:-1;;;;;;11149:23:0;;;;;;:15;:23;;;;;;;;11123:49;11115:79;;;;-1:-1:-1;;;11115:79:0;;8159:2:1;11115:79:0;;;8141:21:1;8198:2;8178:18;;;8171:30;-1:-1:-1;;;8217:18:1;;;8210:47;8274:18;;11115:79:0;7957:341:1;11115:79:0;11036:166;;:::o;12454:197::-;12541:4;;12503;;-1:-1:-1;;;;;12541:4:0;12527:10;:18;;;;:38;;-1:-1:-1;12559:6:0;;;;12558:7;12527:38;:62;;;;-1:-1:-1;12578:11:0;;-1:-1:-1;;;12578:11:0;;;;12527:62;:116;;;;-1:-1:-1;;12630:13:0;;12620:4;12602:24;;;;:9;:24;;;;;;:41;;;12454:197::o;13918:1861::-;6978:6;:13;;-1:-1:-1;;6978:13:0;6987:4;6978:13;;;14013:15:::1;::::0;14030:26:::1;::::0;6978:6;;13997:60:::1;::::0;:15:::1;:60::i;:::-;:79;;14064:12;;13997:79;;;14060:1;13997:79;13967:109;;14087:23;14113:59;14170:1;14113:52;14156:8;;14113:38;14131:19;14113:13;;:17;;:38;;;;:::i;:59::-;14087:85;;14183:20;14206:34;14224:15;14206:13;;:17;;:34;;;;:::i;:::-;14277:16;::::0;;14291:1:::1;14277:16:::0;;;;;::::1;::::0;;14183:57;;-1:-1:-1;14253:21:0::1;::::0;14277:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14277:16:0::1;14253:40;;14322:4;14304;14309:1;14304:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14304:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;14348:4:::1;::::0;;14338:7;;14348:4;::::1;::::0;14338;;14348;14338:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;14338:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;14423:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;14423:188:0;;14389:21:::1;::::0;14423:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14495:12;;14365:21:::1;::::0;14538:4;;14565::::1;::::0;14585:15:::1;::::0;14423:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14624:17;14644:40;14670:13;14644:21;:25;;:40;;;;:::i;:::-;14624:60:::0;-1:-1:-1;14697:19:0::1;14719:40;14732:26;:19:::0;14756:1:::1;14732:23;:26::i;:::-;14719:8;::::0;;:12:::1;:40::i;:::-;14697:62:::0;-1:-1:-1;14780:26:0::1;14809:58;14865:1;14809:51;14697:62:::0;14809:51;:9;14823:19;14809:13:::1;:34::i;:58::-;14780:87;;14878:26;14907:44;14939:11;14907:27;14921:12;;14907:9;:13;;:27;;;;:::i;:44::-;14878:73;;14962:21;14986:39;15013:11;14986:22;15000:7;;14986:9;:13;;:22;;;;:::i;:39::-;14962:63;;15036:20;15059:38;15085:11;15059:21;15073:6;;15059:9;:13;;:21;;;;:::i;:38::-;15139:20;::::0;15131:65:::1;::::0;15036:61;;-1:-1:-1;15111:15:0::1;::::0;-1:-1:-1;;;;;15139:20:0;;::::1;::::0;15173:18;;15111:15;15131:65;15111:15;15131:65;15173:18;15139:20;15131:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;15231:14:0::1;::::0;15223:53:::1;::::0;15110:86;;-1:-1:-1;;;;;;15231:14:0::1;::::0;15259:12;;15223:53:::1;::::0;;;15259:12;15231:14;15223:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;15311:15:0::1;::::0;15303:55:::1;::::0;15207:69;;-1:-1:-1;;;;;;15311:15:0::1;::::0;15340:13;;15303:55:::1;::::0;;;15340:13;15311:15;15303:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;15392:5:0::1;::::0;-1:-1:-1;;15413:19:0;;;-1:-1:-1;15410:362:0::1;;15448:6;::::0;15622:21:::1;::::0;15448:244:::1;::::0;-1:-1:-1;;;15448:244:0;;15524:4:::1;15448:244;::::0;::::1;10103:34:1::0;10153:18;;;10146:34;;;15448:6:0::1;10196:18:1::0;;;10189:34;;;10239:18;;;10232:34;-1:-1:-1;;;;;15622:21:0;;::::1;10282:19:1::0;;;10275:44;15662:15:0::1;10335:19:1::0;;;10328:35;15448:6:0;::::1;::::0;:22:::1;::::0;15478:18;;10037:19:1;;15448:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15712:48:0::1;::::0;;10859:25:1;;;10915:2;10900:18;;10893:34;;;15712:48:0::1;::::0;-1:-1:-1;10832:18:1;15712:48:0::1;;;;;;;15410:362;-1:-1:-1::0;;6996:6:0;:14;;-1:-1:-1;;6996:14:0;;;-1:-1:-1;;;;;;;;;;13918:1861:0:o;11502:944::-;11639:18;;11686:4;;11588:7;;11639:18;-1:-1:-1;;;;;11686:4:0;;;11673:17;;;;11670:156;;-1:-1:-1;11720:16:0;;11670:156;;;11767:4;;-1:-1:-1;;;;;11767:4:0;;;11757:14;;;;11754:72;;-1:-1:-1;11801:13:0;;11754:72;11838:17;11858:62;11899:14;;11916:3;11899:20;;;;:::i;:::-;11858:36;11883:10;11858:20;11869:8;;11858:6;:10;;:20;;;;:::i;:62::-;11838:82;;11931:18;11952:36;11979:8;;11952:22;11966:7;;11952:9;:13;;:22;;;;:::i;:36::-;11931:57;-1:-1:-1;11999:22:0;12024:25;:9;11931:57;12024:13;:25::i;:::-;12107:4;12089:24;;;;:9;:24;;;;;;11999:50;;-1:-1:-1;12089:44:0;;11999:50;12089:28;:44::i;:::-;12080:4;12062:24;;;;:9;:24;;;;;;:71;;;;12183:15;;-1:-1:-1;;;;;12183:15:0;12173:26;;;;:42;;12204:10;12173:30;:42::i;:::-;12154:15;;-1:-1:-1;;;;;12154:15:0;;;12144:26;;;;:9;:26;;;;;;;;;:71;;;;12231:47;345:25:1;;;12256:4:0;;12231:47;;;;-1:-1:-1;;;;;;;;;;;12231:47:0;318:18:1;12231:47:0;;;;;;;12302:14;;12299:99;;12354:15;;12337:45;;345:25:1;;;-1:-1:-1;;;;;12354:15:0;;;;12337:45;;;-1:-1:-1;;;;;;;;;;;12337:45:0;333:2:1;318:18;12337:45:0;;;;;;;12299:99;12417:21;:6;12428:9;12417:10;:21::i;:::-;12410:28;11502:944;-1:-1:-1;;;;;;;;11502:944:0:o;398:181::-;456:7;;488:5;492:1;488;:5;:::i;:::-;476:17;;517:1;512;:6;;504:46;;;;-1:-1:-1;;;504:46:0;;11270:2:1;504:46:0;;;11252:21:1;11309:2;11289:18;;;11282:30;11348:29;11328:18;;;11321:57;11395:18;;504:46:0;11068:351:1;14:180;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;381:548::-;493:4;522:2;551;540:9;533:21;583:6;577:13;626:6;621:2;610:9;606:18;599:34;651:1;661:140;675:6;672:1;669:13;661:140;;;770:14;;;766:23;;760:30;736:17;;;755:2;732:26;725:66;690:10;;661:140;;;665:3;850:1;845:2;836:6;825:9;821:22;817:31;810:42;920:2;913;909:7;904:2;896:6;892:15;888:29;877:9;873:45;869:54;861:62;;;;381:548;;;;:::o;1126:173::-;1194:20;;-1:-1:-1;;;;;1243:31:1;;1233:42;;1223:70;;1289:1;1286;1279:12;1223:70;1126:173;;;:::o;1304:254::-;1372:6;1380;1433:2;1421:9;1412:7;1408:23;1404:32;1401:52;;;1449:1;1446;1439:12;1401:52;1472:29;1491:9;1472:29;:::i;:::-;1462:39;1548:2;1533:18;;;;1520:32;;-1:-1:-1;;;1304:254:1:o;1563:248::-;1631:6;1639;1692:2;1680:9;1671:7;1667:23;1663:32;1660:52;;;1708:1;1705;1698:12;1660:52;-1:-1:-1;;1731:23:1;;;1801:2;1786:18;;;1773:32;;-1:-1:-1;1563:248:1:o;1816:328::-;1893:6;1901;1909;1962:2;1950:9;1941:7;1937:23;1933:32;1930:52;;;1978:1;1975;1968:12;1930:52;2001:29;2020:9;2001:29;:::i;:::-;1991:39;;2049:38;2083:2;2072:9;2068:18;2049:38;:::i;:::-;2039:48;;2134:2;2123:9;2119:18;2106:32;2096:42;;1816:328;;;;;:::o;2338:186::-;2397:6;2450:2;2438:9;2429:7;2425:23;2421:32;2418:52;;;2466:1;2463;2456:12;2418:52;2489:29;2508:9;2489:29;:::i;2737:118::-;2823:5;2816:13;2809:21;2802:5;2799:32;2789:60;;2845:1;2842;2835:12;2860:309;2925:6;2933;2986:2;2974:9;2965:7;2961:23;2957:32;2954:52;;;3002:1;2999;2992:12;2954:52;3041:9;3028:23;3060:28;3082:5;3060:28;:::i;3174:260::-;3242:6;3250;3303:2;3291:9;3282:7;3278:23;3274:32;3271:52;;;3319:1;3316;3309:12;3271:52;3342:29;3361:9;3342:29;:::i;:::-;3332:39;;3390:38;3424:2;3413:9;3409:18;3390:38;:::i;:::-;3380:48;;3174:260;;;;;:::o;4026:356::-;4228:2;4210:21;;;4247:18;;;4240:30;4306:34;4301:2;4286:18;;4279:62;4373:2;4358:18;;4026:356::o;4387:127::-;4448:10;4443:3;4439:20;4436:1;4429:31;4479:4;4476:1;4469:15;4503:4;4500:1;4493:15;4519:168;4592:9;;;4623;;4640:15;;;4634:22;;4620:37;4610:71;;4661:18;;:::i;4692:217::-;4732:1;4758;4748:132;;4802:10;4797:3;4793:20;4790:1;4783:31;4837:4;4834:1;4827:15;4865:4;4862:1;4855:15;4748:132;-1:-1:-1;4894:9:1;;4692:217::o;4914:422::-;5003:1;5046:5;5003:1;5060:270;5081:7;5071:8;5068:21;5060:270;;;5140:4;5136:1;5132:6;5128:17;5122:4;5119:27;5116:53;;;5149:18;;:::i;:::-;5199:7;5189:8;5185:22;5182:55;;;5219:16;;;;5182:55;5298:22;;;;5258:15;;;;5060:270;;;5064:3;4914:422;;;;;:::o;5341:806::-;5390:5;5420:8;5410:80;;-1:-1:-1;5461:1:1;5475:5;;5410:80;5509:4;5499:76;;-1:-1:-1;5546:1:1;5560:5;;5499:76;5591:4;5609:1;5604:59;;;;5677:1;5672:130;;;;5584:218;;5604:59;5634:1;5625:10;;5648:5;;;5672:130;5709:3;5699:8;5696:17;5693:43;;;5716:18;;:::i;:::-;-1:-1:-1;;5772:1:1;5758:16;;5787:5;;5584:218;;5886:2;5876:8;5873:16;5867:3;5861:4;5858:13;5854:36;5848:2;5838:8;5835:16;5830:2;5824:4;5821:12;5817:35;5814:77;5811:159;;;-1:-1:-1;5923:19:1;;;5955:5;;5811:159;6002:34;6027:8;6021:4;6002:34;:::i;:::-;6072:6;6068:1;6064:6;6060:19;6051:7;6048:32;6045:58;;;6083:18;;:::i;:::-;6121:20;;5341:806;-1:-1:-1;;;5341:806:1:o;6152:140::-;6210:5;6239:47;6280:4;6270:8;6266:19;6260:4;6239:47;:::i;6297:184::-;6367:6;6420:2;6408:9;6399:7;6395:23;6391:32;6388:52;;;6436:1;6433;6426:12;6388:52;-1:-1:-1;6459:16:1;;6297:184;-1:-1:-1;6297:184:1:o;6765:245::-;6832:6;6885:2;6873:9;6864:7;6860:23;6856:32;6853:52;;;6901:1;6898;6891:12;6853:52;6933:9;6927:16;6952:28;6974:5;6952:28;:::i;7824:128::-;7891:9;;;7912:11;;;7909:37;;;7926:18;;:::i;8435:127::-;8496:10;8491:3;8487:20;8484:1;8477:31;8527:4;8524:1;8517:15;8551:4;8548:1;8541:15;8567:980;8829:4;8877:3;8866:9;8862:19;8908:6;8897:9;8890:25;8934:2;8972:6;8967:2;8956:9;8952:18;8945:34;9015:3;9010:2;8999:9;8995:18;8988:31;9039:6;9074;9068:13;9105:6;9097;9090:22;9143:3;9132:9;9128:19;9121:26;;9182:2;9174:6;9170:15;9156:29;;9203:1;9213:195;9227:6;9224:1;9221:13;9213:195;;;9292:13;;-1:-1:-1;;;;;9288:39:1;9276:52;;9383:15;;;;9348:12;;;;9324:1;9242:9;9213:195;;;-1:-1:-1;;;;;;;9464:32:1;;;;9459:2;9444:18;;9437:60;-1:-1:-1;;;9528:3:1;9513:19;9506:35;9425:3;8567:980;-1:-1:-1;;;8567:980:1:o;10374:306::-;10462:6;10470;10478;10531:2;10519:9;10510:7;10506:23;10502:32;10499:52;;;10547:1;10544;10537:12;10499:52;10576:9;10570:16;10560:26;;10626:2;10615:9;10611:18;10605:25;10595:35;;10670:2;10659:9;10655:18;10649:25;10639:35;;10374:306;;;;;:::o;10938:125::-;11003:9;;;11024:10;;;11021:36;;;11037:18;;:::i

Swarm Source

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