ETH Price: $3,655.83 (+1.18%)
 

Overview

Max Total Supply

10,000 $JOJO2.0

Holders

105

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: $JOJO2.0
Balance
0.000000003 $JOJO2.0

Value
$0.00
0x1bc6cf35e1d1d1653938cae1e374fd3a071f2e92
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:
JOJO2

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-20
*/

/**

Proof of JOJO | JOJO2.0 

Website: https://www.proofofjojo.com/

Telegram: https://t.me/proofofjojo

*/

// SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.16;

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 Ownable {
    address internal owner;
    constructor(address _owner) {
        owner = _owner;
    }
    modifier onlyOwner() {
        require(msg.sender == owner, "Owner-restricted function");
         _;
    }    
    function renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }  
    event OwnershipTransferred(address owner);
}

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

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

contract JOJO2  is ERC20, Ownable {

    string constant _name = "Proof of JOJO";
    string constant _symbol = "$JOJO2.0";
    uint8 constant _decimals = 9;

    uint256 constant _totalSupply = 10_000 * (10 ** _decimals);

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

    bool public tradingOpened = false;

    mapping (address => bool) markedSniper;
    bool antiBotActive = false;
    uint256 finalDeadBlock;    
    
    mapping (address => uint256) lastTxBlock;
    uint256 constant txCooldownBlocks = 3;
    
    uint256 public maxTxAmount = 2 * _totalSupply / 100; // 2%
    uint256 public maxWalletAmount = 2 * _totalSupply / 100; // 2%

    mapping (address => bool) isFeeExempt;

    uint256 public finalFeeTimestamp;
    uint256 constant public finalFeePercent = 5; // 
    uint256 constant public startingFeePercent = 12; //
    uint256 constant public feeDenominator = 100;

    address payable immutable public projectFeeReceiver = payable(msg.sender);

    address constant routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;    
      
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = address(0x0);

    IDEXRouter public immutable router;
    address immutable public pair;

    uint256 immutable public swapThreshold = _totalSupply / 1_000; // 0.1%
    bool inSwap;

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

    constructor () Ownable(msg.sender) {
        router = IDEXRouter(routerAdress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        address _owner = owner;        
        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }

    receive() external payable { }

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

    function approve(address spender, uint256 amount) public 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 returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

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

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

        // Pre-trader check
        require(tradingOpened, "Trading disabled");

        // Sniper check
        require(!markedSniper[sender], "Snipers can't trade");     

        // Max tx/wallet check
        if (recipient != DEAD && recipient != ZERO) {            
            require(amount <= maxTxAmount, "Excessive transfer amount");
            require(recipient == pair || _balances[recipient] + amount <= maxWalletAmount, 
                "Excessive receiver token holdings");
        }           
        
        // Trade cooldown check
        require(block.number - lastTxBlock[tx.origin] >= txCooldownBlocks, "Transactions too frequent"); 
        lastTxBlock[tx.origin] = block.number;

        if((shouldMarkSniper(sender, recipient))){
              markedSniper[recipient] = true;
        }                        
        else if(shouldSwapBack(sender)){
            swapBack();             
        }
        
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }

        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : amount;
        _balances[recipient] += amountReceived;

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

    function shouldMarkSniper(address sender, address recipient) internal view returns (bool) {
        return antiBotActive && sender == pair && block.number <= finalDeadBlock && 
         recipient != address(this) && recipient != routerAdress && recipient != pair;
    }

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

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount;
        if(block.timestamp < finalFeeTimestamp){
            feeAmount = amount * startingFeePercent / feeDenominator;
        }else{
            feeAmount = amount * finalFeePercent / feeDenominator;
        }                       
        _balances[address(this)] += feeAmount;
        emit Transfer(sender, address(this), feeAmount);        
        return amount - feeAmount;
    }

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

    function swapBack() internal swapping {
        uint256 tokenBalance = _balances[address(this)];
        uint256 tokensToSwap = tokenBalance >= maxTxAmount ? maxTxAmount : tokenBalance;

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

        uint256 balanceBefore = address(this).balance;

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

        unchecked{
            uint256 amountETH = address(this).balance - balanceBefore;            
            (bool success,)  = projectFeeReceiver.call{value: amountETH, gas: 30000}(""); success;
        }
    }

    function openTrading(uint256 numdeadBlocks, uint256 finalFeeDelayMinutes, bool _antiBotActive) external onlyOwner {
        require(!tradingOpened, "Trading already enabled");
        tradingOpened = true;
        antiBotActive = _antiBotActive;
        finalFeeTimestamp = block.timestamp + finalFeeDelayMinutes * 60;
        finalDeadBlock = block.number + numdeadBlocks;
    }
    
    function setMaxAmount(uint256 _maxWalletAmount) external onlyOwner {
        require(_maxWalletAmount >= _totalSupply / 100, "MaxWalletAmount needs to be higher than 1% of total supply");
        maxWalletAmount = _maxWalletAmount;
    }
    
    function setMaxTx(uint256 _maxTxAmount) external onlyOwner {
        require(_maxTxAmount >= _totalSupply / 100, "MaxTxAmount needs to be higher than 1% of total supply");
        maxTxAmount = _maxTxAmount;
    }

    function removeLimits() external onlyOwner {
        maxWalletAmount = type(uint256).max;
        maxTxAmount = type(uint256).max;
    }

    function excludeFromFee(address account, bool excluded) external onlyOwner {
        isFeeExempt[account] = excluded;
    }  

    function excludeMultipleFromFee(address[] calldata accounts, bool excluded) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            isFeeExempt[accounts[i]] = excluded;
        }
    }

    function markSniper(address account) external onlyOwner {
        require(account != routerAdress && account != address(this) && account != pair, "Invalid sniper");
        markedSniper[account] = true;
    }
    
    function unmarkSniper(address account) external onlyOwner {       
        markedSniper[account] = false;
    }

    function clearStuckTokenBalance() external {
        require(msg.sender == projectFeeReceiver, "Deployer-restricted function");
        swapBack();                    
    }

    function clearStuckETHBalance() external {
        projectFeeReceiver.transfer(address(this).balance);
    }

    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckETHBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalFeeTimestamp","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":"account","type":"address"}],"name":"markSniper","outputs":[],"stateMutability":"nonpayable","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"numdeadBlocks","type":"uint256"},{"internalType":"uint256","name":"finalFeeDelayMinutes","type":"uint256"},{"internalType":"bool","name":"_antiBotActive","type":"bool"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startingFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"pure","type":"function"},{"inputs":[],"name":"tradingOpened","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"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unmarkSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6101006040526003805460ff1990811690915560058054909116905560646200002b6009600a6200041d565b620000399061271062000435565b6200004690600262000435565b62000052919062000457565b6008556064620000656009600a6200041d565b620000739061271062000435565b6200008090600262000435565b6200008c919062000457565b6009908155336080526103e890620000a690600a6200041d565b620000b49061271062000435565b620000c0919062000457565b60e052348015620000d057600080fd5b50600080546001600160a01b03191633179055737a250d5630b4cf539739df2c5dacb4c659f2488d60a08190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000139573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015f91906200047a565b6001600160a01b031663c9c6539660a0516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d491906200047a565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024791906200047a565b6001600160a01b0390811660c05230600090815260026020908152604080832060a05185168452909152812060001990555416620002886009600a6200041d565b620002969061271062000435565b6001600160a01b038216600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002e26009600a6200041d565b620002f09061271062000435565b60405190815260200160405180910390a350620004a5565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200035f57816000190482111562000343576200034362000308565b808516156200035157918102915b93841c939080029062000323565b509250929050565b600082620003785750600162000417565b81620003875750600062000417565b8160018114620003a05760028114620003ab57620003cb565b600191505062000417565b60ff841115620003bf57620003bf62000308565b50506001821b62000417565b5060208310610133831016604e8410600b8410161715620003f0575081810a62000417565b620003fc83836200031e565b806000190482111562000413576200041362000308565b0290505b92915050565b60006200042e60ff84168362000367565b9392505050565b600081600019048311821515161562000452576200045262000308565b500290565b6000826200047557634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200048d57600080fd5b81516001600160a01b03811681146200042e57600080fd5b60805160a05160c05160e051611d0a6200053a60003960008181610210015261170e01526000818161050a0152818161078f01528181610ff4015281816115f80152818161168101526116c101526000818161065a0152818161133501526113ef0152600081816104d601528181610c4201528181610db101528181610e3901528181610e7501526114740152611d0a6000f3fe6080604052600436106101f25760003560e01c8063893d20e81161010d578063bc337182116100a0578063df8408fe1161006f578063df8408fe146105f3578063eeaad41914610613578063f7a1642e14610628578063f887ea4014610648578063fd35780c1461067c57600080fd5b8063bc33718214610562578063ca1b1cff14610582578063db5c801014610598578063dd62ed3e146105ad57600080fd5b806399b589cb116100dc57806399b589cb146104c4578063a8aa1b31146104f8578063a9059cbb1461052c578063aa4bde281461054c57600080fd5b8063893d20e81461042b5780638c0b5e221461045d5780638f8deb041461047357806395d89b411461049357600080fd5b80634a092b861161018557806370a082311161015457806370a08231146103b1578063715018a6146103e7578063751039fc146103fc5780637daa930a1461041157600080fd5b80634a092b861461033c5780634fe47f701461035c578063537198b31461037c578063571ac8b01461039157600080fd5b806318160ddd116101c157806318160ddd146102c95780631e1cf1c0146102de57806323b872dd14610300578063313ce5671461032057600080fd5b80630445b667146101fe57806306fdde0314610245578063095ea7b314610284578063180b0d7e146102b457600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b506102327f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561025157600080fd5b5060408051808201909152600d81526c50726f6f66206f66204a4f4a4f60981b60208201525b60405161023c9190611837565b34801561029057600080fd5b506102a461029f36600461189a565b610691565b604051901515815260200161023c565b3480156102c057600080fd5b50610232606481565b3480156102d557600080fd5b506102326106fe565b3480156102ea57600080fd5b506102fe6102f93660046118c6565b61071d565b005b34801561030c57600080fd5b506102a461031b3660046118e3565b610825565b34801561032c57600080fd5b506040516009815260200161023c565b34801561034857600080fd5b506102fe6103573660046118c6565b6108ff565b34801561036857600080fd5b506102fe610377366004611924565b61094a565b34801561038857600080fd5b50610232600c81565b34801561039d57600080fd5b506102a46103ac3660046118c6565b610a12565b3480156103bd57600080fd5b506102326103cc3660046118c6565b6001600160a01b031660009081526001602052604090205490565b3480156103f357600080fd5b506102fe610a20565b34801561040857600080fd5b506102fe610a8f565b34801561041d57600080fd5b506003546102a49060ff1681565b34801561043757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023c565b34801561046957600080fd5b5061023260085481565b34801561047f57600080fd5b506102fe61048e366004611952565b610ac6565b34801561049f57600080fd5b506040805180820190915260088152670244a4f4a4f322e360c41b6020820152610277565b3480156104d057600080fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b34801561050457600080fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b34801561053857600080fd5b506102a461054736600461189a565b610b67565b34801561055857600080fd5b5061023260095481565b34801561056e57600080fd5b506102fe61057d366004611924565b610b74565b34801561058e57600080fd5b50610232600b5481565b3480156105a457600080fd5b506102fe610c35565b3480156105b957600080fd5b506102326105c83660046119d6565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105ff57600080fd5b506102fe61060e366004611a0f565b610c8d565b34801561061f57600080fd5b50610232600581565b34801561063457600080fd5b506102fe610643366004611a44565b610ce2565b34801561065457600080fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b34801561068857600080fd5b506102fe610da6565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106ec9086815260200190565b60405180910390a35060015b92915050565b600061070c6009600a611b6a565b61071890612710611b79565b905090565b6000546001600160a01b031633146107505760405162461bcd60e51b815260040161074790611b98565b60405180910390fd5b6001600160a01b038116737a250d5630b4cf539739df2c5dacb4c659f2488d1480159061078657506001600160a01b0381163014155b80156107c457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614155b6108015760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b734b832b960911b6044820152606401610747565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146108ea576001600160a01b0384166000908152600260209081526040808320338452909152902054828110156108be5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b6044820152606401610747565b506001600160a01b03841660009081526002602090815260408083203384529091529020805483900390555b6108f5848484610e28565b90505b9392505050565b6000546001600160a01b031633146109295760405162461bcd60e51b815260040161074790611b98565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146109745760405162461bcd60e51b815260040161074790611b98565b60646109826009600a611b6a565b61098e90612710611b79565b6109989190611bcf565b811015610a0d5760405162461bcd60e51b815260206004820152603a60248201527f4d617857616c6c6574416d6f756e74206e6565647320746f206265206869676860448201527f6572207468616e203125206f6620746f74616c20737570706c790000000000006064820152608401610747565b600955565b60006106f882600019610691565b6000546001600160a01b03163314610a4a5760405162461bcd60e51b815260040161074790611b98565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610ab95760405162461bcd60e51b815260040161074790611b98565b6000196009819055600855565b6000546001600160a01b03163314610af05760405162461bcd60e51b815260040161074790611b98565b60005b82811015610b615781600a6000868685818110610b1257610b12611bf1565b9050602002016020810190610b2791906118c6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610b5981611c07565b915050610af3565b50505050565b60006108f8338484610e28565b6000546001600160a01b03163314610b9e5760405162461bcd60e51b815260040161074790611b98565b6064610bac6009600a611b6a565b610bb890612710611b79565b610bc29190611bcf565b811015610c305760405162461bcd60e51b815260206004820152603660248201527f4d61785478416d6f756e74206e6565647320746f20626520686967686572207460448201527568616e203125206f6620746f74616c20737570706c7960501b6064820152608401610747565b600855565b6040516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016904780156108fc02916000818181858888f19350505050158015610c8a573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610cb75760405162461bcd60e51b815260040161074790611b98565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d0c5760405162461bcd60e51b815260040161074790611b98565b60035460ff1615610d5f5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152606401610747565b60038054600160ff199182161790915560058054909116821515179055610d8782603c611b79565b610d919042611c20565b600b55610d9e8343611c20565b600655505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e1e5760405162461bcd60e51b815260206004820152601c60248201527f4465706c6f7965722d726573747269637465642066756e6374696f6e000000006044820152606401610747565b610e266112a1565b565b600c5460009060ff1680610e6d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b80610ea957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b15610ec057610eb98484846114ee565b90506108f8565b81600003610ed457610eb9848460006114ee565b60035460ff16610f195760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b6044820152606401610747565b6001600160a01b03841660009081526004602052604090205460ff1615610f785760405162461bcd60e51b8152602060048201526013602482015272536e69706572732063616e277420747261646560681b6044820152606401610747565b6001600160a01b03831661dead14801590610f9b57506001600160a01b03831615155b156110ad57600854821115610ff25760405162461bcd60e51b815260206004820152601960248201527f457863657373697665207472616e7366657220616d6f756e74000000000000006044820152606401610747565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148061105757506009546001600160a01b038416600090815260016020526040902054611054908490611c20565b11155b6110ad5760405162461bcd60e51b815260206004820152602160248201527f45786365737369766520726563656976657220746f6b656e20686f6c64696e676044820152607360f81b6064820152608401610747565b326000908152600760205260409020546003906110ca9043611c33565b10156111185760405162461bcd60e51b815260206004820152601960248201527f5472616e73616374696f6e7320746f6f206672657175656e74000000000000006044820152606401610747565b32600090815260076020526040902043905561113484846115e6565b15611161576001600160a01b0383166000908152600460205260409020805460ff19166001179055611177565b61116a846116bd565b15611177576111776112a1565b6001600160a01b038416600090815260016020526040902054828110156111d75760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610747565b6001600160a01b0385166000908152600160205260408120805485900390556112008686611735565b61120a5783611214565b611214868561177c565b6001600160a01b038616600090815260016020526040812080549293508392909190611241908490611c20565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161128d91815260200190565b60405180910390a350600195945050505050565b600c805460ff1916600190811790915530600090815260209190915260408120546008549091908210156112d557816112d9565b6008545b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061131357611313611bf1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b59190611c46565b816001815181106113c8576113c8611bf1565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061142d908690600090879030904290600401611c63565b600060405180830381600087803b15801561144757600080fd5b505af115801561145b573d6000803e3d6000fd5b5050604051478490039250600091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169061753090849084818181858888f193505050503d80600081146114d4576040519150601f19603f3d011682016040523d82523d6000602084013e6114d9565b606091505b5050600c805460ff1916905550505050505050565b6001600160a01b0383166000908152600160205260408120548281101561154e5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610747565b6001600160a01b038086166000908152600160205260408082208054879003905591861681529081208054859290611587908490611c20565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115d391815260200190565b60405180910390a3506001949350505050565b60055460009060ff16801561162c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b801561163a57506006544311155b801561164f57506001600160a01b0382163014155b801561167857506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b80156108f857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415905092915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141580156106f85750306000908152600160205260409020547f0000000000000000000000000000000000000000000000000000000000000000111592915050565b6001600160a01b0382166000908152600a602052604081205460ff168061177457506001600160a01b0382166000908152600a602052604090205460ff165b159392505050565b600080600b544210156117a7576064611796600c85611b79565b6117a09190611bcf565b90506117c1565b60646117b4600585611b79565b6117be9190611bcf565b90505b30600090815260016020526040812080548392906117e0908490611c20565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361182f8184611c33565b949350505050565b600060208083528351808285015260005b8181101561186457858101830151858201604001528201611848565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c8a57600080fd5b600080604083850312156118ad57600080fd5b82356118b881611885565b946020939093013593505050565b6000602082840312156118d857600080fd5b81356108f881611885565b6000806000606084860312156118f857600080fd5b833561190381611885565b9250602084013561191381611885565b929592945050506040919091013590565b60006020828403121561193657600080fd5b5035919050565b8035801515811461194d57600080fd5b919050565b60008060006040848603121561196757600080fd5b833567ffffffffffffffff8082111561197f57600080fd5b818601915086601f83011261199357600080fd5b8135818111156119a257600080fd5b8760208260051b85010111156119b757600080fd5b6020928301955093506119cd918601905061193d565b90509250925092565b600080604083850312156119e957600080fd5b82356119f481611885565b91506020830135611a0481611885565b809150509250929050565b60008060408385031215611a2257600080fd5b8235611a2d81611885565b9150611a3b6020840161193d565b90509250929050565b600080600060608486031215611a5957600080fd5b83359250602084013591506119cd6040850161193d565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611ac1578160001904821115611aa757611aa7611a70565b80851615611ab457918102915b93841c9390800290611a8b565b509250929050565b600082611ad8575060016106f8565b81611ae5575060006106f8565b8160018114611afb5760028114611b0557611b21565b60019150506106f8565b60ff841115611b1657611b16611a70565b50506001821b6106f8565b5060208310610133831016604e8410600b8410161715611b44575081810a6106f8565b611b4e8383611a86565b8060001904821115611b6257611b62611a70565b029392505050565b60006108f860ff841683611ac9565b6000816000190483118215151615611b9357611b93611a70565b500290565b60208082526019908201527f4f776e65722d726573747269637465642066756e6374696f6e00000000000000604082015260600190565b600082611bec57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201611c1957611c19611a70565b5060010190565b808201808211156106f8576106f8611a70565b818103818111156106f8576106f8611a70565b600060208284031215611c5857600080fd5b81516108f881611885565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611cb35784516001600160a01b031683529383019391830191600101611c8e565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209f41c0c93bc89e9a07fa9292d33c21974c12e1fd461a538b708ecee23907a19064736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c8063893d20e81161010d578063bc337182116100a0578063df8408fe1161006f578063df8408fe146105f3578063eeaad41914610613578063f7a1642e14610628578063f887ea4014610648578063fd35780c1461067c57600080fd5b8063bc33718214610562578063ca1b1cff14610582578063db5c801014610598578063dd62ed3e146105ad57600080fd5b806399b589cb116100dc57806399b589cb146104c4578063a8aa1b31146104f8578063a9059cbb1461052c578063aa4bde281461054c57600080fd5b8063893d20e81461042b5780638c0b5e221461045d5780638f8deb041461047357806395d89b411461049357600080fd5b80634a092b861161018557806370a082311161015457806370a08231146103b1578063715018a6146103e7578063751039fc146103fc5780637daa930a1461041157600080fd5b80634a092b861461033c5780634fe47f701461035c578063537198b31461037c578063571ac8b01461039157600080fd5b806318160ddd116101c157806318160ddd146102c95780631e1cf1c0146102de57806323b872dd14610300578063313ce5671461032057600080fd5b80630445b667146101fe57806306fdde0314610245578063095ea7b314610284578063180b0d7e146102b457600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b506102327f00000000000000000000000000000000000000000000000000000002540be40081565b6040519081526020015b60405180910390f35b34801561025157600080fd5b5060408051808201909152600d81526c50726f6f66206f66204a4f4a4f60981b60208201525b60405161023c9190611837565b34801561029057600080fd5b506102a461029f36600461189a565b610691565b604051901515815260200161023c565b3480156102c057600080fd5b50610232606481565b3480156102d557600080fd5b506102326106fe565b3480156102ea57600080fd5b506102fe6102f93660046118c6565b61071d565b005b34801561030c57600080fd5b506102a461031b3660046118e3565b610825565b34801561032c57600080fd5b506040516009815260200161023c565b34801561034857600080fd5b506102fe6103573660046118c6565b6108ff565b34801561036857600080fd5b506102fe610377366004611924565b61094a565b34801561038857600080fd5b50610232600c81565b34801561039d57600080fd5b506102a46103ac3660046118c6565b610a12565b3480156103bd57600080fd5b506102326103cc3660046118c6565b6001600160a01b031660009081526001602052604090205490565b3480156103f357600080fd5b506102fe610a20565b34801561040857600080fd5b506102fe610a8f565b34801561041d57600080fd5b506003546102a49060ff1681565b34801561043757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023c565b34801561046957600080fd5b5061023260085481565b34801561047f57600080fd5b506102fe61048e366004611952565b610ac6565b34801561049f57600080fd5b506040805180820190915260088152670244a4f4a4f322e360c41b6020820152610277565b3480156104d057600080fd5b506104457f000000000000000000000000c977e796dd3b8ec040f4cfe0f72ae2e85138822981565b34801561050457600080fd5b506104457f0000000000000000000000001bc6cf35e1d1d1653938cae1e374fd3a071f2e9281565b34801561053857600080fd5b506102a461054736600461189a565b610b67565b34801561055857600080fd5b5061023260095481565b34801561056e57600080fd5b506102fe61057d366004611924565b610b74565b34801561058e57600080fd5b50610232600b5481565b3480156105a457600080fd5b506102fe610c35565b3480156105b957600080fd5b506102326105c83660046119d6565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105ff57600080fd5b506102fe61060e366004611a0f565b610c8d565b34801561061f57600080fd5b50610232600581565b34801561063457600080fd5b506102fe610643366004611a44565b610ce2565b34801561065457600080fd5b506104457f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561068857600080fd5b506102fe610da6565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106ec9086815260200190565b60405180910390a35060015b92915050565b600061070c6009600a611b6a565b61071890612710611b79565b905090565b6000546001600160a01b031633146107505760405162461bcd60e51b815260040161074790611b98565b60405180910390fd5b6001600160a01b038116737a250d5630b4cf539739df2c5dacb4c659f2488d1480159061078657506001600160a01b0381163014155b80156107c457507f0000000000000000000000001bc6cf35e1d1d1653938cae1e374fd3a071f2e926001600160a01b0316816001600160a01b031614155b6108015760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b734b832b960911b6044820152606401610747565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146108ea576001600160a01b0384166000908152600260209081526040808320338452909152902054828110156108be5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b6044820152606401610747565b506001600160a01b03841660009081526002602090815260408083203384529091529020805483900390555b6108f5848484610e28565b90505b9392505050565b6000546001600160a01b031633146109295760405162461bcd60e51b815260040161074790611b98565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146109745760405162461bcd60e51b815260040161074790611b98565b60646109826009600a611b6a565b61098e90612710611b79565b6109989190611bcf565b811015610a0d5760405162461bcd60e51b815260206004820152603a60248201527f4d617857616c6c6574416d6f756e74206e6565647320746f206265206869676860448201527f6572207468616e203125206f6620746f74616c20737570706c790000000000006064820152608401610747565b600955565b60006106f882600019610691565b6000546001600160a01b03163314610a4a5760405162461bcd60e51b815260040161074790611b98565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610ab95760405162461bcd60e51b815260040161074790611b98565b6000196009819055600855565b6000546001600160a01b03163314610af05760405162461bcd60e51b815260040161074790611b98565b60005b82811015610b615781600a6000868685818110610b1257610b12611bf1565b9050602002016020810190610b2791906118c6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610b5981611c07565b915050610af3565b50505050565b60006108f8338484610e28565b6000546001600160a01b03163314610b9e5760405162461bcd60e51b815260040161074790611b98565b6064610bac6009600a611b6a565b610bb890612710611b79565b610bc29190611bcf565b811015610c305760405162461bcd60e51b815260206004820152603660248201527f4d61785478416d6f756e74206e6565647320746f20626520686967686572207460448201527568616e203125206f6620746f74616c20737570706c7960501b6064820152608401610747565b600855565b6040516001600160a01b037f000000000000000000000000c977e796dd3b8ec040f4cfe0f72ae2e85138822916904780156108fc02916000818181858888f19350505050158015610c8a573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610cb75760405162461bcd60e51b815260040161074790611b98565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d0c5760405162461bcd60e51b815260040161074790611b98565b60035460ff1615610d5f5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152606401610747565b60038054600160ff199182161790915560058054909116821515179055610d8782603c611b79565b610d919042611c20565b600b55610d9e8343611c20565b600655505050565b336001600160a01b037f000000000000000000000000c977e796dd3b8ec040f4cfe0f72ae2e8513882291614610e1e5760405162461bcd60e51b815260206004820152601c60248201527f4465706c6f7965722d726573747269637465642066756e6374696f6e000000006044820152606401610747565b610e266112a1565b565b600c5460009060ff1680610e6d57507f000000000000000000000000c977e796dd3b8ec040f4cfe0f72ae2e8513882296001600160a01b0316846001600160a01b0316145b80610ea957507f000000000000000000000000c977e796dd3b8ec040f4cfe0f72ae2e8513882296001600160a01b0316836001600160a01b0316145b15610ec057610eb98484846114ee565b90506108f8565b81600003610ed457610eb9848460006114ee565b60035460ff16610f195760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b6044820152606401610747565b6001600160a01b03841660009081526004602052604090205460ff1615610f785760405162461bcd60e51b8152602060048201526013602482015272536e69706572732063616e277420747261646560681b6044820152606401610747565b6001600160a01b03831661dead14801590610f9b57506001600160a01b03831615155b156110ad57600854821115610ff25760405162461bcd60e51b815260206004820152601960248201527f457863657373697665207472616e7366657220616d6f756e74000000000000006044820152606401610747565b7f0000000000000000000000001bc6cf35e1d1d1653938cae1e374fd3a071f2e926001600160a01b0316836001600160a01b0316148061105757506009546001600160a01b038416600090815260016020526040902054611054908490611c20565b11155b6110ad5760405162461bcd60e51b815260206004820152602160248201527f45786365737369766520726563656976657220746f6b656e20686f6c64696e676044820152607360f81b6064820152608401610747565b326000908152600760205260409020546003906110ca9043611c33565b10156111185760405162461bcd60e51b815260206004820152601960248201527f5472616e73616374696f6e7320746f6f206672657175656e74000000000000006044820152606401610747565b32600090815260076020526040902043905561113484846115e6565b15611161576001600160a01b0383166000908152600460205260409020805460ff19166001179055611177565b61116a846116bd565b15611177576111776112a1565b6001600160a01b038416600090815260016020526040902054828110156111d75760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610747565b6001600160a01b0385166000908152600160205260408120805485900390556112008686611735565b61120a5783611214565b611214868561177c565b6001600160a01b038616600090815260016020526040812080549293508392909190611241908490611c20565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161128d91815260200190565b60405180910390a350600195945050505050565b600c805460ff1916600190811790915530600090815260209190915260408120546008549091908210156112d557816112d9565b6008545b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061131357611313611bf1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b59190611c46565b816001815181106113c8576113c8611bf1565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061142d908690600090879030904290600401611c63565b600060405180830381600087803b15801561144757600080fd5b505af115801561145b573d6000803e3d6000fd5b5050604051478490039250600091506001600160a01b037f000000000000000000000000c977e796dd3b8ec040f4cfe0f72ae2e851388229169061753090849084818181858888f193505050503d80600081146114d4576040519150601f19603f3d011682016040523d82523d6000602084013e6114d9565b606091505b5050600c805460ff1916905550505050505050565b6001600160a01b0383166000908152600160205260408120548281101561154e5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610747565b6001600160a01b038086166000908152600160205260408082208054879003905591861681529081208054859290611587908490611c20565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115d391815260200190565b60405180910390a3506001949350505050565b60055460009060ff16801561162c57507f0000000000000000000000001bc6cf35e1d1d1653938cae1e374fd3a071f2e926001600160a01b0316836001600160a01b0316145b801561163a57506006544311155b801561164f57506001600160a01b0382163014155b801561167857506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b80156108f857507f0000000000000000000000001bc6cf35e1d1d1653938cae1e374fd3a071f2e926001600160a01b0316826001600160a01b03161415905092915050565b60007f0000000000000000000000001bc6cf35e1d1d1653938cae1e374fd3a071f2e926001600160a01b0316826001600160a01b0316141580156106f85750306000908152600160205260409020547f00000000000000000000000000000000000000000000000000000002540be400111592915050565b6001600160a01b0382166000908152600a602052604081205460ff168061177457506001600160a01b0382166000908152600a602052604090205460ff165b159392505050565b600080600b544210156117a7576064611796600c85611b79565b6117a09190611bcf565b90506117c1565b60646117b4600585611b79565b6117be9190611bcf565b90505b30600090815260016020526040812080548392906117e0908490611c20565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361182f8184611c33565b949350505050565b600060208083528351808285015260005b8181101561186457858101830151858201604001528201611848565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c8a57600080fd5b600080604083850312156118ad57600080fd5b82356118b881611885565b946020939093013593505050565b6000602082840312156118d857600080fd5b81356108f881611885565b6000806000606084860312156118f857600080fd5b833561190381611885565b9250602084013561191381611885565b929592945050506040919091013590565b60006020828403121561193657600080fd5b5035919050565b8035801515811461194d57600080fd5b919050565b60008060006040848603121561196757600080fd5b833567ffffffffffffffff8082111561197f57600080fd5b818601915086601f83011261199357600080fd5b8135818111156119a257600080fd5b8760208260051b85010111156119b757600080fd5b6020928301955093506119cd918601905061193d565b90509250925092565b600080604083850312156119e957600080fd5b82356119f481611885565b91506020830135611a0481611885565b809150509250929050565b60008060408385031215611a2257600080fd5b8235611a2d81611885565b9150611a3b6020840161193d565b90509250929050565b600080600060608486031215611a5957600080fd5b83359250602084013591506119cd6040850161193d565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611ac1578160001904821115611aa757611aa7611a70565b80851615611ab457918102915b93841c9390800290611a8b565b509250929050565b600082611ad8575060016106f8565b81611ae5575060006106f8565b8160018114611afb5760028114611b0557611b21565b60019150506106f8565b60ff841115611b1657611b16611a70565b50506001821b6106f8565b5060208310610133831016604e8410600b8410161715611b44575081810a6106f8565b611b4e8383611a86565b8060001904821115611b6257611b62611a70565b029392505050565b60006108f860ff841683611ac9565b6000816000190483118215151615611b9357611b93611a70565b500290565b60208082526019908201527f4f776e65722d726573747269637465642066756e6374696f6e00000000000000604082015260600190565b600082611bec57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201611c1957611c19611a70565b5060010190565b808201808211156106f8576106f8611a70565b818103818111156106f8576106f8611a70565b600060208284031215611c5857600080fd5b81516108f881611885565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611cb35784516001600160a01b031683529383019391830191600101611c8e565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209f41c0c93bc89e9a07fa9292d33c21974c12e1fd461a538b708ecee23907a19064736f6c63430008100033

Deployed Bytecode Sourcemap

2010:9729:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3372:61;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;3372:61:0;;;;;;;;4215:71;;;;;;;;;;-1:-1:-1;4278:5:0;;;;;;;;;;;;-1:-1:-1;;;4278:5:0;;;;4215:71;;;;;;;:::i;4601:207::-;;;;;;;;;;-1:-1:-1;4601:207:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;4601:207:0;1205:187:1;2947:44:0;;;;;;;;;;;;2988:3;2947:44;;3972:79;;;;;;;;;;;;;:::i;11090:211::-;;;;;;;;;;-1:-1:-1;11090:211:0;;;;;:::i;:::-;;:::i;:::-;;5101:489;;;;;;;;;;-1:-1:-1;5101:489:0;;;;;:::i;:::-;;:::i;4057:71::-;;;;;;;;;;-1:-1:-1;4057:71:0;;2169:1;2252:36:1;;2240:2;2225:18;4057:71:0;2110:184:1;11313:113:0;;;;;;;;;;-1:-1:-1;11313:113:0;;;;;:::i;:::-;;:::i;10104:240::-;;;;;;;;;;-1:-1:-1;10104:240:0;;;;;:::i;:::-;;:::i;2890:47::-;;;;;;;;;;;;2935:2;2890:47;;4816:122;;;;;;;;;;-1:-1:-1;4816:122:0;;;;;:::i;:::-;;:::i;4367:96::-;;;;;;;;;;-1:-1:-1;4367:96:0;;;;;:::i;:::-;-1:-1:-1;;;;;4442:18:0;4424:7;4442:18;;;:9;:18;;;;;;;4367:96;1349:131;;;;;;;;;;;;;:::i;10580:139::-;;;;;;;;;;;;;:::i;2361:33::-;;;;;;;;;;-1:-1:-1;2361:33:0;;;;;;;;4292:69;;;;;;;;;;-1:-1:-1;4335:7:0;4353:5;-1:-1:-1;;;;;4353:5:0;4292:69;;;-1:-1:-1;;;;;2648:32:1;;;2630:51;;2618:2;2603:18;4292:69:0;2484:203:1;2617:51:0;;;;;;;;;;;;;;;;10862:220;;;;;;;;;;-1:-1:-1;10862:220:0;;;;;:::i;:::-;;:::i;4134:75::-;;;;;;;;;;-1:-1:-1;4199:7:0;;;;;;;;;;;;-1:-1:-1;;;4199:7:0;;;;4134:75;;3000:73;;;;;;;;;;;;;;;3334:29;;;;;;;;;;;;;;;4946:147;;;;;;;;;;-1:-1:-1;4946:147:0;;;;;:::i;:::-;;:::i;2681:55::-;;;;;;;;;;;;;;;;10356:216;;;;;;;;;;-1:-1:-1;10356:216:0;;;;;:::i;:::-;;:::i;2797:32::-;;;;;;;;;;;;;;;;11618:110;;;;;;;;;;;;;:::i;4469:124::-;;;;;;;;;;-1:-1:-1;4469:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;4562:19:0;;;4544:7;4562:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4469:124;10727:125;;;;;;;;;;-1:-1:-1;10727:125:0;;;;;:::i;:::-;;:::i;2836:43::-;;;;;;;;;;;;2878:1;2836:43;;9707:385;;;;;;;;;;-1:-1:-1;9707:385:0;;;;;:::i;:::-;;:::i;3293:34::-;;;;;;;;;;;;;;;11434:176;;;;;;;;;;;;;:::i;4601:207::-;4696:10;4667:4;4684:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4684:32:0;;;;;;;;;;:41;;;4741:37;4667:4;;4684:32;;4741:37;;;;4719:6;160:25:1;;148:2;133:18;;14:177;4741:37:0;;;;;;;;-1:-1:-1;4796:4:0;4601:207;;;;;:::o;3972:79::-;4018:7;2221:15;2169:1;2221:2;:15;:::i;:::-;2211:26;;:6;:26;:::i;:::-;4029:19;;3972:79;:::o;11090:211::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11165:23:0;::::1;3114:42;11165:23;::::0;::::1;::::0;:51:::1;;-1:-1:-1::0;;;;;;11192:24:0;::::1;11211:4;11192:24;;11165:51;:70;;;;;11231:4;-1:-1:-1::0;;;;;11220:15:0::1;:7;-1:-1:-1::0;;;;;11220:15:0::1;;;11165:70;11157:97;;;::::0;-1:-1:-1;;;11157:97:0;;7279:2:1;11157:97:0::1;::::0;::::1;7261:21:1::0;7318:2;7298:18;;;7291:30;-1:-1:-1;;;7337:18:1;;;7330:44;7391:18;;11157:97:0::1;7077:338:1::0;11157:97:0::1;-1:-1:-1::0;;;;;11265:21:0::1;;::::0;;;:12:::1;:21;::::0;;;;:28;;-1:-1:-1;;11265:28:0::1;11289:4;11265:28;::::0;;11090:211::o;5101:489::-;-1:-1:-1;;;;;5212:19:0;;5192:4;5212:19;;;:11;:19;;;;;;;;5232:10;5212:31;;;;;;;;-1:-1:-1;;5212:52:0;5209:316;;-1:-1:-1;;;;;5307:19:0;;5280:24;5307:19;;;:11;:19;;;;;;;;5327:10;5307:31;;;;;;;;5361:26;;;;5353:61;;;;-1:-1:-1;;;5353:61:0;;7622:2:1;5353:61:0;;;7604:21:1;7661:2;7641:18;;;7634:30;-1:-1:-1;;;7680:18:1;;;7673:52;7742:18;;5353:61:0;7420:346:1;5353:61:0;-1:-1:-1;;;;;;5457:19:0;;;;;;:11;:19;;;;;;;;5477:10;5457:31;;;;;;;:41;;;;;;;5209:316;5542:40;5556:6;5564:9;5575:6;5542:13;:40::i;:::-;5535:47;;5101:489;;;;;;:::o;11313:113::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11389:21:0::1;11413:5;11389:21:::0;;;:12:::1;:21;::::0;;;;:29;;-1:-1:-1;;11389:29:0::1;::::0;;11313:113::o;10104:240::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;10225:3:::1;2221:15;2169:1;2221:2;:15;:::i;:::-;2211:26;::::0;:6:::1;:26;:::i;:::-;10210:18;;;;:::i;:::-;10190:16;:38;;10182:109;;;::::0;-1:-1:-1;;;10182:109:0;;8195:2:1;10182:109:0::1;::::0;::::1;8177:21:1::0;8234:2;8214:18;;;8207:30;8273:34;8253:18;;;8246:62;8344:28;8324:18;;;8317:56;8390:19;;10182:109:0::1;7993:422:1::0;10182:109:0::1;10302:15;:34:::0;10104:240::o;4816:122::-;4871:4;4895:35;4903:7;-1:-1:-1;;4895:7:0;:35::i;1349:131::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;1422:1:::1;1406:18:::0;;-1:-1:-1;;;;;;1406:18:0::1;::::0;;1440:32:::1;::::0;2630:51:1;;;1440:32:0::1;::::0;2618:2:1;2603:18;1440:32:0::1;;;;;;;1349:131::o:0;10580:139::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;-1:-1:-1;;10634:15:0::1;:35:::0;;;10680:11:::1;:31:::0;10580:139::o;10862:220::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;10972:9:::1;10968:107;10987:19:::0;;::::1;10968:107;;;11055:8;11028:11;:24;11040:8;;11049:1;11040:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11028:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11028:24:0;:35;;-1:-1:-1;;11028:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11008:3;::::1;::::0;::::1;:::i;:::-;;;;10968:107;;;;10862:220:::0;;;:::o;4946:147::-;5017:4;5041:44;5055:10;5067:9;5078:6;5041:13;:44::i;10356:216::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;10465:3:::1;2221:15;2169:1;2221:2;:15;:::i;:::-;2211:26;::::0;:6:::1;:26;:::i;:::-;10450:18;;;;:::i;:::-;10434:12;:34;;10426:101;;;::::0;-1:-1:-1;;;10426:101:0;;8894:2:1;10426:101:0::1;::::0;::::1;8876:21:1::0;8933:2;8913:18;;;8906:30;8972:34;8952:18;;;8945:62;-1:-1:-1;;;9023:18:1;;;9016:52;9085:19;;10426:101:0::1;8692:418:1::0;10426:101:0::1;10538:11;:26:::0;10356:216::o;11618:110::-;11670:50;;-1:-1:-1;;;;;11670:18:0;:27;;11698:21;11670:50;;;;;;;;;11698:21;11670:27;:50;;;;;;;;;;;;;;;;;;;;;11618:110::o;10727:125::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10813:20:0;;;::::1;;::::0;;;:11:::1;:20;::::0;;;;:31;;-1:-1:-1;;10813:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10727:125::o;9707:385::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;9841:13:::1;::::0;::::1;;9840:14;9832:50;;;::::0;-1:-1:-1;;;9832:50:0;;9317:2:1;9832:50:0::1;::::0;::::1;9299:21:1::0;9356:2;9336:18;;;9329:30;9395:25;9375:18;;;9368:53;9438:18;;9832:50:0::1;9115:347:1::0;9832:50:0::1;9893:13;:20:::0;;9909:4:::1;-1:-1:-1::0;;9893:20:0;;::::1;;::::0;;;9924:13:::1;:30:::0;;;;::::1;::::0;::::1;;;::::0;;10003:25:::1;:20:::0;10026:2:::1;10003:25;:::i;:::-;9985:43;::::0;:15:::1;:43;:::i;:::-;9965:17;:63:::0;10056:28:::1;10071:13:::0;10056:12:::1;:28;:::i;:::-;10039:14;:45:::0;-1:-1:-1;;;9707:385:0:o;11434:176::-;11496:10;-1:-1:-1;;;;;11510:18:0;11496:32;;11488:73;;;;-1:-1:-1;;;11488:73:0;;9799:2:1;11488:73:0;;;9781:21:1;9838:2;9818:18;;;9811:30;9877;9857:18;;;9850:58;9925:18;;11488:73:0;9597:352:1;11488:73:0;11572:10;:8;:10::i;:::-;11434:176::o;5598:1757::-;5710:6;;5690:4;;5710:6;;;:38;;;5730:18;-1:-1:-1;;;;;5720:28:0;:6;-1:-1:-1;;;;;5720:28:0;;5710:38;:73;;;;5765:18;-1:-1:-1;;;;;5752:31:0;:9;-1:-1:-1;;;;;5752:31:0;;5710:73;5707:252;;;5806:41;5821:6;5829:9;5840:6;5806:14;:41::i;:::-;5799:48;;;;5707:252;5877:6;5887:1;5877:11;5874:85;;5911:36;5926:6;5934:9;5945:1;5911:14;:36::i;5874:85::-;6008:13;;;;6000:42;;;;-1:-1:-1;;;6000:42:0;;10156:2:1;6000:42:0;;;10138:21:1;10195:2;10175:18;;;10168:30;-1:-1:-1;;;10214:18:1;;;10207:46;10270:18;;6000:42:0;9954:340:1;6000:42:0;-1:-1:-1;;;;;6089:20:0;;;;;;:12;:20;;;;;;;;6088:21;6080:53;;;;-1:-1:-1;;;6080:53:0;;10501:2:1;6080:53:0;;;10483:21:1;10540:2;10520:18;;;10513:30;-1:-1:-1;;;10559:18:1;;;10552:49;10618:18;;6080:53:0;10299:343:1;6080:53:0;-1:-1:-1;;;;;6187:17:0;;3199:42;6187:17;;;;:38;;-1:-1:-1;;;;;;6208:17:0;;;;6187:38;6183:290;;;6272:11;;6262:6;:21;;6254:59;;;;-1:-1:-1;;;6254:59:0;;10849:2:1;6254:59:0;;;10831:21:1;10888:2;10868:18;;;10861:30;10927:27;10907:18;;;10900:55;10972:18;;6254:59:0;10647:349:1;6254:59:0;6349:4;-1:-1:-1;;;;;6336:17:0;:9;-1:-1:-1;;;;;6336:17:0;;:69;;;-1:-1:-1;6390:15:0;;-1:-1:-1;;;;;6357:20:0;;;;;;:9;:20;;;;;;:29;;6380:6;;6357:29;:::i;:::-;:48;;6336:69;6328:133;;;;-1:-1:-1;;;6328:133:0;;11203:2:1;6328:133:0;;;11185:21:1;11242:2;11222:18;;;11215:30;11281:34;11261:18;;;11254:62;-1:-1:-1;;;11332:18:1;;;11325:31;11373:19;;6328:133:0;11001:397:1;6328:133:0;6572:9;6560:22;;;;:11;:22;;;;;;2603:1;;6545:37;;:12;:37;:::i;:::-;:57;;6537:95;;;;-1:-1:-1;;;6537:95:0;;11738:2:1;6537:95:0;;;11720:21:1;11777:2;11757:18;;;11750:30;11816:27;11796:18;;;11789:55;11861:18;;6537:95:0;11536:349:1;6537:95:0;6656:9;6644:22;;;;:11;:22;;;;;6669:12;6644:37;;6698:35;6715:6;6723:9;6698:16;:35::i;:::-;6694:215;;;-1:-1:-1;;;;;6752:23:0;;;;;;:12;:23;;;;;:30;;-1:-1:-1;;6752:30:0;6778:4;6752:30;;;6694:215;;;6836:22;6851:6;6836:14;:22::i;:::-;6833:76;;;6874:10;:8;:10::i;:::-;-1:-1:-1;;;;;6953:17:0;;6929:21;6953:17;;;:9;:17;;;;;;6989:23;;;;6981:56;;;;-1:-1:-1;;;6981:56:0;;12092:2:1;6981:56:0;;;12074:21:1;12131:2;12111:18;;;12104:30;-1:-1:-1;;;12150:18:1;;;12143:50;12210:18;;6981:56:0;11890:344:1;6981:56:0;-1:-1:-1;;;;;7072:17:0;;;;;;:9;:17;;;;;:27;;;;;;;7148:32;7082:6;7170:9;7148:13;:32::i;:::-;:67;;7209:6;7148:67;;;7183:23;7191:6;7199;7183:7;:23::i;:::-;-1:-1:-1;;;;;7226:20:0;;;;;;:9;:20;;;;;:38;;7123:92;;-1:-1:-1;7123:92:0;;7226:20;;;:38;;7123:92;;7226:38;:::i;:::-;;;;;;;;7299:9;-1:-1:-1;;;;;7282:43:0;7291:6;-1:-1:-1;;;;;7282:43:0;;7310:14;7282:43;;;;160:25:1;;148:2;133:18;;14:177;7282:43:0;;;;;;;;-1:-1:-1;7343:4:0;;5598:1757;-1:-1:-1;;;;;5598:1757:0:o;8908:791::-;3490:6;:13;;-1:-1:-1;;3490:13:0;3499:4;3490:13;;;;;;8998:4:::1;3490:6:::0;8980:24;;;::::1;::::0;;;;;;;;9054:11:::1;::::0;8980:24;;3490:6;9038:27;::::1;;:56;;9082:12;9038:56;;;9068:11;;9038:56;9131:16;::::0;;9145:1:::1;9131:16:::0;;;;;::::1;::::0;;9015:79;;-1:-1:-1;9107:21:0::1;::::0;9131:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9131:16:0::1;9107:40;;9176:4;9158;9163:1;9158:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;9158:23:0::1;;;-1:-1:-1::0;;;;;9158:23:0::1;;;::::0;::::1;9202:6;-1:-1:-1::0;;;;;9202:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9192:4;9197:1;9192:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9192:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;9286:188:::1;::::0;-1:-1:-1;;;9286:188:0;;9252:21:::1;::::0;9286:6:::1;:57;::::0;::::1;::::0;:188:::1;::::0;9358:12;;9228:21:::1;::::0;9401:4;;9428::::1;::::0;9448:15:::1;::::0;9286:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9614:57:0::1;::::0;9531:21:::1;:37:::0;;::::1;::::0;-1:-1:-1;9511:17:0::1;::::0;-1:-1:-1;;;;;;9614:18:0::1;:23;::::0;9661:5:::1;::::0;9531:37;;9511:17;9614:57;9511:17;9614:57;9531:37;9614:23;9661:5;9614:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;3508:6:0;:14;;-1:-1:-1;;3508:14:0;;;-1:-1:-1;;;;;;;8908:791:0:o;7367:413::-;-1:-1:-1;;;;;7501:17:0;;7460:4;7501:17;;;:9;:17;;;;;;7537:23;;;;7529:56;;;;-1:-1:-1;;;7529:56:0;;12092:2:1;7529:56:0;;;12074:21:1;12131:2;12111:18;;;12104:30;-1:-1:-1;;;12150:18:1;;;12143:50;12210:18;;7529:56:0;11890:344:1;7529:56:0;-1:-1:-1;;;;;7620:17:0;;;;;;;:9;:17;;;;;;:27;;;;;;;7669:20;;;;;;;;:30;;7641:6;;7620:17;7669:30;;7641:6;;7669:30;:::i;:::-;;;;;;;;7732:9;-1:-1:-1;;;;;7715:35:0;7724:6;-1:-1:-1;;;;;7715:35:0;;7743:6;7715:35;;;;160:25:1;;148:2;133:18;;14:177;7715:35:0;;;;;;;;-1:-1:-1;7768:4:0;;7367:413;-1:-1:-1;;;;7367:413:0:o;7788:272::-;7896:13;;7872:4;;7896:13;;:31;;;;;7923:4;-1:-1:-1;;;;;7913:14:0;:6;-1:-1:-1;;;;;7913:14:0;;7896:31;:65;;;;;7947:14;;7931:12;:30;;7896:65;:106;;;;-1:-1:-1;;;;;;7976:26:0;;7997:4;7976:26;;7896:106;:135;;;;-1:-1:-1;;;;;;8006:25:0;;3114:42;8006:25;;7896:135;:156;;;;;8048:4;-1:-1:-1;;;;;8035:17:0;:9;-1:-1:-1;;;;;8035:17:0;;;7889:163;;7788:272;;;;:::o;8746:154::-;8809:4;8843;-1:-1:-1;;;;;8833:14:0;:6;-1:-1:-1;;;;;8833:14:0;;;:59;;;;-1:-1:-1;8869:4:0;8851:24;;;;:9;:24;;;;;;8879:13;-1:-1:-1;8851:41:0;8826:66;8746:154;-1:-1:-1;;8746:154:0:o;8068:161::-;-1:-1:-1;;;;;8175:19:0;;8149:4;8175:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;8198:22:0;;;;;;:11;:22;;;;;;;;8175:45;8173:48;;8068:161;-1:-1:-1;;;8068:161:0:o;8237:501::-;8304:7;8324:17;8373;;8355:15;:35;8352:206;;;2988:3;8418:27;2935:2;8418:6;:27;:::i;:::-;:44;;;;:::i;:::-;8406:56;;8352:206;;;2988:3;8505:24;2878:1;8505:6;:24;:::i;:::-;:41;;;;:::i;:::-;8493:53;;8352:206;8609:4;8591:24;;;;:9;:24;;;;;:37;;8619:9;;8591:24;:37;;8619:9;;8591:37;:::i;:::-;;;;-1:-1:-1;;8644:42:0;;160:25:1;;;8669:4:0;;-1:-1:-1;;;;;8644:42:0;;;;;148:2:1;133:18;8644:42:0;;;;;;;8712:18;8721:9;8712:6;:18;:::i;:::-;8705:25;8237:501;-1:-1:-1;;;;8237:501:0:o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2299:180::-;2358:6;2411:2;2399:9;2390:7;2386:23;2382:32;2379:52;;;2427:1;2424;2417:12;2379:52;-1:-1:-1;2450:23:1;;2299:180;-1:-1:-1;2299:180:1:o;2692:160::-;2757:20;;2813:13;;2806:21;2796:32;;2786:60;;2842:1;2839;2832:12;2786:60;2692:160;;;:::o;2857:689::-;2949:6;2957;2965;3018:2;3006:9;2997:7;2993:23;2989:32;2986:52;;;3034:1;3031;3024:12;2986:52;3074:9;3061:23;3103:18;3144:2;3136:6;3133:14;3130:34;;;3160:1;3157;3150:12;3130:34;3198:6;3187:9;3183:22;3173:32;;3243:7;3236:4;3232:2;3228:13;3224:27;3214:55;;3265:1;3262;3255:12;3214:55;3305:2;3292:16;3331:2;3323:6;3320:14;3317:34;;;3347:1;3344;3337:12;3317:34;3402:7;3395:4;3385:6;3382:1;3378:14;3374:2;3370:23;3366:34;3363:47;3360:67;;;3423:1;3420;3413:12;3360:67;3454:4;3446:13;;;;-1:-1:-1;3478:6:1;-1:-1:-1;3503:37:1;;3519:20;;;-1:-1:-1;3503:37:1;:::i;:::-;3493:47;;2857:689;;;;;:::o;3775:388::-;3843:6;3851;3904:2;3892:9;3883:7;3879:23;3875:32;3872:52;;;3920:1;3917;3910:12;3872:52;3959:9;3946:23;3978:31;4003:5;3978:31;:::i;:::-;4028:5;-1:-1:-1;4085:2:1;4070:18;;4057:32;4098:33;4057:32;4098:33;:::i;:::-;4150:7;4140:17;;;3775:388;;;;;:::o;4168:315::-;4233:6;4241;4294:2;4282:9;4273:7;4269:23;4265:32;4262:52;;;4310:1;4307;4300:12;4262:52;4349:9;4336:23;4368:31;4393:5;4368:31;:::i;:::-;4418:5;-1:-1:-1;4442:35:1;4473:2;4458:18;;4442:35;:::i;:::-;4432:45;;4168:315;;;;;:::o;4488:316::-;4562:6;4570;4578;4631:2;4619:9;4610:7;4606:23;4602:32;4599:52;;;4647:1;4644;4637:12;4599:52;4683:9;4670:23;4660:33;;4740:2;4729:9;4725:18;4712:32;4702:42;;4763:35;4794:2;4783:9;4779:18;4763:35;:::i;5035:127::-;5096:10;5091:3;5087:20;5084:1;5077:31;5127:4;5124:1;5117:15;5151:4;5148:1;5141:15;5167:422;5256:1;5299:5;5256:1;5313:270;5334:7;5324:8;5321:21;5313:270;;;5393:4;5389:1;5385:6;5381:17;5375:4;5372:27;5369:53;;;5402:18;;:::i;:::-;5452:7;5442:8;5438:22;5435:55;;;5472:16;;;;5435:55;5551:22;;;;5511:15;;;;5313:270;;;5317:3;5167:422;;;;;:::o;5594:806::-;5643:5;5673:8;5663:80;;-1:-1:-1;5714:1:1;5728:5;;5663:80;5762:4;5752:76;;-1:-1:-1;5799:1:1;5813:5;;5752:76;5844:4;5862:1;5857:59;;;;5930:1;5925:130;;;;5837:218;;5857:59;5887:1;5878:10;;5901:5;;;5925:130;5962:3;5952:8;5949:17;5946:43;;;5969:18;;:::i;:::-;-1:-1:-1;;6025:1:1;6011:16;;6040:5;;5837:218;;6139:2;6129:8;6126:16;6120:3;6114:4;6111:13;6107:36;6101:2;6091:8;6088:16;6083:2;6077:4;6074:12;6070:35;6067:77;6064:159;;;-1:-1:-1;6176:19:1;;;6208:5;;6064:159;6255:34;6280:8;6274:4;6255:34;:::i;:::-;6325:6;6321:1;6317:6;6313:19;6304:7;6301:32;6298:58;;;6336:18;;:::i;:::-;6374:20;;5594:806;-1:-1:-1;;;5594:806:1:o;6405:140::-;6463:5;6492:47;6533:4;6523:8;6519:19;6513:4;6492:47;:::i;6550:168::-;6590:7;6656:1;6652;6648:6;6644:14;6641:1;6638:21;6633:1;6626:9;6619:17;6615:45;6612:71;;;6663:18;;:::i;:::-;-1:-1:-1;6703:9:1;;6550:168::o;6723:349::-;6925:2;6907:21;;;6964:2;6944:18;;;6937:30;7003:27;6998:2;6983:18;;6976:55;7063:2;7048:18;;6723:349::o;7771:217::-;7811:1;7837;7827:132;;7881:10;7876:3;7872:20;7869:1;7862:31;7916:4;7913:1;7906:15;7944:4;7941:1;7934:15;7827:132;-1:-1:-1;7973:9:1;;7771:217::o;8420:127::-;8481:10;8476:3;8472:20;8469:1;8462:31;8512:4;8509:1;8502:15;8536:4;8533:1;8526:15;8552:135;8591:3;8612:17;;;8609:43;;8632:18;;:::i;:::-;-1:-1:-1;8679:1:1;8668:13;;8552:135::o;9467:125::-;9532:9;;;9553:10;;;9550:36;;;9566:18;;:::i;11403:128::-;11470:9;;;11491:11;;;11488:37;;;11505:18;;:::i;12371:251::-;12441:6;12494:2;12482:9;12473:7;12469:23;12465:32;12462:52;;;12510:1;12507;12500:12;12462:52;12542:9;12536:16;12561:31;12586:5;12561:31;:::i;12627:980::-;12889:4;12937:3;12926:9;12922:19;12968:6;12957:9;12950:25;12994:2;13032:6;13027:2;13016:9;13012:18;13005:34;13075:3;13070:2;13059:9;13055:18;13048:31;13099:6;13134;13128:13;13165:6;13157;13150:22;13203:3;13192:9;13188:19;13181:26;;13242:2;13234:6;13230:15;13216:29;;13263:1;13273:195;13287:6;13284:1;13281:13;13273:195;;;13352:13;;-1:-1:-1;;;;;13348:39:1;13336:52;;13443:15;;;;13408:12;;;;13384:1;13302:9;13273:195;;;-1:-1:-1;;;;;;;13524:32:1;;;;13519:2;13504:18;;13497:60;-1:-1:-1;;;13588:3:1;13573:19;13566:35;13485:3;12627:980;-1:-1:-1;;;12627:980:1:o

Swarm Source

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