ETH Price: $2,529.01 (+3.60%)

Token

CashCow Protocol (COW)
 

Overview

Max Total Supply

1,000,000,000 COW

Holders

114

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
dangai.eth
Balance
19,112,210.032737946689806459 COW

Value
$0.00
0x2e754b9859ff6c47c3adaf720b6a809282c5daa2
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:
COW

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-07
*/

/*
CashCow Protocol is a community driven project with the vision of creating a positive impact in people's lives by being a trusted and long term investment. 

Website: https://www.cashcowfi.org
Telegram: https://t.me/cashcow_eth
Twitter: https://twitter.com/cashcow_eth
Dapp: https://app.cashcowfi.org
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

abstract contract Ownable {
    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 transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    function renounceOwnership() public onlyOwner {owner = address(0); emit OwnershipTransferred(address(0));}
    event OwnershipTransferred(address owner);
}

interface IERC20 {
    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 totalSupply() external view returns (uint256);
    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);
}

interface IUniswapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

interface IUniswapFactory {
    function createPair(address tokenA, address tokenB) external returns (address uniswapPair);
    function getPair(address tokenA, address tokenB) external view returns (address uniswapPair);
}


contract COW is IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isTaxExempt;
    string private constant _name = 'CashCow Protocol';
    string private constant _symbol = 'COW';
    uint8 private constant _decimals = 18;
    uint256 private _supplyTotal = 10 ** 9 * (10 ** _decimals);
    IUniswapRouter uniswapRouter;
    address public uniswapPair;
    bool private tradingActive = false;
    bool private taxActive = true;
    uint256 private swapTaxAft;
    bool private inswap;
    uint256 swapCounts = 1;
    uint256 private feeSwapThreshold = ( _supplyTotal * 3) / 100;
    uint256 private minAmountToSwap = ( _supplyTotal * 1) / 100000;
    modifier lockSwap {inswap = true; _; inswap = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0; 
    uint256 private developmentFee = 100; 
    uint256 private burnFee = 0;
    uint256 private totalFee = 2500; 
    uint256 private sellFee = 2500; 
    uint256 private transferFee = 2500;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x2fDe21Fc7F33dA8119c508f92Ef490D13B949d5c;
    address internal marketing_receiver = 0x2fDe21Fc7F33dA8119c508f92Ef490D13B949d5c; 
    address internal liquidity_receiver = 0x2fDe21Fc7F33dA8119c508f92Ef490D13B949d5c;
    uint256 public maxTxnAmount = ( _supplyTotal * 250 ) / 10000;
    uint256 public maxTransferSize = ( _supplyTotal * 250 ) / 10000;
    uint256 public maxHoldSize = ( _supplyTotal * 250 ) / 10000;

    constructor() Ownable(msg.sender) {
        IUniswapRouter _router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IUniswapFactory(_router.factory()).createPair(address(this), _router.WETH());
        uniswapRouter = _router; uniswapPair = _pair;
        isTaxExempt[liquidity_receiver] = true;
        isTaxExempt[marketing_receiver] = true;
        isTaxExempt[development_receiver] = true;
        isTaxExempt[msg.sender] = true;
        _balances[msg.sender] = _supplyTotal;
        emit Transfer(address(0), msg.sender, _supplyTotal);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function enable() external onlyOwner {tradingActive = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _supplyTotal.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function updateFeeParameters(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator && sellFee <= denominator && transferFee <= denominator, "totalFee and sellFee cannot be more than 100%");
    }

    function updateTxSize(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _supplyTotal.mul(_buy).div(10000); uint256 newTransfer = _supplyTotal.mul(_sell).div(10000); uint256 newWallet = _supplyTotal.mul(_wallet).div(10000);
        maxTxnAmount = newTx; maxTransferSize = newTransfer; maxHoldSize = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
      return (a > b) ? b : a;
    }
    function swapBackAndLiquidify(uint256 tokens) private lockSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensToETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
    }
    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

    function swapTokensToETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function shouldFeeSwap(address sender, address recipient) internal view returns (bool) {
        return !isTaxExempt[sender] && !isTaxExempt[recipient];
    }
    
    function getTax(address sender, address recipient) internal view returns (uint256) {
        if(recipient == uniswapPair){return sellFee;}
        if(sender == uniswapPair){return totalFee;}
        return transferFee;
    }

    function applyFees(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTax(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTax(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTax(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }
    
    function swapAndLiquidity(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minAmountToSwap;
        bool aboveThreshold = balanceOf(address(this)) >= minAmountToSwap;
        return !inswap && taxActive && tradingActive && aboveMin && !isTaxExempt[sender] && recipient == uniswapPair && swapTaxAft >= swapCounts && aboveThreshold;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(!isTaxExempt[sender] && !isTaxExempt[recipient]){require(tradingActive, "tradingActive");}
        if(!isTaxExempt[sender] && !isTaxExempt[recipient] && recipient != address(uniswapPair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= maxHoldSize, "Exceeds maximum wallet amount.");}
        if(sender != uniswapPair){require(amount <= maxTransferSize || isTaxExempt[sender] || isTaxExempt[recipient], "TX Limit Exceeded");}
        require(amount <= maxTxnAmount || isTaxExempt[sender] || isTaxExempt[recipient], "TX Limit Exceeded"); 
        if(recipient == uniswapPair && !isTaxExempt[sender]){swapTaxAft += uint256(1);}
        if(swapAndLiquidity(sender, recipient, amount)){swapBackAndLiquidify(min(balanceOf(address(this)), feeSwapThreshold)); swapTaxAft = uint256(0);}
        if (!tradingActive || !isTaxExempt[sender]) { _balances[sender] = _balances[sender].sub(amount); }
        uint256 amountReceived = shouldFeeSwap(sender, recipient) ? applyFees(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
}

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":"owner","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"isTaxExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"updateFeeParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"updateTxSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620004b7565b6200002290633b9aca00620004ce565b60048190556006805461ffff60a01b1916600160a81b179055600160095560649062000050906003620004ce565b6200005c9190620004e8565b600a55620186a06004546001620000749190620004ce565b620000809190620004e8565b600b555f600c819055600d8190556064600e55600f556109c460108190556011819055601255612710601381905560148054732fde21fc7f33da8119c508f92ef490d13b949d5c6001600160a01b0319918216811790925560158054821683179055601680549091169091179055600454620000fe9060fa620004ce565b6200010a9190620004e8565b60175561271060045460fa620001219190620004ce565b6200012d9190620004e8565b60185561271060045460fa620001449190620004ce565b620001509190620004e8565b6019553480156200015f575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ea919062000508565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000236573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025c919062000508565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002cd919062000508565b600580546001600160a01b038086166001600160a01b03199283161790925560068054838516921691909117905560165481165f908152600360209081526040808320805460ff199081166001908117909255601554861685528285208054821683179055601454909516845281842080548616821790553380855282852080549096168217909555600454925280832082905551939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200039891815260200190565b60405180910390a3505062000530565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003fc57815f1904821115620003e057620003e0620003a8565b80851615620003ee57918102915b93841c9390800290620003c1565b509250929050565b5f826200041457506001620004b1565b816200042257505f620004b1565b81600181146200043b5760028114620004465762000466565b6001915050620004b1565b60ff8411156200045a576200045a620003a8565b50506001821b620004b1565b5060208310610133831016604e8410600b84101617156200048b575081810a620004b1565b620004978383620003bc565b805f1904821115620004ad57620004ad620003a8565b0290505b92915050565b5f620004c760ff84168362000404565b9392505050565b8082028115828204841417620004b157620004b1620003a8565b5f826200050357634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000519575f80fd5b81516001600160a01b0381168114620004c7575f80fd5b611806806200053e5f395ff3fe608060405260043610610129575f3560e01c8063715018a6116100a8578063a9059cbb1161006d578063a9059cbb14610366578063c816841b14610385578063cf46f24c146103a4578063dd62ed3e146103b9578063e2e8c60f146103fd578063f2fde38b1461041c575f80fd5b8063715018a6146102ce578063893d20e8146102e25780638e499ade1461031257806395d89b4114610327578063a3907d7114610352575f80fd5b806323b872dd116100ee57806323b872dd1461021e5780632f54bf6e1461023d578063313ce5671461026a5780633748e6c71461028557806370a082311461029a575f80fd5b806306fdde0314610134578063095ea7b31461017e5780630bd27a2a146101ad57806316c2be6b146101ce57806318160ddd146101fc575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b5060408051808201909152601081526f10d85cda10dbddc8141c9bdd1bd8dbdb60821b60208201525b60405161017591906114c3565b60405180910390f35b348015610189575f80fd5b5061019d610198366004611525565b61043b565b6040519015158152602001610175565b3480156101b8575f80fd5b506101cc6101c736600461154f565b610451565b005b3480156101d9575f80fd5b5061019d6101e8366004611578565b60036020525f908152604090205460ff1681565b348015610207575f80fd5b50610210610596565b604051908152602001610175565b348015610229575f80fd5b5061019d610238366004611593565b610606565b348015610248575f80fd5b5061019d610257366004611578565b5f546001600160a01b0391821691161490565b348015610275575f80fd5b5060405160128152602001610175565b348015610290575f80fd5b5061021060195481565b3480156102a5575f80fd5b506102106102b4366004611578565b6001600160a01b03165f9081526001602052604090205490565b3480156102d9575f80fd5b506101cc61066e565b3480156102ed575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610175565b34801561031d575f80fd5b5061021060185481565b348015610332575f80fd5b50604080518082019091526003815262434f5760e81b6020820152610168565b34801561035d575f80fd5b506101cc6106db565b348015610371575f80fd5b5061019d610380366004611525565b610719565b348015610390575f80fd5b506006546102fa906001600160a01b031681565b3480156103af575f80fd5b5061021060175481565b3480156103c4575f80fd5b506102106103d33660046115d1565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610408575f80fd5b506101cc610417366004611608565b610725565b348015610427575f80fd5b506101cc610436366004611578565b6107f9565b5f610447338484610875565b5060015b92915050565b5f546001600160a01b031633146104835760405162461bcd60e51b815260040161047a9061164f565b60405180910390fd5b5f6104a561271061049f8660045461099890919063ffffffff16565b906109a3565b90505f6104c361271061049f8660045461099890919063ffffffff16565b90505f6104e161271061049f8660045461099890919063ffffffff16565b60178490556018839055601981905590505f61050c6103e861049f6005610506610596565b90610998565b905080841015801561051e5750808310155b801561052a5750808210155b61058d5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161047a565b50505050505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead5f9081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460045491926106019290916105fb91906109ae565b906109ae565b905090565b5f6106128484846109b9565b610663843361065e856040518060600160405280602881526020016117a9602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610ec1565b610875565b5060015b9392505050565b5f546001600160a01b031633146106975760405162461bcd60e51b815260040161047a9061164f565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146107045760405162461bcd60e51b815260040161047a9061164f565b6006805460ff60a01b1916600160a01b179055565b5f6104473384846109b9565b5f546001600160a01b0316331461074e5760405162461bcd60e51b815260040161047a9061164f565b600c879055600d869055600f859055600e8490556010839055601182905560128190556013548311801590610787575060135460115411155b8015610797575060135460125411155b61058d5760405162461bcd60e51b815260206004820152602d60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526c6f7265207468616e203130302560981b606482015260840161047a565b5f546001600160a01b031633146108225760405162461bcd60e51b815260040161047a9061164f565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166108d75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161047a565b6001600160a01b0382166109385760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161047a565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6106678284611683565b5f610667828461169a565b5f61066782846116b9565b6001600160a01b038316610a1d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161047a565b6001600160a01b038216610a7f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161047a565b6001600160a01b0383165f9081526003602052604090205460ff16158015610abf57506001600160a01b0382165f9081526003602052604090205460ff16155b15610b0d57600654600160a01b900460ff16610b0d5760405162461bcd60e51b815260206004820152600d60248201526c74726164696e6741637469766560981b604482015260640161047a565b6001600160a01b0383165f9081526003602052604090205460ff16158015610b4d57506001600160a01b0382165f9081526003602052604090205460ff16155b8015610b6757506006546001600160a01b03838116911614155b8015610b7e57506001600160a01b03821661dead14155b15610bf6576019546001600160a01b0383165f90815260016020526040902054610ba89083610eec565b1115610bf65760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161047a565b6006546001600160a01b03848116911614610c955760185481111580610c3357506001600160a01b0383165f9081526003602052604090205460ff165b80610c5557506001600160a01b0382165f9081526003602052604090205460ff165b610c955760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161047a565b60175481111580610cbd57506001600160a01b0383165f9081526003602052604090205460ff165b80610cdf57506001600160a01b0382165f9081526003602052604090205460ff165b610d1f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161047a565b6006546001600160a01b038381169116148015610d5457506001600160a01b0383165f9081526003602052604090205460ff16155b15610d7157600160075f828254610d6b91906116cc565b90915550505b610d7c838383610ef7565b15610daa57305f90815260016020526040902054610da590610da090600a54610fae565b610fc2565b5f6007555b600654600160a01b900460ff161580610ddb57506001600160a01b0383165f9081526003602052604090205460ff16155b15610e1b576001600160a01b0383165f90815260016020526040902054610e0290826109ae565b6001600160a01b0384165f908152600160205260409020555b5f610e268484611132565b610e305781610e3b565b610e3b848484611176565b6001600160a01b0384165f90815260016020526040902054909150610e609082610eec565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610eb39085815260200190565b60405180910390a350505050565b5f8184841115610ee45760405162461bcd60e51b815260040161047a91906114c3565b505050900390565b5f61066782846116cc565b600b54305f90815260016020526040812054600854919280851015929110159060ff16158015610f305750600654600160a81b900460ff165b8015610f455750600654600160a01b900460ff165b8015610f4e5750815b8015610f7257506001600160a01b0386165f9081526003602052604090205460ff16155b8015610f8b57506006546001600160a01b038681169116145b8015610f9b575060095460075410155b8015610fa45750805b9695505050505050565b5f818311610fbc5782610667565b50919050565b6008805460ff19166001908117909155600e54600d54600c545f93610ffb93600293610506939192610ff5928391610eec565b90610eec565b90505f6110178261049f600c548661099890919063ffffffff16565b90505f61102484836109ae565b90504761103082611278565b5f61103b47836109ae565b90505f61105d611056600c54886109ae90919063ffffffff16565b83906109a3565b90505f611075600c548361099890919063ffffffff16565b905080156110875761108786826113c8565b600d545f9061109b90610506856002610998565b905080156110dc576015546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156110da573d5f803e3d5ffd5b505b47801561111c576014546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561111a573d5f803e3d5ffd5b505b50506008805460ff191690555050505050505050565b6001600160a01b0382165f9081526003602052604081205460ff161580156106675750506001600160a01b03165f9081526003602052604090205460ff1615919050565b5f806111828585611479565b1115611271575f6111a46111968686611479565b6013546105069086906109a3565b305f908152600160205260409020549091506111c09082610eec565b305f81815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112109085815260200190565b60405180910390a35f600f541180156112335750600f546112318686611479565b115b1561125f5761125f3061dead61125a600f54610506601354896109a390919063ffffffff16565b6109b9565b61126983826109ae565b915050610667565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106112ab576112ab6116df565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611302573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132691906116f3565b81600181518110611339576113396116df565b6001600160a01b03928316602091820292909201015260055461135f9130911684610875565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906113979085905f9086903090429060040161170e565b5f604051808303815f87803b1580156113ae575f80fd5b505af11580156113c0573d5f803e3d5ffd5b505050505050565b6005546113e09030906001600160a01b031684610875565b60055460165460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561144d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611472919061177d565b5050505050565b6006545f906001600160a01b039081169083160361149a575060115461044b565b6006546001600160a01b03908116908416036114b9575060105461044b565b5060125492915050565b5f6020808352835180828501525f5b818110156114ee578581018301518582016040015282016114d2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611522575f80fd5b50565b5f8060408385031215611536575f80fd5b82356115418161150e565b946020939093013593505050565b5f805f60608486031215611561575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611588575f80fd5b81356106678161150e565b5f805f606084860312156115a5575f80fd5b83356115b08161150e565b925060208401356115c08161150e565b929592945050506040919091013590565b5f80604083850312156115e2575f80fd5b82356115ed8161150e565b915060208301356115fd8161150e565b809150509250929050565b5f805f805f805f60e0888a03121561161e575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761044b5761044b61166f565b5f826116b457634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561044b5761044b61166f565b8082018082111561044b5761044b61166f565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611703575f80fd5b81516106678161150e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561175c5784516001600160a01b031683529383019391830191600101611737565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561178f575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ce2bcd1637aac14a0744c0c38170d777e337a9c208d72c98dd2f7cd2e98814c664736f6c63430008150033

Deployed Bytecode

0x608060405260043610610129575f3560e01c8063715018a6116100a8578063a9059cbb1161006d578063a9059cbb14610366578063c816841b14610385578063cf46f24c146103a4578063dd62ed3e146103b9578063e2e8c60f146103fd578063f2fde38b1461041c575f80fd5b8063715018a6146102ce578063893d20e8146102e25780638e499ade1461031257806395d89b4114610327578063a3907d7114610352575f80fd5b806323b872dd116100ee57806323b872dd1461021e5780632f54bf6e1461023d578063313ce5671461026a5780633748e6c71461028557806370a082311461029a575f80fd5b806306fdde0314610134578063095ea7b31461017e5780630bd27a2a146101ad57806316c2be6b146101ce57806318160ddd146101fc575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b5060408051808201909152601081526f10d85cda10dbddc8141c9bdd1bd8dbdb60821b60208201525b60405161017591906114c3565b60405180910390f35b348015610189575f80fd5b5061019d610198366004611525565b61043b565b6040519015158152602001610175565b3480156101b8575f80fd5b506101cc6101c736600461154f565b610451565b005b3480156101d9575f80fd5b5061019d6101e8366004611578565b60036020525f908152604090205460ff1681565b348015610207575f80fd5b50610210610596565b604051908152602001610175565b348015610229575f80fd5b5061019d610238366004611593565b610606565b348015610248575f80fd5b5061019d610257366004611578565b5f546001600160a01b0391821691161490565b348015610275575f80fd5b5060405160128152602001610175565b348015610290575f80fd5b5061021060195481565b3480156102a5575f80fd5b506102106102b4366004611578565b6001600160a01b03165f9081526001602052604090205490565b3480156102d9575f80fd5b506101cc61066e565b3480156102ed575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610175565b34801561031d575f80fd5b5061021060185481565b348015610332575f80fd5b50604080518082019091526003815262434f5760e81b6020820152610168565b34801561035d575f80fd5b506101cc6106db565b348015610371575f80fd5b5061019d610380366004611525565b610719565b348015610390575f80fd5b506006546102fa906001600160a01b031681565b3480156103af575f80fd5b5061021060175481565b3480156103c4575f80fd5b506102106103d33660046115d1565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610408575f80fd5b506101cc610417366004611608565b610725565b348015610427575f80fd5b506101cc610436366004611578565b6107f9565b5f610447338484610875565b5060015b92915050565b5f546001600160a01b031633146104835760405162461bcd60e51b815260040161047a9061164f565b60405180910390fd5b5f6104a561271061049f8660045461099890919063ffffffff16565b906109a3565b90505f6104c361271061049f8660045461099890919063ffffffff16565b90505f6104e161271061049f8660045461099890919063ffffffff16565b60178490556018839055601981905590505f61050c6103e861049f6005610506610596565b90610998565b905080841015801561051e5750808310155b801561052a5750808210155b61058d5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161047a565b50505050505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead5f9081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460045491926106019290916105fb91906109ae565b906109ae565b905090565b5f6106128484846109b9565b610663843361065e856040518060600160405280602881526020016117a9602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610ec1565b610875565b5060015b9392505050565b5f546001600160a01b031633146106975760405162461bcd60e51b815260040161047a9061164f565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146107045760405162461bcd60e51b815260040161047a9061164f565b6006805460ff60a01b1916600160a01b179055565b5f6104473384846109b9565b5f546001600160a01b0316331461074e5760405162461bcd60e51b815260040161047a9061164f565b600c879055600d869055600f859055600e8490556010839055601182905560128190556013548311801590610787575060135460115411155b8015610797575060135460125411155b61058d5760405162461bcd60e51b815260206004820152602d60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526c6f7265207468616e203130302560981b606482015260840161047a565b5f546001600160a01b031633146108225760405162461bcd60e51b815260040161047a9061164f565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166108d75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161047a565b6001600160a01b0382166109385760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161047a565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6106678284611683565b5f610667828461169a565b5f61066782846116b9565b6001600160a01b038316610a1d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161047a565b6001600160a01b038216610a7f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161047a565b6001600160a01b0383165f9081526003602052604090205460ff16158015610abf57506001600160a01b0382165f9081526003602052604090205460ff16155b15610b0d57600654600160a01b900460ff16610b0d5760405162461bcd60e51b815260206004820152600d60248201526c74726164696e6741637469766560981b604482015260640161047a565b6001600160a01b0383165f9081526003602052604090205460ff16158015610b4d57506001600160a01b0382165f9081526003602052604090205460ff16155b8015610b6757506006546001600160a01b03838116911614155b8015610b7e57506001600160a01b03821661dead14155b15610bf6576019546001600160a01b0383165f90815260016020526040902054610ba89083610eec565b1115610bf65760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161047a565b6006546001600160a01b03848116911614610c955760185481111580610c3357506001600160a01b0383165f9081526003602052604090205460ff165b80610c5557506001600160a01b0382165f9081526003602052604090205460ff165b610c955760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161047a565b60175481111580610cbd57506001600160a01b0383165f9081526003602052604090205460ff165b80610cdf57506001600160a01b0382165f9081526003602052604090205460ff165b610d1f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161047a565b6006546001600160a01b038381169116148015610d5457506001600160a01b0383165f9081526003602052604090205460ff16155b15610d7157600160075f828254610d6b91906116cc565b90915550505b610d7c838383610ef7565b15610daa57305f90815260016020526040902054610da590610da090600a54610fae565b610fc2565b5f6007555b600654600160a01b900460ff161580610ddb57506001600160a01b0383165f9081526003602052604090205460ff16155b15610e1b576001600160a01b0383165f90815260016020526040902054610e0290826109ae565b6001600160a01b0384165f908152600160205260409020555b5f610e268484611132565b610e305781610e3b565b610e3b848484611176565b6001600160a01b0384165f90815260016020526040902054909150610e609082610eec565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610eb39085815260200190565b60405180910390a350505050565b5f8184841115610ee45760405162461bcd60e51b815260040161047a91906114c3565b505050900390565b5f61066782846116cc565b600b54305f90815260016020526040812054600854919280851015929110159060ff16158015610f305750600654600160a81b900460ff165b8015610f455750600654600160a01b900460ff165b8015610f4e5750815b8015610f7257506001600160a01b0386165f9081526003602052604090205460ff16155b8015610f8b57506006546001600160a01b038681169116145b8015610f9b575060095460075410155b8015610fa45750805b9695505050505050565b5f818311610fbc5782610667565b50919050565b6008805460ff19166001908117909155600e54600d54600c545f93610ffb93600293610506939192610ff5928391610eec565b90610eec565b90505f6110178261049f600c548661099890919063ffffffff16565b90505f61102484836109ae565b90504761103082611278565b5f61103b47836109ae565b90505f61105d611056600c54886109ae90919063ffffffff16565b83906109a3565b90505f611075600c548361099890919063ffffffff16565b905080156110875761108786826113c8565b600d545f9061109b90610506856002610998565b905080156110dc576015546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156110da573d5f803e3d5ffd5b505b47801561111c576014546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561111a573d5f803e3d5ffd5b505b50506008805460ff191690555050505050505050565b6001600160a01b0382165f9081526003602052604081205460ff161580156106675750506001600160a01b03165f9081526003602052604090205460ff1615919050565b5f806111828585611479565b1115611271575f6111a46111968686611479565b6013546105069086906109a3565b305f908152600160205260409020549091506111c09082610eec565b305f81815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112109085815260200190565b60405180910390a35f600f541180156112335750600f546112318686611479565b115b1561125f5761125f3061dead61125a600f54610506601354896109a390919063ffffffff16565b6109b9565b61126983826109ae565b915050610667565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106112ab576112ab6116df565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611302573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132691906116f3565b81600181518110611339576113396116df565b6001600160a01b03928316602091820292909201015260055461135f9130911684610875565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906113979085905f9086903090429060040161170e565b5f604051808303815f87803b1580156113ae575f80fd5b505af11580156113c0573d5f803e3d5ffd5b505050505050565b6005546113e09030906001600160a01b031684610875565b60055460165460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561144d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611472919061177d565b5050505050565b6006545f906001600160a01b039081169083160361149a575060115461044b565b6006546001600160a01b03908116908416036114b9575060105461044b565b5060125492915050565b5f6020808352835180828501525f5b818110156114ee578581018301518582016040015282016114d2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611522575f80fd5b50565b5f8060408385031215611536575f80fd5b82356115418161150e565b946020939093013593505050565b5f805f60608486031215611561575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611588575f80fd5b81356106678161150e565b5f805f606084860312156115a5575f80fd5b83356115b08161150e565b925060208401356115c08161150e565b929592945050506040919091013590565b5f80604083850312156115e2575f80fd5b82356115ed8161150e565b915060208301356115fd8161150e565b809150509250929050565b5f805f805f805f60e0888a03121561161e575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761044b5761044b61166f565b5f826116b457634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561044b5761044b61166f565b8082018082111561044b5761044b61166f565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611703575f80fd5b81516106678161150e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561175c5784516001600160a01b031683529383019391830191600101611737565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561178f575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ce2bcd1637aac14a0744c0c38170d777e337a9c208d72c98dd2f7cd2e98814c664736f6c63430008150033

Deployed Bytecode Sourcemap

5119:10013:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7507:67;;;;;;;;;;-1:-1:-1;7567:5:0;;;;;;;;;;;;-1:-1:-1;;;7567:5:0;;;;7507:67;;;;;;;:::i;:::-;;;;;;;;8267:133;;;;;;;;;;-1:-1:-1;8267:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8267:133:0;1023:187:1;9715:545:0;;;;;;;;;;-1:-1:-1;9715:545:0;;;;;:::i;:::-;;:::i;:::-;;5312:44;;;;;;;;;;-1:-1:-1;5312:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8406:132;;;;;;;;;;;;;:::i;:::-;;;1934:25:1;;;1922:2;1907:18;8406:132:0;1788:177:1;8550:309:0;;;;;;;;;;-1:-1:-1;8550:309:0;;;;;:::i;:::-;;:::i;2974:87::-;;;;;;;;;;-1:-1:-1;2974:87:0;;;;;:::i;:::-;3029:4;3054:5;-1:-1:-1;;;;;3043:16:0;;;3054:5;;3043:16;;2974:87;7657:67;;;;;;;;;;-1:-1:-1;7657:67:0;;5501:2;2573:36:1;;2561:2;2546:18;7657:67:0;2431:184:1;6803:59:0;;;;;;;;;;;;;;;;7880:103;;;;;;;;;;-1:-1:-1;7880:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7963:18:0;7946:7;7963:18;;;:9;:18;;;;;;;7880:103;3184:106;;;;;;;;;;;;;:::i;7796:78::-;;;;;;;;;;-1:-1:-1;7848:7:0;7866:5;-1:-1:-1;;;;;7866:5:0;7796:78;;;-1:-1:-1;;;;;2784:32:1;;;2766:51;;2754:2;2739:18;7796:78:0;2620:203:1;6733:63:0;;;;;;;;;;;;;;;;7580:71;;;;;;;;;;-1:-1:-1;7642:7:0;;;;;;;;;;;;-1:-1:-1;;;7642:7:0;;;;7580:71;;7730:60;;;;;;;;;;;;;:::i;7989:139::-;;;;;;;;;;-1:-1:-1;7989:139:0;;;;;:::i;:::-;;:::i;5610:26::-;;;;;;;;;;-1:-1:-1;5610:26:0;;;;-1:-1:-1;;;;;5610:26:0;;;6666:60;;;;;;;;;;;;;;;;8134:127;;;;;;;;;;-1:-1:-1;8134:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8232:18:0;;;8215:7;8232:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8134:127;9210:497;;;;;;;;;;-1:-1:-1;9210:497:0;;;;;:::i;:::-;;:::i;3067:111::-;;;;;;;;;;-1:-1:-1;3067:111:0;;;;;:::i;:::-;;:::i;8267:133::-;8342:4;8349:37;8358:10;8370:7;8379:6;8349:8;:37::i;:::-;-1:-1:-1;8394:4:0;8267:133;;;;;:::o;9715:545::-;3029:4;3054:5;-1:-1:-1;;;;;3054:5:0;2941:10;3043:16;2925:38;;;;-1:-1:-1;;;2925:38:0;;;;;;;:::i;:::-;;;;;;;;;9813:13:::1;9829:33;9856:5;9829:22;9846:4;9829:12;;:16;;:22;;;;:::i;:::-;:26:::0;::::1;:33::i;:::-;9813:49;;9864:19;9886:34;9914:5;9886:23;9903:5;9886:12;;:16;;:23;;;;:::i;:34::-;9864:56;;9922:17;9942:36;9972:5;9942:25;9959:7;9942:12;;:16;;:25;;;;:::i;:36::-;9989:12;:20:::0;;;10011:15:::1;:29:::0;;;10042:11:::1;:23:::0;;;9922:56;-1:-1:-1;;10092:30:0::1;10117:4;10092:20;10110:1;10092:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;10076:46;;10150:5;10141;:14;;:38;;;;;10174:5;10159:11;:20;;10141:38;:60;;;;;10196:5;10183:9;:18;;10141:60;10133:119;;;::::0;-1:-1:-1;;;10133:119:0;;4614:2:1;10133:119:0::1;::::0;::::1;4596:21:1::0;4653:2;4633:18;;;4626:30;4692:34;4672:18;;;4665:62;-1:-1:-1;;;4743:18:1;;;4736:44;4797:19;;10133:119:0::1;4412:410:1::0;10133:119:0::1;9802:458;;;;9715:545:::0;;;:::o;8406:132::-;7963:9;:18;;;;6353:42;8459:7;7963:18;;;;;8476:12;;8459:7;;8476:60;;7963:18;;8476:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8469:67;;8406:132;:::o;8550:309::-;8648:4;8665:36;8675:6;8683:9;8694:6;8665:9;:36::i;:::-;8712:117;8721:6;8729:10;8741:87;8777:6;8741:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8741:19:0;;;;;;:11;:19;;;;;;;;8761:10;8741:31;;;;;;;;;:87;:35;:87::i;:::-;8712:8;:117::i;:::-;-1:-1:-1;8847:4:0;8550:309;;;;;;:::o;3184:106::-;3029:4;3054:5;-1:-1:-1;;;;;3054:5:0;2941:10;3043:16;2925:38;;;;-1:-1:-1;;;2925:38:0;;;;;;;:::i;:::-;3247:1:::1;3231:18:::0;;-1:-1:-1;;;;;;3231:18:0::1;::::0;;3256:32:::1;::::0;2766:51:1;;;3256:32:0::1;::::0;2754:2:1;2739:18;3256:32:0::1;;;;;;;3184:106::o:0;7730:60::-;3029:4;3054:5;-1:-1:-1;;;;;3054:5:0;2941:10;3043:16;2925:38;;;;-1:-1:-1;;;2925:38:0;;;;;;;:::i;:::-;7768:13:::1;:20:::0;;-1:-1:-1;;;;7768:20:0::1;-1:-1:-1::0;;;7768:20:0::1;::::0;;7730:60::o;7989:139::-;8067:4;8074:40;8084:10;8096:9;8107:6;8074:9;:40::i;9210:497::-;3029:4;3054:5;-1:-1:-1;;;;;3054:5:0;2941:10;3043:16;2925:38;;;;-1:-1:-1;;;2925:38:0;;;;;;;:::i;:::-;9393:12:::1;:25:::0;;;9420:12:::1;:25:::0;;;9447:7:::1;:15:::0;;;9464:14:::1;:29:::0;;;9495:8:::1;:17:::0;;;9514:7:::1;:15:::0;;;9531:11:::1;:20:::0;;;9582:11:::1;::::0;9570:23;::::1;::::0;::::1;::::0;:49:::1;;;9608:11;;9597:7;;:22;;9570:49;:79;;;;;9638:11;;9623;;:26;;9570:79;9562:137;;;::::0;-1:-1:-1;;;9562:137:0;;5029:2:1;9562:137:0::1;::::0;::::1;5011:21:1::0;5068:2;5048:18;;;5041:30;5107:34;5087:18;;;5080:62;-1:-1:-1;;;5158:18:1;;;5151:43;5211:19;;9562:137:0::1;4827:409:1::0;3067:111:0;3029:4;3054:5;-1:-1:-1;;;;;3054:5:0;2941:10;3043:16;2925:38;;;;-1:-1:-1;;;2925:38:0;;;;;;;:::i;:::-;3133:5:::1;:11:::0;;-1:-1:-1;;;;;;3133:11:0::1;-1:-1:-1::0;;;;;3133:11:0;::::1;::::0;;::::1;::::0;;;3151:25:::1;::::0;2766:51:1;;;3151:25:0::1;::::0;2754:2:1;2739:18;3151:25:0::1;;;;;;;3067:111:::0;:::o;8867:335::-;-1:-1:-1;;;;;8960:19:0;;8952:68;;;;-1:-1:-1;;;8952:68:0;;5659:2:1;8952:68:0;;;5641:21:1;5698:2;5678:18;;;5671:30;5737:34;5717:18;;;5710:62;-1:-1:-1;;;5788:18:1;;;5781:34;5832:19;;8952:68:0;5457:400:1;8952:68:0;-1:-1:-1;;;;;9039:21:0;;9031:68;;;;-1:-1:-1;;;9031:68:0;;6064:2:1;9031:68:0;;;6046:21:1;6103:2;6083:18;;;6076:30;6142:34;6122:18;;;6115:62;-1:-1:-1;;;6193:18:1;;;6186:32;6235:19;;9031:68:0;5862:398:1;9031:68:0;-1:-1:-1;;;;;9110:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9162:32;;1934:25:1;;;9162:32:0;;1907:18:1;9162:32:0;;;;;;;8867:335;;;:::o;1731:98::-;1789:7;1816:5;1820:1;1816;:5;:::i;1837:98::-;1895:7;1922:5;1926:1;1922;:5;:::i;1625:98::-;1683:7;1710:5;1714:1;1710;:5;:::i;13689:1440::-;-1:-1:-1;;;;;13786:20:0;;13778:70;;;;-1:-1:-1;;;13778:70:0;;7127:2:1;13778:70:0;;;7109:21:1;7166:2;7146:18;;;7139:30;7205:34;7185:18;;;7178:62;-1:-1:-1;;;7256:18:1;;;7249:35;7301:19;;13778:70:0;6925:401:1;13778:70:0;-1:-1:-1;;;;;13867:23:0;;13859:71;;;;-1:-1:-1;;;13859:71:0;;7533:2:1;13859:71:0;;;7515:21:1;7572:2;7552:18;;;7545:30;7611:34;7591:18;;;7584:62;-1:-1:-1;;;7662:18:1;;;7655:33;7705:19;;13859:71:0;7331:399:1;13859:71:0;-1:-1:-1;;;;;13945:19:0;;;;;;:11;:19;;;;;;;;13944:20;:47;;;;-1:-1:-1;;;;;;13969:22:0;;;;;;:11;:22;;;;;;;;13968:23;13944:47;13941:93;;;14001:13;;-1:-1:-1;;;14001:13:0;;;;13993:39;;;;-1:-1:-1;;;13993:39:0;;7937:2:1;13993:39:0;;;7919:21:1;7976:2;7956:18;;;7949:30;-1:-1:-1;;;7995:18:1;;;7988:43;8048:18;;13993:39:0;7735:337:1;13993:39:0;-1:-1:-1;;;;;14048:19:0;;;;;;:11;:19;;;;;;;;14047:20;:47;;;;-1:-1:-1;;;;;;14072:22:0;;;;;;:11;:22;;;;;;;;14071:23;14047:47;:84;;;;-1:-1:-1;14119:11:0;;-1:-1:-1;;;;;14098:33:0;;;14119:11;;14098:33;;14047:84;:114;;;;-1:-1:-1;;;;;;14135:26:0;;6353:42;14135:26;;14047:114;14044:223;;;14219:11;;-1:-1:-1;;;;;14182:20:0;;;;;;:9;:20;;;;;;:32;;14207:6;14182:24;:32::i;:::-;14181:49;;14173:92;;;;-1:-1:-1;;;14173:92:0;;8279:2:1;14173:92:0;;;8261:21:1;8318:2;8298:18;;;8291:30;8357:32;8337:18;;;8330:60;8407:18;;14173:92:0;8077:354:1;14173:92:0;14290:11;;-1:-1:-1;;;;;14280:21:0;;;14290:11;;14280:21;14277:132;;14321:15;;14311:6;:25;;:48;;;-1:-1:-1;;;;;;14340:19:0;;;;;;:11;:19;;;;;;;;14311:48;:74;;;-1:-1:-1;;;;;;14363:22:0;;;;;;:11;:22;;;;;;;;14311:74;14303:104;;;;-1:-1:-1;;;14303:104:0;;8638:2:1;14303:104:0;;;8620:21:1;8677:2;8657:18;;;8650:30;-1:-1:-1;;;8696:18:1;;;8689:47;8753:18;;14303:104:0;8436:341:1;14303:104:0;14437:12;;14427:6;:22;;:45;;;-1:-1:-1;;;;;;14453:19:0;;;;;;:11;:19;;;;;;;;14427:45;:71;;;-1:-1:-1;;;;;;14476:22:0;;;;;;:11;:22;;;;;;;;14427:71;14419:101;;;;-1:-1:-1;;;14419:101:0;;8638:2:1;14419:101:0;;;8620:21:1;8677:2;8657:18;;;8650:30;-1:-1:-1;;;8696:18:1;;;8689:47;8753:18;;14419:101:0;8436:341:1;14419:101:0;14548:11;;-1:-1:-1;;;;;14535:24:0;;;14548:11;;14535:24;:48;;;;-1:-1:-1;;;;;;14564:19:0;;;;;;:11;:19;;;;;;;;14563:20;14535:48;14532:79;;;14607:1;14585:10;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;14532:79:0;14624:43;14641:6;14649:9;14660:6;14624:16;:43::i;:::-;14621:144;;;14712:4;7946:7;7963:18;;;:9;:18;;;;;;14669:69;;14690:47;;14720:16;;14690:3;:47::i;:::-;14669:20;:69::i;:::-;14761:1;14740:10;:23;14621:144;14780:13;;-1:-1:-1;;;14780:13:0;;;;14779:14;;:38;;-1:-1:-1;;;;;;14798:19:0;;;;;;:11;:19;;;;;;;;14797:20;14779:38;14775:98;;;-1:-1:-1;;;;;14841:17:0;;;;;;:9;:17;;;;;;:29;;14863:6;14841:21;:29::i;:::-;-1:-1:-1;;;;;14821:17:0;;;;;;:9;:17;;;;;:49;14775:98;14883:22;14908:32;14922:6;14930:9;14908:13;:32::i;:::-;:80;;14982:6;14908:80;;;14943:36;14953:6;14961:9;14972:6;14943:9;:36::i;:::-;-1:-1:-1;;;;;15022:20:0;;;;;;:9;:20;;;;;;14883:105;;-1:-1:-1;15022:40:0;;14883:105;15022:24;:40::i;:::-;-1:-1:-1;;;;;14999:20:0;;;;;;;:9;:20;;;;;;;:63;;;;15078:43;;;;;;;;;;15106:14;1934:25:1;;1922:2;1907:18;;1788:177;15078:43:0;;;;;;;;13767:1362;13689:1440;;;:::o;2049:240::-;2169:7;2230:12;2222:6;;;;2214:29;;;;-1:-1:-1;;;2214:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2265:5:0;;;2049:240::o;1519:98::-;1577:7;1604:5;1608:1;1604;:5;:::i;13274:407::-;13417:15;;13483:4;13374;7963:18;;;:9;:18;;;;;;13527:6;;13374:4;;13407:25;;;;;-1:-1:-1;;13465:43:0;;13527:6;;13526:7;:20;;;;-1:-1:-1;13537:9:0;;-1:-1:-1;;;13537:9:0;;;;13526:20;:37;;;;-1:-1:-1;13550:13:0;;-1:-1:-1;;;13550:13:0;;;;13526:37;:49;;;;;13567:8;13526:49;:73;;;;-1:-1:-1;;;;;;13580:19:0;;;;;;:11;:19;;;;;;;;13579:20;13526:73;:101;;;;-1:-1:-1;13616:11:0;;-1:-1:-1;;;;;13603:24:0;;;13616:11;;13603:24;13526:101;:129;;;;;13645:10;;13631;;:24;;13526:129;:147;;;;;13659:14;13526:147;13519:154;13274:407;-1:-1:-1;;;;;;13274:407:0:o;10268:105::-;10325:7;10355:1;10351;:5;10350:15;;10364:1;10350:15;;;-1:-1:-1;10360:1:0;10268:105;-1:-1:-1;10268:105:0:o;10379:1065::-;5963:6;:13;;-1:-1:-1;;5963:13:0;5972:4;5963:13;;;;;;10519:14:::1;::::0;10501:12:::1;::::0;10477::::1;::::0;5963:6;;10476:66:::1;::::0;10540:1:::1;::::0;10477:57:::1;::::0;10519:14;;10477:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;10476:66::-;10453:89;;10553:32;10588:42;10617:12;10588:24;10599:12;;10588:6;:10;;:24;;;;:::i;:42::-;10553:77:::0;-1:-1:-1;10641:14:0::1;10658:36;:6:::0;10553:77;10658:10:::1;:36::i;:::-;10641:53:::0;-1:-1:-1;10730:21:0::1;10762:23;10641:53:::0;10762:15:::1;:23::i;:::-;10796:20;10819:41;:21;10845:14:::0;10819:25:::1;:41::i;:::-;10796:64;;10871:19;10892:48;10909:30;10926:12;;10909;:16;;:30;;;;:::i;:::-;10892:12:::0;;:16:::1;:48::i;:::-;10871:69;;10951:29;10983;10999:12;;10983:11;:15;;:29;;;;:::i;:::-;10951:61:::0;-1:-1:-1;11026:34:0;;11023:103:::1;;11062:61;11075:24;11101:21;11062:12;:61::i;:::-;11182:12;::::0;11136:20:::1;::::0;11159:36:::1;::::0;:18:::1;:11:::0;11175:1:::1;11159:15;:18::i;:36::-;11136:59:::0;-1:-1:-1;11209:16:0;;11206:73:::1;;11235:18;::::0;11227:50:::1;::::0;-1:-1:-1;;;;;11235:18:0;;::::1;::::0;11227:50;::::1;;;::::0;11264:12;;11235:18:::1;11227:50:::0;11235:18;11227:50;11264:12;11235:18;11227:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11206:73;11315:21;11350:28:::0;;11347:90:::1;;11388:20;::::0;11380:55:::1;::::0;-1:-1:-1;;;;;11388:20:0;;::::1;::::0;11380:55;::::1;;;::::0;11419:15;;11388:20:::1;11380:55:::0;11388:20;11380:55;11419:15;11388:20;11380:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11347:90;-1:-1:-1::0;;5981:6:0;:14;;-1:-1:-1;;5981:14:0;;;-1:-1:-1;;;;;;;;10379:1065:0:o;12277:160::-;-1:-1:-1;;;;;12383:19:0;;12358:4;12383:19;;;:11;:19;;;;;;;;12382:20;:47;;;;-1:-1:-1;;;;;;;12407:22:0;;;;;:11;:22;;;;;;;;12406:23;;12277:160;-1:-1:-1;12277:160:0:o;12685:577::-;12773:7;12824:1;12796:25;12803:6;12811:9;12796:6;:25::i;:::-;:29;12793:447;;;12837:17;12857:54;12885:25;12892:6;12900:9;12885:6;:25::i;:::-;12868:11;;12857:23;;:6;;:10;:23::i;:54::-;12967:4;12949:24;;;;:9;:24;;;;;;12837:74;;-1:-1:-1;12949:39:0;;12837:74;12949:28;:39::i;:::-;12940:4;12922:24;;;;:9;:24;;;;;;;:66;;;;13004:42;;-1:-1:-1;;;;;13004:42:0;;;;;;;13036:9;1934:25:1;;1922:2;1907:18;;1788:177;13004:42:0;;;;;;;;13078:1;13060:7;;:20;:59;;;;;13112:7;;13084:25;13091:6;13099:9;13084:6;:25::i;:::-;:35;13060:59;13057:143;;;13121:77;13139:4;6353:42;13161:36;13189:7;;13161:23;13172:11;;13161:6;:10;;:23;;;;:::i;:36::-;13121:9;:77::i;:::-;13217:21;:6;13228:9;13217:10;:21::i;:::-;13210:28;;;;;12793:447;-1:-1:-1;13248:6:0;12685:577;-1:-1:-1;;12685:577:0:o;11815:454::-;11904:16;;;11918:1;11904:16;;;;;;;;11880:21;;11904:16;;;;;;;;;;-1:-1:-1;11904:16:0;11880:40;;11949:4;11931;11936:1;11931:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11931:23:0;;;:7;;;;;;;;;;:23;;;;11975:13;;:20;;;-1:-1:-1;;;11975:20:0;;;;:13;;;;;:18;;:20;;;;;11931:7;;11975:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11965:4;11970:1;11965:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11965:30:0;;;:7;;;;;;;;;:30;12038:13;;12006:60;;12023:4;;12038:13;12054:11;12006:8;:60::i;:::-;12077:13;;:184;;-1:-1:-1;;;12077:184:0;;-1:-1:-1;;;;;12077:13:0;;;;:64;;:184;;12156:11;;12077:13;;12198:4;;12225;;12245:15;;12077:184;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11869:400;11815:454;:::o;11450:357::-;11563:13;;11531:60;;11548:4;;-1:-1:-1;;;;;11563:13:0;11579:11;11531:8;:60::i;:::-;11602:13;;11750:18;;11602:197;;-1:-1:-1;;;11602:197:0;;11672:4;11602:197;;;10758:34:1;10808:18;;;10801:34;;;11602:13:0;10851:18:1;;;10844:34;;;10894:18;;;10887:34;-1:-1:-1;;;;;11750:18:0;;;10937:19:1;;;10930:44;11783:15:0;10990:19:1;;;10983:35;11602:13:0;;;:29;;11639:9;;10692:19:1;;11602:197:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11450:357;;:::o;12449:228::-;12559:11;;12523:7;;-1:-1:-1;;;;;12559:11:0;;;12546:24;;;;12543:45;;-1:-1:-1;12579:7:0;;12572:14;;12543:45;12611:11;;-1:-1:-1;;;;;12611:11:0;;;12601:21;;;;12598:43;;-1:-1:-1;12631:8:0;;12624:15;;12598:43;-1:-1:-1;12658:11:0;;12449:228;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:316::-;1292:6;1300;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:52;;;1377:1;1374;1367:12;1329:52;-1:-1:-1;;1400:23:1;;;1470:2;1455:18;;1442:32;;-1:-1:-1;1521:2:1;1506:18;;;1493:32;;1215:316;-1:-1:-1;1215:316:1:o;1536:247::-;1595:6;1648:2;1636:9;1627:7;1623:23;1619:32;1616:52;;;1664:1;1661;1654:12;1616:52;1703:9;1690:23;1722:31;1747:5;1722:31;:::i;1970:456::-;2047:6;2055;2063;2116:2;2104:9;2095:7;2091:23;2087:32;2084:52;;;2132:1;2129;2122:12;2084:52;2171:9;2158:23;2190:31;2215:5;2190:31;:::i;:::-;2240:5;-1:-1:-1;2297:2:1;2282:18;;2269:32;2310:33;2269:32;2310:33;:::i;:::-;1970:456;;2362:7;;-1:-1:-1;;;2416:2:1;2401:18;;;;2388:32;;1970:456::o;2828:388::-;2896:6;2904;2957:2;2945:9;2936:7;2932:23;2928:32;2925:52;;;2973:1;2970;2963:12;2925:52;3012:9;2999:23;3031:31;3056:5;3031:31;:::i;:::-;3081:5;-1:-1:-1;3138:2:1;3123:18;;3110:32;3151:33;3110:32;3151:33;:::i;:::-;3203:7;3193:17;;;2828:388;;;;;:::o;3221:592::-;3334:6;3342;3350;3358;3366;3374;3382;3435:3;3423:9;3414:7;3410:23;3406:33;3403:53;;;3452:1;3449;3442:12;3403:53;-1:-1:-1;;3475:23:1;;;3545:2;3530:18;;3517:32;;-1:-1:-1;3596:2:1;3581:18;;3568:32;;3647:2;3632:18;;3619:32;;-1:-1:-1;3698:3:1;3683:19;;3670:33;;-1:-1:-1;3750:3:1;3735:19;;3722:33;;-1:-1:-1;3802:3:1;3787:19;3774:33;;-1:-1:-1;3221:592:1;-1:-1:-1;3221:592:1:o;4078:329::-;4280:2;4262:21;;;4319:1;4299:18;;;4292:29;-1:-1:-1;;;4352:2:1;4337:18;;4330:36;4398:2;4383:18;;4078:329::o;6265:127::-;6326:10;6321:3;6317:20;6314:1;6307:31;6357:4;6354:1;6347:15;6381:4;6378:1;6371:15;6397:168;6470:9;;;6501;;6518:15;;;6512:22;;6498:37;6488:71;;6539:18;;:::i;6570:217::-;6610:1;6636;6626:132;;6680:10;6675:3;6671:20;6668:1;6661:31;6715:4;6712:1;6705:15;6743:4;6740:1;6733:15;6626:132;-1:-1:-1;6772:9:1;;6570:217::o;6792:128::-;6859:9;;;6880:11;;;6877:37;;;6894:18;;:::i;8782:125::-;8847:9;;;8868:10;;;8865:36;;;8881:18;;:::i;9044:127::-;9105:10;9100:3;9096:20;9093:1;9086:31;9136:4;9133:1;9126:15;9160:4;9157:1;9150:15;9176:251;9246:6;9299:2;9287:9;9278:7;9274:23;9270:32;9267:52;;;9315:1;9312;9305:12;9267:52;9347:9;9341:16;9366:31;9391:5;9366:31;:::i;9432:980::-;9694:4;9742:3;9731:9;9727:19;9773:6;9762:9;9755:25;9799:2;9837:6;9832:2;9821:9;9817:18;9810:34;9880:3;9875:2;9864:9;9860:18;9853:31;9904:6;9939;9933:13;9970:6;9962;9955:22;10008:3;9997:9;9993:19;9986:26;;10047:2;10039:6;10035:15;10021:29;;10068:1;10078:195;10092:6;10089:1;10086:13;10078:195;;;10157:13;;-1:-1:-1;;;;;10153:39:1;10141:52;;10248:15;;;;10213:12;;;;10189:1;10107:9;10078:195;;;-1:-1:-1;;;;;;;10329:32:1;;;;10324:2;10309:18;;10302:60;-1:-1:-1;;;10393:3:1;10378:19;10371:35;10290:3;9432:980;-1:-1:-1;;;9432:980:1:o;11029:306::-;11117:6;11125;11133;11186:2;11174:9;11165:7;11161:23;11157:32;11154:52;;;11202:1;11199;11192:12;11154:52;11231:9;11225:16;11215:26;;11281:2;11270:9;11266:18;11260:25;11250:35;;11325:2;11314:9;11310:18;11304:25;11294:35;;11029:306;;;;;:::o

Swarm Source

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