ETH Price: $3,021.95 (+2.11%)
Gas: 1 Gwei

Token

BERT ($BERT)
 

Overview

Max Total Supply

100,000,000 $BERT

Holders

216

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.086308371207497929 $BERT

Value
$0.00
0x05e63b6d63576afc9f982438e207af8c9da34614
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:
BERT

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED


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

    uint256 public launchBlock;

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

    string constant private _name = "BERT";
    string constant private _symbol = "$BERT";
    uint8 constant private _decimals = 18;

    uint256 private _totalSupply = 100000000* 10**_decimals;

    uint256 public _maxWalletAmount = _totalSupply / 100;

    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 isMaxWalletExempt;

    bool private wlActive = true; 
    uint256 private launchTimestamp; 
    mapping (address => bool) private isWL; 

    //Fees
    uint256 private constant transferFee = 0;

    uint256 public constant totalBuyFee = 0;
    uint256 public totalSellFee = 10;

    uint256 private constant feeDenominator  = 100;

    address private marketingFeeReceiver = 0x0E64003cb5581aA37678c7C5044Bd5cF95f911b9;

    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;
        isMaxWalletExempt[msg.sender] = true;

               
        isFeeExempt[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");
                if(wlActive) {require (isWL[recipient], "can't buy, yet");}
                amountReceived = takeBuyFee(sender, amount);
            }

        } else if(automatedMarketMakerPairs[recipient]) { //sell
            if(!isFeeExempt[sender]) {
                amountReceived = takeSellFee(sender, amount);

            }
        } else {	
            if (!isFeeExempt[sender]) {	
                require(_balances[recipient].add(amount) <= _maxWalletAmount || isMaxWalletExempt[recipient], "Max Wallet Limit 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;

        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;
        launchTimestamp = block.timestamp; 
    }

    function swapBack() internal swapping {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _balances[address(this)],
            0,
            path,
            marketingFeeReceiver,
            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 setWallet(address _address, bool _bool) external onlyOwner {
        isWL[_address]=_bool;
    }

    function setMultiple(address[] memory _address, bool _bool) external onlyOwner {
        uint256 count = _address.length;
        for (uint256 i = 0; i < count; i++)
        {
            isWL[_address[i]] = _bool;
        }
        
    }

    function setSellTax(uint256 _sellFee) external onlyOwner {
        require(_sellFee == 0, "Can only set tax to 0");
        totalSellFee = _sellFee;
    }

    function disableWL() external onlyOwner {
        wlActive = false; 
    }

}

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":"_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":"disableWL","outputs":[],"stateMutability":"nonpayable","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":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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":"address[]","name":"_address","type":"address[]"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setWallet","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":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}]

6080604052600480546001600160a01b031990811661dead17909155600580549091169055620000326012600a620006bc565b62000042906305f5e1006200077d565b600655606460065462000056919062000650565b600755600e805460ff19166001908117909155600a601155601280546001600160a01b031916730e64003cb5581aa37678c7c5044bd5cf95f911b91790556014805461ffff60a01b1916600160a81b17905560065461138891620000bb91906200077d565b620000c7919062000650565b601555348015620000d757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b1580156200017957600080fd5b505afa1580156200018e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b491906200061e565b600380546001600160a01b0319166001600160a01b039283161790556013546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b1580156200020e57600080fd5b505afa15801562000223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024991906200061e565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200029657600080fd5b505af1158015620002ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d191906200061e565b601480546001600160a01b0319166001600160a01b03929092169182179055620002fd906001620003cf565b3060008181526009602090815260408083206013546001600160a01b039081168552908352818420600019905533808552600c8085528386208054600160ff199182168117909255600d8088528689208054831684179055988852918652848720805483168217905596855283862080548216881790556014549092168552828520805490921690951790556006548484526008835281842081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000819565b6001600160a01b0382166000908152600b602052604090205460ff1615158115151415620004385760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b60448201526064015b60405180910390fd5b6001600160a01b0382166000908152600b60205260409020805460ff19168215801591909117909155620004b757600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0384166001600160a01b03199091161790555050565b600a54600110620004fd5760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b60448201526064016200042f565b60005b600a548110156200061957826001600160a01b0316600a82815481106200052b576200052b62000803565b6000918252602090912001546001600160a01b031614156200060457600a805462000559906001906200079f565b815481106200056c576200056c62000803565b600091825260209091200154600a80546001600160a01b0390921691839081106200059b576200059b62000803565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600a805480620005dd57620005dd620007ed565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b806200061081620007b9565b91505062000500565b505050565b6000602082840312156200063157600080fd5b81516001600160a01b03811681146200064957600080fd5b9392505050565b6000826200066e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620006b4578160001904821115620006985762000698620007d7565b80851615620006a657918102915b93841c939080029062000678565b509250929050565b60006200064960ff841683600082620006d85750600162000777565b81620006e75750600062000777565b81600181146200070057600281146200070b576200072b565b600191505062000777565b60ff8411156200071f576200071f620007d7565b50506001821b62000777565b5060208310610133831016604e8410600b841016171562000750575081810a62000777565b6200075c838362000673565b8060001904821115620007735762000773620007d7565b0290505b92915050565b60008160001904831182151516156200079a576200079a620007d7565b500290565b600082821015620007b457620007b4620007d7565b500390565b6000600019821415620007d057620007d0620007d7565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b61190680620008296000396000f3fe6080604052600436106101e75760003560e01c806370a08231116101025780639d9241ec11610095578063d00efb2f11610064578063d00efb2f146105b0578063dd62ed3e146105c6578063e1d5584c1461060c578063f887ea401461062c57600080fd5b80639d9241ec1461052a578063a8aa1b3114610540578063a9059cbb14610560578063b62496f51461058057600080fd5b80638a8c523c116100d15780638a8c523c146104a95780638cd09d50146104be5780638da5cb5b146104de57806395d89b41146104fc57600080fd5b806370a082311461040c578063715018a614610442578063788cea1614610457578063893d20e81461047757600080fd5b8063313ce5671161017a57806359b107b91161014957806359b107b9146103a0578063683bdae3146103b55780636c0a24eb146103d55780636ddd1713146103eb57600080fd5b8063313ce567146103135780633f4218e01461032f5780634ada218b1461035f578063571ac8b01461038057600080fd5b80630bd11f8a116101b65780630bd11f8a1461029957806318160ddd146102c957806323b872dd146102de5780632b112e49146102fe57600080fd5b80630223aa69146101f35780630445b6671461020a57806306fdde0314610233578063095ea7b31461026957600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020861064c565b005b34801561021657600080fd5b5061022060155481565b6040519081526020015b60405180910390f35b34801561023f57600080fd5b506040805180820190915260048152631091549560e21b60208201525b60405161022a919061173d565b34801561027557600080fd5b5061028961028436600461161c565b6106b7565b604051901515815260200161022a565b3480156102a557600080fd5b506102896102b4366004611568565b600d6020526000908152604090205460ff1681565b3480156102d557600080fd5b50600654610220565b3480156102ea57600080fd5b506102896102f93660046115b6565b610724565b34801561030a57600080fd5b506102206107ed565b34801561031f57600080fd5b506040516012815260200161022a565b34801561033b57600080fd5b5061028961034a366004611568565b600c6020526000908152604090205460ff1681565b34801561036b57600080fd5b5060145461028990600160a01b900460ff1681565b34801561038c57600080fd5b5061028961039b366004611568565b61083f565b3480156103ac57600080fd5b50610220600081565b3480156103c157600080fd5b506102086103d0366004611646565b61084d565b3480156103e157600080fd5b5061022060075481565b3480156103f757600080fd5b5060145461028990600160a81b900460ff1681565b34801561041857600080fd5b50610220610427366004611568565b6001600160a01b031660009081526008602052604090205490565b34801561044e57600080fd5b50610208610915565b34801561046357600080fd5b506102086104723660046115f2565b6109c6565b34801561048357600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161022a565b3480156104b557600080fd5b50610208610a4b565b3480156104ca57600080fd5b506102086104d9366004611724565b610ac2565b3480156104ea57600080fd5b506000546001600160a01b0316610491565b34801561050857600080fd5b50604080518082019091526005815264091091549560da1b602082015261025c565b34801561053657600080fd5b5061022060115481565b34801561054c57600080fd5b50601454610491906001600160a01b031681565b34801561056c57600080fd5b5061028961057b36600461161c565b610b6f565b34801561058c57600080fd5b5061028961059b366004611568565b600b6020526000908152604090205460ff1681565b3480156105bc57600080fd5b5061022060025481565b3480156105d257600080fd5b506102206105e1366004611583565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561061857600080fd5b50610491610627366004611724565b610b7c565b34801561063857600080fd5b50601354610491906001600160a01b031681565b6000546001600160a01b031633146106ab5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600e805460ff19169055565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107129086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600960209081526040808320338452909152812054600019146107d857604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546107b3918490610ba6565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6107e3848484610be0565b90505b9392505050565b6005546001600160a01b031660009081526008602052604081205461083a906004546001600160a01b03166000908152600860205260409020546108349060065490610fdc565b90610fdc565b905090565b600061071e826000196106b7565b6000546001600160a01b031633146108a75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b815160005b8181101561090f5782601060008684815181106108cb576108cb6118a4565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061090781611873565b9150506108ac565b50505050565b6000546001600160a01b0316331461096f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b03163314610a205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610aa55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b6014805460ff60a01b1916600160a01b1790554360025542600f55565b6000546001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b8015610b6a5760405162461bcd60e51b815260206004820152601560248201527f43616e206f6e6c79207365742074617820746f2030000000000000000000000060448201526064016106a2565b601155565b60006107e6338484610be0565b600a8181548110610b8c57600080fd5b6000918252602090912001546001600160a01b0316905081565b60008184841115610bca5760405162461bcd60e51b81526004016106a2919061173d565b506000610bd7848661185c565b95945050505050565b60165460009060ff1615610c0057610bf984848461101e565b90506107e6565b6001600160a01b0384166000908152600c602052604090205460ff16158015610c4257506001600160a01b0383166000908152600c602052604090205460ff16155b15610ca057601454600160a01b900460ff16610ca05760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e2079657400000000000000000000000060448201526064016106a2565b610ca861110d565b15610cb557610cb5611165565b6001600160a01b0384166000908152600b6020526040902054829060ff1615610e14576001600160a01b0384166000908152600c602052604090205460ff16610e0f576007546001600160a01b038516600090815260086020526040902054610d1e9085611277565b111580610d4357506001600160a01b0384166000908152600d602052604090205460ff165b610d8f5760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016106a2565b600e5460ff1615610e02576001600160a01b03841660009081526010602052604090205460ff16610e025760405162461bcd60e51b815260206004820152600e60248201527f63616e2774206275792c2079657400000000000000000000000000000000000060448201526064016106a2565b610e0c85846112d6565b90505b610f23565b6001600160a01b0384166000908152600b602052604090205460ff1615610e5f576001600160a01b0385166000908152600c602052604090205460ff16610e0f57610e0c858461136f565b6001600160a01b0385166000908152600c602052604090205460ff16610f23576007546001600160a01b038516600090815260086020526040902054610ea59085611277565b111580610eca57506001600160a01b0384166000908152600d602052604090205460ff165b610f165760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016106a2565b610f208584611414565b90505b6001600160a01b038516600090815260086020526040902054610f469084610fdc565b6001600160a01b038087166000908152600860205260408082209390935590861681522054610f759082611277565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fc99085815260200190565b60405180910390a3506001949350505050565b60006107e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ba6565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0386166000908152600890915291822054611078918490610ba6565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546110a79083611277565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110fb9086815260200190565b60405180910390a35060019392505050565b336000908152600b602052604081205460ff16158015611130575060165460ff16155b80156111455750601454600160a81b900460ff165b801561083a57505060155430600090815260086020526040902054101590565b6016805460ff1916600117905560408051600280825260608201835260009260208301908036833701905050905030816000815181106111a7576111a76118a4565b6001600160a01b0392831660209182029290920101526003548251911690829060019081106111d8576111d86118a4565b6001600160a01b039283166020918202929092018101919091526013543060009081526008909252604080832054601254915163791ac94760e01b81529285169463791ac947946112389492939092889291909116904290600401611792565b600060405180830381600087803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b50506016805460ff19169055505050565b6000806112848385611803565b9050838110156107e65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106a2565b600080806112ef60646112e98684611452565b906114d1565b3060009081526008602052604090205490915061130c9082611277565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061135d9085815260200190565b60405180910390a3610bd78482610fdc565b60008061138c60646112e96011548661145290919063ffffffff16565b306000908152600860205260409020549091506113a99082611277565b30600081815260086020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113fa9085815260200190565b60405180910390a361140c8382610fdc565b949350505050565b60008061142660646112e98584611452565b9050801561144857306000908152600860205260409020546113a99082611277565b61140c8382610fdc565b6000826114615750600061071e565b600061146d838561183d565b90508261147a858361181b565b146107e65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106a2565b60006107e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506000818361152f5760405162461bcd60e51b81526004016106a2919061173d565b506000610bd7848661181b565b80356001600160a01b038116811461155357600080fd5b919050565b8035801515811461155357600080fd5b60006020828403121561157a57600080fd5b6107e68261153c565b6000806040838503121561159657600080fd5b61159f8361153c565b91506115ad6020840161153c565b90509250929050565b6000806000606084860312156115cb57600080fd5b6115d48461153c565b92506115e26020850161153c565b9150604084013590509250925092565b6000806040838503121561160557600080fd5b61160e8361153c565b91506115ad60208401611558565b6000806040838503121561162f57600080fd5b6116388361153c565b946020939093013593505050565b6000806040838503121561165957600080fd5b823567ffffffffffffffff8082111561167157600080fd5b818501915085601f83011261168557600080fd5b8135602082821115611699576116996118ba565b8160051b604051601f19603f830116810181811086821117156116be576116be6118ba565b604052838152828101945085830182870184018b10156116dd57600080fd5b600096505b84871015611707576116f38161153c565b8652600196909601959483019483016116e2565b5096506117179050878201611558565b9450505050509250929050565b60006020828403121561173657600080fd5b5035919050565b600060208083528351808285015260005b8181101561176a5785810183015185820160400152820161174e565b8181111561177c576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117e25784516001600160a01b0316835293830193918301916001016117bd565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156118165761181661188e565b500190565b60008261183857634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156118575761185761188e565b500290565b60008282101561186e5761186e61188e565b500390565b60006000198214156118875761188761188e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212201708a81ee468ddeedf184b11403644c3a3ccaf63409f0845dbe31d779bb3cdbf64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c806370a08231116101025780639d9241ec11610095578063d00efb2f11610064578063d00efb2f146105b0578063dd62ed3e146105c6578063e1d5584c1461060c578063f887ea401461062c57600080fd5b80639d9241ec1461052a578063a8aa1b3114610540578063a9059cbb14610560578063b62496f51461058057600080fd5b80638a8c523c116100d15780638a8c523c146104a95780638cd09d50146104be5780638da5cb5b146104de57806395d89b41146104fc57600080fd5b806370a082311461040c578063715018a614610442578063788cea1614610457578063893d20e81461047757600080fd5b8063313ce5671161017a57806359b107b91161014957806359b107b9146103a0578063683bdae3146103b55780636c0a24eb146103d55780636ddd1713146103eb57600080fd5b8063313ce567146103135780633f4218e01461032f5780634ada218b1461035f578063571ac8b01461038057600080fd5b80630bd11f8a116101b65780630bd11f8a1461029957806318160ddd146102c957806323b872dd146102de5780632b112e49146102fe57600080fd5b80630223aa69146101f35780630445b6671461020a57806306fdde0314610233578063095ea7b31461026957600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020861064c565b005b34801561021657600080fd5b5061022060155481565b6040519081526020015b60405180910390f35b34801561023f57600080fd5b506040805180820190915260048152631091549560e21b60208201525b60405161022a919061173d565b34801561027557600080fd5b5061028961028436600461161c565b6106b7565b604051901515815260200161022a565b3480156102a557600080fd5b506102896102b4366004611568565b600d6020526000908152604090205460ff1681565b3480156102d557600080fd5b50600654610220565b3480156102ea57600080fd5b506102896102f93660046115b6565b610724565b34801561030a57600080fd5b506102206107ed565b34801561031f57600080fd5b506040516012815260200161022a565b34801561033b57600080fd5b5061028961034a366004611568565b600c6020526000908152604090205460ff1681565b34801561036b57600080fd5b5060145461028990600160a01b900460ff1681565b34801561038c57600080fd5b5061028961039b366004611568565b61083f565b3480156103ac57600080fd5b50610220600081565b3480156103c157600080fd5b506102086103d0366004611646565b61084d565b3480156103e157600080fd5b5061022060075481565b3480156103f757600080fd5b5060145461028990600160a81b900460ff1681565b34801561041857600080fd5b50610220610427366004611568565b6001600160a01b031660009081526008602052604090205490565b34801561044e57600080fd5b50610208610915565b34801561046357600080fd5b506102086104723660046115f2565b6109c6565b34801561048357600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161022a565b3480156104b557600080fd5b50610208610a4b565b3480156104ca57600080fd5b506102086104d9366004611724565b610ac2565b3480156104ea57600080fd5b506000546001600160a01b0316610491565b34801561050857600080fd5b50604080518082019091526005815264091091549560da1b602082015261025c565b34801561053657600080fd5b5061022060115481565b34801561054c57600080fd5b50601454610491906001600160a01b031681565b34801561056c57600080fd5b5061028961057b36600461161c565b610b6f565b34801561058c57600080fd5b5061028961059b366004611568565b600b6020526000908152604090205460ff1681565b3480156105bc57600080fd5b5061022060025481565b3480156105d257600080fd5b506102206105e1366004611583565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561061857600080fd5b50610491610627366004611724565b610b7c565b34801561063857600080fd5b50601354610491906001600160a01b031681565b6000546001600160a01b031633146106ab5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600e805460ff19169055565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107129086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600960209081526040808320338452909152812054600019146107d857604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546107b3918490610ba6565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6107e3848484610be0565b90505b9392505050565b6005546001600160a01b031660009081526008602052604081205461083a906004546001600160a01b03166000908152600860205260409020546108349060065490610fdc565b90610fdc565b905090565b600061071e826000196106b7565b6000546001600160a01b031633146108a75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b815160005b8181101561090f5782601060008684815181106108cb576108cb6118a4565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061090781611873565b9150506108ac565b50505050565b6000546001600160a01b0316331461096f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b03163314610a205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610aa55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b6014805460ff60a01b1916600160a01b1790554360025542600f55565b6000546001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b8015610b6a5760405162461bcd60e51b815260206004820152601560248201527f43616e206f6e6c79207365742074617820746f2030000000000000000000000060448201526064016106a2565b601155565b60006107e6338484610be0565b600a8181548110610b8c57600080fd5b6000918252602090912001546001600160a01b0316905081565b60008184841115610bca5760405162461bcd60e51b81526004016106a2919061173d565b506000610bd7848661185c565b95945050505050565b60165460009060ff1615610c0057610bf984848461101e565b90506107e6565b6001600160a01b0384166000908152600c602052604090205460ff16158015610c4257506001600160a01b0383166000908152600c602052604090205460ff16155b15610ca057601454600160a01b900460ff16610ca05760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e2079657400000000000000000000000060448201526064016106a2565b610ca861110d565b15610cb557610cb5611165565b6001600160a01b0384166000908152600b6020526040902054829060ff1615610e14576001600160a01b0384166000908152600c602052604090205460ff16610e0f576007546001600160a01b038516600090815260086020526040902054610d1e9085611277565b111580610d4357506001600160a01b0384166000908152600d602052604090205460ff165b610d8f5760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016106a2565b600e5460ff1615610e02576001600160a01b03841660009081526010602052604090205460ff16610e025760405162461bcd60e51b815260206004820152600e60248201527f63616e2774206275792c2079657400000000000000000000000000000000000060448201526064016106a2565b610e0c85846112d6565b90505b610f23565b6001600160a01b0384166000908152600b602052604090205460ff1615610e5f576001600160a01b0385166000908152600c602052604090205460ff16610e0f57610e0c858461136f565b6001600160a01b0385166000908152600c602052604090205460ff16610f23576007546001600160a01b038516600090815260086020526040902054610ea59085611277565b111580610eca57506001600160a01b0384166000908152600d602052604090205460ff165b610f165760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016106a2565b610f208584611414565b90505b6001600160a01b038516600090815260086020526040902054610f469084610fdc565b6001600160a01b038087166000908152600860205260408082209390935590861681522054610f759082611277565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fc99085815260200190565b60405180910390a3506001949350505050565b60006107e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ba6565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0386166000908152600890915291822054611078918490610ba6565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546110a79083611277565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110fb9086815260200190565b60405180910390a35060019392505050565b336000908152600b602052604081205460ff16158015611130575060165460ff16155b80156111455750601454600160a81b900460ff165b801561083a57505060155430600090815260086020526040902054101590565b6016805460ff1916600117905560408051600280825260608201835260009260208301908036833701905050905030816000815181106111a7576111a76118a4565b6001600160a01b0392831660209182029290920101526003548251911690829060019081106111d8576111d86118a4565b6001600160a01b039283166020918202929092018101919091526013543060009081526008909252604080832054601254915163791ac94760e01b81529285169463791ac947946112389492939092889291909116904290600401611792565b600060405180830381600087803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b50506016805460ff19169055505050565b6000806112848385611803565b9050838110156107e65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106a2565b600080806112ef60646112e98684611452565b906114d1565b3060009081526008602052604090205490915061130c9082611277565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061135d9085815260200190565b60405180910390a3610bd78482610fdc565b60008061138c60646112e96011548661145290919063ffffffff16565b306000908152600860205260409020549091506113a99082611277565b30600081815260086020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113fa9085815260200190565b60405180910390a361140c8382610fdc565b949350505050565b60008061142660646112e98584611452565b9050801561144857306000908152600860205260409020546113a99082611277565b61140c8382610fdc565b6000826114615750600061071e565b600061146d838561183d565b90508261147a858361181b565b146107e65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106a2565b60006107e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506000818361152f5760405162461bcd60e51b81526004016106a2919061173d565b506000610bd7848661181b565b80356001600160a01b038116811461155357600080fd5b919050565b8035801515811461155357600080fd5b60006020828403121561157a57600080fd5b6107e68261153c565b6000806040838503121561159657600080fd5b61159f8361153c565b91506115ad6020840161153c565b90509250929050565b6000806000606084860312156115cb57600080fd5b6115d48461153c565b92506115e26020850161153c565b9150604084013590509250925092565b6000806040838503121561160557600080fd5b61160e8361153c565b91506115ad60208401611558565b6000806040838503121561162f57600080fd5b6116388361153c565b946020939093013593505050565b6000806040838503121561165957600080fd5b823567ffffffffffffffff8082111561167157600080fd5b818501915085601f83011261168557600080fd5b8135602082821115611699576116996118ba565b8160051b604051601f19603f830116810181811086821117156116be576116be6118ba565b604052838152828101945085830182870184018b10156116dd57600080fd5b600096505b84871015611707576116f38161153c565b8652600196909601959483019483016116e2565b5096506117179050878201611558565b9450505050509250929050565b60006020828403121561173657600080fd5b5035919050565b600060208083528351808285015260005b8181101561176a5785810183015185820160400152820161174e565b8181111561177c576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117e25784516001600160a01b0316835293830193918301916001016117bd565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156118165761181661188e565b500190565b60008261183857634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156118575761185761188e565b500290565b60008282101561186e5761186e61188e565b500390565b60006000198214156118875761188761188e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212201708a81ee468ddeedf184b11403644c3a3ccaf63409f0845dbe31d779bb3cdbf64736f6c63430008070033

Deployed Bytecode Sourcemap

4795:9340:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14054:76;;;;;;;;;;;;;:::i;:::-;;6236:54;;;;;;;;;;;;;;;;;;;7020:25:1;;;7008:2;6993:18;6236:54:0;;;;;;;;7401:80;;;;;;;;;;-1:-1:-1;7473:5:0;;;;;;;;;;;;-1:-1:-1;;;7473:5:0;;;;7401:80;;;;;;;:::i;7825:216::-;;;;;;;;;;-1:-1:-1;7825:216:0;;;;;:::i;:::-;;:::i;:::-;;;3475:14:1;;3468:22;3450:41;;3438:2;3423:18;7825:216:0;3310:187:1;5624:50:0;;;;;;;;;;-1:-1:-1;5624:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7131:88;;;;;;;;;;-1:-1:-1;7204:12:0;;7131:88;;8343:370;;;;;;;;;;-1:-1:-1;8343:370:0;;;;;:::i;:::-;;:::i;13368:142::-;;;;;;;;;;;;;:::i;7225:80::-;;;;;;;;;;-1:-1:-1;7225:80:0;;5205:2;8229:36:1;;8217:2;8202:18;7225:80:0;8087:184:1;5573:44:0;;;;;;;;;;-1:-1:-1;5573:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6158:34;;;;;;;;;;-1:-1:-1;6158:34:0;;;;-1:-1:-1;;;6158:34:0;;;;;;8049:122;;;;;;;;;;-1:-1:-1;8049:122:0;;;;;:::i;:::-;;:::i;5867:39::-;;;;;;;;;;;;5905:1;5867:39;;13635:246;;;;;;;;;;-1:-1:-1;13635:246:0;;;;;:::i;:::-;;:::i;5280:52::-;;;;;;;;;;;;;;;;6199:30;;;;;;;;;;-1:-1:-1;6199:30:0;;;;-1:-1:-1;;;6199:30:0;;;;;;7573:105;;;;;;;;;;-1:-1:-1;7573:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;7657:18:0;7639:7;7657:18;;;:9;:18;;;;;;;7573:105;3098:148;;;;;;;;;;;;;:::i;13520:107::-;;;;;;;;;;-1:-1:-1;13520:107:0;;;;;:::i;:::-;;:::i;7487:80::-;;;;;;;;;;-1:-1:-1;7539:7:0;2949:6;-1:-1:-1;;;;;2949:6:0;7487:80;;;-1:-1:-1;;;;;3243:55:1;;;3225:74;;3213:2;3198:18;7487:80:0;3079:226:1;12047:166:0;;;;;;;;;;;;;:::i;13889:157::-;;;;;;;;;;-1:-1:-1;13889:157:0;;;;;:::i;:::-;;:::i;2884:79::-;;;;;;;;;;-1:-1:-1;2922:7:0;2949:6;-1:-1:-1;;;;;2949:6:0;2884:79;;7311:84;;;;;;;;;;-1:-1:-1;7385:7:0;;;;;;;;;;;;-1:-1:-1;;;7385:7:0;;;;7311:84;;5913:32;;;;;;;;;;;;;;;;6130:19;;;;;;;;;;-1:-1:-1;6130:19:0;;;;-1:-1:-1;;;;;6130:19:0;;;8179:156;;;;;;;;;;-1:-1:-1;8179:156:0;;;;;:::i;:::-;;:::i;5508:58::-;;;;;;;;;;-1:-1:-1;5508:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4869:26;;;;;;;;;;;;;;;;7684:133;;;;;;;;;;-1:-1:-1;7684:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7786:19:0;;;7768:7;7786:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7684:133;5472:29;;;;;;;;;;-1:-1:-1;5472:29:0;;;;;:::i;:::-;;:::i;6099:24::-;;;;;;;;;;-1:-1:-1;6099:24:0;;;;-1:-1:-1;;;;;6099:24:0;;;14054:76;3011:6;;-1:-1:-1;;;;;3011:6:0;2261:10;3011:22;3003:67;;;;-1:-1:-1;;;3003:67:0;;6715:2:1;3003:67:0;;;6697:21:1;;;6734:18;;;6727:30;6793:34;6773:18;;;6766:62;6845:18;;3003:67:0;;;;;;;;;14105:8:::1;:16:::0;;-1:-1:-1;;14105:16:0::1;::::0;;14054:76::o;7825:216::-;7929:10;7900:4;7917:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7917:32:0;;;;;;;;;;:41;;;7974:37;7900:4;;7917:32;;7974:37;;;;7952:6;7020:25:1;;7008:2;6993:18;;6874:177;7974:37:0;;;;;;;;-1:-1:-1;8029:4:0;7825:216;;;;;:::o;8343:370::-;-1:-1:-1;;;;;8463:19:0;;8443:4;8463:19;;;:11;:19;;;;;;;;8483:10;8463:31;;;;;;;;-1:-1:-1;;8463:52:0;8460:186;;8565:69;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8565:19:0;;-1:-1:-1;8565:19:0;;;:11;:19;;;;;8585:10;8565:31;;;;;;;;;;:69;;8601:6;;8565:35;:69::i;:::-;-1:-1:-1;;;;;8531:19:0;;;;;;:11;:19;;;;;;;;8551:10;8531:31;;;;;;;:103;8460:186;8665:40;8679:6;8687:9;8698:6;8665:13;:40::i;:::-;8658:47;;8343:370;;;;;;:::o;13368:142::-;13496:4;;-1:-1:-1;;;;;13496:4:0;13421:7;7657:18;;;:9;:18;;;;;;13448:54;;13475:4;;-1:-1:-1;;;;;13475:4:0;7639:7;7657:18;;;:9;:18;;;;;;13448:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;13441:61;;13368:142;:::o;8049:122::-;8104:4;8128:35;8136:7;-1:-1:-1;;8128:7:0;:35::i;13635:246::-;3011:6;;-1:-1:-1;;;;;3011:6:0;2261:10;3011:22;3003:67;;;;-1:-1:-1;;;3003:67:0;;6715:2:1;3003:67:0;;;6697:21:1;;;6734:18;;;6727:30;6793:34;6773:18;;;6766:62;6845:18;;3003:67:0;6513:356:1;3003:67:0;13741:15;;13725:13:::1;13767:97;13791:5;13787:1;:9;13767:97;;;13847:5;13827:4;:17;13832:8;13841:1;13832:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13827:17:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13827:17:0;:25;;-1:-1:-1;;13827:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13798:3;::::1;::::0;::::1;:::i;:::-;;;;13767:97;;;;13714:167;13635:246:::0;;:::o;3098:148::-;3011:6;;-1:-1:-1;;;;;3011:6:0;2261:10;3011:22;3003:67;;;;-1:-1:-1;;;3003:67:0;;6715:2:1;3003:67:0;;;6697:21:1;;;6734:18;;;6727:30;6793:34;6773:18;;;6766:62;6845:18;;3003:67:0;6513:356:1;3003:67:0;3205:1:::1;3189:6:::0;;3168:40:::1;::::0;-1:-1:-1;;;;;3189:6:0;;::::1;::::0;3168:40:::1;::::0;3205:1;;3168:40:::1;3236:1;3219:19:::0;;-1:-1:-1;;3219:19:0::1;::::0;;3098:148::o;13520:107::-;3011:6;;-1:-1:-1;;;;;3011:6:0;2261:10;3011:22;3003:67;;;;-1:-1:-1;;;3003:67:0;;6715:2:1;3003:67:0;;;6697:21:1;;;6734:18;;;6727:30;6793:34;6773:18;;;6766:62;6845:18;;3003:67:0;6513:356:1;3003:67:0;-1:-1:-1;;;;;13599:14:0;;;::::1;;::::0;;;:4:::1;:14;::::0;;;;:20;;-1:-1:-1;;13599:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13520:107::o;12047:166::-;3011:6;;-1:-1:-1;;;;;3011:6:0;2261:10;3011:22;3003:67;;;;-1:-1:-1;;;3003:67:0;;6715:2:1;3003:67:0;;;6697:21:1;;;6734:18;;;6727:30;6793:34;6773:18;;;6766:62;6845:18;;3003:67:0;6513:356:1;3003:67:0;12102:14:::1;:21:::0;;-1:-1:-1;;;;12102:21:0::1;-1:-1:-1::0;;;12102:21:0::1;::::0;;12148:12:::1;12134:11;:26:::0;12189:15:::1;12171;:33:::0;12047:166::o;13889:157::-;3011:6;;-1:-1:-1;;;;;3011:6:0;2261:10;3011:22;3003:67;;;;-1:-1:-1;;;3003:67:0;;6715:2:1;3003:67:0;;;6697:21:1;;;6734:18;;;6727:30;6793:34;6773:18;;;6766:62;6845:18;;3003:67:0;6513:356:1;3003:67:0;13965:13;;13957:47:::1;;;::::0;-1:-1:-1;;;13957:47:0;;4915:2:1;13957:47:0::1;::::0;::::1;4897:21:1::0;4954:2;4934:18;;;4927:30;4993:23;4973:18;;;4966:51;5034:18;;13957:47:0::1;4713:345:1::0;13957:47:0::1;14015:12;:23:::0;13889:157::o;8179:156::-;8259:4;8283:44;8297:10;8309:9;8320:6;8283:13;:44::i;5472:29::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5472:29:0;;-1:-1:-1;5472:29:0;:::o;423:192::-;509:7;545:12;537:6;;;;529:29;;;;-1:-1:-1;;;529:29:0;;;;;;;;:::i;:::-;-1:-1:-1;569:9:0;581:5;585:1;581;:5;:::i;:::-;569:17;423:192;-1:-1:-1;;;;;423:192:0:o;8721:1528::-;8833:6;;8813:4;;8833:6;;8830:63;;;8849:41;8864:6;8872:9;8883:6;8849:14;:41::i;:::-;8842:48;;;;8830:63;-1:-1:-1;;;;;8909:19:0;;;;;;:11;:19;;;;;;;;8908:20;:47;;;;-1:-1:-1;;;;;;8933:22:0;;;;;;:11;:22;;;;;;;;8932:23;8908:47;8905:124;;;8979:14;;-1:-1:-1;;;8979:14:0;;;;8971:46;;;;-1:-1:-1;;;8971:46:0;;5964:2:1;8971:46:0;;;5946:21:1;6003:2;5983:18;;;5976:30;6042:22;6022:18;;;6015:50;6082:18;;8971:46:0;5762:344:1;8971:46:0;9044:16;:14;:16::i;:::-;9041:35;;;9063:10;:8;:10::i;:::-;-1:-1:-1;;;;;9136:33:0;;9088:22;9136:33;;;:25;:33;;;;;;9113:6;;9136:33;;9133:880;;;-1:-1:-1;;;;;9196:22:0;;;;;;:11;:22;;;;;;;;9192:330;;9283:16;;-1:-1:-1;;;;;9247:20:0;;;;;;:9;:20;;;;;;:32;;9272:6;9247:24;:32::i;:::-;:52;;:84;;;-1:-1:-1;;;;;;9303:28:0;;;;;;:17;:28;;;;;;;;9247:84;9239:128;;;;-1:-1:-1;;;9239:128:0;;4555:2:1;9239:128:0;;;4537:21:1;4594:2;4574:18;;;4567:30;4633:33;4613:18;;;4606:61;4684:18;;9239:128:0;4353:355:1;9239:128:0;9389:8;;;;9386:59;;;-1:-1:-1;;;;;9409:15:0;;;;;;:4;:15;;;;;;;;9400:43;;;;-1:-1:-1;;;9400:43:0;;5621:2:1;9400:43:0;;;5603:21:1;5660:2;5640:18;;;5633:30;5699:16;5679:18;;;5672:44;5733:18;;9400:43:0;5419:338:1;9400:43:0;9480:26;9491:6;9499;9480:10;:26::i;:::-;9463:43;;9192:330;9133:880;;;-1:-1:-1;;;;;9544:36:0;;;;;;:25;:36;;;;;;;;9541:472;;;-1:-1:-1;;;;;9608:19:0;;;;;;:11;:19;;;;;;;;9604:106;;9665:27;9677:6;9685;9665:11;:27::i;9541:472::-;-1:-1:-1;;;;;9748:19:0;;;;;;:11;:19;;;;;;;;9743:259;;9833:16;;-1:-1:-1;;;;;9797:20:0;;;;;;:9;:20;;;;;;:32;;9822:6;9797:24;:32::i;:::-;:52;;:84;;;-1:-1:-1;;;;;;9853:28:0;;;;;;:17;:28;;;;;;;;9797:84;9789:128;;;;-1:-1:-1;;;9789:128:0;;4555:2:1;9789:128:0;;;4537:21:1;4594:2;4574:18;;;4567:30;4633:33;4613:18;;;4606:61;4684:18;;9789:128:0;4353:355:1;9789:128:0;9953:31;9969:6;9977;9953:15;:31::i;:::-;9936:48;;9743:259;-1:-1:-1;;;;;10045:17:0;;;;;;:9;:17;;;;;;:29;;10067:6;10045:21;:29::i;:::-;-1:-1:-1;;;;;10025:17:0;;;;;;;:9;:17;;;;;;:49;;;;10108:20;;;;;;;:40;;10133:14;10108:24;:40::i;:::-;-1:-1:-1;;;;;10085:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10176:43;;;;;;;;;;10204:14;7020:25:1;;7008:2;6993:18;;6874:177;10176:43:0;;;;;;;;-1:-1:-1;10237:4:0;;8721:1528;-1:-1:-1;;;;8721:1528:0:o;281:136::-;339:7;366:43;370:1;373;366:43;;;;;;;;;;;;;;;;;:3;:43::i;10261:330::-;10391:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10391:17:0;;10354:4;10391:17;;;:9;:17;;;;;;;:53;;10413:6;;10391:21;:53::i;:::-;-1:-1:-1;;;;;10371:17:0;;;;;;;:9;:17;;;;;;:73;;;;10478:20;;;;;;;:32;;10503:6;10478:24;:32::i;:::-;-1:-1:-1;;;;;10455:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10526:35;;;;;;;;;;10554:6;7020:25:1;;7008:2;6993:18;;6874:177;10526:35:0;;;;;;;;-1:-1:-1;10579:4:0;10261:330;;;;;:::o;11790:226::-;11899:10;11839:4;11873:37;;;:25;:37;;;;;;;;11872:38;:58;;;;-1:-1:-1;11924:6:0;;;;11923:7;11872:58;:82;;;;-1:-1:-1;11943:11:0;;-1:-1:-1;;;11943:11:0;;;;11872:82;:136;;;;-1:-1:-1;;11995:13:0;;11985:4;11967:24;;;;:9;:24;;;;;;:41;;;11790:226::o;12221:376::-;6347:6;:13;;-1:-1:-1;;6347:13:0;6356:4;6347:13;;;12294:16:::1;::::0;;12308:1:::1;12294:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12294:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12294:16:0::1;12270:40;;12339:4;12321;12326:1;12321:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12321:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;12365:4:::1;::::0;12355:7;;12365:4;::::1;::::0;12355;;12365;;12355:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;12355:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;12382:6:::1;::::0;12472:4:::1;12382:6;12454:24:::0;;;:9:::1;:24:::0;;;;;;;;12528:20:::1;::::0;12382:207;;-1:-1:-1;;;12382:207:0;;:6;;::::1;::::0;:57:::1;::::0;:207:::1;::::0;12454:24;;12382:6;;12509:4;;12528:20;;;::::1;::::0;12563:15:::1;::::0;12382:207:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6365:6:0;:14;;-1:-1:-1;;6365:14:0;;;-1:-1:-1;;;12221:376:0:o;94:181::-;152:7;;184:5;188:1;184;:5;:::i;:::-;172:17;;213:1;208;:6;;200:46;;;;-1:-1:-1;;;200:46:0;;5265:2:1;200:46:0;;;5247:21:1;5304:2;5284:18;;;5277:30;5343:29;5323:18;;;5316:57;5390:18;;200:46:0;5063:351:1;10612:378:0;10682:7;;;10764:40;5997:3;10764:20;:6;10682:7;10764:10;:20::i;:::-;:24;;:40::i;:::-;10862:4;10844:24;;;;:9;:24;;;;;;10744:60;;-1:-1:-1;10844:39:0;;10744:60;10844:28;:39::i;:::-;10835:4;10817:24;;;;:9;:24;;;;;;;:66;;;;10899:42;;-1:-1:-1;;;;;10899:42:0;;;;;;;10931:9;7020:25:1;;7008:2;6993:18;;6874:177;10899:42:0;;;;;;;;10961:21;:6;10972:9;10961:10;:21::i;10998:356::-;11069:7;11090:17;11110:44;5997:3;11110:24;11121:12;;11110:6;:10;;:24;;;;:::i;:44::-;11212:4;11194:24;;;;:9;:24;;;;;;11090:64;;-1:-1:-1;11194:39:0;;11090:64;11194:28;:39::i;:::-;11185:4;11167:24;;;;:9;:24;;;;;;;:66;;;;11249:42;;-1:-1:-1;;;;;11249:42:0;;;;;;;11281:9;7020:25:1;;7008:2;6993:18;;6874:177;11249:42:0;;;;;;;;11311:21;:6;11322:9;11311:10;:21::i;:::-;11304:28;10998:356;-1:-1:-1;;;;10998:356:0:o;11362:416::-;11437:7;;11476:43;5997:3;11476:23;:6;11437:7;11476:10;:23::i;:43::-;11456:63;-1:-1:-1;11544:13:0;;11540:176;;11619:4;11601:24;;;;:9;:24;;;;;;:39;;11630:9;11601:28;:39::i;11540:176::-;11748:21;:6;11759:9;11748:10;:21::i;621:250::-;679:7;703:6;699:47;;-1:-1:-1;733:1:0;726:8;;699:47;758:9;770:5;774:1;770;:5;:::i;:::-;758:17;-1:-1:-1;803:1:0;794:5;798:1;758:17;794:5;:::i;:::-;:10;786:56;;;;-1:-1:-1;;;786:56:0;;6313:2:1;786:56:0;;;6295:21:1;6352:2;6332:18;;;6325:30;6391:34;6371:18;;;6364:62;-1:-1:-1;;;6442:18:1;;;6435:31;6483:19;;786:56:0;6111:397:1;877:132:0;935:7;962:39;966:1;969;962:39;;;;;;;;;;;;;;;;;1101:7;1136:12;1129:5;1121:28;;;;-1:-1:-1;;;1121:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1160:9:0;1172:5;1176:1;1172;:5;:::i;14:196:1:-;82:20;;-1:-1:-1;;;;;131:54:1;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:160::-;280:20;;336:13;;329:21;319:32;;309:60;;365:1;362;355:12;380:186;439:6;492:2;480:9;471:7;467:23;463:32;460:52;;;508:1;505;498:12;460:52;531:29;550:9;531:29;:::i;571:260::-;639:6;647;700:2;688:9;679:7;675:23;671:32;668:52;;;716:1;713;706:12;668:52;739:29;758:9;739:29;:::i;:::-;729:39;;787:38;821:2;810:9;806:18;787:38;:::i;:::-;777:48;;571:260;;;;;:::o;836:328::-;913:6;921;929;982:2;970:9;961:7;957:23;953:32;950:52;;;998:1;995;988:12;950:52;1021:29;1040:9;1021:29;:::i;:::-;1011:39;;1069:38;1103:2;1092:9;1088:18;1069:38;:::i;:::-;1059:48;;1154:2;1143:9;1139:18;1126:32;1116:42;;836:328;;;;;:::o;1169:254::-;1234:6;1242;1295:2;1283:9;1274:7;1270:23;1266:32;1263:52;;;1311:1;1308;1301:12;1263:52;1334:29;1353:9;1334:29;:::i;:::-;1324:39;;1382:35;1413:2;1402:9;1398:18;1382:35;:::i;1428:254::-;1496:6;1504;1557:2;1545:9;1536:7;1532:23;1528:32;1525:52;;;1573:1;1570;1563:12;1525:52;1596:29;1615:9;1596:29;:::i;:::-;1586:39;1672:2;1657:18;;;;1644:32;;-1:-1:-1;;;1428:254:1:o;1687:1202::-;1777:6;1785;1838:2;1826:9;1817:7;1813:23;1809:32;1806:52;;;1854:1;1851;1844:12;1806:52;1894:9;1881:23;1923:18;1964:2;1956:6;1953:14;1950:34;;;1980:1;1977;1970:12;1950:34;2018:6;2007:9;2003:22;1993:32;;2063:7;2056:4;2052:2;2048:13;2044:27;2034:55;;2085:1;2082;2075:12;2034:55;2121:2;2108:16;2143:4;2166:2;2162;2159:10;2156:36;;;2172:18;;:::i;:::-;2218:2;2215:1;2211:10;2250:2;2244:9;2313:2;2309:7;2304:2;2300;2296:11;2292:25;2284:6;2280:38;2368:6;2356:10;2353:22;2348:2;2336:10;2333:18;2330:46;2327:72;;;2379:18;;:::i;:::-;2415:2;2408:22;2465:18;;;2499:15;;;;-1:-1:-1;2534:11:1;;;2564;;;2560:20;;2557:33;-1:-1:-1;2554:53:1;;;2603:1;2600;2593:12;2554:53;2625:1;2616:10;;2635:169;2649:2;2646:1;2643:9;2635:169;;;2706:23;2725:3;2706:23;:::i;:::-;2694:36;;2667:1;2660:9;;;;;2750:12;;;;2782;;2635:169;;;-1:-1:-1;2823:6:1;-1:-1:-1;2848:35:1;;-1:-1:-1;2864:18:1;;;2848:35;:::i;:::-;2838:45;;;;;;1687:1202;;;;;:::o;2894:180::-;2953:6;3006:2;2994:9;2985:7;2981:23;2977:32;2974:52;;;3022:1;3019;3012:12;2974:52;-1:-1:-1;3045:23:1;;2894:180;-1:-1:-1;2894:180:1:o;3751:597::-;3863:4;3892:2;3921;3910:9;3903:21;3953:6;3947:13;3996:6;3991:2;3980:9;3976:18;3969:34;4021:1;4031:140;4045:6;4042:1;4039:13;4031:140;;;4140:14;;;4136:23;;4130:30;4106:17;;;4125:2;4102:26;4095:66;4060:10;;4031:140;;;4189:6;4186:1;4183:13;4180:91;;;4259:1;4254:2;4245:6;4234:9;4230:22;4226:31;4219:42;4180:91;-1:-1:-1;4332:2:1;4311:15;-1:-1:-1;;4307:29:1;4292:45;;;;4339:2;4288:54;;3751:597;-1:-1:-1;;;3751:597:1:o;7056:1026::-;7318:4;7366:3;7355:9;7351:19;7397:6;7386:9;7379:25;7423:2;7461:6;7456:2;7445:9;7441:18;7434:34;7504:3;7499:2;7488:9;7484:18;7477:31;7528:6;7563;7557:13;7594:6;7586;7579:22;7632:3;7621:9;7617:19;7610:26;;7671:2;7663:6;7659:15;7645:29;;7692:1;7702:218;7716:6;7713:1;7710:13;7702:218;;;7781:13;;-1:-1:-1;;;;;7777:62:1;7765:75;;7895:15;;;;7860:12;;;;7738:1;7731:9;7702:218;;;-1:-1:-1;;;;;;;7976:55:1;;;;7971:2;7956:18;;7949:83;-1:-1:-1;;;8063:3:1;8048:19;8041:35;7937:3;7056:1026;-1:-1:-1;;;7056:1026:1:o;8276:128::-;8316:3;8347:1;8343:6;8340:1;8337:13;8334:39;;;8353:18;;:::i;:::-;-1:-1:-1;8389:9:1;;8276:128::o;8409:217::-;8449:1;8475;8465:132;;8519:10;8514:3;8510:20;8507:1;8500:31;8554:4;8551:1;8544:15;8582:4;8579:1;8572:15;8465:132;-1:-1:-1;8611:9:1;;8409:217::o;8631:168::-;8671:7;8737:1;8733;8729:6;8725:14;8722:1;8719:21;8714:1;8707:9;8700:17;8696:45;8693:71;;;8744:18;;:::i;:::-;-1:-1:-1;8784:9:1;;8631:168::o;8804:125::-;8844:4;8872:1;8869;8866:8;8863:34;;;8877:18;;:::i;:::-;-1:-1:-1;8914:9:1;;8804:125::o;8934:135::-;8973:3;-1:-1:-1;;8994:17:1;;8991:43;;;9014:18;;:::i;:::-;-1:-1:-1;9061:1:1;9050:13;;8934:135::o;9074:127::-;9135:10;9130:3;9126:20;9123:1;9116:31;9166:4;9163:1;9156:15;9190:4;9187:1;9180:15;9206:127;9267:10;9262:3;9258:20;9255:1;9248:31;9298:4;9295:1;9288:15;9322:4;9319:1;9312:15;9338:127;9399:10;9394:3;9390:20;9387:1;9380:31;9430:4;9427:1;9420:15;9454:4;9451:1;9444:15

Swarm Source

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