ETH Price: $3,661.01 (-1.88%)

Token

ERC-20: TSUKANOMICS (TSUKANOMICS)
 

Overview

Max Total Supply

1,000,000 TSUKANOMICS

Holders

56

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TSUKANOMICS

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED


//Join TG: https://t.me/tsukanomics_entry


pragma solidity 0.8.7;

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(address(msg.sender));
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

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

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

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

}  


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 TSUKANOMICS is ERC20, Ownable {
    using SafeMath for uint256;

    uint256 private protection = 4; 
    uint256 public launchBlock;
    uint256 private protectionBlock;

    address private WETH;
    address private DEAD = 0x000000000000000000000000000000000000dEaD;
    address private ZERO = 0x0000000000000000000000000000000000000000;

    string constant private _name = "TSUKANOMICS";
    string constant private _symbol = "TSUKANOMICS";
    uint8 constant private _decimals = 18;

    uint256 private _totalSupply = 1000000* 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply / 50;
    uint256 public _maxWalletAmount = _totalSupply / 50;

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

    address[] public _markerPairs;
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMaxWalletExempt;

    //Fees
    uint256 private constant liquidityFee = 1;
    uint256 private constant marketingFee = 3;
    uint256 private constant devFee = 1; 

    uint256 private constant sellFeeLiquidity = 1;
    uint256 private constant sellFeeMarketing = 3;
    uint256 private constant sellFeeDev = 1; 

    uint256 private constant transferFee = 0;

    uint256 private constant totalBuyFee = 5;
    uint256 private constant totalSellFee = 5;

    uint256 private feeDenominator  = 100;

    address private autoLiquidityReceiver = 0x70cA697478982a8b9A27fb86434d1372cD83947D;
    address private marketingFeeReceiver = 0x9449A008b96D578BabE2B765e1A32f7509A26dD8;
    address private devFeeReceiver = 0xB8A2F3E3Aadf17e2D63334271E4B7ACA827CCd6e ; 

    IDEXRouter public router;
    address public pair;

    bool public tradingEnabled = false;
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 1 / 5000;

    bool private inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        setAutomatedMarketMakerPair(pair, true);

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isMaxWalletExempt[msg.sender] = true;

               
        isFeeExempt[address(this)] = true; 
        isTxLimitExempt[address(this)] = true;
        isMaxWalletExempt[address(this)] = true;

        isMaxWalletExempt[pair] = true;


        _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 _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){
            require(tradingEnabled,"Trading not open yet");
        }

        if(shouldSwapBack()){ swapBack(); }

        uint256 amountReceived = amount; 

        if(automatedMarketMakerPairs[sender]) { //buy
            if(!isFeeExempt[recipient]) {
                require(_balances[recipient].add(amount) <= _maxWalletAmount || isMaxWalletExempt[recipient], "Max Wallet Limit Limit Exceeded");
                require(amount <= _maxTxAmount || isTxLimitExempt[recipient], "TX Limit Exceeded");
                amountReceived = takeBuyFee(sender, amount);
            }

        } else if(automatedMarketMakerPairs[recipient]) { //sell
            if(!isFeeExempt[sender]) {
                require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
                amountReceived = takeSellFee(sender, amount);

            }
        } else {	
            if (!isFeeExempt[sender]) {	
                require(_balances[recipient].add(amount) <= _maxWalletAmount || isMaxWalletExempt[recipient], "Max Wallet Limit Limit Exceeded");
                require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
                amountReceived = takeTransferFee(sender, amount);

            }
        }

        _balances[sender] = _balances[sender].sub(amount);
        _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;
    }

    // Fees
    function takeBuyFee(address sender, uint256 amount) internal returns (uint256){
        uint256 _realFee = totalBuyFee;
        if (block.number < protectionBlock) {
                _realFee = 99;
            }

        uint256 feeAmount = amount.mul(_realFee).div(feeDenominator);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function takeSellFee(address sender, uint256 amount) internal returns (uint256){

        uint256 feeAmount = amount.mul(totalSellFee).div(feeDenominator);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
            
    }

    function takeTransferFee(address sender, uint256 amount) internal returns (uint256){
        uint256 feeAmount = amount.mul(transferFee).div(feeDenominator);
        
        if (feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);	
            emit Transfer(sender, address(this), feeAmount); 
        }
            	
        return amount.sub(feeAmount);	
    }    

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

    // switch Trading
    function enableTrading() external onlyOwner {
        tradingEnabled = true;
        launchBlock = block.number;
        protectionBlock = block.number.add(protection);
    }

    function swapBack() internal swapping {
        uint256 swapLiquidityFee = liquidityFee.add(sellFeeLiquidity);
        uint256 realTotalFee =totalBuyFee.add(totalSellFee);

        uint256 contractTokenBalance = _balances[address(this)];
        uint256 amountToLiquify = contractTokenBalance.mul(swapLiquidityFee).div(realTotalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

        uint256 balanceBefore = address(this).balance;

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

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

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

        uint256 totalETHFee = realTotalFee.sub(swapLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee.add(sellFeeLiquidity)).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee.add(sellFeeMarketing)).div(totalETHFee);
        uint256 amountETHDev = amountETH.sub(amountETHLiquidity).sub(amountETHMarketing);

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

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


    
    }

    // Admin Functions
    function setAutomatedMarketMakerPair(address _pair, bool _value) internal {
            require(automatedMarketMakerPairs[_pair] != _value, "Value already set");

            automatedMarketMakerPairs[_pair] = _value;

            if(_value){
                _markerPairs.push(_pair);
            }else{
                require(_markerPairs.length > 1, "Required 1 pair");
                for (uint256 i = 0; i < _markerPairs.length; i++) {
                    if (_markerPairs[i] == _pair) {
                        _markerPairs[i] = _markerPairs[_markerPairs.length - 1];
                        _markerPairs.pop();
                        break;
                    }
                }
            }
        }

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

    function letsChangeIt (uint256 _number) external onlyOwner {
        require(_number < 15, "Can't go that high");
        protection = _number;
        
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"","type":"uint256"}],"name":"_markerPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxWalletExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_number","type":"uint256"}],"name":"letsChangeIt","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":[],"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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"stateMutability":"payable","type":"receive"}]

