ETH Price: $3,260.02 (-0.26%)
Gas: 1 Gwei

Token

Joy Boy (ジョイボーイ)
 

Overview

Max Total Supply

100,000,000,000 ジョイボーイ

Holders

112

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000302164492 ジョイボーイ

Value
$0.00
0xf95e860146bd0c258c80164e189974c42f1edc90
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:
ERC20JOYBOY

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-06
*/

// SPDX-License-Identifier: UNLICENSED
/**
 * 
 * Website : https://joyboytoken.com
 * Portal : https://t.me/JoyBoyErcPortal
 * Twitter : https://twitter.com/JoyBoyErcToken
 * Medium : https://medium.com/@JoyBoyErc
 * 
 **/

pragma solidity 0.8.21;

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 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 Auth {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() external onlyOwner {
        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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract ERC20JOYBOY is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "Joy Boy";
    string public constant symbol = unicode'ジョイボーイ';
    uint8 public constant decimals = 18;

    uint256 public constant totalSupply = 100 * 10**9 * 10**decimals;

    uint256 public _maxWalletToken = totalSupply / 50;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public marketingFee = 2;
    uint256 public operationsFee = 1;
    uint256 public totalFee = marketingFee + operationsFee;
    uint256 public constant feeDenominator = 100;
    
    uint256 buyMultiplier = 800;
    uint256 sellMultiplier = 800;
    uint256 transferMultiplier = 3000;

    address public marketingFeeReceiver;
    address public operationsFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public tradingOpen = false;

    bool public swapEnabled = false;
    uint256 swapThreshold = totalSupply / 200;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0x5268Cd26c117f0186b1A30027c79Fa2ffB40BDF0;
        operationsFeeReceiver = 0x16720008Af0e1b1Be314bDd9522FD29Edd7eC625;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[marketingFeeReceiver] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;
        isWalletLimitExempt[marketingFeeReceiver] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWallet(uint256 maxWallet) external onlyOwner {
        require(maxWallet >= 2,"Cannot set max wallet less than 2%");
        _maxWalletToken = (totalSupply * maxWallet ) / 100;
    }

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

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

        if (!isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }

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

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

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

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);

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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

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

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

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

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        uint256 amountToClear = ( amountETH * amountPercentage ) / 100;
        payable(msg.sender).transfer(amountToClear);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }

        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function takeitlive() external onlyOwner {
        tradingOpen = true;
        swapEnabled = true;
    }

    function removeLimits() external onlyOwner {
        swapThreshold = totalSupply / 500;
        swapEnabled = true;
        _maxWalletToken = totalSupply;
        operationsFee = 1;
        marketingFee = 2;
        totalFee = 3;
        buyMultiplier = 100;
        sellMultiplier = 100;
        transferMultiplier = 0;
    }

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

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

        uint256 amountETH = address(this).balance;

        uint256 amountETHMarketing = (amountETH * marketingFee) / totalFee;
        uint256 amountETHOperations = (amountETH * operationsFee) / totalFee;

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(operationsFeeReceiver).call{value: amountETHOperations}("");
    }

    function update_fees() view internal {
        require(totalFee.mul(buyMultiplier).div(100) <= 5, "Buy tax cannot be more than 10%");
        require(totalFee.mul(sellMultiplier).div(100) <= 5, "Sell tax cannot be more than 10%");
        require(totalFee.mul(transferMultiplier).div(100) <= 5, "Transfer tax cannot be more than 10%");
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
        update_fees();
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }
}

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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletToken","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":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFeeReceiver","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":"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":"maxWallet","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeitlive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","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"}]

