ETH Price: $2,628.11 (+1.47%)

Token

DEADASS (DEADASS)
 

Overview

Max Total Supply

417,689,920,223,180.553851028 DEADASS

Holders

110

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000384516 DEADASS

Value
$0.00
0x0fC3d112Ae07eF60Ae5c8354848E4CcF86CbbA89
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:
DEADASS

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.10;

//May the gains be with you

library SafeMath {
    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 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 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;}}}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(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);}
    event OwnershipTransferred(address owner);
}

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

interface IRouter {
    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 removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}
//Dev sets all the parameters for the token
contract DEADASS is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'DEADASS';
    string private constant _symbol = 'DEADASS';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 420690000000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 200; // 10000;
    uint256 private _maxTransferPercent = 200;
    uint256 private _maxWalletPercent = 200;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 2000;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2000;
    uint256 private sellFee = 4000;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping; 
    uint256 public swapThreshold = ( _totalSupply * 200 ) / 10000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0xC99eF92ab647FdF0ffdCe53a6b66772A87079158; 
    address internal constant marketing_receiver = 0xC99eF92ab647FdF0ffdCe53a6b66772A87079158;
    address internal constant liquidity_receiver = 0xC99eF92ab647FdF0ffdCe53a6b66772A87079158;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    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 enableTrading() external onlyOwner {tradingAllowed = 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 isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisfeeExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    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 _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;}

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    //Dev sets fee
    function changeTaxes(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.div(4) && sellFee <= denominator.div(4), "totalFee and sellFee cannot be more than 25%");
    }

    //Dev sets new limits for buy, sell, transfer and wallet
    function changeLimits(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        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 checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxTransferAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        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;
        swapTokensForETH(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 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){payable(development_receiver).transfer(remainingBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

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

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(1) && aboveThreshold;
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

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

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function changeSwapamount(uint256 _swapThreshold) public onlyOwner {
        swapThreshold = _swapThreshold;
    
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    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);
    }

}

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":[],"name":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"changeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"changeSwapamount","outputs":[],"stateMutability":"nonpayable","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":"changeTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisfeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200042e565b620000259066017e9d8602b40062000446565b600181815560c86002819055600381905560048190556009805460ff60a01b191690556000600a8190556107d0600b819055600c829055600d829055600e55610fa0600f5560105561271060118190556012805460ff19169093179092559091620000909162000446565b6200009c919062000468565b601555620186a0600154600a620000b4919062000446565b620000c0919062000468565b601655348015620000d057600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000138573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015e91906200048b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d291906200048b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024691906200048b565b600880546001600160a01b038581166001600160a01b0319928316179092556009805492841692909116919091179055306000908152600760209081526040808320805460ff1990811660019081179092557f87dac1bfa0d1a284327cb0bd6941609bf8ffc20d04c2f9badf568cdb9273e1f98054821683179055338086528386208054909216831790915590546005845282852081905591519182529394507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620004b6565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200037057816000190482111562000354576200035462000319565b808516156200036257918102915b93841c939080029062000334565b509250929050565b600082620003895750600162000428565b81620003985750600062000428565b8160018114620003b15760028114620003bc57620003dc565b600191505062000428565b60ff841115620003d057620003d062000319565b50506001821b62000428565b5060208310610133831016604e8410600b841016171562000401575081810a62000428565b6200040d83836200032f565b806000190482111562000424576200042462000319565b0290505b92915050565b60006200043f60ff84168362000378565b9392505050565b600081600019048311821515161562000463576200046362000319565b500290565b6000826200048657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200049e57600080fd5b81516001600160a01b03811681146200043f57600080fd5b611a5e80620004c66000396000f3fe6080604052600436106101445760003560e01c806378109e54116100b6578063a9059cbb1161006f578063a9059cbb1461038d578063c75c1cbd146103ad578063d37e9177146103cd578063dd62ed3e146103ed578063f2fde38b14610433578063f4ab71111461045357600080fd5b806378109e54146102fc5780637d1db4a514610311578063893d20e8146103265780638a8c523c1461035857806395d89b4114610179578063a8aa1b311461036d57600080fd5b806323b872dd1161010857806323b872dd146102095780632f54bf6e14610229578063313ce567146102585780633f4218e0146102745780634d808802146102a457806370a08231146102c657600080fd5b80630445b6671461015057806306fdde0314610179578063095ea7b3146101af57806318160ddd146101df5780631f976b7e146101f457600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061016660155481565b6040519081526020015b60405180910390f35b34801561018557600080fd5b5060408051808201825260078152664445414441535360c81b602082015290516101709190611694565b3480156101bb57600080fd5b506101cf6101ca366004611701565b610473565b6040519015158152602001610170565b3480156101eb57600080fd5b5061016661048a565b34801561020057600080fd5b506101666104fb565b34801561021557600080fd5b506101cf61022436600461172d565b61051f565b34801561023557600080fd5b506101cf61024436600461176e565b6000546001600160a01b0391821691161490565b34801561026457600080fd5b5060405160098152602001610170565b34801561028057600080fd5b506101cf61028f36600461176e565b60076020526000908152604090205460ff1681565b3480156102b057600080fd5b506102c46102bf36600461178b565b610589565b005b3480156102d257600080fd5b506101666102e136600461176e565b6001600160a01b031660009081526005602052604090205490565b34801561030857600080fd5b506101666106e2565b34801561031d57600080fd5b506101666106f2565b34801561033257600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610170565b34801561036457600080fd5b506102c4610702565b34801561037957600080fd5b50600954610340906001600160a01b031681565b34801561039957600080fd5b506101cf6103a8366004611701565b610741565b3480156103b957600080fd5b506102c46103c83660046117b7565b61074e565b3480156103d957600080fd5b506102c46103e83660046117d0565b61077d565b3480156103f957600080fd5b5061016661040836600461180e565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561043f57600080fd5b506102c461044e36600461176e565b6107d2565b34801561045f57600080fd5b506102c461046e36600461183c565b610850565b600061048033848461092c565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460015491926104f69290916104f09190610a50565b90610a50565b905090565b600060115460035461050b61048a565b610515919061189e565b6104f691906118bd565b600061052c848484610a5c565b61057e843361057985604051806060016040528060288152602001611a01602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610b82565b61092c565b5060015b9392505050565b6000546001600160a01b031633146105bc5760405162461bcd60e51b81526004016105b3906118df565b60405180910390fd5b6000612710846105ca61048a565b6105d4919061189e565b6105de91906118bd565b90506000612710846105ee61048a565b6105f8919061189e565b61060291906118bd565b905060006127108461061261048a565b61061c919061189e565b61062691906118bd565b600287905560038690556004859055905060006106586103e8610652600561064c61048a565b90610bae565b90610bba565b905080841015801561066a5750808310155b80156106765750808210155b6106d95760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105b3565b50505050505050565b600060115460045461050b61048a565b600060115460025461050b61048a565b6000546001600160a01b0316331461072c5760405162461bcd60e51b81526004016105b3906118df565b6009805460ff60a01b1916600160a01b179055565b6000610480338484610a5c565b6000546001600160a01b031633146107785760405162461bcd60e51b81526004016105b3906118df565b601555565b6000546001600160a01b031633146107a75760405162461bcd60e51b81526004016105b3906118df565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146107fc5760405162461bcd60e51b81526004016105b3906118df565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b0316331461087a5760405162461bcd60e51b81526004016105b3906118df565b600a879055600b869055600d859055600c849055600e839055600f82905560108190556011546108ab906004610bba565b600e54111580156108cb57506011546108c5906004610bba565b600f5411155b6106d95760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032352560a01b60648201526084016105b3565b6001600160a01b03831661098e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b3565b6001600160a01b0382166109ef5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b3565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061058282846118ff565b610a67838383610bc6565b610a718383610d75565b610a7c838383610e0a565b610a868383610efb565b610a91838383610f52565b610a9c838383611089565b6001600160a01b038316600090815260056020526040902054610abf9082610a50565b6001600160a01b038416600090815260056020526040812091909155610ae584846110ae565b610aef5781610afa565b610afa8484846110f4565b6001600160a01b038416600090815260056020526040902054909150610b2090826111e2565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b749085815260200190565b60405180910390a350505050565b60008184841115610ba65760405162461bcd60e51b81526004016105b39190611694565b505050900390565b6000610582828461189e565b600061058282846118bd565b6001600160a01b038316610c2a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b3565b6001600160a01b038216610c8c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b3565b60008111610cee5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105b3565b6001600160a01b038316600090815260056020526040902054811115610d705760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105b3565b505050565b6001600160a01b03821660009081526007602052604090205460ff16158015610db757506001600160a01b03811660009081526007602052604090205460ff16155b15610e0657600954600160a01b900460ff16610e065760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105b3565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610e4c57506001600160a01b03821660009081526007602052604090205460ff16155b8015610e6657506009546001600160a01b03838116911614155b8015610e7d57506001600160a01b03821661dead14155b15610d7057610e8a6106e2565b6001600160a01b038316600090815260056020526040902054610ead90836111e2565b1115610d705760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105b3565b6009546001600160a01b038281169116148015610f3157506001600160a01b03821660009081526007602052604090205460ff16155b15610e0657600160136000828254610f499190611916565b90915550505050565b6009546001600160a01b03848116911614610ff857610f6f6104fb565b81111580610f9557506001600160a01b03831660009081526007602052604090205460ff165b80610fb857506001600160a01b03821660009081526007602052604090205460ff165b610ff85760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105b3565b6110006106f2565b8111158061102657506001600160a01b03831660009081526007602052604090205460ff165b8061104957506001600160a01b03821660009081526007602052604090205460ff165b610d705760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105b3565b6110948383836111ee565b15610d70576110a46015546112a0565b6000601355505050565b6001600160a01b03821660009081526007602052604081205460ff161580156105825750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611101858561142b565b11156111db576000611124611116868661142b565b60115461064c908690610bba565b3060009081526005602052604090205490915061114190826111e2565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111929085815260200190565b60405180910390a3600d54156111c9576111c93061dead6111c4600d5461064c60115489610bba90919063ffffffff16565b610a5c565b6111d38382610a50565b915050610582565b5092915050565b60006105828284611916565b6016546015543060009081526005602052604081205460145491938510159211159060ff16158015611222575060125460ff165b80156112375750600954600160a01b900460ff165b80156112405750815b801561126557506001600160a01b03861660009081526007602052604090205460ff16155b801561127e57506009546001600160a01b038681169116145b801561128d5750600160135410155b80156112965750805b9695505050505050565b6014805460ff19166001908117909155600c54600b54600a546000936112da9360029361064c9391926112d49283916111e2565b906111e2565b905060006112f782610652600a5486610bae90919063ffffffff16565b905060006113058483610a50565b90504761131182611476565b600061131d4783610a50565b90506000611340611339600a5488610a5090919063ffffffff16565b8390610bba565b90506000611359600a5483610bae90919063ffffffff16565b9050801561136b5761136b86826115d0565b600b546000906113809061064c856002610bae565b905080156113cb5760405173c99ef92ab647fdf0ffdce53a6b66772a870791589082156108fc029083906000818181858888f193505050501580156113c9573d6000803e3d6000fd5b505b4780156114155760405173c99ef92ab647fdf0ffdce53a6b66772a870791589082156108fc029083906000818181858888f19350505050158015611413573d6000803e3d6000fd5b505b50506014805460ff191690555050505050505050565b6009546000906001600160a01b038381169116141561144d5750600f54610484565b6009546001600160a01b038481169116141561146c5750600e54610484565b5060105492915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114ab576114ab61192e565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611504573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115289190611944565b8160018151811061153b5761153b61192e565b6001600160a01b039283166020918202929092010152600854611561913091168461092c565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac9479061159a908590600090869030904290600401611961565b600060405180830381600087803b1580156115b457600080fd5b505af11580156115c8573d6000803e3d6000fd5b505050505050565b6008546115e89030906001600160a01b03168461092c565b60085460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015273c99ef92ab647fdf0ffdce53a6b66772a8707915860848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611668573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061168d91906119d2565b5050505050565b600060208083528351808285015260005b818110156116c1578581018301518582016040015282016116a5565b818111156116d3576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146116fe57600080fd5b50565b6000806040838503121561171457600080fd5b823561171f816116e9565b946020939093013593505050565b60008060006060848603121561174257600080fd5b833561174d816116e9565b9250602084013561175d816116e9565b929592945050506040919091013590565b60006020828403121561178057600080fd5b8135610582816116e9565b6000806000606084860312156117a057600080fd5b505081359360208301359350604090920135919050565b6000602082840312156117c957600080fd5b5035919050565b600080604083850312156117e357600080fd5b82356117ee816116e9565b91506020830135801515811461180357600080fd5b809150509250929050565b6000806040838503121561182157600080fd5b823561182c816116e9565b91506020830135611803816116e9565b600080600080600080600060e0888a03121561185757600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156118b8576118b8611888565b500290565b6000826118da57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60008282101561191157611911611888565b500390565b6000821982111561192957611929611888565b500190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561195657600080fd5b8151610582816116e9565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119b15784516001600160a01b03168352938301939183019160010161198c565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156119e757600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122026d70fff216a8d7de3f0a4e68650c3c70f4c57f0c68360302a0ebbdafc764d1664736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106101445760003560e01c806378109e54116100b6578063a9059cbb1161006f578063a9059cbb1461038d578063c75c1cbd146103ad578063d37e9177146103cd578063dd62ed3e146103ed578063f2fde38b14610433578063f4ab71111461045357600080fd5b806378109e54146102fc5780637d1db4a514610311578063893d20e8146103265780638a8c523c1461035857806395d89b4114610179578063a8aa1b311461036d57600080fd5b806323b872dd1161010857806323b872dd146102095780632f54bf6e14610229578063313ce567146102585780633f4218e0146102745780634d808802146102a457806370a08231146102c657600080fd5b80630445b6671461015057806306fdde0314610179578063095ea7b3146101af57806318160ddd146101df5780631f976b7e146101f457600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061016660155481565b6040519081526020015b60405180910390f35b34801561018557600080fd5b5060408051808201825260078152664445414441535360c81b602082015290516101709190611694565b3480156101bb57600080fd5b506101cf6101ca366004611701565b610473565b6040519015158152602001610170565b3480156101eb57600080fd5b5061016661048a565b34801561020057600080fd5b506101666104fb565b34801561021557600080fd5b506101cf61022436600461172d565b61051f565b34801561023557600080fd5b506101cf61024436600461176e565b6000546001600160a01b0391821691161490565b34801561026457600080fd5b5060405160098152602001610170565b34801561028057600080fd5b506101cf61028f36600461176e565b60076020526000908152604090205460ff1681565b3480156102b057600080fd5b506102c46102bf36600461178b565b610589565b005b3480156102d257600080fd5b506101666102e136600461176e565b6001600160a01b031660009081526005602052604090205490565b34801561030857600080fd5b506101666106e2565b34801561031d57600080fd5b506101666106f2565b34801561033257600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610170565b34801561036457600080fd5b506102c4610702565b34801561037957600080fd5b50600954610340906001600160a01b031681565b34801561039957600080fd5b506101cf6103a8366004611701565b610741565b3480156103b957600080fd5b506102c46103c83660046117b7565b61074e565b3480156103d957600080fd5b506102c46103e83660046117d0565b61077d565b3480156103f957600080fd5b5061016661040836600461180e565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561043f57600080fd5b506102c461044e36600461176e565b6107d2565b34801561045f57600080fd5b506102c461046e36600461183c565b610850565b600061048033848461092c565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460015491926104f69290916104f09190610a50565b90610a50565b905090565b600060115460035461050b61048a565b610515919061189e565b6104f691906118bd565b600061052c848484610a5c565b61057e843361057985604051806060016040528060288152602001611a01602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610b82565b61092c565b5060015b9392505050565b6000546001600160a01b031633146105bc5760405162461bcd60e51b81526004016105b3906118df565b60405180910390fd5b6000612710846105ca61048a565b6105d4919061189e565b6105de91906118bd565b90506000612710846105ee61048a565b6105f8919061189e565b61060291906118bd565b905060006127108461061261048a565b61061c919061189e565b61062691906118bd565b600287905560038690556004859055905060006106586103e8610652600561064c61048a565b90610bae565b90610bba565b905080841015801561066a5750808310155b80156106765750808210155b6106d95760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105b3565b50505050505050565b600060115460045461050b61048a565b600060115460025461050b61048a565b6000546001600160a01b0316331461072c5760405162461bcd60e51b81526004016105b3906118df565b6009805460ff60a01b1916600160a01b179055565b6000610480338484610a5c565b6000546001600160a01b031633146107785760405162461bcd60e51b81526004016105b3906118df565b601555565b6000546001600160a01b031633146107a75760405162461bcd60e51b81526004016105b3906118df565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146107fc5760405162461bcd60e51b81526004016105b3906118df565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b0316331461087a5760405162461bcd60e51b81526004016105b3906118df565b600a879055600b869055600d859055600c849055600e839055600f82905560108190556011546108ab906004610bba565b600e54111580156108cb57506011546108c5906004610bba565b600f5411155b6106d95760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032352560a01b60648201526084016105b3565b6001600160a01b03831661098e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b3565b6001600160a01b0382166109ef5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b3565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061058282846118ff565b610a67838383610bc6565b610a718383610d75565b610a7c838383610e0a565b610a868383610efb565b610a91838383610f52565b610a9c838383611089565b6001600160a01b038316600090815260056020526040902054610abf9082610a50565b6001600160a01b038416600090815260056020526040812091909155610ae584846110ae565b610aef5781610afa565b610afa8484846110f4565b6001600160a01b038416600090815260056020526040902054909150610b2090826111e2565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b749085815260200190565b60405180910390a350505050565b60008184841115610ba65760405162461bcd60e51b81526004016105b39190611694565b505050900390565b6000610582828461189e565b600061058282846118bd565b6001600160a01b038316610c2a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b3565b6001600160a01b038216610c8c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b3565b60008111610cee5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105b3565b6001600160a01b038316600090815260056020526040902054811115610d705760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105b3565b505050565b6001600160a01b03821660009081526007602052604090205460ff16158015610db757506001600160a01b03811660009081526007602052604090205460ff16155b15610e0657600954600160a01b900460ff16610e065760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105b3565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610e4c57506001600160a01b03821660009081526007602052604090205460ff16155b8015610e6657506009546001600160a01b03838116911614155b8015610e7d57506001600160a01b03821661dead14155b15610d7057610e8a6106e2565b6001600160a01b038316600090815260056020526040902054610ead90836111e2565b1115610d705760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105b3565b6009546001600160a01b038281169116148015610f3157506001600160a01b03821660009081526007602052604090205460ff16155b15610e0657600160136000828254610f499190611916565b90915550505050565b6009546001600160a01b03848116911614610ff857610f6f6104fb565b81111580610f9557506001600160a01b03831660009081526007602052604090205460ff165b80610fb857506001600160a01b03821660009081526007602052604090205460ff165b610ff85760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105b3565b6110006106f2565b8111158061102657506001600160a01b03831660009081526007602052604090205460ff165b8061104957506001600160a01b03821660009081526007602052604090205460ff165b610d705760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105b3565b6110948383836111ee565b15610d70576110a46015546112a0565b6000601355505050565b6001600160a01b03821660009081526007602052604081205460ff161580156105825750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611101858561142b565b11156111db576000611124611116868661142b565b60115461064c908690610bba565b3060009081526005602052604090205490915061114190826111e2565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111929085815260200190565b60405180910390a3600d54156111c9576111c93061dead6111c4600d5461064c60115489610bba90919063ffffffff16565b610a5c565b6111d38382610a50565b915050610582565b5092915050565b60006105828284611916565b6016546015543060009081526005602052604081205460145491938510159211159060ff16158015611222575060125460ff165b80156112375750600954600160a01b900460ff165b80156112405750815b801561126557506001600160a01b03861660009081526007602052604090205460ff16155b801561127e57506009546001600160a01b038681169116145b801561128d5750600160135410155b80156112965750805b9695505050505050565b6014805460ff19166001908117909155600c54600b54600a546000936112da9360029361064c9391926112d49283916111e2565b906111e2565b905060006112f782610652600a5486610bae90919063ffffffff16565b905060006113058483610a50565b90504761131182611476565b600061131d4783610a50565b90506000611340611339600a5488610a5090919063ffffffff16565b8390610bba565b90506000611359600a5483610bae90919063ffffffff16565b9050801561136b5761136b86826115d0565b600b546000906113809061064c856002610bae565b905080156113cb5760405173c99ef92ab647fdf0ffdce53a6b66772a870791589082156108fc029083906000818181858888f193505050501580156113c9573d6000803e3d6000fd5b505b4780156114155760405173c99ef92ab647fdf0ffdce53a6b66772a870791589082156108fc029083906000818181858888f19350505050158015611413573d6000803e3d6000fd5b505b50506014805460ff191690555050505050505050565b6009546000906001600160a01b038381169116141561144d5750600f54610484565b6009546001600160a01b038481169116141561146c5750600e54610484565b5060105492915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114ab576114ab61192e565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611504573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115289190611944565b8160018151811061153b5761153b61192e565b6001600160a01b039283166020918202929092010152600854611561913091168461092c565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac9479061159a908590600090869030904290600401611961565b600060405180830381600087803b1580156115b457600080fd5b505af11580156115c8573d6000803e3d6000fd5b505050505050565b6008546115e89030906001600160a01b03168461092c565b60085460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015273c99ef92ab647fdf0ffdce53a6b66772a8707915860848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611668573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061168d91906119d2565b5050505050565b600060208083528351808285015260005b818110156116c1578581018301518582016040015282016116a5565b818111156116d3576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146116fe57600080fd5b50565b6000806040838503121561171457600080fd5b823561171f816116e9565b946020939093013593505050565b60008060006060848603121561174257600080fd5b833561174d816116e9565b9250602084013561175d816116e9565b929592945050506040919091013590565b60006020828403121561178057600080fd5b8135610582816116e9565b6000806000606084860312156117a057600080fd5b505081359360208301359350604090920135919050565b6000602082840312156117c957600080fd5b5035919050565b600080604083850312156117e357600080fd5b82356117ee816116e9565b91506020830135801515811461180357600080fd5b809150509250929050565b6000806040838503121561182157600080fd5b823561182c816116e9565b91506020830135611803816116e9565b600080600080600080600060e0888a03121561185757600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156118b8576118b8611888565b500290565b6000826118da57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60008282101561191157611911611888565b500390565b6000821982111561192957611929611888565b500190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561195657600080fd5b8151610582816116e9565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119b15784516001600160a01b03168352938301939183019160010161198c565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156119e757600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122026d70fff216a8d7de3f0a4e68650c3c70f4c57f0c68360302a0ebbdafc764d1664736f6c634300080a0033

Deployed Bytecode Sourcemap

4695:11592:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5808:61;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5808:61:0;;;;;;;;6993:67;;;;;;;;;;-1:-1:-1;7053:5:0;;;;;;;;;;;-1:-1:-1;;;7053:5:0;;;;6993:67;;;;7053:5;6993:67;:::i;8012:133::-;;;;;;;;;;-1:-1:-1;8012:133:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;8012:133:0;1254:187:1;8151:132:0;;;;;;;;;;;;;:::i;8528:119::-;;;;;;;;;;;;;:::i;15630:309::-;;;;;;;;;;-1:-1:-1;15630:309:0;;;;;:::i;:::-;;:::i;3032:87::-;;;;;;;;;;-1:-1:-1;3032:87:0;;;;;:::i;:::-;3087:4;3112:5;-1:-1:-1;;;;;3101:16:0;;;3112:5;;3101:16;;3032:87;7143:67;;;;;;;;;;-1:-1:-1;7143:67:0;;4904:1;2301:36:1;;2289:2;2274:18;7143:67:0;2159:184:1;5258:44:0;;;;;;;;;;-1:-1:-1;5258:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10412:583;;;;;;;;;;-1:-1:-1;10412:583:0;;;;;:::i;:::-;;:::i;:::-;;7374:103;;;;;;;;;;-1:-1:-1;7374:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7457:18:0;7440:7;7457:18;;;:9;:18;;;;;;;7374:103;8289:114;;;;;;;;;;;;;:::i;8409:113::-;;;;;;;;;;;;;:::i;7290:78::-;;;;;;;;;;-1:-1:-1;7342:7:0;7360:5;-1:-1:-1;;;;;7360:5:0;7290:78;;;-1:-1:-1;;;;;2833:32:1;;;2815:51;;2803:2;2788:18;7290:78:0;2669:203:1;7216:68:0;;;;;;;;;;;;;:::i;5330:19::-;;;;;;;;;;-1:-1:-1;5330:19:0;;;;-1:-1:-1;;;;;5330:19:0;;;7483:139;;;;;;;;;;-1:-1:-1;7483:139:0;;;;;:::i;:::-;;:::i;14946:122::-;;;;;;;;;;-1:-1:-1;14946:122:0;;;;;:::i;:::-;;:::i;7895:111::-;;;;;;;;;;-1:-1:-1;7895:111:0;;;;;:::i;:::-;;:::i;7628:127::-;;;;;;;;;;-1:-1:-1;7628:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7726:18:0;;;7709:7;7726:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7628:127;3125:111;;;;;;;;;;-1:-1:-1;3125:111:0;;;;;:::i;:::-;;:::i;9816:526::-;;;;;;;;;;-1:-1:-1;9816:526:0;;;;;:::i;:::-;;:::i;8012:133::-;8087:4;8094:37;8103:10;8115:7;8124:6;8094:8;:37::i;:::-;-1:-1:-1;8139:4:0;8012:133;;;;;:::o;8151:132::-;7457:9;:18;;;;6048:42;8204:7;7457:18;;;;;8221:12;;8204:7;;8221:60;;7457:18;;8221:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8214:67;;8151:132;:::o;8528:119::-;8579:7;8634:11;;8612:19;;8596:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;15630:309::-;15728:4;15745:36;15755:6;15763:9;15774:6;15745:9;:36::i;:::-;15792:117;15801:6;15809:10;15821:87;15857:6;15821:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15821:19:0;;;;;;:11;:19;;;;;;;;15841:10;15821:31;;;;;;;;;:87;:35;:87::i;:::-;15792:8;:117::i;:::-;-1:-1:-1;15927:4:0;15630:309;;;;;;:::o;10412:583::-;3087:4;3112:5;-1:-1:-1;;;;;3112:5:0;2999:10;3101:16;2983:38;;;;-1:-1:-1;;;2983:38:0;;;;;;;:::i;:::-;;;;;;;;;10511:13:::1;10552:5;10544:4;10528:13;:11;:13::i;:::-;:20;;;;:::i;:::-;10527:30;;;;:::i;:::-;10511:46;;10568:19;10617:5;10607:6;10591:13;:11;:13::i;:::-;:22;;;;:::i;:::-;10590:32;;;;:::i;:::-;10568:54;;10633:17;10681:5;10670:7;10654:13;:11;:13::i;:::-;:23;;;;:::i;:::-;10653:33;;;;:::i;:::-;10697:19;:26:::0;;;10734:19:::1;:28:::0;;;10773:17:::1;:27:::0;;;10633:53;-1:-1:-1;;10827:30:0::1;10852:4;10827:20;10845:1;10827:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;10811:46;;10885:5;10876;:14;;:38;;;;;10909:5;10894:11;:20;;10876:38;:60;;;;;10931:5;10918:9;:18;;10876:60;10868:119;;;::::0;-1:-1:-1;;;10868:119:0;;5796:2:1;10868:119:0::1;::::0;::::1;5778:21:1::0;5835:2;5815:18;;;5808:30;5874:34;5854:18;;;5847:62;-1:-1:-1;;;5925:18:1;;;5918:44;5979:19;;10868:119:0::1;5594:410:1::0;10868:119:0::1;10500:495;;;;10412:583:::0;;;:::o;8289:114::-;8337:7;8390:11;;8370:17;;8354:13;:11;:13::i;8409:113::-;8454:7;8509:11;;8487:19;;8471:13;:11;:13::i;7216:68::-;3087:4;3112:5;-1:-1:-1;;;;;3112:5:0;2999:10;3101:16;2983:38;;;;-1:-1:-1;;;2983:38:0;;;;;;;:::i;:::-;7261:14:::1;:21:::0;;-1:-1:-1;;;;7261:21:0::1;-1:-1:-1::0;;;7261:21:0::1;::::0;;7216:68::o;7483:139::-;7561:4;7568:40;7578:10;7590:9;7601:6;7568:9;:40::i;14946:122::-;3087:4;3112:5;-1:-1:-1;;;;;3112:5:0;2999:10;3101:16;2983:38;;;;-1:-1:-1;;;2983:38:0;;;;;;;:::i;:::-;15024:13:::1;:30:::0;14946:122::o;7895:111::-;3087:4;3112:5;-1:-1:-1;;;;;3112:5:0;2999:10;3101:16;2983:38;;;;-1:-1:-1;;;2983:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7972:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;7972:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7895:111::o;3125:::-;3087:4;3112:5;-1:-1:-1;;;;;3112:5:0;2999:10;3101:16;2983:38;;;;-1:-1:-1;;;2983:38:0;;;;;;;:::i;:::-;3191:5:::1;:11:::0;;-1:-1:-1;;;;;;3191:11:0::1;-1:-1:-1::0;;;;;3191:11:0;::::1;::::0;;::::1;::::0;;;3209:25:::1;::::0;2815:51:1;;;3209:25:0::1;::::0;2803:2:1;2788:18;3209:25:0::1;;;;;;;3125:111:::0;:::o;9816:526::-;3087:4;3112:5;-1:-1:-1;;;;;3112:5:0;2999:10;3101:16;2983:38;;;;-1:-1:-1;;;2983:38:0;;;;;;;:::i;:::-;9991:12:::1;:25:::0;;;10027:12:::1;:25:::0;;;10063:7:::1;:15:::0;;;10089:14:::1;:29:::0;;;10129:8:::1;:17:::0;;;10157:7:::1;:15:::0;;;10183:11:::1;:20:::0;;;10234:11:::1;::::0;:18:::1;::::0;10250:1:::1;10234:15;:18::i;:::-;10222:8;;:30;;:63;;;;-1:-1:-1::0;10267:11:0::1;::::0;:18:::1;::::0;10283:1:::1;10267:15;:18::i;:::-;10256:7;;:29;;10222:63;10214:120;;;::::0;-1:-1:-1;;;10214:120:0;;6427:2:1;10214:120:0::1;::::0;::::1;6409:21:1::0;6466:2;6446:18;;;6439:30;6505:34;6485:18;;;6478:62;-1:-1:-1;;;6556:18:1;;;6549:42;6608:19;;10214:120:0::1;6225:408:1::0;15947:335:0;-1:-1:-1;;;;;16040:19:0;;16032:68;;;;-1:-1:-1;;;16032:68:0;;6840:2:1;16032:68:0;;;6822:21:1;6879:2;6859:18;;;6852:30;6918:34;6898:18;;;6891:62;-1:-1:-1;;;6969:18:1;;;6962:34;7013:19;;16032:68:0;6638:400:1;16032:68:0;-1:-1:-1;;;;;16119:21:0;;16111:68;;;;-1:-1:-1;;;16111:68:0;;7245:2:1;16111:68:0;;;7227:21:1;7284:2;7264:18;;;7257:30;7323:34;7303:18;;;7296:62;-1:-1:-1;;;7374:18:1;;;7367:32;7416:19;;16111:68:0;7043:398:1;16111:68:0;-1:-1:-1;;;;;16190:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16242:32;;160:25:1;;;16242:32:0;;133:18:1;16242:32:0;;;;;;;15947:335;;;:::o;218:82::-;276:7;293:5;297:1;293;:5;:::i;9102:686::-;9191:37;9202:6;9210:9;9221:6;9191:10;:37::i;:::-;9239:38;9259:6;9267:9;9239:19;:38::i;:::-;9288:41;9303:6;9311:9;9322:6;9288:14;:41::i;:::-;9341:35;9358:6;9366:9;9341:16;:35::i;:::-;9387:39;9400:6;9408:9;9419:6;9387:12;:39::i;:::-;9438:35;9447:6;9455:9;9466:6;9438:8;:35::i;:::-;-1:-1:-1;;;;;9504:17:0;;;;;;:9;:17;;;;;;:29;;9526:6;9504:21;:29::i;:::-;-1:-1:-1;;;;;9484:17:0;;;;;;:9;:17;;;;;:49;;;;9569:32;9494:6;9591:9;9569:13;:32::i;:::-;:78;;9641:6;9569:78;;;9604:34;9612:6;9620:9;9631:6;9604:7;:34::i;:::-;-1:-1:-1;;;;;9681:20:0;;;;;;:9;:20;;;;;;9544:103;;-1:-1:-1;9681:40:0;;9544:103;9681:24;:40::i;:::-;-1:-1:-1;;;;;9658:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9737:43;;;;;;;;;;9765:14;160:25:1;;148:2;133:18;;14:177;9737:43:0;;;;;;;;9180:608;9102:686;;;:::o;1431:162::-;1517:7;1563:12;1555:6;;;;1547:29;;;;-1:-1:-1;;;1547:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1585:5:0;;;1431:162::o;306:82::-;364:7;381:5;385:1;381;:5;:::i;394:82::-;452:7;469:5;473:1;469;:5;:::i;8655:439::-;-1:-1:-1;;;;;8759:20:0;;8751:70;;;;-1:-1:-1;;;8751:70:0;;7778:2:1;8751:70:0;;;7760:21:1;7817:2;7797:18;;;7790:30;7856:34;7836:18;;;7829:62;-1:-1:-1;;;7907:18:1;;;7900:35;7952:19;;8751:70:0;7576:401:1;8751:70:0;-1:-1:-1;;;;;8840:23:0;;8832:71;;;;-1:-1:-1;;;8832:71:0;;8184:2:1;8832:71:0;;;8166:21:1;8223:2;8203:18;;;8196:30;8262:34;8242:18;;;8235:62;-1:-1:-1;;;8313:18:1;;;8306:33;8356:19;;8832:71:0;7982:399:1;8832:71:0;8939:1;8922:6;:19;8914:73;;;;-1:-1:-1;;;8914:73:0;;8588:2:1;8914:73:0;;;8570:21:1;8627:2;8607:18;;;8600:30;8666:34;8646:18;;;8639:62;-1:-1:-1;;;8717:18:1;;;8710:39;8766:19;;8914:73:0;8386:405:1;8914:73:0;-1:-1:-1;;;;;7457:18:0;;7440:7;7457:18;;;:9;:18;;;;;;9006:6;:27;;8998:88;;;;-1:-1:-1;;;8998:88:0;;:2:1;:88:0;;;8980:21:1;9037:2;9017:18;;;9010:30;9076:34;9056:18;;;9049:62;-1:-1:-1;;;9127:18:1;;;9120:47;9184:19;;8998:88:0;8796:413:1;8998:88:0;8655:439;;;:::o;11003:191::-;-1:-1:-1;;;;;11096:19:0;;;;;;:11;:19;;;;;;;;11095:20;:47;;;;-1:-1:-1;;;;;;11120:22:0;;;;;;:11;:22;;;;;;;;11119:23;11095:47;11092:95;;;11152:14;;-1:-1:-1;;;11152:14:0;;;;11144:41;;;;-1:-1:-1;;;11144:41:0;;9416:2:1;11144:41:0;;;9398:21:1;9455:2;9435:18;;;9428:30;-1:-1:-1;;;9474:18:1;;;9467:44;9528:18;;11144:41:0;9214:338:1;11144:41:0;11003:191;;:::o;11206:333::-;-1:-1:-1;;;;;11310:19:0;;;;;;:11;:19;;;;;;;;11309:20;:47;;;;-1:-1:-1;;;;;;11334:22:0;;;;;;:11;:22;;;;;;;;11333:23;11309:47;:77;;;;-1:-1:-1;11381:4:0;;-1:-1:-1;;;;;11360:26:0;;;11381:4;;11360:26;;11309:77;:107;;;;-1:-1:-1;;;;;;11390:26:0;;6048:42;11390:26;;11309:107;11306:226;;;11478:17;:15;:17::i;:::-;-1:-1:-1;;;;;11441:20:0;;;;;;:9;:20;;;;;;:32;;11466:6;11441:24;:32::i;:::-;11440:55;;11432:98;;;;-1:-1:-1;;;11432:98:0;;9759:2:1;11432:98:0;;;9741:21:1;9798:2;9778:18;;;9771:30;9837:32;9817:18;;;9810:60;9887:18;;11432:98:0;9557:354:1;11547:159:0;11644:4;;-1:-1:-1;;;;;11631:17:0;;;11644:4;;11631:17;:41;;;;-1:-1:-1;;;;;;11653:19:0;;;;;;:11;:19;;;;;;;;11652:20;11631:41;11628:71;;;11695:1;11674:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11547:159:0;;:::o;11714:349::-;11825:4;;-1:-1:-1;;;;;11815:14:0;;;11825:4;;11815:14;11812:130;;11849:20;:18;:20::i;:::-;11839:6;:30;;:53;;;-1:-1:-1;;;;;;11873:19:0;;;;;;:11;:19;;;;;;;;11839:53;:79;;;-1:-1:-1;;;;;;11896:22:0;;;;;;:11;:22;;;;;;;;11839:79;11831:109;;;;-1:-1:-1;;;11831:109:0;;10251:2:1;11831:109:0;;;10233:21:1;10290:2;10270:18;;;10263:30;-1:-1:-1;;;10309:18:1;;;10302:47;10366:18;;11831:109:0;10049:341:1;11831:109:0;11970:14;:12;:14::i;:::-;11960:6;:24;;:47;;;-1:-1:-1;;;;;;11988:19:0;;;;;;:11;:19;;;;;;;;11960:47;:73;;;-1:-1:-1;;;;;;12011:22:0;;;;;;:11;:22;;;;;;;;11960:73;11952:103;;;;-1:-1:-1;;;11952:103:0;;10251:2:1;11952:103:0;;;10233:21:1;10290:2;10270:18;;;10263:30;-1:-1:-1;;;10309:18:1;;;10302:47;10366:18;;11952:103:0;10049:341:1;14346:197:0;14438:41;14453:6;14461:9;14472:6;14438:14;:41::i;:::-;14435:101;;;14481:29;14496:13;;14481:14;:29::i;:::-;14532:1;14512:9;:22;14346:197;;;:::o;14551:160::-;-1:-1:-1;;;;;14657:19:0;;14632:4;14657:19;;;:11;:19;;;;;;;;14656:20;:47;;;;-1:-1:-1;;;;;;;14681:22:0;;;;;:11;:22;;;;;;;;14680:23;;14551:160;-1:-1:-1;14551:160:0:o;15076:546::-;15162:7;15218:1;15185:30;15197:6;15205:9;15185:11;:30::i;:::-;:34;15182:418;;;15231:17;15251:59;15279:30;15291:6;15299:9;15279:11;:30::i;:::-;15262:11;;15251:23;;:6;;:10;:23::i;:59::-;15366:4;15348:24;;;;:9;:24;;;;;;15231:79;;-1:-1:-1;15348:39:0;;15231:79;15348:28;:39::i;:::-;15339:4;15321:24;;;;:9;:24;;;;;;;:66;;;;15403:42;;-1:-1:-1;;;;;15403:42:0;;;;;;;15435:9;160:25:1;;148:2;133:18;;14:177;15403:42:0;;;;;;;;15459:7;;:20;15456:104;;15481:77;15499:4;6048:42;15521:36;15549:7;;15521:23;15532:11;;15521:6;:10;;:23;;;;:::i;:36::-;15481:9;:77::i;:::-;15577:21;:6;15588:9;15577:10;:21::i;:::-;15570:28;;;;;15182:418;-1:-1:-1;15608:6:0;15076:546;-1:-1:-1;;15076:546:0:o;130:82::-;188:7;205:5;209:1;205;:5;:::i;13938:400::-;14079:15;;14155:13;;14145:4;14036;7457:18;;;:9;:18;;;;;;14187:8;;14036:4;;14069:25;;;;-1:-1:-1;14127:41:0;;14187:8;;14186:9;:24;;;;-1:-1:-1;14199:11:0;;;;14186:24;:42;;;;-1:-1:-1;14214:14:0;;-1:-1:-1;;;14214:14:0;;;;14186:42;:54;;;;;14232:8;14186:54;:78;;;;-1:-1:-1;;;;;;14245:19:0;;;;;;:11;:19;;;;;;;;14244:20;14186:78;:99;;;;-1:-1:-1;14281:4:0;;-1:-1:-1;;;;;14268:17:0;;;14281:4;;14268:17;14186:99;:126;;;;;14310:1;14289:9;;:23;;14186:126;:144;;;;;14316:14;14186:144;14179:151;13938:400;-1:-1:-1;;;;;;13938:400:0:o;12071:1066::-;5969:8;:15;;-1:-1:-1;;5969:15:0;5980:4;5969:15;;;;;;12208:14:::1;::::0;12190:12:::1;::::0;12166::::1;::::0;5969:8;;12165:66:::1;::::0;12229:1:::1;::::0;12166:57:::1;::::0;12208:14;;12166:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;12165:66::-;12142:89;;12242:32;12277:42;12306:12;12277:24;12288:12;;12277:6;:10;;:24;;;;:::i;:42::-;12242:77:::0;-1:-1:-1;12330:14:0::1;12347:36;:6:::0;12242:77;12347:10:::1;:36::i;:::-;12330:53:::0;-1:-1:-1;12419:21:0::1;12451:24;12330:53:::0;12451:16:::1;:24::i;:::-;12486:20;12509:41;:21;12535:14:::0;12509:25:::1;:41::i;:::-;12486:64;;12561:19;12582:48;12599:30;12616:12;;12599;:16;;:30;;;;:::i;:::-;12582:12:::0;;:16:::1;:48::i;:::-;12561:69;;12641:29;12673;12689:12;;12673:11;:15;;:29;;;;:::i;:::-;12641:61:::0;-1:-1:-1;12716:34:0;;12713:103:::1;;12752:61;12765:24;12791:21;12752:12;:61::i;:::-;12872:12;::::0;12826:20:::1;::::0;12849:36:::1;::::0;:18:::1;:11:::0;12865:1:::1;12849:15;:18::i;:36::-;12826:59:::0;-1:-1:-1;12899:16:0;;12896:73:::1;;12917:50;::::0;6243:42:::1;::::0;12917:50;::::1;;;::::0;12954:12;;12917:50:::1;::::0;;;12954:12;6243:42;12917:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12896:73;13006:21;13041:29:::0;;13038:92:::1;;13072:56;::::0;6146:42:::1;::::0;13072:56;::::1;;;::::0;13111:16;;13072:56:::1;::::0;;;13111:16;6146:42;13072:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13038:92;-1:-1:-1::0;;5989:8:0;:16;;-1:-1:-1;;5989:16:0;;;-1:-1:-1;;;;;;;;12071:1066:0:o;14719:219::-;14834:4;;14798:7;;-1:-1:-1;;;;;14821:17:0;;;14834:4;;14821:17;14818:38;;;-1:-1:-1;14847:7:0;;14840:14;;14818:38;14879:4;;-1:-1:-1;;;;;14869:14:0;;;14879:4;;14869:14;14866:36;;;-1:-1:-1;14892:8:0;;14885:15;;14866:36;-1:-1:-1;14919:11:0;;14719:219;;;;:::o;13496:434::-;13586:16;;;13600:1;13586:16;;;;;;;;13562:21;;13586:16;;;;;;;;;;-1:-1:-1;13586:16:0;13562:40;;13631:4;13613;13618:1;13613:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13613:23:0;;;:7;;;;;;;;;;:23;;;;13657:6;;:13;;;-1:-1:-1;;;13657:13:0;;;;:6;;;;;:11;;:13;;;;;13613:7;;13657:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13647:4;13652:1;13647:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13647:23:0;;;:7;;;;;;;;;:23;13713:6;;13681:53;;13698:4;;13713:6;13722:11;13681:8;:53::i;:::-;13745:6;;:177;;-1:-1:-1;;;13745:177:0;;-1:-1:-1;;;;;13745:6:0;;;;:57;;:177;;13817:11;;13745:6;;13859:4;;13886;;13906:15;;13745:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13551:379;13496:434;:::o;13145:343::-;13258:6;;13226:53;;13243:4;;-1:-1:-1;;;;;13258:6:0;13267:11;13226:8;:53::i;:::-;13290:6;;:190;;-1:-1:-1;;;13290:190:0;;13353:4;13290:190;;;12241:34:1;12291:18;;;12284:34;;;13290:6:0;12334:18:1;;;12327:34;;;12377:18;;;12370:34;6339:42:0;12420:19:1;;;12413:44;13464:15:0;12473:19:1;;;12466:35;-1:-1:-1;;;;;13290:6:0;;;;:22;;13320:9;;12175:19:1;;13290:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13145:343;;:::o;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;853:70;798:131;:::o;934:315::-;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:456::-;1523:6;1531;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;1647:9;1634:23;1666:31;1691:5;1666:31;:::i;:::-;1716:5;-1:-1:-1;1773:2:1;1758:18;;1745:32;1786:33;1745:32;1786:33;:::i;:::-;1446:456;;1838:7;;-1:-1:-1;;;1892:2:1;1877:18;;;;1864:32;;1446:456::o;1907:247::-;1966:6;2019:2;2007:9;1998:7;1994:23;1990:32;1987:52;;;2035:1;2032;2025:12;1987:52;2074:9;2061:23;2093:31;2118:5;2093:31;:::i;2348:316::-;2425:6;2433;2441;2494:2;2482:9;2473:7;2469:23;2465:32;2462:52;;;2510:1;2507;2500:12;2462:52;-1:-1:-1;;2533:23:1;;;2603:2;2588:18;;2575:32;;-1:-1:-1;2654:2:1;2639:18;;;2626:32;;2348:316;-1:-1:-1;2348:316:1:o;2877:180::-;2936:6;2989:2;2977:9;2968:7;2964:23;2960:32;2957:52;;;3005:1;3002;2995:12;2957:52;-1:-1:-1;3028:23:1;;2877:180;-1:-1:-1;2877:180:1:o;3062:416::-;3127:6;3135;3188:2;3176:9;3167:7;3163:23;3159:32;3156:52;;;3204:1;3201;3194:12;3156:52;3243:9;3230:23;3262:31;3287:5;3262:31;:::i;:::-;3312:5;-1:-1:-1;3369:2:1;3354:18;;3341:32;3411:15;;3404:23;3392:36;;3382:64;;3442:1;3439;3432:12;3382:64;3465:7;3455:17;;;3062:416;;;;;:::o;3483:388::-;3551:6;3559;3612:2;3600:9;3591:7;3587:23;3583:32;3580:52;;;3628:1;3625;3618:12;3580:52;3667:9;3654:23;3686:31;3711:5;3686:31;:::i;:::-;3736:5;-1:-1:-1;3793:2:1;3778:18;;3765:32;3806:33;3765:32;3806:33;:::i;4136:592::-;4249:6;4257;4265;4273;4281;4289;4297;4350:3;4338:9;4329:7;4325:23;4321:33;4318:53;;;4367:1;4364;4357:12;4318:53;-1:-1:-1;;4390:23:1;;;4460:2;4445:18;;4432:32;;-1:-1:-1;4511:2:1;4496:18;;4483:32;;4562:2;4547:18;;4534:32;;-1:-1:-1;4613:3:1;4598:19;;4585:33;;-1:-1:-1;4665:3:1;4650:19;;4637:33;;-1:-1:-1;4717:3:1;4702:19;4689:33;;-1:-1:-1;4136:592:1;-1:-1:-1;4136:592:1:o;4733:127::-;4794:10;4789:3;4785:20;4782:1;4775:31;4825:4;4822:1;4815:15;4849:4;4846:1;4839:15;4865:168;4905:7;4971:1;4967;4963:6;4959:14;4956:1;4953:21;4948:1;4941:9;4934:17;4930:45;4927:71;;;4978:18;;:::i;:::-;-1:-1:-1;5018:9:1;;4865:168::o;5038:217::-;5078:1;5104;5094:132;;5148:10;5143:3;5139:20;5136:1;5129:31;5183:4;5180:1;5173:15;5211:4;5208:1;5201:15;5094:132;-1:-1:-1;5240:9:1;;5038:217::o;5260:329::-;5462:2;5444:21;;;5501:1;5481:18;;;5474:29;-1:-1:-1;;;5534:2:1;5519:18;;5512:36;5580:2;5565:18;;5260:329::o;7446:125::-;7486:4;7514:1;7511;7508:8;7505:34;;;7519:18;;:::i;:::-;-1:-1:-1;7556:9:1;;7446:125::o;9916:128::-;9956:3;9987:1;9983:6;9980:1;9977:13;9974:39;;;9993:18;;:::i;:::-;-1:-1:-1;10029:9:1;;9916:128::o;10527:127::-;10588:10;10583:3;10579:20;10576:1;10569:31;10619:4;10616:1;10609:15;10643:4;10640:1;10633:15;10659:251;10729:6;10782:2;10770:9;10761:7;10757:23;10753:32;10750:52;;;10798:1;10795;10788:12;10750:52;10830:9;10824:16;10849:31;10874:5;10849:31;:::i;10915:980::-;11177:4;11225:3;11214:9;11210:19;11256:6;11245:9;11238:25;11282:2;11320:6;11315:2;11304:9;11300:18;11293:34;11363:3;11358:2;11347:9;11343:18;11336:31;11387:6;11422;11416:13;11453:6;11445;11438:22;11491:3;11480:9;11476:19;11469:26;;11530:2;11522:6;11518:15;11504:29;;11551:1;11561:195;11575:6;11572:1;11569:13;11561:195;;;11640:13;;-1:-1:-1;;;;;11636:39:1;11624:52;;11731:15;;;;11696:12;;;;11672:1;11590:9;11561:195;;;-1:-1:-1;;;;;;;11812:32:1;;;;11807:2;11792:18;;11785:60;-1:-1:-1;;;11876:3:1;11861:19;11854:35;11773:3;10915:980;-1:-1:-1;;;10915:980:1:o;12512:306::-;12600:6;12608;12616;12669:2;12657:9;12648:7;12644:23;12640:32;12637:52;;;12685:1;12682;12675:12;12637:52;12714:9;12708:16;12698:26;;12764:2;12753:9;12749:18;12743:25;12733:35;;12808:2;12797:9;12793:18;12787:25;12777:35;;12512:306;;;;;:::o

Swarm Source

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