60806040526004600255600680546001600160a01b031990811661dead17909155600780549091169055620000376012600a62000723565b6200004690620f4240620007e4565b60085560326008546200005a9190620006b7565b60095560326008546200006e9190620006b7565b600a556064601255601380546001600160a01b03199081167370ca697478982a8b9a27fb86434d1372cd83947d17909155601480548216739449a008b96d578babe2b765e1a32f7509a26dd81790556015805490911673b8a2f3e3aadf17e2d63334271e4b7aca827ccd6e1790556017805461ffff60a01b1916600160a81b1790556008546113889062000104906001620007e4565b620001109190620006b7565b6018553480156200012057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b158015620001c257600080fd5b505afa158015620001d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fd919062000685565b600580546001600160a01b0319166001600160a01b039283161790556016546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b1580156200025757600080fd5b505afa1580156200026c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000292919062000685565b6005546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b158015620002df57600080fd5b505af1158015620002f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031a919062000685565b601780546001600160a01b0319166001600160a01b039290921691821790556200034690600162000436565b306000818152600c602090815260408083206016546001600160a01b039081168552908352818420600019905533808552600f8085528386208054600160ff199182168117909255601080885286892080548316841790556011808952878a208054841685179055998952928752858820805482168317905591865284872080548316821790559685528386208054821688179055601754909216855282852080549092169095179055600854848452600b835281842081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000880565b6001600160a01b0382166000908152600e602052604090205460ff16151581151514156200049f5760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b60448201526064015b60405180910390fd5b6001600160a01b0382166000908152600e60205260409020805460ff191682158015919091179091556200051e57600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0384166001600160a01b03199091161790555050565b600d54600110620005645760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b604482015260640162000496565b60005b600d548110156200068057826001600160a01b0316600d82815481106200059257620005926200086a565b6000918252602090912001546001600160a01b031614156200066b57600d8054620005c09060019062000806565b81548110620005d357620005d36200086a565b600091825260209091200154600d80546001600160a01b0390921691839081106200060257620006026200086a565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600d80548062000644576200064462000854565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b80620006778162000820565b91505062000567565b505050565b6000602082840312156200069857600080fd5b81516001600160a01b0381168114620006b057600080fd5b9392505050565b600082620006d557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200071b578160001904821115620006ff57620006ff6200083e565b808516156200070d57918102915b93841c9390800290620006df565b509250929050565b6000620006b060ff8416836000826200073f57506001620007de565b816200074e57506000620007de565b8160018114620007675760028114620007725762000792565b6001915050620007de565b60ff8411156200078657620007866200083e565b50506001821b620007de565b5060208310610133831016604e8410600b8410161715620007b7575081810a620007de565b620007c38383620006da565b8060001904821115620007da57620007da6200083e565b0290505b92915050565b60008160001904831182151516156200080157620008016200083e565b500290565b6000828210156200081b576200081b6200083e565b500390565b60006000198214156200083757620008376200083e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6117e080620008906000396000f3fe6080604052600436106101c55760003560e01c806370a08231116100f757806395d89b4111610095578063d00efb2f11610064578063d00efb2f1461052a578063dd62ed3e14610540578063e1d5584c14610586578063f887ea40146105a657600080fd5b806395d89b411461021c578063a8aa1b31146104ba578063a9059cbb146104da578063b62496f5146104fa57600080fd5b8063893d20e8116100d1578063893d20e8146104255780638a8c523c146104575780638b42507f1461046c5780638da5cb5b1461049c57600080fd5b806370a08231146103c4578063715018a6146103fa5780637d1db4a51461040f57600080fd5b80632b112e49116101645780634ada218b1161013e5780634ada218b1461034c578063571ac8b01461036d5780636c0a24eb1461038d5780636ddd1713146103a357600080fd5b80632b112e49146102eb578063313ce567146103005780633f4218e01461031c57600080fd5b8063095ea7b3116101a0578063095ea7b3146102565780630bd11f8a1461028657806318160ddd146102b657806323b872dd146102cb57600080fd5b8062e136df146101d15780630445b667146101f357806306fdde031461021c57600080fd5b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f16101ec366004611581565b6105c6565b005b3480156101ff57600080fd5b5061020960185481565b6040519081526020015b60405180910390f35b34801561022857600080fd5b50604080518082018252600b81526a5453554b414e4f4d49435360a81b6020820152905161021391906115c8565b34801561026257600080fd5b50610276610271366004611557565b610643565b6040519015158152602001610213565b34801561029257600080fd5b506102766102a13660046114cd565b60116020526000908152604090205460ff1681565b3480156102c257600080fd5b50600854610209565b3480156102d757600080fd5b506102766102e636600461151b565b6106b0565b3480156102f757600080fd5b50610209610772565b34801561030c57600080fd5b5060405160128152602001610213565b34801561032857600080fd5b506102766103373660046114cd565b600f6020526000908152604090205460ff1681565b34801561035857600080fd5b5060175461027690600160a01b900460ff1681565b34801561037957600080fd5b506102766103883660046114cd565b6107c4565b34801561039957600080fd5b50610209600a5481565b3480156103af57600080fd5b5060175461027690600160a81b900460ff1681565b3480156103d057600080fd5b506102096103df3660046114cd565b6001600160a01b03166000908152600b602052604090205490565b34801561040657600080fd5b506101f16107d2565b34801561041b57600080fd5b5061020960095481565b34801561043157600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610213565b34801561046357600080fd5b506101f1610846565b34801561047857600080fd5b506102766104873660046114cd565b60106020526000908152604090205460ff1681565b3480156104a857600080fd5b506000546001600160a01b031661043f565b3480156104c657600080fd5b5060175461043f906001600160a01b031681565b3480156104e657600080fd5b506102766104f5366004611557565b61089b565b34801561050657600080fd5b506102766105153660046114cd565b600e6020526000908152604090205460ff1681565b34801561053657600080fd5b5061020960035481565b34801561054c57600080fd5b5061020961055b3660046114e8565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205490565b34801561059257600080fd5b5061043f6105a1366004611581565b6108a8565b3480156105b257600080fd5b5060165461043f906001600160a01b031681565b6000546001600160a01b031633146105f95760405162461bcd60e51b81526004016105f090611648565b60405180910390fd5b600f811061063e5760405162461bcd60e51b8152602060048201526012602482015271086c2dc4ee840cede40e8d0c2e840d0d2ced60731b60448201526064016105f0565b600255565b336000818152600c602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061069e9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600c602090815260408083203384529091528120546000191461075d576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600c825283812033825290915291909120546107389184906108d2565b6001600160a01b0385166000908152600c602090815260408083203384529091529020555b61076884848461090c565b90505b9392505050565b6007546001600160a01b03166000908152600b60205260408120546107bf906006546001600160a01b03166000908152600b60205260409020546107b99060085490610d49565b90610d49565b905090565b60006106aa82600019610643565b6000546001600160a01b031633146107fc5760405162461bcd60e51b81526004016105f090611648565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108705760405162461bcd60e51b81526004016105f090611648565b6017805460ff60a01b1916600160a01b1790554360038190556002546108969190610d8b565b600455565b600061076b33848461090c565b600d81815481106108b857600080fd5b6000918252602090912001546001600160a01b0316905081565b600081848411156108f65760405162461bcd60e51b81526004016105f091906115c8565b5060006109038486611747565b95945050505050565b60195460009060ff161561092c57610925848484610dea565b905061076b565b6001600160a01b0384166000908152600f602052604090205460ff1615801561096e57506001600160a01b0383166000908152600f602052604090205460ff16155b156109c357601754600160a01b900460ff166109c35760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016105f0565b6109cb610ebe565b156109d8576109d8610f16565b6001600160a01b0384166000908152600e6020526040902054829060ff1615610b09576001600160a01b0384166000908152600f602052604090205460ff16610b0457600a546001600160a01b0385166000908152600b6020526040902054610a419085610d8b565b111580610a6657506001600160a01b03841660009081526011602052604090205460ff165b610ab25760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016105f0565b60095483111580610adb57506001600160a01b03841660009081526010602052604090205460ff165b610af75760405162461bcd60e51b81526004016105f09061161d565b610b018584611255565b90505b610ca2565b6001600160a01b0384166000908152600e602052604090205460ff1615610b99576001600160a01b0385166000908152600f602052604090205460ff16610b045760095483111580610b7357506001600160a01b03851660009081526010602052604090205460ff165b610b8f5760405162461bcd60e51b81526004016105f09061161d565b610b0185846112eb565b6001600160a01b0385166000908152600f602052604090205460ff16610ca257600a546001600160a01b0385166000908152600b6020526040902054610bdf9085610d8b565b111580610c0457506001600160a01b03841660009081526011602052604090205460ff165b610c505760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016105f0565b60095483111580610c7957506001600160a01b03851660009081526010602052604090205460ff165b610c955760405162461bcd60e51b81526004016105f09061161d565b610c9f858461137e565b90505b6001600160a01b0385166000908152600b6020526040902054610cc59084610d49565b6001600160a01b038087166000908152600b60205260408082209390935590861681522054610cf49082610d8b565b6001600160a01b038086166000818152600b6020526040908190209390935591519087169060008051602061178b83398151915290610d369085815260200190565b60405180910390a3506001949350505050565b600061076b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506108d2565b600080610d9883856116ee565b90508381101561076b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105f0565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600b90915291822054610e3b9184906108d2565b6001600160a01b038086166000908152600b60205260408082209390935590851681522054610e6a9083610d8b565b6001600160a01b038085166000818152600b6020526040908190209390935591519086169060008051602061178b83398151915290610eac9086815260200190565b60405180910390a35060019392505050565b336000908152600e602052604081205460ff16158015610ee1575060195460ff16155b8015610ef65750601754600160a81b900460ff165b80156107bf575050601854306000908152600b6020526040902054101590565b6019805460ff19166001908117909155600090610f339080610d8b565b90506000610f42600580610d8b565b306000908152600b6020526040812054919250610f6c6002610f66858186896113c7565b90611446565b90506000610f7a8383610d49565b60408051600280825260608201835292935047926000926020830190803683370190505090503081600081518110610fb457610fb4611774565b6001600160a01b039283166020918202929092010152600554825191169082906001908110610fe557610fe5611774565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac9479061102b90869060009086903090429060040161167d565b600060405180830381600087803b15801561104557600080fd5b505af1158015611059573d6000803e3d6000fd5b5050505060006110728347610d4990919063ffffffff16565b9050600061108b6110848a6002611446565b8990610d49565b905060006110ab6002610f6684816110a4600180610d8b565b88906113c7565b905060006110c883610f666110c1600380610d8b565b87906113c7565b905060006110da826107b98786610d49565b6014546040519192506000916001600160a01b039091169084908381818185875af1925050503d806000811461112c576040519150601f19603f3d011682016040523d82523d6000602084013e611131565b606091505b50506015546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611181576040519150601f19603f3d011682016040523d82523d6000602084013e611186565b606091505b5060009250508a15905061123c5760165460135460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c4016060604051808303818588803b1580156111ff57600080fd5b505af1158015611213573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611238919061159a565b5050505b50506019805460ff191690555050505050505050505050565b600454600090600590431015611269575060635b60125460009061127d90610f6686856113c7565b306000908152600b602052604090205490915061129a9082610d8b565b306000818152600b6020526040908190209290925590516001600160a01b0387169060008051602061178b833981519152906112d99085815260200190565b60405180910390a36109038482610d49565b600080611308601254610f666005866113c790919063ffffffff16565b306000908152600b60205260409020549091506113259082610d8b565b306000818152600b6020526040908190209290925590516001600160a01b0386169060008051602061178b833981519152906113649085815260200190565b60405180910390a36113768382610d49565b949350505050565b60008061139b601254610f666000866113c790919063ffffffff16565b905080156113bd57306000908152600b60205260409020546113259082610d8b565b6113768382610d49565b6000826113d6575060006106aa565b60006113e28385611728565b9050826113ef8583611706565b1461076b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105f0565b600061076b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836114a45760405162461bcd60e51b81526004016105f091906115c8565b5060006109038486611706565b80356001600160a01b03811681146114c857600080fd5b919050565b6000602082840312156114df57600080fd5b61076b826114b1565b600080604083850312156114fb57600080fd5b611504836114b1565b9150611512602084016114b1565b90509250929050565b60008060006060848603121561153057600080fd5b611539846114b1565b9250611547602085016114b1565b9150604084013590509250925092565b6000806040838503121561156a57600080fd5b611573836114b1565b946020939093013593505050565b60006020828403121561159357600080fd5b5035919050565b6000806000606084860312156115af57600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156115f5578581018301518582016040015282016115d9565b81811115611607576000604083870101525b50601f01601f1916929092016040019392505050565b602080825260119082015270151608131a5b5a5d08115e18d959591959607a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116cd5784516001600160a01b0316835293830193918301916001016116a8565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156117015761170161175e565b500190565b60008261172357634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156117425761174261175e565b500290565b6000828210156117595761175961175e565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c0b564c09f421d2d1f19436af063b5a538a0fa00151888f16d2b124acf1cd22f64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101c55760003560e01c806370a08231116100f757806395d89b4111610095578063d00efb2f11610064578063d00efb2f1461052a578063dd62ed3e14610540578063e1d5584c14610586578063f887ea40146105a657600080fd5b806395d89b411461021c578063a8aa1b31146104ba578063a9059cbb146104da578063b62496f5146104fa57600080fd5b8063893d20e8116100d1578063893d20e8146104255780638a8c523c146104575780638b42507f1461046c5780638da5cb5b1461049c57600080fd5b806370a08231146103c4578063715018a6146103fa5780637d1db4a51461040f57600080fd5b80632b112e49116101645780634ada218b1161013e5780634ada218b1461034c578063571ac8b01461036d5780636c0a24eb1461038d5780636ddd1713146103a357600080fd5b80632b112e49146102eb578063313ce567146103005780633f4218e01461031c57600080fd5b8063095ea7b3116101a0578063095ea7b3146102565780630bd11f8a1461028657806318160ddd146102b657806323b872dd146102cb57600080fd5b8062e136df146101d15780630445b667146101f357806306fdde031461021c57600080fd5b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f16101ec366004611581565b6105c6565b005b3480156101ff57600080fd5b5061020960185481565b6040519081526020015b60405180910390f35b34801561022857600080fd5b50604080518082018252600b81526a5453554b414e4f4d49435360a81b6020820152905161021391906115c8565b34801561026257600080fd5b50610276610271366004611557565b610643565b6040519015158152602001610213565b34801561029257600080fd5b506102766102a13660046114cd565b60116020526000908152604090205460ff1681565b3480156102c257600080fd5b50600854610209565b3480156102d757600080fd5b506102766102e636600461151b565b6106b0565b3480156102f757600080fd5b50610209610772565b34801561030c57600080fd5b5060405160128152602001610213565b34801561032857600080fd5b506102766103373660046114cd565b600f6020526000908152604090205460ff1681565b34801561035857600080fd5b5060175461027690600160a01b900460ff1681565b34801561037957600080fd5b506102766103883660046114cd565b6107c4565b34801561039957600080fd5b50610209600a5481565b3480156103af57600080fd5b5060175461027690600160a81b900460ff1681565b3480156103d057600080fd5b506102096103df3660046114cd565b6001600160a01b03166000908152600b602052604090205490565b34801561040657600080fd5b506101f16107d2565b34801561041b57600080fd5b5061020960095481565b34801561043157600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610213565b34801561046357600080fd5b506101f1610846565b34801561047857600080fd5b506102766104873660046114cd565b60106020526000908152604090205460ff1681565b3480156104a857600080fd5b506000546001600160a01b031661043f565b3480156104c657600080fd5b5060175461043f906001600160a01b031681565b3480156104e657600080fd5b506102766104f5366004611557565b61089b565b34801561050657600080fd5b506102766105153660046114cd565b600e6020526000908152604090205460ff1681565b34801561053657600080fd5b5061020960035481565b34801561054c57600080fd5b5061020961055b3660046114e8565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205490565b34801561059257600080fd5b5061043f6105a1366004611581565b6108a8565b3480156105b257600080fd5b5060165461043f906001600160a01b031681565b6000546001600160a01b031633146105f95760405162461bcd60e51b81526004016105f090611648565b60405180910390fd5b600f811061063e5760405162461bcd60e51b8152602060048201526012602482015271086c2dc4ee840cede40e8d0c2e840d0d2ced60731b60448201526064016105f0565b600255565b336000818152600c602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061069e9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600c602090815260408083203384529091528120546000191461075d576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600c825283812033825290915291909120546107389184906108d2565b6001600160a01b0385166000908152600c602090815260408083203384529091529020555b61076884848461090c565b90505b9392505050565b6007546001600160a01b03166000908152600b60205260408120546107bf906006546001600160a01b03166000908152600b60205260409020546107b99060085490610d49565b90610d49565b905090565b60006106aa82600019610643565b6000546001600160a01b031633146107fc5760405162461bcd60e51b81526004016105f090611648565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108705760405162461bcd60e51b81526004016105f090611648565b6017805460ff60a01b1916600160a01b1790554360038190556002546108969190610d8b565b600455565b600061076b33848461090c565b600d81815481106108b857600080fd5b6000918252602090912001546001600160a01b0316905081565b600081848411156108f65760405162461bcd60e51b81526004016105f091906115c8565b5060006109038486611747565b95945050505050565b60195460009060ff161561092c57610925848484610dea565b905061076b565b6001600160a01b0384166000908152600f602052604090205460ff1615801561096e57506001600160a01b0383166000908152600f602052604090205460ff16155b156109c357601754600160a01b900460ff166109c35760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016105f0565b6109cb610ebe565b156109d8576109d8610f16565b6001600160a01b0384166000908152600e6020526040902054829060ff1615610b09576001600160a01b0384166000908152600f602052604090205460ff16610b0457600a546001600160a01b0385166000908152600b6020526040902054610a419085610d8b565b111580610a6657506001600160a01b03841660009081526011602052604090205460ff165b610ab25760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016105f0565b60095483111580610adb57506001600160a01b03841660009081526010602052604090205460ff165b610af75760405162461bcd60e51b81526004016105f09061161d565b610b018584611255565b90505b610ca2565b6001600160a01b0384166000908152600e602052604090205460ff1615610b99576001600160a01b0385166000908152600f602052604090205460ff16610b045760095483111580610b7357506001600160a01b03851660009081526010602052604090205460ff165b610b8f5760405162461bcd60e51b81526004016105f09061161d565b610b0185846112eb565b6001600160a01b0385166000908152600f602052604090205460ff16610ca257600a546001600160a01b0385166000908152600b6020526040902054610bdf9085610d8b565b111580610c0457506001600160a01b03841660009081526011602052604090205460ff165b610c505760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016105f0565b60095483111580610c7957506001600160a01b03851660009081526010602052604090205460ff165b610c955760405162461bcd60e51b81526004016105f09061161d565b610c9f858461137e565b90505b6001600160a01b0385166000908152600b6020526040902054610cc59084610d49565b6001600160a01b038087166000908152600b60205260408082209390935590861681522054610cf49082610d8b565b6001600160a01b038086166000818152600b6020526040908190209390935591519087169060008051602061178b83398151915290610d369085815260200190565b60405180910390a3506001949350505050565b600061076b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506108d2565b600080610d9883856116ee565b90508381101561076b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105f0565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600b90915291822054610e3b9184906108d2565b6001600160a01b038086166000908152600b60205260408082209390935590851681522054610e6a9083610d8b565b6001600160a01b038085166000818152600b6020526040908190209390935591519086169060008051602061178b83398151915290610eac9086815260200190565b60405180910390a35060019392505050565b336000908152600e602052604081205460ff16158015610ee1575060195460ff16155b8015610ef65750601754600160a81b900460ff165b80156107bf575050601854306000908152600b6020526040902054101590565b6019805460ff19166001908117909155600090610f339080610d8b565b90506000610f42600580610d8b565b306000908152600b6020526040812054919250610f6c6002610f66858186896113c7565b90611446565b90506000610f7a8383610d49565b60408051600280825260608201835292935047926000926020830190803683370190505090503081600081518110610fb457610fb4611774565b6001600160a01b039283166020918202929092010152600554825191169082906001908110610fe557610fe5611774565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac9479061102b90869060009086903090429060040161167d565b600060405180830381600087803b15801561104557600080fd5b505af1158015611059573d6000803e3d6000fd5b5050505060006110728347610d4990919063ffffffff16565b9050600061108b6110848a6002611446565b8990610d49565b905060006110ab6002610f6684816110a4600180610d8b565b88906113c7565b905060006110c883610f666110c1600380610d8b565b87906113c7565b905060006110da826107b98786610d49565b6014546040519192506000916001600160a01b039091169084908381818185875af1925050503d806000811461112c576040519150601f19603f3d011682016040523d82523d6000602084013e611131565b606091505b50506015546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611181576040519150601f19603f3d011682016040523d82523d6000602084013e611186565b606091505b5060009250508a15905061123c5760165460135460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c4016060604051808303818588803b1580156111ff57600080fd5b505af1158015611213573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611238919061159a565b5050505b50506019805460ff191690555050505050505050505050565b600454600090600590431015611269575060635b60125460009061127d90610f6686856113c7565b306000908152600b602052604090205490915061129a9082610d8b565b306000818152600b6020526040908190209290925590516001600160a01b0387169060008051602061178b833981519152906112d99085815260200190565b60405180910390a36109038482610d49565b600080611308601254610f666005866113c790919063ffffffff16565b306000908152600b60205260409020549091506113259082610d8b565b306000818152600b6020526040908190209290925590516001600160a01b0386169060008051602061178b833981519152906113649085815260200190565b60405180910390a36113768382610d49565b949350505050565b60008061139b601254610f666000866113c790919063ffffffff16565b905080156113bd57306000908152600b60205260409020546113259082610d8b565b6113768382610d49565b6000826113d6575060006106aa565b60006113e28385611728565b9050826113ef8583611706565b1461076b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105f0565b600061076b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836114a45760405162461bcd60e51b81526004016105f091906115c8565b5060006109038486611706565b80356001600160a01b03811681146114c857600080fd5b919050565b6000602082840312156114df57600080fd5b61076b826114b1565b600080604083850312156114fb57600080fd5b611504836114b1565b9150611512602084016114b1565b90509250929050565b60008060006060848603121561153057600080fd5b611539846114b1565b9250611547602085016114b1565b9150604084013590509250925092565b6000806040838503121561156a57600080fd5b611573836114b1565b946020939093013593505050565b60006020828403121561159357600080fd5b5035919050565b6000806000606084860312156115af57600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156115f5578581018301518582016040015282016115d9565b81811115611607576000604083870101525b50601f01601f1916929092016040019392505050565b602080825260119082015270151608131a5b5a5d08115e18d959591959607a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116cd5784516001600160a01b0316835293830193918301916001016116a8565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156117015761170161175e565b500190565b60008261172357634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156117425761174261175e565b500290565b6000828210156117595761175961175e565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c0b564c09f421d2d1f19436af063b5a538a0fa00151888f16d2b124acf1cd22f64736f6c63430008070033