60c06040526032620000146012600a620004c6565b620000259064174876e800620004dd565b620000319190620004f7565b6001556002600655600160075560075460065462000050919062000517565b6008556103206009819055600a908155610bb8600b55600e805461ffff60a01b1916905560c8906200008590601290620004c6565b620000969064174876e800620004dd565b620000a29190620004f7565b600f55348015620000b1575f80fd5b505f8054336001600160a01b031991821617909155600e8054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156200011f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014591906200052d565b6001600160a01b03908116608052600e546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000194573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ba91906200052d565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af115801562000209573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022f91906200052d565b6001600160a01b0390811660a052305f818152600360209081526040808320600e548616845282528083205f199055600c80546001600160a01b0319908116735268cd26c117f0186b1a30027c79fa2ffb40bdf0178255600d80549091167316720008af0e1b1be314bdd9522fd29edd7ec6251790553380855260048452828520805460ff19908116600190811790925583548916875284872080548216831790559186526005909452828520805482168517905594845281842080548616841790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba8054861684179055549094168252929020805490911690911790556200033c6012600a620004c6565b6200034d9064174876e800620004dd565b335f81815260026020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200038f6012600a620004c6565b620003a09064174876e800620004dd565b60405190815260200160405180910390a362000555565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200040b57815f1904821115620003ef57620003ef620003b7565b80851615620003fd57918102915b93841c9390800290620003d0565b509250929050565b5f826200042357506001620004c0565b816200043157505f620004c0565b81600181146200044a5760028114620004555762000475565b6001915050620004c0565b60ff841115620004695762000469620003b7565b50506001821b620004c0565b5060208310610133831016604e8410600b84101617156200049a575081810a620004c0565b620004a68383620003cb565b805f1904821115620004bc57620004bc620003b7565b0290505b92915050565b5f620004d660ff84168362000413565b9392505050565b8082028115828204841417620004c057620004c0620003b7565b5f826200051257634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620004c057620004c0620003b7565b5f602082840312156200053e575f80fd5b81516001600160a01b0381168114620004d6575f80fd5b60805160a051611a83620005935f395f818161056a01528181610d3c015281816111830152818161140f015261144301525f61124a0152611a835ff3fe6080604052600436106101e9575f3560e01c80636ce46bc31161010857806395d89b411161009d578063c867d60b1161006d578063c867d60b146105ab578063dd62ed3e146105d9578063e96fada21461061d578063f887ea401461063c578063ffb54a991461065b575f80fd5b806395d89b4114610508578063963c44bf14610545578063a8aa1b3114610559578063a9059cbb1461058c575f80fd5b8063751039fc116100d8578063751039fc146104a457806377b54bad146104b857806378109e54146104d7578063893d20e8146104ec575f80fd5b80636ce46bc3146104265780636ddd17131461044557806370a0823114610465578063715018a614610490575f80fd5b806323b872dd1161017e5780633f4218e01161014e5780633f4218e0146103a5578063571ac8b0146103d35780635d0044ca146103f25780636b67c4df14610411575f80fd5b806323b872dd1461031f5780632b112e491461033e5780632f54bf6e14610352578063313ce5671461037f575f80fd5b8063180b0d7e116101b9578063180b0d7e146102c157806318160ddd146102d55780631da1db5e146102e95780631df4ccfc1461030a575f80fd5b806303382cbb146101f457806306fdde0314610230578063090896be1461026f578063095ea7b314610292575f80fd5b366101f057005b5f80fd5b3480156101ff575f80fd5b50600d54610213906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023b575f80fd5b50610262604051806040016040528060078152602001664a6f7920426f7960c81b81525081565b60405161022791906116c5565b34801561027a575f80fd5b5061028460075481565b604051908152602001610227565b34801561029d575f80fd5b506102b16102ac36600461172b565b61067b565b6040519015158152602001610227565b3480156102cc575f80fd5b50610284606481565b3480156102e0575f80fd5b506102846106e7565b3480156102f4575f80fd5b50610308610303366004611753565b610705565b005b348015610315575f80fd5b5061028460085481565b34801561032a575f80fd5b506102b161033936600461176a565b610782565b348015610349575f80fd5b50610284610840565b34801561035d575f80fd5b506102b161036c3660046117a3565b5f546001600160a01b0391821691161490565b34801561038a575f80fd5b50610393601281565b60405160ff9091168152602001610227565b3480156103b0575f80fd5b506102b16103bf3660046117a3565b60046020525f908152604090205460ff1681565b3480156103de575f80fd5b506102b16103ed3660046117a3565b6108c7565b3480156103fd575f80fd5b5061030861040c366004611753565b6108d3565b34801561041c575f80fd5b5061028460065481565b348015610431575f80fd5b506103086104403660046117bc565b610990565b348015610450575f80fd5b50600e546102b190600160a81b900460ff1681565b348015610470575f80fd5b5061028461047f3660046117a3565b60026020525f908152604090205481565b34801561049b575f80fd5b506103086109d5565b3480156104af575f80fd5b50610308610a0f565b3480156104c3575f80fd5b506102b16104d236600461172b565b610ab3565b3480156104e2575f80fd5b5061028460015481565b3480156104f7575f80fd5b505f546001600160a01b0316610213565b348015610513575f80fd5b506102626040518060400160405280601281526020017138e0ae38e0e9f8e0a938e0e738e0ef38e0a960721b81525081565b348015610550575f80fd5b50610308610bbb565b348015610564575f80fd5b506102137f000000000000000000000000000000000000000000000000000000000000000081565b348015610597575f80fd5b506102b16105a636600461172b565b610bfb565b3480156105b6575f80fd5b506102b16105c53660046117a3565b60056020525f908152604090205460ff1681565b3480156105e4575f80fd5b506102846105f33660046117e5565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610628575f80fd5b50600c54610213906001600160a01b031681565b348015610647575f80fd5b50600e54610213906001600160a01b031681565b348015610666575f80fd5b50600e546102b190600160a01b900460ff1681565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106d59086815260200190565b60405180910390a35060015b92915050565b6106f36012600a61190a565b6107029064174876e800611918565b81565b5f546001600160a01b031633146107375760405162461bcd60e51b815260040161072e9061192f565b60405180910390fd5b475f60646107458484611918565b61074f919061194f565b604051909150339082156108fc029083905f818181858888f1935050505015801561077c573d5f803e3d5ffd5b50505050565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f191461082b576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600382528381203382529091529190912054610807918490610c07565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b610836848484610c3f565b90505b9392505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5490919061089f6012600a61190a565b6108ae9064174876e800611918565b6108b8919061196e565b6108c2919061196e565b905090565b5f6106e1825f1961067b565b5f546001600160a01b031633146108fc5760405162461bcd60e51b815260040161072e9061192f565b60028110156109585760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261322560f01b606482015260840161072e565b6064816109676012600a61190a565b6109769064174876e800611918565b6109809190611918565b61098a919061194f565b60015550565b5f546001600160a01b031633146109b95760405162461bcd60e51b815260040161072e9061192f565b600a8290556009839055600b8190556109d0610f3c565b505050565b5f546001600160a01b031633146109fe5760405162461bcd60e51b815260040161072e9061192f565b5f80546001600160a01b0319169055565b5f546001600160a01b03163314610a385760405162461bcd60e51b815260040161072e9061192f565b6101f4610a476012600a61190a565b610a569064174876e800611918565b610a60919061194f565b600f55600e805460ff60a81b1916600160a81b179055610a826012600a61190a565b610a919064174876e800611918565b60019081556007556002600655600360085560646009819055600a555f600b55565b5f80546001600160a01b03163314610add5760405162461bcd60e51b815260040161072e9061192f565b815f03610b4d576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4a9190611981565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610b97573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108399190611998565b5f546001600160a01b03163314610be45760405162461bcd60e51b815260040161072e9061192f565b600e805461ffff60a01b191661010160a01b179055565b5f610839338484610c3f565b5f8184841115610c2a5760405162461bcd60e51b815260040161072e91906116c5565b505f610c36848661196e565b95945050505050565b6010545f9060ff1615610c5e57610c57848484611094565b9050610839565b6001600160a01b0384165f9081526004602052604090205460ff16158015610c9e57506001600160a01b0383165f9081526004602052604090205460ff16155b15610cf357600e54600160a01b900460ff16610cf35760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161072e565b6001600160a01b0384165f9081526005602052604090205460ff16158015610d3357506001600160a01b0383165f9081526005602052604090205460ff16155b8015610d7157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b15610dea576001546001600160a01b0384165f90815260026020526040902054610d9c9084906119b7565b1115610dea5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d697420726561636865640000000000000000604482015260640161072e565b610df2611177565b15610dff57610dff6111e8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260029091529190912054610e50918490610c07565b6001600160a01b0385165f90815260026020908152604080832093909355600490529081205460ff1680610e9b57506001600160a01b0384165f9081526004602052604090205460ff165b610eaf57610eaa8584866113e8565b610eb1565b825b6001600160a01b0385165f90815260026020526040902054909150610ed6908261153b565b6001600160a01b038086165f8181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f299085815260200190565b60405180910390a3506001949350505050565b6005610f606064610f5a60095460085461159990919063ffffffff16565b90611617565b1115610fae5760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e2031302500604482015260640161072e565b6005610fcc6064610f5a600a5460085461159990919063ffffffff16565b111561101a5760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e20313025604482015260640161072e565b60056110386064610f5a600b5460085461159990919063ffffffff16565b11156110925760405162461bcd60e51b8152602060048201526024808201527f5472616e73666572207461782063616e6e6f74206265206d6f7265207468616e6044820152632031302560e01b606482015260840161072e565b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526002909152918220546110e4918490610c07565b6001600160a01b038086165f908152600260205260408082209390935590851681522054611112908361153b565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111659086815260200190565b60405180910390a35060019392505050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906111b4575060105460ff16155b80156111c95750600e54600160a81b900460ff165b80156108c2575050600f54305f90815260026020526040902054101590565b6010805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611228576112286119ca565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061127c5761127c6119ca565b6001600160a01b039283166020918202929092010152600e54600f5460405163791ac94760e01b8152919092169163791ac947916112c591905f908690309042906004016119de565b5f604051808303815f87803b1580156112dc575f80fd5b505af11580156112ee573d5f803e3d5ffd5b50506008546006544793505f92506113069084611918565b611310919061194f565b90505f600854600754846113249190611918565b61132e919061194f565b600c546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f811461137d576040519150601f19603f3d011682016040523d82523d5f602084013e611382565b606091505b5050600d546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146113cf576040519150601f19603f3d011682016040523d82523d5f602084013e6113d4565b606091505b50506010805460ff19169055505050505050565b5f8215806113f65750600854155b15611402575081610839565b600b546001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116908416036114415750600a5461147f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03160361147f57506009545b5f6114ad61148e606480611918565b610f5a846114a76008548a61159990919063ffffffff16565b90611599565b9050801561152757305f908152600260205260409020546114ce908261153b565b305f81815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061151e9085815260200190565b60405180910390a35b6115318582611658565b9695505050505050565b5f8061154783856119b7565b9050838110156108395760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161072e565b5f825f036115a857505f6106e1565b5f6115b38385611918565b9050826115c0858361194f565b146108395760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161072e565b5f61083983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611699565b5f61083983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c07565b5f81836116b95760405162461bcd60e51b815260040161072e91906116c5565b505f610c36848661194f565b5f6020808352835180828501525f5b818110156116f0578581018301518582016040015282016116d4565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611726575f80fd5b919050565b5f806040838503121561173c575f80fd5b61174583611710565b946020939093013593505050565b5f60208284031215611763575f80fd5b5035919050565b5f805f6060848603121561177c575f80fd5b61178584611710565b925061179360208501611710565b9150604084013590509250925092565b5f602082840312156117b3575f80fd5b61083982611710565b5f805f606084860312156117ce575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156117f6575f80fd5b6117ff83611710565b915061180d60208401611710565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561186457815f190482111561184a5761184a611816565b8085161561185757918102915b93841c939080029061182f565b509250929050565b5f8261187a575060016106e1565b8161188657505f6106e1565b816001811461189c57600281146118a6576118c2565b60019150506106e1565b60ff8411156118b7576118b7611816565b50506001821b6106e1565b5060208310610133831016604e8410600b84101617156118e5575081810a6106e1565b6118ef838361182a565b805f190482111561190257611902611816565b029392505050565b5f61083960ff84168361186c565b80820281158282048414176106e1576106e1611816565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f8261196957634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156106e1576106e1611816565b5f60208284031215611991575f80fd5b5051919050565b5f602082840312156119a8575f80fd5b81518015158114610839575f80fd5b808201808211156106e1576106e1611816565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a2c5784516001600160a01b031683529383019391830191600101611a07565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c8fc3b5f733230c1ba68b0dd49d7f77f9413cb459ea1d955d6b2562d00a1fbbc64736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101e9575f3560e01c80636ce46bc31161010857806395d89b411161009d578063c867d60b1161006d578063c867d60b146105ab578063dd62ed3e146105d9578063e96fada21461061d578063f887ea401461063c578063ffb54a991461065b575f80fd5b806395d89b4114610508578063963c44bf14610545578063a8aa1b3114610559578063a9059cbb1461058c575f80fd5b8063751039fc116100d8578063751039fc146104a457806377b54bad146104b857806378109e54146104d7578063893d20e8146104ec575f80fd5b80636ce46bc3146104265780636ddd17131461044557806370a0823114610465578063715018a614610490575f80fd5b806323b872dd1161017e5780633f4218e01161014e5780633f4218e0146103a5578063571ac8b0146103d35780635d0044ca146103f25780636b67c4df14610411575f80fd5b806323b872dd1461031f5780632b112e491461033e5780632f54bf6e14610352578063313ce5671461037f575f80fd5b8063180b0d7e116101b9578063180b0d7e146102c157806318160ddd146102d55780631da1db5e146102e95780631df4ccfc1461030a575f80fd5b806303382cbb146101f457806306fdde0314610230578063090896be1461026f578063095ea7b314610292575f80fd5b366101f057005b5f80fd5b3480156101ff575f80fd5b50600d54610213906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023b575f80fd5b50610262604051806040016040528060078152602001664a6f7920426f7960c81b81525081565b60405161022791906116c5565b34801561027a575f80fd5b5061028460075481565b604051908152602001610227565b34801561029d575f80fd5b506102b16102ac36600461172b565b61067b565b6040519015158152602001610227565b3480156102cc575f80fd5b50610284606481565b3480156102e0575f80fd5b506102846106e7565b3480156102f4575f80fd5b50610308610303366004611753565b610705565b005b348015610315575f80fd5b5061028460085481565b34801561032a575f80fd5b506102b161033936600461176a565b610782565b348015610349575f80fd5b50610284610840565b34801561035d575f80fd5b506102b161036c3660046117a3565b5f546001600160a01b0391821691161490565b34801561038a575f80fd5b50610393601281565b60405160ff9091168152602001610227565b3480156103b0575f80fd5b506102b16103bf3660046117a3565b60046020525f908152604090205460ff1681565b3480156103de575f80fd5b506102b16103ed3660046117a3565b6108c7565b3480156103fd575f80fd5b5061030861040c366004611753565b6108d3565b34801561041c575f80fd5b5061028460065481565b348015610431575f80fd5b506103086104403660046117bc565b610990565b348015610450575f80fd5b50600e546102b190600160a81b900460ff1681565b348015610470575f80fd5b5061028461047f3660046117a3565b60026020525f908152604090205481565b34801561049b575f80fd5b506103086109d5565b3480156104af575f80fd5b50610308610a0f565b3480156104c3575f80fd5b506102b16104d236600461172b565b610ab3565b3480156104e2575f80fd5b5061028460015481565b3480156104f7575f80fd5b505f546001600160a01b0316610213565b348015610513575f80fd5b506102626040518060400160405280601281526020017138e0ae38e0e9f8e0a938e0e738e0ef38e0a960721b81525081565b348015610550575f80fd5b50610308610bbb565b348015610564575f80fd5b506102137f0000000000000000000000009a152390998b49962c00830237c2f22a5b612ea681565b348015610597575f80fd5b506102b16105a636600461172b565b610bfb565b3480156105b6575f80fd5b506102b16105c53660046117a3565b60056020525f908152604090205460ff1681565b3480156105e4575f80fd5b506102846105f33660046117e5565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610628575f80fd5b50600c54610213906001600160a01b031681565b348015610647575f80fd5b50600e54610213906001600160a01b031681565b348015610666575f80fd5b50600e546102b190600160a01b900460ff1681565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106d59086815260200190565b60405180910390a35060015b92915050565b6106f36012600a61190a565b6107029064174876e800611918565b81565b5f546001600160a01b031633146107375760405162461bcd60e51b815260040161072e9061192f565b60405180910390fd5b475f60646107458484611918565b61074f919061194f565b604051909150339082156108fc029083905f818181858888f1935050505015801561077c573d5f803e3d5ffd5b50505050565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f191461082b576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600382528381203382529091529190912054610807918490610c07565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b610836848484610c3f565b90505b9392505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5490919061089f6012600a61190a565b6108ae9064174876e800611918565b6108b8919061196e565b6108c2919061196e565b905090565b5f6106e1825f1961067b565b5f546001600160a01b031633146108fc5760405162461bcd60e51b815260040161072e9061192f565b60028110156109585760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261322560f01b606482015260840161072e565b6064816109676012600a61190a565b6109769064174876e800611918565b6109809190611918565b61098a919061194f565b60015550565b5f546001600160a01b031633146109b95760405162461bcd60e51b815260040161072e9061192f565b600a8290556009839055600b8190556109d0610f3c565b505050565b5f546001600160a01b031633146109fe5760405162461bcd60e51b815260040161072e9061192f565b5f80546001600160a01b0319169055565b5f546001600160a01b03163314610a385760405162461bcd60e51b815260040161072e9061192f565b6101f4610a476012600a61190a565b610a569064174876e800611918565b610a60919061194f565b600f55600e805460ff60a81b1916600160a81b179055610a826012600a61190a565b610a919064174876e800611918565b60019081556007556002600655600360085560646009819055600a555f600b55565b5f80546001600160a01b03163314610add5760405162461bcd60e51b815260040161072e9061192f565b815f03610b4d576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4a9190611981565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610b97573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108399190611998565b5f546001600160a01b03163314610be45760405162461bcd60e51b815260040161072e9061192f565b600e805461ffff60a01b191661010160a01b179055565b5f610839338484610c3f565b5f8184841115610c2a5760405162461bcd60e51b815260040161072e91906116c5565b505f610c36848661196e565b95945050505050565b6010545f9060ff1615610c5e57610c57848484611094565b9050610839565b6001600160a01b0384165f9081526004602052604090205460ff16158015610c9e57506001600160a01b0383165f9081526004602052604090205460ff16155b15610cf357600e54600160a01b900460ff16610cf35760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161072e565b6001600160a01b0384165f9081526005602052604090205460ff16158015610d3357506001600160a01b0383165f9081526005602052604090205460ff16155b8015610d7157507f0000000000000000000000009a152390998b49962c00830237c2f22a5b612ea66001600160a01b0316836001600160a01b031614155b15610dea576001546001600160a01b0384165f90815260026020526040902054610d9c9084906119b7565b1115610dea5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d697420726561636865640000000000000000604482015260640161072e565b610df2611177565b15610dff57610dff6111e8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260029091529190912054610e50918490610c07565b6001600160a01b0385165f90815260026020908152604080832093909355600490529081205460ff1680610e9b57506001600160a01b0384165f9081526004602052604090205460ff165b610eaf57610eaa8584866113e8565b610eb1565b825b6001600160a01b0385165f90815260026020526040902054909150610ed6908261153b565b6001600160a01b038086165f8181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f299085815260200190565b60405180910390a3506001949350505050565b6005610f606064610f5a60095460085461159990919063ffffffff16565b90611617565b1115610fae5760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e2031302500604482015260640161072e565b6005610fcc6064610f5a600a5460085461159990919063ffffffff16565b111561101a5760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e20313025604482015260640161072e565b60056110386064610f5a600b5460085461159990919063ffffffff16565b11156110925760405162461bcd60e51b8152602060048201526024808201527f5472616e73666572207461782063616e6e6f74206265206d6f7265207468616e6044820152632031302560e01b606482015260840161072e565b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526002909152918220546110e4918490610c07565b6001600160a01b038086165f908152600260205260408082209390935590851681522054611112908361153b565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111659086815260200190565b60405180910390a35060019392505050565b5f336001600160a01b037f0000000000000000000000009a152390998b49962c00830237c2f22a5b612ea616148015906111b4575060105460ff16155b80156111c95750600e54600160a81b900460ff165b80156108c2575050600f54305f90815260026020526040902054101590565b6010805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611228576112286119ca565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061127c5761127c6119ca565b6001600160a01b039283166020918202929092010152600e54600f5460405163791ac94760e01b8152919092169163791ac947916112c591905f908690309042906004016119de565b5f604051808303815f87803b1580156112dc575f80fd5b505af11580156112ee573d5f803e3d5ffd5b50506008546006544793505f92506113069084611918565b611310919061194f565b90505f600854600754846113249190611918565b61132e919061194f565b600c546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f811461137d576040519150601f19603f3d011682016040523d82523d5f602084013e611382565b606091505b5050600d546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146113cf576040519150601f19603f3d011682016040523d82523d5f602084013e6113d4565b606091505b50506010805460ff19169055505050505050565b5f8215806113f65750600854155b15611402575081610839565b600b546001600160a01b037f0000000000000000000000009a152390998b49962c00830237c2f22a5b612ea68116908416036114415750600a5461147f565b7f0000000000000000000000009a152390998b49962c00830237c2f22a5b612ea66001600160a01b0316856001600160a01b03160361147f57506009545b5f6114ad61148e606480611918565b610f5a846114a76008548a61159990919063ffffffff16565b90611599565b9050801561152757305f908152600260205260409020546114ce908261153b565b305f81815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061151e9085815260200190565b60405180910390a35b6115318582611658565b9695505050505050565b5f8061154783856119b7565b9050838110156108395760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161072e565b5f825f036115a857505f6106e1565b5f6115b38385611918565b9050826115c0858361194f565b146108395760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161072e565b5f61083983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611699565b5f61083983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c07565b5f81836116b95760405162461bcd60e51b815260040161072e91906116c5565b505f610c36848661194f565b5f6020808352835180828501525f5b818110156116f0578581018301518582016040015282016116d4565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611726575f80fd5b919050565b5f806040838503121561173c575f80fd5b61174583611710565b946020939093013593505050565b5f60208284031215611763575f80fd5b5035919050565b5f805f6060848603121561177c575f80fd5b61178584611710565b925061179360208501611710565b9150604084013590509250925092565b5f602082840312156117b3575f80fd5b61083982611710565b5f805f606084860312156117ce575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156117f6575f80fd5b6117ff83611710565b915061180d60208401611710565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561186457815f190482111561184a5761184a611816565b8085161561185757918102915b93841c939080029061182f565b509250929050565b5f8261187a575060016106e1565b8161188657505f6106e1565b816001811461189c57600281146118a6576118c2565b60019150506106e1565b60ff8411156118b7576118b7611816565b50506001821b6106e1565b5060208310610133831016604e8410600b84101617156118e5575081810a6106e1565b6118ef838361182a565b805f190482111561190257611902611816565b029392505050565b5f61083960ff84168361186c565b80820281158282048414176106e1576106e1611816565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f8261196957634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156106e1576106e1611816565b5f60208284031215611991575f80fd5b5051919050565b5f602082840312156119a8575f80fd5b81518015158114610839575f80fd5b808201808211156106e1576106e1611816565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a2c5784516001600160a01b031683529383019391830191600101611a07565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c8fc3b5f733230c1ba68b0dd49d7f77f9413cb459ea1d955d6b2562d00a1fbbc64736f6c63430008150033