Deployed Bytecode Sourcemap

4842:11279:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15954:162;;;;;;;;;;-1:-1:-1;15954:162:0;;;;;:::i;:::-;;:::i;:::-;;6830:54;;;;;;;;;;;;;;;;;;;6453:25:1;;;6441:2;6426:18;6830:54:0;;;;;;;;8088:80;;;;;;;;;;-1:-1:-1;8160:5:0;;;;;;;;;;;-1:-1:-1;;;8160:5:0;;;;8088:80;;;;8160:5;8088:80;:::i;8512:216::-;;;;;;;;;;-1:-1:-1;8512:216:0;;;;;:::i;:::-;;:::i;:::-;;;2931:14:1;;2924:22;2906:41;;2894:2;2879:18;8512:216:0;2766:187:1;5873:50:0;;;;;;;;;;-1:-1:-1;5873:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7818:88;;;;;;;;;;-1:-1:-1;7891:12:0;;7818:88;;9030:370;;;;;;;;;;-1:-1:-1;9030:370:0;;;;;:::i;:::-;;:::i;15804:142::-;;;;;;;;;;;;;:::i;7912:80::-;;;;;;;;;;-1:-1:-1;7912:80:0;;5348:2;7616:36:1;;7604:2;7589:18;7912:80:0;7474:184:1;5767:44:0;;;;;;;;;;-1:-1:-1;5767:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6752:34;;;;;;;;;;-1:-1:-1;6752:34:0;;;;-1:-1:-1;;;6752:34:0;;;;;;8736:122;;;;;;;;;;-1:-1:-1;8736:122:0;;;;;:::i;:::-;;:::i;5475:51::-;;;;;;;;;;;;;;;;6793:30;;;;;;;;;;-1:-1:-1;6793:30:0;;;;-1:-1:-1;;;6793:30:0;;;;;;8260:105;;;;;;;;;;-1:-1:-1;8260:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8344:18:0;8326:7;8344:18;;;:9;:18;;;;;;;8260:105;3145:148;;;;;;;;;;;;;:::i;5421:47::-;;;;;;;;;;;;;;;;8174:80;;;;;;;;;;-1:-1:-1;8226:7:0;2996:6;-1:-1:-1;;;;;2996:6:0;8174:80;;;-1:-1:-1;;;;;2110:32:1;;;2092:51;;2080:2;2065:18;8174:80:0;1946:203:1;13048:178:0;;;;;;;;;;;;;:::i;5818:48::-;;;;;;;;;;-1:-1:-1;5818:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2931:79;;;;;;;;;;-1:-1:-1;2969:7:0;2996:6;-1:-1:-1;;;;;2996:6:0;2931:79;;6724:19;;;;;;;;;;-1:-1:-1;6724:19:0;;;;-1:-1:-1;;;;;6724:19:0;;;8866:156;;;;;;;;;;-1:-1:-1;8866:156:0;;;;;:::i;:::-;;:::i;5702:58::-;;;;;;;;;;-1:-1:-1;5702:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4961:26;;;;;;;;;;;;;;;;8371:133;;;;;;;;;;-1:-1:-1;8371:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8473:19:0;;;8455:7;8473:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8371:133;5666:29;;;;;;;;;;-1:-1:-1;5666:29:0;;;;;:::i;:::-;;:::i;6693:24::-;;;;;;;;;;-1:-1:-1;6693:24:0;;;;-1:-1:-1;;;;;6693:24:0;;;15954:162;3058:6;;-1:-1:-1;;;;;3058:6:0;2308:10;3058:22;3050:67;;;;-1:-1:-1;;;3050:67:0;;;;;;;:::i;:::-;;;;;;;;;16042:2:::1;16032:7;:12;16024:43;;;::::0;-1:-1:-1;;;16024:43:0;;3988:2:1;16024:43:0::1;::::0;::::1;3970:21:1::0;4027:2;4007:18;;;4000:30;-1:-1:-1;;;4046:18:1;;;4039:48;4104:18;;16024:43:0::1;3786:342:1::0;16024:43:0::1;16078:10;:20:::0;15954:162::o;8512:216::-;8616:10;8587:4;8604:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8604:32:0;;;;;;;;;;:41;;;8661:37;8587:4;;8604:32;;8661:37;;;;8639:6;6453:25:1;;6441:2;6426:18;;6307:177;8661:37:0;;;;;;;;-1:-1:-1;8716:4:0;8512:216;;;;;:::o;9030:370::-;-1:-1:-1;;;;;9150:19:0;;9130:4;9150:19;;;:11;:19;;;;;;;;9170:10;9150:31;;;;;;;;-1:-1:-1;;9150:52:0;9147:186;;9252:69;;;;;;;;;;;-1:-1:-1;;;9252:69:0;;;;;;;;-1:-1:-1;;;;;9252:19:0;;-1:-1:-1;9252:19:0;;;:11;:19;;;;;9272:10;9252:31;;;;;;;;;;:69;;9288:6;;9252:35;:69::i;:::-;-1:-1:-1;;;;;9218:19:0;;;;;;:11;:19;;;;;;;;9238:10;9218:31;;;;;;;:103;9147:186;9352:40;9366:6;9374:9;9385:6;9352:13;:40::i;:::-;9345:47;;9030:370;;;;;;:::o;15804:142::-;15932:4;;-1:-1:-1;;;;;15932:4:0;15857:7;8344:18;;;:9;:18;;;;;;15884:54;;15911:4;;-1:-1:-1;;;;;15911:4:0;8326:7;8344:18;;;:9;:18;;;;;;15884:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;15877:61;;15804:142;:::o;8736:122::-;8791:4;8815:35;8823:7;-1:-1:-1;;8815:7:0;:35::i;3145:148::-;3058:6;;-1:-1:-1;;;;;3058:6:0;2308:10;3058:22;3050:67;;;;-1:-1:-1;;;3050:67:0;;;;;;;:::i;:::-;3252:1:::1;3236:6:::0;;3215:40:::1;::::0;-1:-1:-1;;;;;3236:6:0;;::::1;::::0;3215:40:::1;::::0;3252:1;;3215:40:::1;3283:1;3266:19:::0;;-1:-1:-1;;;;;;3266:19:0::1;::::0;;3145:148::o;13048:178::-;3058:6;;-1:-1:-1;;;;;3058:6:0;2308:10;3058:22;3050:67;;;;-1:-1:-1;;;3050:67:0;;;;;;;:::i;:::-;13103:14:::1;:21:::0;;-1:-1:-1;;;;13103:21:0::1;-1:-1:-1::0;;;13103:21:0::1;::::0;;13149:12:::1;13135:11;:26:::0;;;13207:10:::1;::::0;13190:28:::1;::::0;13149:12;13190:16:::1;:28::i;:::-;13172:15;:46:::0;13048:178::o;8866:156::-;8946:4;8970:44;8984:10;8996:9;9007:6;8970:13;:44::i;5666:29::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5666:29:0;;-1:-1:-1;5666:29:0;:::o;470:192::-;556:7;592:12;584:6;;;;576:29;;;;-1:-1:-1;;;576:29:0;;;;;;;;:::i;:::-;-1:-1:-1;616:9:0;628:5;632:1;628;:5;:::i;:::-;616:17;470:192;-1:-1:-1;;;;;470:192:0:o;9408:1748::-;9520:6;;9500:4;;9520:6;;9517:63;;;9536:41;9551:6;9559:9;9570:6;9536:14;:41::i;:::-;9529:48;;;;9517:63;-1:-1:-1;;;;;9596:19:0;;;;;;:11;:19;;;;;;;;9595:20;:47;;;;-1:-1:-1;;;;;;9620:22:0;;;;;;:11;:22;;;;;;;;9619:23;9595:47;9592:124;;;9666:14;;-1:-1:-1;;;9666:14:0;;;;9658:46;;;;-1:-1:-1;;;9658:46:0;;5397:2:1;9658:46:0;;;5379:21:1;5436:2;5416:18;;;5409:30;-1:-1:-1;;;5455:18:1;;;5448:50;5515:18;;9658:46:0;5195:344:1;9658:46:0;9731:16;:14;:16::i;:::-;9728:35;;;9750:10;:8;:10::i;:::-;-1:-1:-1;;;;;9823:33:0;;9775:22;9823:33;;;:25;:33;;;;;;9800:6;;9823:33;;9820:1100;;;-1:-1:-1;;;;;9883:22:0;;;;;;:11;:22;;;;;;;;9879:354;;9970:16;;-1:-1:-1;;;;;9934:20:0;;;;;;:9;:20;;;;;;:32;;9959:6;9934:24;:32::i;:::-;:52;;:84;;;-1:-1:-1;;;;;;9990:28:0;;;;;;:17;:28;;;;;;;;9934:84;9926:128;;;;-1:-1:-1;;;9926:128:0;;4681:2:1;9926:128:0;;;4663:21:1;4720:2;4700:18;;;4693:30;4759:33;4739:18;;;4732:61;4810:18;;9926:128:0;4479:355:1;9926:128:0;10091:12;;10081:6;:22;;:52;;;-1:-1:-1;;;;;;10107:26:0;;;;;;:15;:26;;;;;;;;10081:52;10073:82;;;;-1:-1:-1;;;10073:82:0;;;;;;;:::i;:::-;10191:26;10202:6;10210;10191:10;:26::i;:::-;10174:43;;9879:354;9820:1100;;;-1:-1:-1;;;;;10255:36:0;;;;;;:25;:36;;;;;;;;10252:668;;;-1:-1:-1;;;;;10319:19:0;;;;;;:11;:19;;;;;;;;10315:204;;10377:12;;10367:6;:22;;:49;;;-1:-1:-1;;;;;;10393:23:0;;;;;;:15;:23;;;;;;;;10367:49;10359:79;;;;-1:-1:-1;;;10359:79:0;;;;;;;:::i;:::-;10474:27;10486:6;10494;10474:11;:27::i;10252:668::-;-1:-1:-1;;;;;10557:19:0;;;;;;:11;:19;;;;;;;;10552:357;;10642:16;;-1:-1:-1;;;;;10606:20:0;;;;;;:9;:20;;;;;;:32;;10631:6;10606:24;:32::i;:::-;:52;;:84;;;-1:-1:-1;;;;;;10662:28:0;;;;;;:17;:28;;;;;;;;10606:84;10598:128;;;;-1:-1:-1;;;10598:128:0;;4681:2:1;10598:128:0;;;4663:21:1;4720:2;4700:18;;;4693:30;4759:33;4739:18;;;4732:61;4810:18;;10598:128:0;4479:355:1;10598:128:0;10763:12;;10753:6;:22;;:49;;;-1:-1:-1;;;;;;10779:23:0;;;;;;:15;:23;;;;;;;;10753:49;10745:79;;;;-1:-1:-1;;;10745:79:0;;;;;;;:::i;:::-;10860:31;10876:6;10884;10860:15;:31::i;:::-;10843:48;;10552:357;-1:-1:-1;;;;;10952:17:0;;;;;;:9;:17;;;;;;:29;;10974:6;10952:21;:29::i;:::-;-1:-1:-1;;;;;10932:17:0;;;;;;;:9;:17;;;;;;:49;;;;11015:20;;;;;;;:40;;11040:14;11015:24;:40::i;:::-;-1:-1:-1;;;;;10992:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11083:43;;;;;;-1:-1:-1;;;;;;;;;;;11083:43:0;;;11111:14;6453:25:1;;6441:2;6426:18;;6307:177;11083:43:0;;;;;;;;-1:-1:-1;11144:4:0;;9408:1748;-1:-1:-1;;;;9408:1748:0:o;328:136::-;386:7;413:43;417:1;420;413:43;;;;;;;;;;;;;;;;;:3;:43::i;141:181::-;199:7;;231:5;235:1;231;:5;:::i;:::-;219:17;;260:1;255;:6;;247:46;;;;-1:-1:-1;;;247:46:0;;5041:2:1;247:46:0;;;5023:21:1;5080:2;5060:18;;;5053:30;5119:29;5099:18;;;5092:57;5166:18;;247:46:0;4839:351:1;11168:330:0;11298:53;;;;;;;;;;;-1:-1:-1;;;11298:53:0;;;;;;;;-1:-1:-1;;;;;11298:17:0;;11261:4;11298:17;;;:9;:17;;;;;;;:53;;11320:6;;11298:21;:53::i;:::-;-1:-1:-1;;;;;11278:17:0;;;;;;;:9;:17;;;;;;:73;;;;11385:20;;;;;;;:32;;11410:6;11385:24;:32::i;:::-;-1:-1:-1;;;;;11362:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11433:35;;;;;;-1:-1:-1;;;;;;;;;;;11433:35:0;;;11461:6;6453:25:1;;6441:2;6426:18;;6307:177;11433:35:0;;;;;;;;-1:-1:-1;11486:4:0;11168:330;;;;;:::o;12791:226::-;12900:10;12840:4;12874:37;;;:25;:37;;;;;;;;12873:38;:58;;;;-1:-1:-1;12925:6:0;;;;12924:7;12873:58;:82;;;;-1:-1:-1;12944:11:0;;-1:-1:-1;;;12944:11:0;;;;12873:82;:136;;;;-1:-1:-1;;12996:13:0;;12986:4;12968:24;;;;:9;:24;;;;;;:41;;;12791:226::o;13234:1801::-;6941:6;:13;;-1:-1:-1;;6941:13:0;6950:4;6941:13;;;;;;:6;;13310:34:::1;::::0;6950:4;13310:16:::1;:34::i;:::-;13283:61:::0;-1:-1:-1;13355:20:0::1;13377:29;6374:1;::::0;13377:15:::1;:29::i;:::-;13468:4;13419:28;13450:24:::0;;;:9:::1;:24;::::0;;;;;13355:51;;-1:-1:-1;13511:67:0::1;13576:1;13511:60;13355:51:::0;13511:60;13450:24;13536:16;13511:24:::1;:42::i;:::-;:46:::0;::::1;:60::i;:67::-;13485:93:::0;-1:-1:-1;13589:20:0::1;13612:41;:20:::0;13485:93;13612:24:::1;:41::i;:::-;13748:16;::::0;;13762:1:::1;13748:16:::0;;;;;::::1;::::0;;13589:64;;-1:-1:-1;13690:21:0::1;::::0;13666::::1;::::0;13748:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13748:16:0::1;13724:40;;13793:4;13775;13780:1;13775:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13775:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;13819:4:::1;::::0;13809:7;;13819:4;::::1;::::0;13809;;13819;;13809:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;13809:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;13836:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;13836:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;13908:12;;13836:6:::1;::::0;13951:4;;13978::::1;::::0;13998:15:::1;::::0;13836:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14037:17;14057:40;14083:13;14057:21;:25;;:40;;;;:::i;:::-;14037:60:::0;-1:-1:-1;14110:19:0::1;14132:41;14149:23;:16:::0;14170:1:::1;14149:20;:23::i;:::-;14132:12:::0;;:16:::1;:41::i;:::-;14110:63:::0;-1:-1:-1;14194:26:0::1;14223:73;14294:1;14223:66;14110:63:::0;14223:66;14237:34:::1;6129:1;::::0;14237:16:::1;:34::i;:::-;14223:9:::0;;:13:::1;:49::i;:73::-;14194:102:::0;-1:-1:-1;14307:26:0::1;14336:66;14390:11:::0;14336:49:::1;14350:34;6181:1;::::0;14350:16:::1;:34::i;:::-;14336:9:::0;;:13:::1;:49::i;:66::-;14307:95:::0;-1:-1:-1;14413:20:0::1;14436:57;14307:95:::0;14436:33:::1;:9:::0;14450:18;14436:13:::1;:33::i;:57::-;14535:20;::::0;14527:65:::1;::::0;14413:80;;-1:-1:-1;14507:15:0::1;::::0;-1:-1:-1;;;;;14535:20:0;;::::1;::::0;14569:18;;14507:15;14527:65;14507:15;14527:65;14569:18;14535:20;14527:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;14627:14:0::1;::::0;14619:53:::1;::::0;14506:86;;-1:-1:-1;;;;;;14627:14:0::1;::::0;14655:12;;14619:53:::1;::::0;;;14655:12;14627:14;14619:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;14706:5:0::1;::::0;-1:-1:-1;;14727:19:0;;;-1:-1:-1;14724:294:0::1;;14762:6;::::0;14936:21:::1;::::0;14762:244:::1;::::0;-1:-1:-1;;;14762:244:0;;14838:4:::1;14762:244;::::0;::::1;2495:34:1::0;2545:18;;;2538:34;;;14762:6:0::1;2588:18:1::0;;;2581:34;;;2631:18;;;2624:34;-1:-1:-1;;;;;14936:21:0;;::::1;2674:19:1::0;;;2667:44;14976:15:0::1;2727:19:1::0;;;2720:35;14762:6:0;::::1;::::0;:22:::1;::::0;14792:18;;2429:19:1;;14762:244:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14724:294;-1:-1:-1::0;;6959:6:0;:14;;-1:-1:-1;;6959:14:0;;;-1:-1:-1;;;;;;;;;;;13234:1801:0:o;11519:472::-;11668:15;;11589:7;;6326:1;;11653:12;:30;11649:84;;;-1:-1:-1;11715:2:0;11649:84;11790:14;;11745:17;;11765:40;;:20;:6;11776:8;11765:10;:20::i;:40::-;11863:4;11845:24;;;;:9;:24;;;;;;11745:60;;-1:-1:-1;11845:39:0;;11745:60;11845:28;:39::i;:::-;11836:4;11818:24;;;;:9;:24;;;;;;;:66;;;;11900:42;;-1:-1:-1;;;;;11900:42:0;;;-1:-1:-1;;;;;;;;;;;11900:42:0;;;11932:9;6453:25:1;;6441:2;6426:18;;6307:177;11900:42:0;;;;;;;;11962:21;:6;11973:9;11962:10;:21::i;11999:356::-;12070:7;12091:17;12111:44;12140:14;;12111:24;6374:1;12111:6;:10;;:24;;;;:::i;:44::-;12213:4;12195:24;;;;:9;:24;;;;;;12091:64;;-1:-1:-1;12195:39:0;;12091:64;12195:28;:39::i;:::-;12186:4;12168:24;;;;:9;:24;;;;;;;:66;;;;12250:42;;-1:-1:-1;;;;;12250:42:0;;;-1:-1:-1;;;;;;;;;;;12250:42:0;;;12282:9;6453:25:1;;6441:2;6426:18;;6307:177;12250:42:0;;;;;;;;12312:21;:6;12323:9;12312:10;:21::i;:::-;12305:28;11999:356;-1:-1:-1;;;;11999:356:0:o;12363:416::-;12438:7;12457:17;12477:43;12505:14;;12477:23;6277:1;12477:6;:10;;:23;;;;:::i;:43::-;12457:63;-1:-1:-1;12545:13:0;;12541:176;;12620:4;12602:24;;;;:9;:24;;;;;;:39;;12631:9;12602:28;:39::i;12541:176::-;12749:21;:6;12760:9;12749:10;:21::i;668:250::-;726:7;750:6;746:47;;-1:-1:-1;780:1:0;773:8;;746:47;805:9;817:5;821:1;817;:5;:::i;:::-;805:17;-1:-1:-1;850:1:0;841:5;845:1;805:17;841:5;:::i;:::-;:10;833:56;;;;-1:-1:-1;;;833:56:0;;5746:2:1;833:56:0;;;5728:21:1;5785:2;5765:18;;;5758:30;5824:34;5804:18;;;5797:62;-1:-1:-1;;;5875:18:1;;;5868:31;5916:19;;833:56:0;5544:397:1;924:132:0;982:7;1009:39;1013:1;1016;1009:39;;;;;;;;;;;;;;;;;1148:7;1183:12;1176:5;1168:28;;;;-1:-1:-1;;;1168:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1207:9:0;1219:5;1223:1;1219;:5;:::i;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;383:260;;;;;:::o;648:328::-;725:6;733;741;794:2;782:9;773:7;769:23;765:32;762:52;;;810:1;807;800:12;762:52;833:29;852:9;833:29;:::i;:::-;823:39;;881:38;915:2;904:9;900:18;881:38;:::i;:::-;871:48;;966:2;955:9;951:18;938:32;928:42;;648:328;;;;;:::o;981:254::-;1049:6;1057;1110:2;1098:9;1089:7;1085:23;1081:32;1078:52;;;1126:1;1123;1116:12;1078:52;1149:29;1168:9;1149:29;:::i;:::-;1139:39;1225:2;1210:18;;;;1197:32;;-1:-1:-1;;;981:254:1:o;1240:180::-;1299:6;1352:2;1340:9;1331:7;1327:23;1323:32;1320:52;;;1368:1;1365;1358:12;1320:52;-1:-1:-1;1391:23:1;;1240:180;-1:-1:-1;1240:180:1:o;1425:306::-;1513:6;1521;1529;1582:2;1570:9;1561:7;1557:23;1553:32;1550:52;;;1598:1;1595;1588:12;1550:52;1627:9;1621:16;1611:26;;1677:2;1666:9;1662:18;1656:25;1646:35;;1721:2;1710:9;1706:18;1700:25;1690:35;;1425:306;;;;;:::o;3184:597::-;3296:4;3325:2;3354;3343:9;3336:21;3386:6;3380:13;3429:6;3424:2;3413:9;3409:18;3402:34;3454:1;3464:140;3478:6;3475:1;3472:13;3464:140;;;3573:14;;;3569:23;;3563:30;3539:17;;;3558:2;3535:26;3528:66;3493:10;;3464:140;;;3622:6;3619:1;3616:13;3613:91;;;3692:1;3687:2;3678:6;3667:9;3663:22;3659:31;3652:42;3613:91;-1:-1:-1;3765:2:1;3744:15;-1:-1:-1;;3740:29:1;3725:45;;;;3772:2;3721:54;;3184:597;-1:-1:-1;;;3184:597:1:o;4133:341::-;4335:2;4317:21;;;4374:2;4354:18;;;4347:30;-1:-1:-1;;;4408:2:1;4393:18;;4386:47;4465:2;4450:18;;4133:341::o;5946:356::-;6148:2;6130:21;;;6167:18;;;6160:30;6226:34;6221:2;6206:18;;6199:62;6293:2;6278:18;;5946:356::o;6489:980::-;6751:4;6799:3;6788:9;6784:19;6830:6;6819:9;6812:25;6856:2;6894:6;6889:2;6878:9;6874:18;6867:34;6937:3;6932:2;6921:9;6917:18;6910:31;6961:6;6996;6990:13;7027:6;7019;7012:22;7065:3;7054:9;7050:19;7043:26;;7104:2;7096:6;7092:15;7078:29;;7125:1;7135:195;7149:6;7146:1;7143:13;7135:195;;;7214:13;;-1:-1:-1;;;;;7210:39:1;7198:52;;7305:15;;;;7270:12;;;;7246:1;7164:9;7135:195;;;-1:-1:-1;;;;;;;7386:32:1;;;;7381:2;7366:18;;7359:60;-1:-1:-1;;;7450:3:1;7435:19;7428:35;7347:3;6489:980;-1:-1:-1;;;6489:980:1:o;7663:128::-;7703:3;7734:1;7730:6;7727:1;7724:13;7721:39;;;7740:18;;:::i;:::-;-1:-1:-1;7776:9:1;;7663:128::o;7796:217::-;7836:1;7862;7852:132;;7906:10;7901:3;7897:20;7894:1;7887:31;7941:4;7938:1;7931:15;7969:4;7966:1;7959:15;7852:132;-1:-1:-1;7998:9:1;;7796:217::o;8018:168::-;8058:7;8124:1;8120;8116:6;8112:14;8109:1;8106:21;8101:1;8094:9;8087:17;8083:45;8080:71;;;8131:18;;:::i;:::-;-1:-1:-1;8171:9:1;;8018:168::o;8191:125::-;8231:4;8259:1;8256;8253:8;8250:34;;;8264:18;;:::i;:::-;-1:-1:-1;8301:9:1;;8191:125::o;8321:127::-;8382:10;8377:3;8373:20;8370:1;8363:31;8413:4;8410:1;8403:15;8437:4;8434:1;8427:15;8453:127;8514:10;8509:3;8505:20;8502:1;8495:31;8545:4;8542:1;8535:15;8569:4;8566:1;8559:15

Swarm Source

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