Deployed Bytecode Sourcemap

2974:8435:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4098:36;;;;;;;;;;-1:-1:-1;4098:36:0;;;;-1:-1:-1;;;;;4098:36:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;4098:36:0;;;;;;;;3229:39;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3229:39:0;;;;;;;;;;;;:::i;3788:32::-;;;;;;;;;;;;;;;;;;;921:25:1;;;909:2;894:18;3788:32:0;775:177:1;5555:216:0;;;;;;;;;;-1:-1:-1;5555:216:0;;;;;:::i;:::-;;:::i;:::-;;;1559:14:1;;1552:22;1534:41;;1522:2;1507:18;5555:216:0;1394:187:1;3888:44:0;;;;;;;;;;;;3929:3;3888:44;;3385:64;;;;;;;;;;;;;:::i;8895:259::-;;;;;;;;;;-1:-1:-1;8895:259:0;;;;;:::i;:::-;;:::i;:::-;;3827:54;;;;;;;;;;;;;;;;6073:370;;;;;;;;;;-1:-1:-1;6073:370:0;;;;;:::i;:::-;;:::i;11269:137::-;;;;;;;;;;;;;:::i;2296:103::-;;;;;;;;;;-1:-1:-1;2296:103:0;;;;;:::i;:::-;2351:4;2386:5;-1:-1:-1;;;;;2375:16:0;;;2386:5;;2375:16;;2296:103;3341:35;;;;;;;;;;;;3374:2;3341:35;;;;;2467:4:1;2455:17;;;2437:36;;2425:2;2410:18;3341:35:0;2295:184:1;3638:44:0;;;;;;;;;;-1:-1:-1;3638:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5779:122;;;;;;;;;;-1:-1:-1;5779:122:0;;;;;:::i;:::-;;:::i;6451:200::-;;;;;;;;;;-1:-1:-1;6451:200:0;;;;;:::i;:::-;;:::i;3750:31::-;;;;;;;;;;;;;;;;11039:222;;;;;;;;;;-1:-1:-1;11039:222:0;;;;;:::i;:::-;;:::i;4252:31::-;;;;;;;;;;-1:-1:-1;4252:31:0;;;;-1:-1:-1;;;4252:31:0;;;;;;3516:45;;;;;;;;;;-1:-1:-1;3516:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;2407:85;;;;;;;;;;;;;:::i;9571:336::-;;;;;;;;;;;;;:::i;9162:286::-;;;;;;;;;;-1:-1:-1;9162:286:0;;;;;:::i;:::-;;:::i;3458:49::-;;;;;;;;;;;;;;;;5330:78;;;;;;;;;;-1:-1:-1;5382:7:0;5400:5;-1:-1:-1;;;;;5400:5:0;5330:78;;3275:59;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3275:59:0;;;;;9456:107;;;;;;;;;;;;;:::i;4174:29::-;;;;;;;;;;;;;;;5909:156;;;;;;;;;;-1:-1:-1;5909:156:0;;;;;:::i;:::-;;:::i;3689:52::-;;;;;;;;;;-1:-1:-1;3689:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5414:133;;;;;;;;;;-1:-1:-1;5414:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5516:19:0;;;5498:7;5516:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5414:133;4056:35;;;;;;;;;;-1:-1:-1;4056:35:0;;;;-1:-1:-1;;;;;4056:35:0;;;4143:24;;;;;;;;;;-1:-1:-1;4143:24:0;;;;-1:-1:-1;;;;;4143:24:0;;;4212:31;;;;;;;;;;-1:-1:-1;4212:31:0;;;;-1:-1:-1;;;4212:31:0;;;;;;5555:216;5659:10;5630:4;5647:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5647:32:0;;;;;;;;;;:41;;;5704:37;5630:4;;5647:32;;5704:37;;;;5682:6;921:25:1;;909:2;894:18;;775:177;5704:37:0;;;;;;;;-1:-1:-1;5759:4:0;5555:216;;;;;:::o;3385:64::-;3437:12;3374:2;3437;:12;:::i;:::-;3423:26;;:11;:26;:::i;:::-;3385:64;:::o;8895:259::-;2351:4;2386:5;-1:-1:-1;;;;;2386:5:0;2255:10;2375:16;2239:38;;;;-1:-1:-1;;;2239:38:0;;;;;;;:::i;:::-;;;;;;;;;8998:21:::1;8978:17;9089:3;9056:28;9068:16:::0;8998:21;9056:28:::1;:::i;:::-;9054:38;;;;:::i;:::-;9103:43;::::0;9030:62;;-1:-1:-1;9111:10:0::1;::::0;9103:43;::::1;;;::::0;9030:62;;9103:43:::1;::::0;;;9030:62;9111:10;9103:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8967:187;;8895:259:::0;:::o;6073:370::-;-1:-1:-1;;;;;6193:19:0;;6173:4;6193:19;;;:11;:19;;;;;;;;6213:10;6193:31;;;;;;;;-1:-1:-1;;6193:52:0;6190:186;;6295:69;;;;;;;;;;;-1:-1:-1;;;6295:69:0;;;;;;;;-1:-1:-1;;;;;6295:19:0;;-1:-1:-1;6295:19:0;;;:11;:19;;;;;6315:10;6295:31;;;;;;;;;;:69;;6331:6;;6295:35;:69::i;:::-;-1:-1:-1;;;;;6261:19:0;;;;;;:11;:19;;;;;;;;6281:10;6261:31;;;;;;;:103;6190:186;6395:40;6409:6;6417:9;6428:6;6395:13;:40::i;:::-;6388:47;;6073:370;;;;;;:::o;11269:137::-;11382:9;:15;;;;3105:42;11322:7;11364:15;;;;;11322:7;;11382:15;3437:12;3374:2;3437;:12;:::i;:::-;3423:26;;:11;:26;:::i;:::-;11350:29;;;;:::i;:::-;:47;;;;:::i;:::-;11342:56;;11269:137;:::o;5779:122::-;5834:4;5858:35;5866:7;-1:-1:-1;;5858:7:0;:35::i;6451:200::-;2351:4;2386:5;-1:-1:-1;;;;;2386:5:0;2255:10;2375:16;2239:38;;;;-1:-1:-1;;;2239:38:0;;;;;;;:::i;:::-;6543:1:::1;6530:9;:14;;6522:60;;;::::0;-1:-1:-1;;;6522:60:0;;5875:2:1;6522:60:0::1;::::0;::::1;5857:21:1::0;5914:2;5894:18;;;5887:30;5953:34;5933:18;;;5926:62;-1:-1:-1;;;6004:18:1;;;5997:32;6046:19;;6522:60:0::1;5673:398:1::0;6522:60:0::1;6640:3;6626:9:::0;3437:12:::1;3374:2;3437;:12;:::i;:::-;3423:26;::::0;:11:::1;:26;:::i;:::-;6612:23;;;;:::i;:::-;6611:32;;;;:::i;:::-;6593:15;:50:::0;-1:-1:-1;6451:200:0:o;11039:222::-;2351:4;2386:5;-1:-1:-1;;;;;2386:5:0;2255:10;2375:16;2239:38;;;;-1:-1:-1;;;2239:38:0;;;;;;;:::i;:::-;11138:14:::1;:22:::0;;;11171:13:::1;:20:::0;;;11202:18:::1;:27:::0;;;11240:13:::1;:11;:13::i;:::-;11039:222:::0;;;:::o;2407:85::-;2351:4;2386:5;-1:-1:-1;;;;;2386:5:0;2255:10;2375:16;2239:38;;;;-1:-1:-1;;;2239:38:0;;;;;;;:::i;:::-;2482:1:::1;2466:18:::0;;-1:-1:-1;;;;;;2466:18:0::1;::::0;;2407:85::o;9571:336::-;2351:4;2386:5;-1:-1:-1;;;;;2386:5:0;2255:10;2375:16;2239:38;;;;-1:-1:-1;;;2239:38:0;;;;;;;:::i;:::-;9655:3:::1;3437:12;3374:2;3437;:12;:::i;:::-;3423:26;::::0;:11:::1;:26;:::i;:::-;9641:17;;;;:::i;:::-;9625:13;:33:::0;9669:11:::1;:18:::0;;-1:-1:-1;;;;9669:18:0::1;-1:-1:-1::0;;;9669:18:0::1;::::0;;3437:12:::1;3374:2;3437;:12;:::i;:::-;3423:26;::::0;:11:::1;:26;:::i;:::-;9698:15;:29:::0;;;9738:13:::1;:17:::0;9781:1:::1;9766:12;:16:::0;9804:1:::1;9793:8;:12:::0;9832:3:::1;9816:13;:19:::0;;;9846:14:::1;:20:::0;-1:-1:-1;9877:18:0::1;:22:::0;9571:336::o;9162:286::-;9253:12;2386:5;;-1:-1:-1;;;;;2386:5:0;2255:10;2375:16;2239:38;;;;-1:-1:-1;;;2239:38:0;;;;;;;:::i;:::-;9281:6:::1;9291:1;9281:11:::0;9278:95:::1;;9317:44;::::0;-1:-1:-1;;;9317:44:0;;9355:4:::1;9317:44;::::0;::::1;160:51:1::0;-1:-1:-1;;;;;9317:29:0;::::1;::::0;::::1;::::0;133:18:1;;9317:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9308:53;;9278:95;9392:48;::::0;-1:-1:-1;;;9392:48:0;;9421:10:::1;9392:48;::::0;::::1;6439:51:1::0;6506:18;;;6499:34;;;-1:-1:-1;;;;;9392:28:0;::::1;::::0;::::1;::::0;6412:18:1;;9392:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9456:107::-:0;2351:4;2386:5;-1:-1:-1;;;;;2386:5:0;2255:10;2375:16;2239:38;;;;-1:-1:-1;;;2239:38:0;;;;;;;:::i;:::-;9508:11:::1;:18:::0;;-1:-1:-1;;;;9537:18:0;-1:-1:-1;;;9537:18:0;;;9456:107::o;5909:156::-;5989:4;6013:44;6027:10;6039:9;6050:6;6013:13;:44::i;615:192::-;701:7;737:12;729:6;;;;721:29;;;;-1:-1:-1;;;721:29:0;;;;;;;;:::i;:::-;-1:-1:-1;761:9:0;773:5;777:1;773;:5;:::i;:::-;761:17;615:192;-1:-1:-1;;;;;615:192:0:o;6659:950::-;6771:6;;6751:4;;6771:6;;6768:63;;;6787:41;6802:6;6810:9;6821:6;6787:14;:41::i;:::-;6780:48;;;;6768:63;-1:-1:-1;;;;;6847:19:0;;;;;;:11;:19;;;;;;;;6846:20;:47;;;;-1:-1:-1;;;;;;6871:22:0;;;;;;:11;:22;;;;;;;;6870:23;6846:47;6843:121;;;6917:11;;-1:-1:-1;;;6917:11:0;;;;6909:43;;;;-1:-1:-1;;;6909:43:0;;7028:2:1;6909:43:0;;;7010:21:1;7067:2;7047:18;;;7040:30;-1:-1:-1;;;7086:18:1;;;7079:50;7146:18;;6909:43:0;6826:344:1;6909:43:0;-1:-1:-1;;;;;6981:27:0;;;;;;:19;:27;;;;;;;;6980:28;:63;;;;-1:-1:-1;;;;;;7013:30:0;;;;;;:19;:30;;;;;;;;7012:31;6980:63;:84;;;;;7060:4;-1:-1:-1;;;;;7047:17:0;:9;-1:-1:-1;;;;;7047:17:0;;;6980:84;6976:203;;;7124:15;;-1:-1:-1;;;;;7090:20:0;;;;;;:9;:20;;;;;;:29;;7113:6;;7090:29;:::i;:::-;7089:50;;7081:86;;;;-1:-1:-1;;;7081:86:0;;7507:2:1;7081:86:0;;;7489:21:1;7546:2;7526:18;;;7519:30;7585:26;7565:18;;;7558:54;7629:18;;7081:86:0;7305:348:1;7081:86:0;7194:16;:14;:16::i;:::-;7191:35;;;7213:10;:8;:10::i;:::-;7258:53;;;;;;;;;;;-1:-1:-1;;;7258:53:0;;;;;;;;-1:-1:-1;;;;;7258:17:0;;-1:-1:-1;7258:17:0;;;:9;:17;;;;;;;;:53;;7280:6;;7258:21;:53::i;:::-;-1:-1:-1;;;;;7238:17:0;;;;;;:9;:17;;;;;;;;:73;;;;7350:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;7373:22:0;;;;;;:11;:22;;;;;;;;7350:45;7349:93;;7408:34;7416:6;7424;7432:9;7408:7;:34::i;:::-;7349:93;;;7399:6;7349:93;-1:-1:-1;;;;;7478:20:0;;;;;;:9;:20;;;;;;7324:118;;-1:-1:-1;7478:40:0;;7324:118;7478:24;:40::i;:::-;-1:-1:-1;;;;;7455:20:0;;;;;;;:9;:20;;;;;;;:63;;;;7536:43;;;;;;;;;;7564:14;921:25:1;;909:2;894:18;;775:177;7536:43:0;;;;;;;;-1:-1:-1;7597:4:0;;6659:950;-1:-1:-1;;;;6659:950:0:o;10686:345::-;10782:1;10742:36;10774:3;10742:27;10755:13;;10742:8;;:12;;:27;;;;:::i;:::-;:31;;:36::i;:::-;:41;;10734:85;;;;-1:-1:-1;;;10734:85:0;;7860:2:1;10734:85:0;;;7842:21:1;7899:2;7879:18;;;7872:30;7938:33;7918:18;;;7911:61;7989:18;;10734:85:0;7658:355:1;10734:85:0;10879:1;10838:37;10871:3;10838:28;10851:14;;10838:8;;:12;;:28;;;;:::i;:37::-;:42;;10830:87;;;;-1:-1:-1;;;10830:87:0;;8220:2:1;10830:87:0;;;8202:21:1;;;8239:18;;;8232:30;8298:34;8278:18;;;8271:62;8350:18;;10830:87:0;8018:356:1;10830:87:0;10981:1;10936:41;10973:3;10936:32;10949:18;;10936:8;;:12;;:32;;;;:::i;:41::-;:46;;10928:95;;;;-1:-1:-1;;;10928:95:0;;8581:2:1;10928:95:0;;;8563:21:1;8620:2;8600:18;;;8593:30;8659:34;8639:18;;;8632:62;-1:-1:-1;;;8710:18:1;;;8703:34;8754:19;;10928:95:0;8379:400:1;10928:95:0;10686:345::o;7621:330::-;7751:53;;;;;;;;;;;-1:-1:-1;;;7751:53:0;;;;;;;;-1:-1:-1;;;;;7751:17:0;;7714:4;7751:17;;;:9;:17;;;;;;;:53;;7773:6;;7751:21;:53::i;:::-;-1:-1:-1;;;;;7731:17:0;;;;;;;:9;:17;;;;;;:73;;;;7838:20;;;;;;;:32;;7863:6;7838:24;:32::i;:::-;-1:-1:-1;;;;;7815:20:0;;;;;;;:9;:20;;;;;;;:55;;;;7886:35;;;;;;;;;;7914:6;921:25:1;;909:2;894:18;;775:177;7886:35:0;;;;;;;;-1:-1:-1;7939:4:0;7621:330;;;;;:::o;8690:197::-;8739:4;8763:10;-1:-1:-1;;;;;8777:4:0;8763:18;;;;;:38;;-1:-1:-1;8795:6:0;;;;8794:7;8763:38;:62;;;;-1:-1:-1;8814:11:0;;-1:-1:-1;;;8814:11:0;;;;8763:62;:116;;;;-1:-1:-1;;8866:13:0;;8856:4;8838:24;;;;:9;:24;;;;;;:41;;;8690:197::o;9915:763::-;4378:6;:13;;-1:-1:-1;;4378:13:0;4387:4;4378:13;;;9988:16:::1;::::0;;10002:1:::1;9988:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9988:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9988:16:0::1;9964:40;;10033:4;10015;10020:1;10015:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;10015:23:0::1;;;-1:-1:-1::0;;;;;10015:23:0::1;;;::::0;::::1;10059:4;10049;10054:1;10049:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10049:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;10076:6:::1;::::0;10148:13:::1;::::0;10076:189:::1;::::0;-1:-1:-1;;;10076:189:0;;:6;;;::::1;::::0;:57:::1;::::0;:189:::1;::::0;10148:13;10076:6:::1;::::0;10192:4;;10219::::1;::::0;10239:15:::1;::::0;10076:189:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10390:8:0::1;::::0;10374:12:::1;::::0;10298:21:::1;::::0;-1:-1:-1;10278:17:0::1;::::0;-1:-1:-1;10362:24:0::1;::::0;10298:21;10362:24:::1;:::i;:::-;10361:37;;;;:::i;:::-;10332:66;;10409:27;10469:8;;10452:13;;10440:9;:25;;;;:::i;:::-;10439:38;;;;:::i;:::-;10519:20;::::0;10511:65:::1;::::0;10409:68;;-1:-1:-1;10491:15:0::1;::::0;-1:-1:-1;;;;;10519:20:0;;::::1;::::0;10553:18;;10491:15;10511:65;10491:15;10511:65;10553:18;10519:20;10511:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;10611:21:0::1;::::0;10603:67:::1;::::0;10490:86;;-1:-1:-1;;;;;;10611:21:0::1;::::0;10646:19;;10603:67:::1;::::0;;;10646:19;10611:21;10603:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;4396:6:0;:14;;-1:-1:-1;;4396:14:0;;;-1:-1:-1;;;;;;9915:763:0:o;7959:723::-;8045:7;8068:11;;;:28;;-1:-1:-1;8083:8:0;;:13;8068:28;8065:72;;;-1:-1:-1;8119:6:0;8112:13;;8065:72;8170:18;;-1:-1:-1;;;;;8217:4:0;8204:17;;;;;;8201:154;;-1:-1:-1;8251:14:0;;8201:154;;;8296:4;-1:-1:-1;;;;;8286:14:0;:6;-1:-1:-1;;;;;8286:14:0;;8283:72;;-1:-1:-1;8330:13:0;;8283:72;8367:17;8387:62;8428:20;3929:3;;8428:20;:::i;:::-;8387:36;8412:10;8387:20;8398:8;;8387:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;8367:82;-1:-1:-1;8465:13:0;;8462:172;;8539:4;8521:24;;;;:9;:24;;;;;;:39;;8550:9;8521:28;:39::i;:::-;8512:4;8494:24;;;;:9;:24;;;;;;;:66;;;;8580:42;;-1:-1:-1;;;;;8580:42:0;;;;;;;8612:9;921:25:1;;909:2;894:18;;775:177;8580:42:0;;;;;;;;8462:172;8653:21;:6;8664:9;8653:10;:21::i;:::-;8646:28;7959:723;-1:-1:-1;;;;;;7959:723:0:o;286:181::-;344:7;;376:5;380:1;376;:5;:::i;:::-;364:17;;405:1;400;:6;;392:46;;;;-1:-1:-1;;;392:46:0;;10445:2:1;392:46:0;;;10427:21:1;10484:2;10464:18;;;10457:30;10523:29;10503:18;;;10496:57;10570:18;;392:46:0;10243:351:1;813:250:0;871:7;895:1;900;895:6;891:47;;-1:-1:-1;925:1:0;918:8;;891:47;950:9;962:5;966:1;962;:5;:::i;:::-;950:17;-1:-1:-1;995:1:0;986:5;990:1;950:17;986:5;:::i;:::-;:10;978:56;;;;-1:-1:-1;;;978:56:0;;10801:2:1;978:56:0;;;10783:21:1;10840:2;10820:18;;;10813:30;10879:34;10859:18;;;10852:62;-1:-1:-1;;;10930:18:1;;;10923:31;10971:19;;978:56:0;10599:397:1;1069:132:0;1127:7;1154:39;1158:1;1161;1154:39;;;;;;;;;;;;;;;;;:3;:39::i;473:136::-;531:7;558:43;562:1;565;558:43;;;;;;;;;;;;;;;;;:3;:43::i;1207:189::-;1293:7;1328:12;1321:5;1313:28;;;;-1:-1:-1;;;1313:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1352:9:0;1364:5;1368:1;1364;:5;:::i;222:548:1:-;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;506:3;691:1;686:2;677:6;666:9;662:22;658:31;651:42;761:2;754;750:7;745:2;737:6;733:15;729:29;718:9;714:45;710:54;702:62;;;;222:548;;;;:::o;957:173::-;1025:20;;-1:-1:-1;;;;;1074:31:1;;1064:42;;1054:70;;1120:1;1117;1110:12;1054:70;957:173;;;:::o;1135:254::-;1203:6;1211;1264:2;1252:9;1243:7;1239:23;1235:32;1232:52;;;1280:1;1277;1270:12;1232:52;1303:29;1322:9;1303:29;:::i;:::-;1293:39;1379:2;1364:18;;;;1351:32;;-1:-1:-1;;;1135:254:1:o;1586:180::-;1645:6;1698:2;1686:9;1677:7;1673:23;1669:32;1666:52;;;1714:1;1711;1704:12;1666:52;-1:-1:-1;1737:23:1;;1586:180;-1:-1:-1;1586:180:1:o;1771:328::-;1848:6;1856;1864;1917:2;1905:9;1896:7;1892:23;1888:32;1885:52;;;1933:1;1930;1923:12;1885:52;1956:29;1975:9;1956:29;:::i;:::-;1946:39;;2004:38;2038:2;2027:9;2023:18;2004:38;:::i;:::-;1994:48;;2089:2;2078:9;2074:18;2061:32;2051:42;;1771:328;;;;;:::o;2104:186::-;2163:6;2216:2;2204:9;2195:7;2191:23;2187:32;2184:52;;;2232:1;2229;2222:12;2184:52;2255:29;2274:9;2255:29;:::i;2484:316::-;2561:6;2569;2577;2630:2;2618:9;2609:7;2605:23;2601:32;2598:52;;;2646:1;2643;2636:12;2598:52;-1:-1:-1;;2669:23:1;;;2739:2;2724:18;;2711:32;;-1:-1:-1;2790:2:1;2775:18;;;2762:32;;2484:316;-1:-1:-1;2484:316:1:o;2805:260::-;2873:6;2881;2934:2;2922:9;2913:7;2909:23;2905:32;2902:52;;;2950:1;2947;2940:12;2902:52;2973:29;2992:9;2973:29;:::i;:::-;2963:39;;3021:38;3055:2;3044:9;3040:18;3021:38;:::i;:::-;3011:48;;2805:260;;;;;:::o;3296:127::-;3357:10;3352:3;3348:20;3345:1;3338:31;3388:4;3385:1;3378:15;3412:4;3409:1;3402:15;3428:422;3517:1;3560:5;3517:1;3574:270;3595:7;3585:8;3582:21;3574:270;;;3654:4;3650:1;3646:6;3642:17;3636:4;3633:27;3630:53;;;3663:18;;:::i;:::-;3713:7;3703:8;3699:22;3696:55;;;3733:16;;;;3696:55;3812:22;;;;3772:15;;;;3574:270;;;3578:3;3428:422;;;;;:::o;3855:806::-;3904:5;3934:8;3924:80;;-1:-1:-1;3975:1:1;3989:5;;3924:80;4023:4;4013:76;;-1:-1:-1;4060:1:1;4074:5;;4013:76;4105:4;4123:1;4118:59;;;;4191:1;4186:130;;;;4098:218;;4118:59;4148:1;4139:10;;4162:5;;;4186:130;4223:3;4213:8;4210:17;4207:43;;;4230:18;;:::i;:::-;-1:-1:-1;;4286:1:1;4272:16;;4301:5;;4098:218;;4400:2;4390:8;4387:16;4381:3;4375:4;4372:13;4368:36;4362:2;4352:8;4349:16;4344:2;4338:4;4335:12;4331:35;4328:77;4325:159;;;-1:-1:-1;4437:19:1;;;4469:5;;4325:159;4516:34;4541:8;4535:4;4516:34;:::i;:::-;4586:6;4582:1;4578:6;4574:19;4565:7;4562:32;4559:58;;;4597:18;;:::i;:::-;4635:20;;3855:806;-1:-1:-1;;;3855:806:1:o;4666:140::-;4724:5;4753:47;4794:4;4784:8;4780:19;4774:4;4753:47;:::i;4811:168::-;4884:9;;;4915;;4932:15;;;4926:22;;4912:37;4902:71;;4953:18;;:::i;4984:329::-;5186:2;5168:21;;;5225:1;5205:18;;;5198:29;-1:-1:-1;;;5258:2:1;5243:18;;5236:36;5304:2;5289:18;;4984:329::o;5318:217::-;5358:1;5384;5374:132;;5428:10;5423:3;5419:20;5416:1;5409:31;5463:4;5460:1;5453:15;5491:4;5488:1;5481:15;5374:132;-1:-1:-1;5520:9:1;;5318:217::o;5540:128::-;5607:9;;;5628:11;;;5625:37;;;5642:18;;:::i;6076:184::-;6146:6;6199:2;6187:9;6178:7;6174:23;6170:32;6167:52;;;6215:1;6212;6205:12;6167:52;-1:-1:-1;6238:16:1;;6076:184;-1:-1:-1;6076:184:1:o;6544:277::-;6611:6;6664:2;6652:9;6643:7;6639:23;6635:32;6632:52;;;6680:1;6677;6670:12;6632:52;6712:9;6706:16;6765:5;6758:13;6751:21;6744:5;6741:32;6731:60;;6787:1;6784;6777:12;7175:125;7240:9;;;7261:10;;;7258:36;;;7274:18;;:::i;8916:127::-;8977:10;8972:3;8968:20;8965:1;8958:31;9008:4;9005:1;8998:15;9032:4;9029:1;9022:15;9048:980;9310:4;9358:3;9347:9;9343:19;9389:6;9378:9;9371:25;9415:2;9453:6;9448:2;9437:9;9433:18;9426:34;9496:3;9491:2;9480:9;9476:18;9469:31;9520:6;9555;9549:13;9586:6;9578;9571:22;9624:3;9613:9;9609:19;9602:26;;9663:2;9655:6;9651:15;9637:29;;9684:1;9694:195;9708:6;9705:1;9702:13;9694:195;;;9773:13;;-1:-1:-1;;;;;9769:39:1;9757:52;;9864:15;;;;9829:12;;;;9805:1;9723:9;9694:195;;;-1:-1:-1;;;;;;;9945:32:1;;;;9940:2;9925:18;;9918:60;-1:-1:-1;;;10009:3:1;9994:19;9987:35;9906:3;9048:980;-1:-1:-1;;;9048:980:1:o

Swarm Source

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