ETH Price: $3,452.74 (-0.99%)
Gas: 3 Gwei

Token

DEGENESIS (DEGEN)
 

Overview

Max Total Supply

1,000,000,000 DEGEN

Holders

80

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
soulchef.eth
Balance
2,562,670.19974847 DEGEN

Value
$0.00
0x37450036f83727e0fe62bb0ccfcd2b07075ba6c9
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:
DEGEN

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-08-28
*/

// SPDX-License-Identifier: MIT

/*
Where artificial intelligence and blockchain converge, a future of unparalleled inspiration emerges, shaping itself within a perpetually evolving and expanding universe.

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

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

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

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 IDFactory{
    function createPair(address tokenA, address tokenB) external returns (address uniPair);
}

interface IDRouter {
    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;
}

contract DEGEN is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = unicode"DEGENESIS";
    string private constant _symbol = unicode"DEGEN";
    uint8 private constant _decimals = 9;
    uint256 private _supply = 1000000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExcluded;
    mapping (address => bool) private isSniper;
    IDRouter uniRouter;
    address public uniPair;
    bool private tradeAllow = false;
    bool private enabledFeeSwap = true;
    uint256 private numSwaped;
    bool private swapping;
    uint256 minSwapInterval;
    uint256 private thresholdFeeSwap = ( _supply * 1000 ) / 100000;
    uint256 private minAmountFeeSwap = ( _supply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private addLpFee = 0;
    uint256 private marketingETHFee = 0;
    uint256 private devEthFee = 100;
    uint256 private burnTax = 0;
    uint256 private buyTokenFee = 3500;
    uint256 private sellTokenFee = 3500;
    uint256 private transferTokenFee = 3500;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal devEthAddress=0xcf36be209a729a37634e89C4c477A41633119D56; 
    address internal marketingEthReceiver=0xcf36be209a729a37634e89C4c477A41633119D56;
    address internal lpPairReceiver=0xcf36be209a729a37634e89C4c477A41633119D56;
    uint256 public _maxTnxAmount = ( _supply * 300 ) / 10000;
    uint256 public _maxSellerSize = ( _supply * 300 ) / 10000;
    uint256 public _maxWalletTokenSize = ( _supply * 300 ) / 10000;

    constructor() Ownable(msg.sender) {
        IDRouter _router = IDRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IDFactory(_router.factory()).createPair(address(this), _router.WETH());
        uniRouter = _router; uniPair = _pair;
        isFeeExcluded[address(this)] = true;
        isFeeExcluded[lpPairReceiver] = true;
        isFeeExcluded[marketingEthReceiver] = true;
        isFeeExcluded[devEthAddress] = true;
        isFeeExcluded[msg.sender] = true;
        _balances[msg.sender] = _supply;
        emit Transfer(address(0), msg.sender, _supply);
    }

    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 openTrading() external onlyOwner {tradeAllow = 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 setIsExcludedFee(address _address, bool _enabled) external onlyOwner {isFeeExcluded[_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 _supply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function canSwapFeeTokens(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minAmountFeeSwap;
        bool aboveThreshold = balanceOf(address(this)) >= thresholdFeeSwap;
        return !swapping && enabledFeeSwap && tradeAllow && aboveMin && !isFeeExcluded[sender] && recipient == uniPair && numSwaped >= minSwapInterval && aboveThreshold;
    }

    function setSwapFeeTokensSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        minSwapInterval = _swapAmount; thresholdFeeSwap = _supply.mul(_swapThreshold).div(uint256(100000)); 
        minAmountFeeSwap = _supply.mul(_minTokenAmount).div(uint256(100000));
    }

    function setFeeAmounts(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        addLpFee = _liquidity; marketingETHFee = _marketing; burnTax = _burn; devEthFee = _development; buyTokenFee = _total; sellTokenFee = _sell; transferTokenFee = _trans;
        require(buyTokenFee <= denominator.div(1) && sellTokenFee <= denominator.div(1) && transferTokenFee <= denominator.div(1), "buyTokenFee and sellTokenFee cannot be more than 20%");
    }

    function setTnxSizeSettings(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _supply.mul(_buy).div(10000); uint256 newTransfer = _supply.mul(_sell).div(10000); uint256 newWallet = _supply.mul(_wallet).div(10000);
        _maxTnxAmount = newTx; _maxSellerSize = newTransfer; _maxWalletTokenSize = 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 setInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketingEthReceiver = _marketing; lpPairReceiver = _liquidity; devEthAddress = _development;
        isFeeExcluded[_marketing] = true; isFeeExcluded[_liquidity] = true; isFeeExcluded[_development] = true;
    }

    function setIsSniper(address[] calldata addresses, bool _enabled) external onlyOwner {
        for(uint i=0; i < addresses.length; i++){
        isSniper[addresses[i]] = _enabled; }
    }

    function manualSwapTokens() external onlyOwner {
        swapLiquidifyAndSendFee(thresholdFeeSwap);
    }

    function rescueContractERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(devEthAddress, _amount);
    }

    function swapLiquidifyAndSendFee(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (addLpFee.add(1).add(marketingETHFee).add(devEthFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(addLpFee).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(addLpFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(addLpFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingETHFee);
        if(marketingAmt > 0){payable(marketingEthReceiver).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(devEthAddress).transfer(contractBalance);}
    }

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

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

    function shouldTakeTokenFees(address sender, address recipient) internal view returns (bool) {
        return !isFeeExcluded[sender];
    }

    function getTotalTokenFees(address sender, address recipient) internal view returns (uint256) {
        if(isSniper[sender] || isSniper[recipient]){return denominator.sub(uint256(100));}
        if(recipient == uniPair){return sellTokenFee;}
        if(sender == uniPair){return buyTokenFee;}
        return transferTokenFee;
    }

    function takeTokenFees(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if (isFeeExcluded[recipient]) {return _maxTnxAmount;}
        if(getTotalTokenFees(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalTokenFees(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnTax > uint256(0) && getTotalTokenFees(sender, recipient) > burnTax){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnTax));}
        return amount.sub(feeAmount);} return amount;
    }

    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");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
        if(!isFeeExcluded[sender] && !isFeeExcluded[recipient]){require(tradeAllow, "tradeAllow");}
        if(!isFeeExcluded[sender] && !isFeeExcluded[recipient] && recipient != address(uniPair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWalletTokenSize, "Exceeds maximum wallet amount.");}
        if(sender != uniPair){require(amount <= _maxSellerSize || isFeeExcluded[sender] || isFeeExcluded[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTnxAmount || isFeeExcluded[sender] || isFeeExcluded[recipient], "TX Limit Exceeded"); 
        if(recipient == uniPair && !isFeeExcluded[sender]){numSwaped += uint256(1);}
        if(canSwapFeeTokens(sender, recipient, amount)){swapLiquidifyAndSendFee(thresholdFeeSwap); numSwaped = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeTokenFees(sender, recipient) ? takeTokenFees(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    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":"_maxSellerSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTnxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletTokenSize","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExcluded","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":"manualSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueContractERC20","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":"setFeeAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setIsExcludedFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setIsSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapFeeTokensSettings","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":"setTnxSizeSettings","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":"uniPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004be565b6200002290633b9aca00620004d5565b60018190556007805461ffff60a01b1916600160a81b179055620186a0906200004e906103e8620004d5565b6200005a9190620004ef565b600b55620186a0600154600a620000729190620004d5565b6200007e9190620004ef565b600c555f600d819055600e8190556064600f55601055610dac6011819055601281905560135561271060148190556015805473cf36be209a729a37634e89c4c477a41633119d566001600160a01b0319918216811790925560168054821683179055601780549091169091179055600154620000fd9061012c620004d5565b620001099190620004ef565b60185561271060015461012c620001219190620004d5565b6200012d9190620004ef565b60195561271060015461012c620001459190620004d5565b620001519190620004ef565b601a5534801562000160575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001eb91906200050f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000237573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025d91906200050f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ce91906200050f565b600680546001600160a01b038581166001600160a01b031992831617909255600780548484169216919091179055305f908152600460209081526040808320805460ff19908116600190811790925560175486168552828520805482168317905560165486168552828520805482168317905560155490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000537565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200040357815f1904821115620003e757620003e7620003af565b80851615620003f557918102915b93841c9390800290620003c8565b509250929050565b5f826200041b57506001620004b8565b816200042957505f620004b8565b81600181146200044257600281146200044d576200046d565b6001915050620004b8565b60ff841115620004615762000461620003af565b50506001821b620004b8565b5060208310610133831016604e8410600b841016171562000492575081810a620004b8565b6200049e8383620003c3565b805f1904821115620004b457620004b4620003af565b0290505b92915050565b5f620004ce60ff8416836200040b565b9392505050565b8082028115828204841417620004b857620004b8620003af565b5f826200050a57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000520575f80fd5b81516001600160a01b0381168114620004ce575f80fd5b611d8f80620005455f395ff3fe60806040526004361061017e575f3560e01c8063858d9674116100cd578063bca238aa11610087578063f2fde38b11610062578063f2fde38b146104b8578063f7a42c56146104d7578063f9d9b565146104ec578063fbd5120f1461050b575f80fd5b8063bca238aa14610432578063c9567bf914610460578063dd62ed3e14610474575f80fd5b8063858d967414610377578063893d20e814610396578063898715ab146103b25780639213c358146103c757806395d89b41146103e6578063a9059cbb14610413575f80fd5b8063313ce5671161013857806370a082311161011357806370a08231146102f1578063731c5fe7146103255780637960fe24146103445780637c4c75eb14610363575f80fd5b8063313ce5671461028a57806332972e46146102a557806350f28f79146102dc575f80fd5b806306fdde0314610189578063095ea7b3146101cc57806318160ddd146101fb57806321830cb91461021d57806323b872dd1461023e5780632f54bf6e1461025d575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b50604080518082019091526009815268444547454e4553495360b81b60208201525b6040516101c3919061190d565b60405180910390f35b3480156101d7575f80fd5b506101eb6101e636600461196f565b61052a565b60405190151581526020016101c3565b348015610206575f80fd5b5061020f610540565b6040519081526020016101c3565b348015610228575f80fd5b5061023c610237366004611999565b6105b0565b005b348015610249575f80fd5b506101eb6102583660046119c2565b6106f5565b348015610268575f80fd5b506101eb610277366004611a00565b5f546001600160a01b0391821691161490565b348015610295575f80fd5b50604051600981526020016101c3565b3480156102b0575f80fd5b506007546102c4906001600160a01b031681565b6040516001600160a01b0390911681526020016101c3565b3480156102e7575f80fd5b5061020f60185481565b3480156102fc575f80fd5b5061020f61030b366004611a00565b6001600160a01b03165f9081526002602052604090205490565b348015610330575f80fd5b5061023c61033f366004611a28565b61075d565b34801561034f575f80fd5b5061023c61035e36600461196f565b6107b0565b34801561036e575f80fd5b5061023c6108ca565b348015610382575f80fd5b5061023c610391366004611a5f565b610900565b3480156103a1575f80fd5b505f546001600160a01b03166102c4565b3480156103bd575f80fd5b5061020f60195481565b3480156103d2575f80fd5b5061023c6103e1366004611aa6565b6109fe565b3480156103f1575f80fd5b506040805180820190915260058152642222a3a2a760d91b60208201526101b6565b34801561041e575f80fd5b506101eb61042d36600461196f565b610aa2565b34801561043d575f80fd5b506101eb61044c366004611a00565b60046020525f908152604090205460ff1681565b34801561046b575f80fd5b5061023c610aae565b34801561047f575f80fd5b5061020f61048e366004611aee565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156104c3575f80fd5b5061023c6104d2366004611a00565b610aec565b3480156104e2575f80fd5b5061020f601a5481565b3480156104f7575f80fd5b5061023c610506366004611b1a565b610b68565b348015610516575f80fd5b5061023c610525366004611999565b610bff565b5f610536338484610c64565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926105ab9290916105a59190610d87565b90610d87565b905090565b5f546001600160a01b031633146105e25760405162461bcd60e51b81526004016105d990611b8e565b60405180910390fd5b5f6106046127106105fe86600154610d9290919063ffffffff16565b90610d9d565b90505f6106226127106105fe86600154610d9290919063ffffffff16565b90505f6106406127106105fe86600154610d9290919063ffffffff16565b60188490556019839055601a81905590505f61066b6103e86105fe6005610665610540565b90610d92565b905080841015801561067d5750808310155b80156106895750808210155b6106ec5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105d9565b50505050505050565b5f610701848484610da8565b610752843361074d85604051806060016040528060288152602001611d32602891396001600160a01b038a165f90815260036020908152604080832033845290915290205491906112e5565b610c64565b5060015b9392505050565b5f546001600160a01b031633146107865760405162461bcd60e51b81526004016105d990611b8e565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146107d95760405162461bcd60e51b81526004016105d990611b8e565b6040516370a0823160e01b81523060048201525f9061084e906064906105fe9085906001600160a01b038816906370a0823190602401602060405180830381865afa15801561082a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106659190611bae565b60155460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af11580156108a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c49190611bc5565b50505050565b5f546001600160a01b031633146108f35760405162461bcd60e51b81526004016105d990611b8e565b6108fe600b54611310565b565b5f546001600160a01b031633146109295760405162461bcd60e51b81526004016105d990611b8e565b600d879055600e8690556010859055600f84905560118390556012829055601381905560145461095a906001610d9d565b6011541115801561097a5750601454610974906001610d9d565b60125411155b8015610995575060145461098f906001610d9d565b60135411155b6106ec5760405162461bcd60e51b815260206004820152603460248201527f627579546f6b656e46656520616e642073656c6c546f6b656e4665652063616e6044820152736e6f74206265206d6f7265207468616e2032302560601b60648201526084016105d9565b5f546001600160a01b03163314610a275760405162461bcd60e51b81526004016105d990611b8e565b601680546001600160a01b039485166001600160a01b0319918216811790925560178054948616948216851790556015805493909516921682179093555f92835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b5f610536338484610da8565b5f546001600160a01b03163314610ad75760405162461bcd60e51b81526004016105d990611b8e565b6007805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610b155760405162461bcd60e51b81526004016105d990611b8e565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f546001600160a01b03163314610b915760405162461bcd60e51b81526004016105d990611b8e565b5f5b828110156108c4578160055f868685818110610bb157610bb1611be0565b9050602002016020810190610bc69190611a00565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610bf781611c08565b915050610b93565b5f546001600160a01b03163314610c285760405162461bcd60e51b81526004016105d990611b8e565b600a839055600154610c4390620186a0906105fe9085610d92565b600b55600154610c5c90620186a0906105fe9084610d92565b600c55505050565b6001600160a01b038316610cc65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d9565b6001600160a01b038216610d275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d9565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6107568284611c20565b5f6107568284611c33565b5f6107568284611c4a565b6001600160a01b038316610e0c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d9565b6001600160a01b038216610e6e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d9565b6001600160a01b0383165f90815260026020526040902054811115610eef5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105d9565b6001600160a01b0383165f9081526004602052604090205460ff16158015610f2f57506001600160a01b0382165f9081526004602052604090205460ff16155b15610f7a57600754600160a01b900460ff16610f7a5760405162461bcd60e51b815260206004820152600a6024820152697472616465416c6c6f7760b01b60448201526064016105d9565b6001600160a01b0383165f9081526004602052604090205460ff16158015610fba57506001600160a01b0382165f9081526004602052604090205460ff16155b8015610fd457506007546001600160a01b03838116911614155b8015610feb57506001600160a01b03821661dead14155b1561106357601a546001600160a01b0383165f908152600260205260409020546110159083611480565b11156110635760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105d9565b6007546001600160a01b0384811691161461110257601954811115806110a057506001600160a01b0383165f9081526004602052604090205460ff165b806110c257506001600160a01b0382165f9081526004602052604090205460ff165b6111025760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105d9565b6018548111158061112a57506001600160a01b0383165f9081526004602052604090205460ff165b8061114c57506001600160a01b0382165f9081526004602052604090205460ff165b61118c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105d9565b6007546001600160a01b0383811691161480156111c157506001600160a01b0383165f9081526004602052604090205460ff16155b156111de57600160085f8282546111d89190611c69565b90915550505b6111e983838361148b565b156111fe576111f9600b54611310565b5f6008555b6001600160a01b0383165f908152600260205260409020546112209082610d87565b6001600160a01b0384165f90815260026020908152604080832093909355600490529081205460ff1615611254578161125f565b61125f848484611543565b6001600160a01b0384165f908152600260205260409020549091506112849082611480565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112d79085815260200190565b60405180910390a350505050565b5f81848411156113085760405162461bcd60e51b81526004016105d9919061190d565b505050900390565b6009805460ff19166001908117909155600f54600e54600d545f9361134993600293610665939192611343928391611480565b90611480565b90505f611365826105fe600d5486610d9290919063ffffffff16565b90505f6113728483610d87565b90504761137e8261166d565b5f6113894783610d87565b90505f6113ab6113a4600d5488610d8790919063ffffffff16565b8390610d9d565b90505f6113c3600d5483610d9290919063ffffffff16565b905080156113d5576113d586826117bd565b600e545f906113e990610665856002610d92565b9050801561142a576016546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611428573d5f803e3d5ffd5b505b47801561146a576015546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611468573d5f803e3d5ffd5b505b50506009805460ff191690555050505050505050565b5f6107568284611c69565b600c54600b54305f9081526002602052604081205460095491938510159211159060ff161580156114c55750600754600160a81b900460ff165b80156114da5750600754600160a01b900460ff165b80156114e35750815b801561150757506001600160a01b0386165f9081526004602052604090205460ff16155b801561152057506007546001600160a01b038681169116145b80156115305750600a5460085410155b80156115395750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff161561156c5750601854610756565b5f611577858561186e565b1115611666575f61159961158b868661186e565b601454610665908690610d9d565b305f908152600260205260409020549091506115b59082611480565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116059085815260200190565b60405180910390a35f6010541180156116285750601054611626868661186e565b115b15611654576116543061dead61164f60105461066560145489610d9d90919063ffffffff16565b610da8565b61165e8382610d87565b915050610756565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106116a0576116a0611be0565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061171b9190611c7c565b8160018151811061172e5761172e611be0565b6001600160a01b0392831660209182029290920101526006546117549130911684610c64565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061178c9085905f90869030904290600401611c97565b5f604051808303815f87803b1580156117a3575f80fd5b505af11580156117b5573d5f803e3d5ffd5b505050505050565b6006546117d59030906001600160a01b031684610c64565b60065460175460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611842573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118679190611d06565b5050505050565b6001600160a01b0382165f9081526005602052604081205460ff16806118ab57506001600160a01b0382165f9081526005602052604090205460ff165b156118c5576014546118be906064610d87565b905061053a565b6007546001600160a01b03908116908316036118e4575060125461053a565b6007546001600160a01b0390811690841603611903575060115461053a565b5060135492915050565b5f6020808352835180828501525f5b818110156119385785810183015185820160400152820161191c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461196c575f80fd5b50565b5f8060408385031215611980575f80fd5b823561198b81611958565b946020939093013593505050565b5f805f606084860312156119ab575f80fd5b505081359360208301359350604090920135919050565b5f805f606084860312156119d4575f80fd5b83356119df81611958565b925060208401356119ef81611958565b929592945050506040919091013590565b5f60208284031215611a10575f80fd5b813561075681611958565b801515811461196c575f80fd5b5f8060408385031215611a39575f80fd5b8235611a4481611958565b91506020830135611a5481611a1b565b809150509250929050565b5f805f805f805f60e0888a031215611a75575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f805f60608486031215611ab8575f80fd5b8335611ac381611958565b92506020840135611ad381611958565b91506040840135611ae381611958565b809150509250925092565b5f8060408385031215611aff575f80fd5b8235611b0a81611958565b91506020830135611a5481611958565b5f805f60408486031215611b2c575f80fd5b833567ffffffffffffffff80821115611b43575f80fd5b818601915086601f830112611b56575f80fd5b813581811115611b64575f80fd5b8760208260051b8501011115611b78575f80fd5b60209283019550935050840135611ae381611a1b565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f60208284031215611bbe575f80fd5b5051919050565b5f60208284031215611bd5575f80fd5b815161075681611a1b565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611c1957611c19611bf4565b5060010190565b8181038181111561053a5761053a611bf4565b808202811582820484141761053a5761053a611bf4565b5f82611c6457634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561053a5761053a611bf4565b5f60208284031215611c8c575f80fd5b815161075681611958565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611ce55784516001600160a01b031683529383019391830191600101611cc0565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611d18575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f230355030547436a4fe7047892e3c32b1ac153ae754090ad561031758225a9064736f6c63430008150033

Deployed Bytecode

0x60806040526004361061017e575f3560e01c8063858d9674116100cd578063bca238aa11610087578063f2fde38b11610062578063f2fde38b146104b8578063f7a42c56146104d7578063f9d9b565146104ec578063fbd5120f1461050b575f80fd5b8063bca238aa14610432578063c9567bf914610460578063dd62ed3e14610474575f80fd5b8063858d967414610377578063893d20e814610396578063898715ab146103b25780639213c358146103c757806395d89b41146103e6578063a9059cbb14610413575f80fd5b8063313ce5671161013857806370a082311161011357806370a08231146102f1578063731c5fe7146103255780637960fe24146103445780637c4c75eb14610363575f80fd5b8063313ce5671461028a57806332972e46146102a557806350f28f79146102dc575f80fd5b806306fdde0314610189578063095ea7b3146101cc57806318160ddd146101fb57806321830cb91461021d57806323b872dd1461023e5780632f54bf6e1461025d575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b50604080518082019091526009815268444547454e4553495360b81b60208201525b6040516101c3919061190d565b60405180910390f35b3480156101d7575f80fd5b506101eb6101e636600461196f565b61052a565b60405190151581526020016101c3565b348015610206575f80fd5b5061020f610540565b6040519081526020016101c3565b348015610228575f80fd5b5061023c610237366004611999565b6105b0565b005b348015610249575f80fd5b506101eb6102583660046119c2565b6106f5565b348015610268575f80fd5b506101eb610277366004611a00565b5f546001600160a01b0391821691161490565b348015610295575f80fd5b50604051600981526020016101c3565b3480156102b0575f80fd5b506007546102c4906001600160a01b031681565b6040516001600160a01b0390911681526020016101c3565b3480156102e7575f80fd5b5061020f60185481565b3480156102fc575f80fd5b5061020f61030b366004611a00565b6001600160a01b03165f9081526002602052604090205490565b348015610330575f80fd5b5061023c61033f366004611a28565b61075d565b34801561034f575f80fd5b5061023c61035e36600461196f565b6107b0565b34801561036e575f80fd5b5061023c6108ca565b348015610382575f80fd5b5061023c610391366004611a5f565b610900565b3480156103a1575f80fd5b505f546001600160a01b03166102c4565b3480156103bd575f80fd5b5061020f60195481565b3480156103d2575f80fd5b5061023c6103e1366004611aa6565b6109fe565b3480156103f1575f80fd5b506040805180820190915260058152642222a3a2a760d91b60208201526101b6565b34801561041e575f80fd5b506101eb61042d36600461196f565b610aa2565b34801561043d575f80fd5b506101eb61044c366004611a00565b60046020525f908152604090205460ff1681565b34801561046b575f80fd5b5061023c610aae565b34801561047f575f80fd5b5061020f61048e366004611aee565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156104c3575f80fd5b5061023c6104d2366004611a00565b610aec565b3480156104e2575f80fd5b5061020f601a5481565b3480156104f7575f80fd5b5061023c610506366004611b1a565b610b68565b348015610516575f80fd5b5061023c610525366004611999565b610bff565b5f610536338484610c64565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926105ab9290916105a59190610d87565b90610d87565b905090565b5f546001600160a01b031633146105e25760405162461bcd60e51b81526004016105d990611b8e565b60405180910390fd5b5f6106046127106105fe86600154610d9290919063ffffffff16565b90610d9d565b90505f6106226127106105fe86600154610d9290919063ffffffff16565b90505f6106406127106105fe86600154610d9290919063ffffffff16565b60188490556019839055601a81905590505f61066b6103e86105fe6005610665610540565b90610d92565b905080841015801561067d5750808310155b80156106895750808210155b6106ec5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105d9565b50505050505050565b5f610701848484610da8565b610752843361074d85604051806060016040528060288152602001611d32602891396001600160a01b038a165f90815260036020908152604080832033845290915290205491906112e5565b610c64565b5060015b9392505050565b5f546001600160a01b031633146107865760405162461bcd60e51b81526004016105d990611b8e565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146107d95760405162461bcd60e51b81526004016105d990611b8e565b6040516370a0823160e01b81523060048201525f9061084e906064906105fe9085906001600160a01b038816906370a0823190602401602060405180830381865afa15801561082a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106659190611bae565b60155460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af11580156108a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c49190611bc5565b50505050565b5f546001600160a01b031633146108f35760405162461bcd60e51b81526004016105d990611b8e565b6108fe600b54611310565b565b5f546001600160a01b031633146109295760405162461bcd60e51b81526004016105d990611b8e565b600d879055600e8690556010859055600f84905560118390556012829055601381905560145461095a906001610d9d565b6011541115801561097a5750601454610974906001610d9d565b60125411155b8015610995575060145461098f906001610d9d565b60135411155b6106ec5760405162461bcd60e51b815260206004820152603460248201527f627579546f6b656e46656520616e642073656c6c546f6b656e4665652063616e6044820152736e6f74206265206d6f7265207468616e2032302560601b60648201526084016105d9565b5f546001600160a01b03163314610a275760405162461bcd60e51b81526004016105d990611b8e565b601680546001600160a01b039485166001600160a01b0319918216811790925560178054948616948216851790556015805493909516921682179093555f92835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b5f610536338484610da8565b5f546001600160a01b03163314610ad75760405162461bcd60e51b81526004016105d990611b8e565b6007805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610b155760405162461bcd60e51b81526004016105d990611b8e565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f546001600160a01b03163314610b915760405162461bcd60e51b81526004016105d990611b8e565b5f5b828110156108c4578160055f868685818110610bb157610bb1611be0565b9050602002016020810190610bc69190611a00565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610bf781611c08565b915050610b93565b5f546001600160a01b03163314610c285760405162461bcd60e51b81526004016105d990611b8e565b600a839055600154610c4390620186a0906105fe9085610d92565b600b55600154610c5c90620186a0906105fe9084610d92565b600c55505050565b6001600160a01b038316610cc65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d9565b6001600160a01b038216610d275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d9565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6107568284611c20565b5f6107568284611c33565b5f6107568284611c4a565b6001600160a01b038316610e0c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d9565b6001600160a01b038216610e6e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d9565b6001600160a01b0383165f90815260026020526040902054811115610eef5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105d9565b6001600160a01b0383165f9081526004602052604090205460ff16158015610f2f57506001600160a01b0382165f9081526004602052604090205460ff16155b15610f7a57600754600160a01b900460ff16610f7a5760405162461bcd60e51b815260206004820152600a6024820152697472616465416c6c6f7760b01b60448201526064016105d9565b6001600160a01b0383165f9081526004602052604090205460ff16158015610fba57506001600160a01b0382165f9081526004602052604090205460ff16155b8015610fd457506007546001600160a01b03838116911614155b8015610feb57506001600160a01b03821661dead14155b1561106357601a546001600160a01b0383165f908152600260205260409020546110159083611480565b11156110635760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105d9565b6007546001600160a01b0384811691161461110257601954811115806110a057506001600160a01b0383165f9081526004602052604090205460ff165b806110c257506001600160a01b0382165f9081526004602052604090205460ff165b6111025760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105d9565b6018548111158061112a57506001600160a01b0383165f9081526004602052604090205460ff165b8061114c57506001600160a01b0382165f9081526004602052604090205460ff165b61118c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105d9565b6007546001600160a01b0383811691161480156111c157506001600160a01b0383165f9081526004602052604090205460ff16155b156111de57600160085f8282546111d89190611c69565b90915550505b6111e983838361148b565b156111fe576111f9600b54611310565b5f6008555b6001600160a01b0383165f908152600260205260409020546112209082610d87565b6001600160a01b0384165f90815260026020908152604080832093909355600490529081205460ff1615611254578161125f565b61125f848484611543565b6001600160a01b0384165f908152600260205260409020549091506112849082611480565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112d79085815260200190565b60405180910390a350505050565b5f81848411156113085760405162461bcd60e51b81526004016105d9919061190d565b505050900390565b6009805460ff19166001908117909155600f54600e54600d545f9361134993600293610665939192611343928391611480565b90611480565b90505f611365826105fe600d5486610d9290919063ffffffff16565b90505f6113728483610d87565b90504761137e8261166d565b5f6113894783610d87565b90505f6113ab6113a4600d5488610d8790919063ffffffff16565b8390610d9d565b90505f6113c3600d5483610d9290919063ffffffff16565b905080156113d5576113d586826117bd565b600e545f906113e990610665856002610d92565b9050801561142a576016546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611428573d5f803e3d5ffd5b505b47801561146a576015546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611468573d5f803e3d5ffd5b505b50506009805460ff191690555050505050505050565b5f6107568284611c69565b600c54600b54305f9081526002602052604081205460095491938510159211159060ff161580156114c55750600754600160a81b900460ff165b80156114da5750600754600160a01b900460ff165b80156114e35750815b801561150757506001600160a01b0386165f9081526004602052604090205460ff16155b801561152057506007546001600160a01b038681169116145b80156115305750600a5460085410155b80156115395750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff161561156c5750601854610756565b5f611577858561186e565b1115611666575f61159961158b868661186e565b601454610665908690610d9d565b305f908152600260205260409020549091506115b59082611480565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116059085815260200190565b60405180910390a35f6010541180156116285750601054611626868661186e565b115b15611654576116543061dead61164f60105461066560145489610d9d90919063ffffffff16565b610da8565b61165e8382610d87565b915050610756565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106116a0576116a0611be0565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061171b9190611c7c565b8160018151811061172e5761172e611be0565b6001600160a01b0392831660209182029290920101526006546117549130911684610c64565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061178c9085905f90869030904290600401611c97565b5f604051808303815f87803b1580156117a3575f80fd5b505af11580156117b5573d5f803e3d5ffd5b505050505050565b6006546117d59030906001600160a01b031684610c64565b60065460175460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611842573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118679190611d06565b5050505050565b6001600160a01b0382165f9081526005602052604081205460ff16806118ab57506001600160a01b0382165f9081526005602052604090205460ff165b156118c5576014546118be906064610d87565b905061053a565b6007546001600160a01b03908116908316036118e4575060125461053a565b6007546001600160a01b0390811690841603611903575060115461053a565b5060135492915050565b5f6020808352835180828501525f5b818110156119385785810183015185820160400152820161191c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461196c575f80fd5b50565b5f8060408385031215611980575f80fd5b823561198b81611958565b946020939093013593505050565b5f805f606084860312156119ab575f80fd5b505081359360208301359350604090920135919050565b5f805f606084860312156119d4575f80fd5b83356119df81611958565b925060208401356119ef81611958565b929592945050506040919091013590565b5f60208284031215611a10575f80fd5b813561075681611958565b801515811461196c575f80fd5b5f8060408385031215611a39575f80fd5b8235611a4481611958565b91506020830135611a5481611a1b565b809150509250929050565b5f805f805f805f60e0888a031215611a75575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f805f60608486031215611ab8575f80fd5b8335611ac381611958565b92506020840135611ad381611958565b91506040840135611ae381611958565b809150509250925092565b5f8060408385031215611aff575f80fd5b8235611b0a81611958565b91506020830135611a5481611958565b5f805f60408486031215611b2c575f80fd5b833567ffffffffffffffff80821115611b43575f80fd5b818601915086601f830112611b56575f80fd5b813581811115611b64575f80fd5b8760208260051b8501011115611b78575f80fd5b60209283019550935050840135611ae381611a1b565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f60208284031215611bbe575f80fd5b5051919050565b5f60208284031215611bd5575f80fd5b815161075681611a1b565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611c1957611c19611bf4565b5060010190565b8181038181111561053a5761053a611bf4565b808202811582820484141761053a5761053a611bf4565b5f82611c6457634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561053a5761053a611bf4565b5f60208284031215611c8c575f80fd5b815161075681611958565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611ce55784516001600160a01b031683529383019391830191600101611cc0565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611d18575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f230355030547436a4fe7047892e3c32b1ac153ae754090ad561031758225a9064736f6c63430008150033

Deployed Bytecode Sourcemap

4908:11534:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7342:67;;;;;;;;;;-1:-1:-1;7402:5:0;;;;;;;;;;;;-1:-1:-1;;;7402:5:0;;;;7342:67;;;;;;;:::i;:::-;;;;;;;;8225:133;;;;;;;;;;-1:-1:-1;8225:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8225:133:0;1023:187:1;8364:127:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;8364:127:0;1215:177:1;9797:544:0;;;;;;;;;;-1:-1:-1;9797:544:0;;;;;:::i;:::-;;:::i;:::-;;15785:309;;;;;;;;;;-1:-1:-1;15785:309:0;;;;;:::i;:::-;;:::i;3907:87::-;;;;;;;;;;-1:-1:-1;3907:87:0;;;;;:::i;:::-;3962:4;3987:5;-1:-1:-1;;;;;3976:16:0;;;3987:5;;3976:16;;3907:87;7492:67;;;;;;;;;;-1:-1:-1;7492:67:0;;5129:1;2573:36:1;;2561:2;2546:18;7492:67:0;2431:184:1;5448:22:0;;;;;;;;;;-1:-1:-1;5448:22:0;;;;-1:-1:-1;;;;;5448:22:0;;;;;;-1:-1:-1;;;;;2784:32:1;;;2766:51;;2754:2;2739:18;5448:22:0;2620:203:1;6499:56:0;;;;;;;;;;;;;;;;7717:103;;;;;;;;;;-1:-1:-1;7717:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7800:18:0;7783:7;7800:18;;;:9;:18;;;;;;;7717:103;8104:115;;;;;;;;;;-1:-1:-1;8104:115:0;;;;;:::i;:::-;;:::i;11005:243::-;;;;;;;;;;-1:-1:-1;11005:243:0;;;;;:::i;:::-;;:::i;10890:107::-;;;;;;;;;;;;;:::i;9250:539::-;;;;;;;;;;-1:-1:-1;9250:539:0;;;;;:::i;:::-;;:::i;7633:78::-;;;;;;;;;;-1:-1:-1;7685:7:0;7703:5;-1:-1:-1;;;;;7703:5:0;7633:78;;6562:57;;;;;;;;;;;;;;;;10349:335;;;;;;;;;;-1:-1:-1;10349:335:0;;;;;:::i;:::-;;:::i;7415:71::-;;;;;;;;;;-1:-1:-1;7477:7:0;;;;;;;;;;;;-1:-1:-1;;;7477:7:0;;;;7415:71;;7826:139;;;;;;;;;;-1:-1:-1;7826:139:0;;;;;:::i;:::-;;:::i;5321:46::-;;;;;;;;;;-1:-1:-1;5321:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7565:62;;;;;;;;;;;;;:::i;7971:127::-;;;;;;;;;;-1:-1:-1;7971:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8069:18:0;;;8052:7;8069:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7971:127;4000:111;;;;;;;;;;-1:-1:-1;4000:111:0;;;;;:::i;:::-;;:::i;6626:62::-;;;;;;;;;;;;;;;;10692:190;;;;;;;;;;-1:-1:-1;10692:190:0;;;;;:::i;:::-;;:::i;8922:320::-;;;;;;;;;;-1:-1:-1;8922:320:0;;;;;:::i;:::-;;:::i;8225:133::-;8300:4;8307:37;8316:10;8328:7;8337:6;8307:8;:37::i;:::-;-1:-1:-1;8352:4:0;8225:133;;;;;:::o;8364:127::-;7800:9;:18;;;;6201:42;8417:7;7800:18;;;;;8434:7;;8417;;8434:55;;7800:18;;8434:28;;:7;:11;:28::i;:::-;:32;;:55::i;:::-;8427:62;;8364:127;:::o;9797:544::-;3962:4;3987:5;-1:-1:-1;;;;;3987:5:0;3874:10;3976:16;3858:38;;;;-1:-1:-1;;;3858:38:0;;;;;;;:::i;:::-;;;;;;;;;9901:13:::1;9917:28;9939:5;9917:17;9929:4;9917:7;;:11;;:17;;;;:::i;:::-;:21:::0;::::1;:28::i;:::-;9901:44;;9947:19;9969:29;9992:5;9969:18;9981:5;9969:7;;:11;;:18;;;;:::i;:29::-;9947:51;;10000:17;10020:31;10045:5;10020:20;10032:7;10020;;:11;;:20;;;;:::i;:31::-;10062:13;:21:::0;;;10085:14:::1;:28:::0;;;10115:19:::1;:31:::0;;;10000:51;-1:-1:-1;;10173:30:0::1;10198:4;10173:20;10191:1;10173:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;10157:46;;10231:5;10222;:14;;:38;;;;;10255:5;10240:11;:20;;10222:38;:60;;;;;10277:5;10264:9;:18;;10222:60;10214:119;;;::::0;-1:-1:-1;;;10214:119:0;;6413:2:1;10214:119:0::1;::::0;::::1;6395:21:1::0;6452:2;6432:18;;;6425:30;6491:34;6471:18;;;6464:62;-1:-1:-1;;;6542:18:1;;;6535:44;6596:19;;10214:119:0::1;6211:410:1::0;10214:119:0::1;9890:451;;;;9797:544:::0;;;:::o;15785:309::-;15883:4;15900:36;15910:6;15918:9;15929:6;15900:9;:36::i;:::-;15947:117;15956:6;15964:10;15976:87;16012:6;15976:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15976:19:0;;;;;;:11;:19;;;;;;;;15996:10;15976:31;;;;;;;;;:87;:35;:87::i;:::-;15947:8;:117::i;:::-;-1:-1:-1;16082:4:0;15785:309;;;;;;:::o;8104:115::-;3962:4;3987:5;-1:-1:-1;;;;;3987:5:0;3874:10;3976:16;3858:38;;;;-1:-1:-1;;;3858:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8183:23:0;;;::::1;;::::0;;;:13:::1;:23;::::0;;;;:34;;-1:-1:-1;;8183:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8104:115::o;11005:243::-;3962:4;3987:5;-1:-1:-1;;;;;3987:5:0;3874:10;3976:16;3858:38;;;;-1:-1:-1;;;3858:38:0;;;;;;;:::i;:::-;11117:41:::1;::::0;-1:-1:-1;;;11117:41:0;;11152:4:::1;11117:41;::::0;::::1;2766:51:1::0;11099:15:0::1;::::0;11117:63:::1;::::0;11176:3:::1;::::0;11117:54:::1;::::0;11163:7;;-1:-1:-1;;;;;11117:26:0;::::1;::::0;::::1;::::0;2739:18:1;;11117:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:63::-;11217:13;::::0;11191:49:::1;::::0;-1:-1:-1;;;11191:49:0;;-1:-1:-1;;;;;11217:13:0;;::::1;11191:49;::::0;::::1;6989:51:1::0;7056:18;;;7049:34;;;11099:81:0;;-1:-1:-1;11191:25:0;::::1;::::0;::::1;::::0;6962:18:1;;11191:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11088:160;11005:243:::0;;:::o;10890:107::-;3962:4;3987:5;-1:-1:-1;;;;;3987:5:0;3874:10;3976:16;3858:38;;;;-1:-1:-1;;;3858:38:0;;;;;;;:::i;:::-;10948:41:::1;10972:16;;10948:23;:41::i;:::-;10890:107::o:0;9250:539::-;3962:4;3987:5;-1:-1:-1;;;;;3987:5:0;3874:10;3976:16;3858:38;;;;-1:-1:-1;;;3858:38:0;;;;;;;:::i;:::-;9427:8:::1;:21:::0;;;9450:15:::1;:28:::0;;;9480:7:::1;:15:::0;;;9497:9:::1;:24:::0;;;9523:11:::1;:20:::0;;;9545:12:::1;:20:::0;;;9567:16:::1;:25:::0;;;9626:11:::1;::::0;:18:::1;::::0;-1:-1:-1;9626:15:0::1;:18::i;:::-;9611:11;;:33;;:71;;;;-1:-1:-1::0;9664:11:0::1;::::0;:18:::1;::::0;9680:1:::1;9664:15;:18::i;:::-;9648:12;;:34;;9611:71;:113;;;;-1:-1:-1::0;9706:11:0::1;::::0;:18:::1;::::0;9722:1:::1;9706:15;:18::i;:::-;9686:16;;:38;;9611:113;9603:178;;;::::0;-1:-1:-1;;;9603:178:0;;7546:2:1;9603:178:0::1;::::0;::::1;7528:21:1::0;7585:2;7565:18;;;7558:30;7624:34;7604:18;;;7597:62;-1:-1:-1;;;7675:18:1;;;7668:50;7735:19;;9603:178:0::1;7344:416:1::0;10349:335:0;3962:4;3987:5;-1:-1:-1;;;;;3987:5:0;3874:10;3976:16;3858:38;;;;-1:-1:-1;;;3858:38:0;;;;;;;:::i;:::-;10471:20:::1;:33:::0;;-1:-1:-1;;;;;10471:33:0;;::::1;-1:-1:-1::0;;;;;;10471:33:0;;::::1;::::0;::::1;::::0;;;10506:14:::1;:27:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;10535:13:::1;:28:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;10471:20:::1;10574:25:::0;;;:13:::1;:25;::::0;;;;;:32;;-1:-1:-1;;10574:32:0;;::::1;10471:33:::0;10574:32;;::::1;::::0;;;10608:25;;;;;;:32;;;::::1;::::0;::::1;::::0;;10642:27;;;;;;:34;;;;::::1;::::0;;::::1;::::0;;10349:335::o;7826:139::-;7904:4;7911:40;7921:10;7933:9;7944:6;7911:9;:40::i;7565:62::-;3962:4;3987:5;-1:-1:-1;;;;;3987:5:0;3874:10;3976:16;3858:38;;;;-1:-1:-1;;;3858:38:0;;;;;;;:::i;:::-;7608:10:::1;:17:::0;;-1:-1:-1;;;;7608:17:0::1;-1:-1:-1::0;;;7608:17:0::1;::::0;;7565:62::o;4000:111::-;3962:4;3987:5;-1:-1:-1;;;;;3987:5:0;3874:10;3976:16;3858:38;;;;-1:-1:-1;;;3858:38:0;;;;;;;:::i;:::-;4066:5:::1;:11:::0;;-1:-1:-1;;;;;;4066:11:0::1;-1:-1:-1::0;;;;;4066:11:0;::::1;::::0;;::::1;::::0;;;4084:25:::1;::::0;2766:51:1;;;4084:25:0::1;::::0;2754:2:1;2739:18;4084:25:0::1;;;;;;;4000:111:::0;:::o;10692:190::-;3962:4;3987:5;-1:-1:-1;;;;;3987:5:0;3874:10;3976:16;3858:38;;;;-1:-1:-1;;;3858:38:0;;;;;;;:::i;:::-;10792:6:::1;10788:87;10802:20:::0;;::::1;10788:87;;;10864:8;10839;:22;10848:9;;10858:1;10848:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10839:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;10839:22:0;:33;;-1:-1:-1;;10839:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10824:3;::::1;::::0;::::1;:::i;:::-;;;;10788:87;;8922:320:::0;3962:4;3987:5;-1:-1:-1;;;;;3987:5:0;3874:10;3976:16;3858:38;;;;-1:-1:-1;;;3858:38:0;;;;;;;:::i;:::-;9056:15:::1;:29:::0;;;9106:7:::1;::::0;:48:::1;::::0;9146:6:::1;::::0;9106:27:::1;::::0;9118:14;9106:11:::1;:27::i;:48::-;9087:16;:67:::0;9185:7:::1;::::0;:49:::1;::::0;9226:6:::1;::::0;9185:28:::1;::::0;9197:15;9185:11:::1;:28::i;:49::-;9166:16;:68:::0;-1:-1:-1;;;8922:320:0:o;16102:335::-;-1:-1:-1;;;;;16195:19:0;;16187:68;;;;-1:-1:-1;;;16187:68:0;;8587:2:1;16187:68:0;;;8569:21:1;8626:2;8606:18;;;8599:30;8665:34;8645:18;;;8638:62;-1:-1:-1;;;8716:18:1;;;8709:34;8760:19;;16187:68:0;8385:400:1;16187:68:0;-1:-1:-1;;;;;16274:21:0;;16266:68;;;;-1:-1:-1;;;16266:68:0;;8992:2:1;16266:68:0;;;8974:21:1;9031:2;9011:18;;;9004:30;9070:34;9050:18;;;9043:62;-1:-1:-1;;;9121:18:1;;;9114:32;9163:19;;16266:68:0;8790:398:1;16266:68:0;-1:-1:-1;;;;;16345:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16397:32;;1361:25:1;;;16397:32:0;;1334:18:1;16397:32:0;;;;;;;16102:335;;;:::o;1644:98::-;1702:7;1729:5;1733:1;1729;:5;:::i;1750:98::-;1808:7;1835:5;1839:1;1835;:5;:::i;1856:98::-;1914:7;1941:5;1945:1;1941;:5;:::i;14298:1479::-;-1:-1:-1;;;;;14395:20:0;;14387:70;;;;-1:-1:-1;;;14387:70:0;;9923:2:1;14387:70:0;;;9905:21:1;9962:2;9942:18;;;9935:30;10001:34;9981:18;;;9974:62;-1:-1:-1;;;10052:18:1;;;10045:35;10097:19;;14387:70:0;9721:401:1;14387:70:0;-1:-1:-1;;;;;14476:23:0;;14468:71;;;;-1:-1:-1;;;14468:71:0;;10329:2:1;14468:71:0;;;10311:21:1;10368:2;10348:18;;;10341:30;10407:34;10387:18;;;10380:62;-1:-1:-1;;;10458:18:1;;;10451:33;10501:19;;14468:71:0;10127:399:1;14468:71:0;-1:-1:-1;;;;;7800:18:0;;7783:7;7800:18;;;:9;:18;;;;;;14558:6;:27;;14550:88;;;;-1:-1:-1;;;14550:88:0;;10733:2:1;14550:88:0;;;10715:21:1;10772:2;10752:18;;;10745:30;10811:34;10791:18;;;10784:62;-1:-1:-1;;;10862:18:1;;;10855:47;10919:19;;14550:88:0;10531:413:1;14550:88:0;-1:-1:-1;;;;;14653:21:0;;;;;;:13;:21;;;;;;;;14652:22;:51;;;;-1:-1:-1;;;;;;14679:24:0;;;;;;:13;:24;;;;;;;;14678:25;14652:51;14649:91;;;14713:10;;-1:-1:-1;;;14713:10:0;;;;14705:33;;;;-1:-1:-1;;;14705:33:0;;11151:2:1;14705:33:0;;;11133:21:1;11190:2;11170:18;;;11163:30;-1:-1:-1;;;11209:18:1;;;11202:40;11259:18;;14705:33:0;10949:334:1;14705:33:0;-1:-1:-1;;;;;14754:21:0;;;;;;:13;:21;;;;;;;;14753:22;:51;;;;-1:-1:-1;;;;;;14780:24:0;;;;;;:13;:24;;;;;;;;14779:25;14753:51;:84;;;;-1:-1:-1;14829:7:0;;-1:-1:-1;;;;;14808:29:0;;;14829:7;;14808:29;;14753:84;:114;;;;-1:-1:-1;;;;;;14841:26:0;;6201:42;14841:26;;14753:114;14750:231;;;14925:19;;-1:-1:-1;;;;;14888:20:0;;;;;;:9;:20;;;;;;:32;;14913:6;14888:24;:32::i;:::-;14887:57;;14879:100;;;;-1:-1:-1;;;14879:100:0;;11490:2:1;14879:100:0;;;11472:21:1;11529:2;11509:18;;;11502:30;11568:32;11548:18;;;11541:60;11618:18;;14879:100:0;11288:354:1;14879:100:0;15004:7;;-1:-1:-1;;;;;14994:17:0;;;15004:7;;14994:17;14991:131;;15031:14;;15021:6;:24;;:49;;;-1:-1:-1;;;;;;15049:21:0;;;;;;:13;:21;;;;;;;;15021:49;:77;;;-1:-1:-1;;;;;;15074:24:0;;;;;;:13;:24;;;;;;;;15021:77;15013:107;;;;-1:-1:-1;;;15013:107:0;;11849:2:1;15013:107:0;;;11831:21:1;11888:2;11868:18;;;11861:30;-1:-1:-1;;;11907:18:1;;;11900:47;11964:18;;15013:107:0;11647:341:1;15013:107:0;15150:13;;15140:6;:23;;:48;;;-1:-1:-1;;;;;;15167:21:0;;;;;;:13;:21;;;;;;;;15140:48;:76;;;-1:-1:-1;;;;;;15192:24:0;;;;;;:13;:24;;;;;;;;15140:76;15132:106;;;;-1:-1:-1;;;15132:106:0;;11849:2:1;15132:106:0;;;11831:21:1;11888:2;11868:18;;;11861:30;-1:-1:-1;;;11907:18:1;;;11900:47;11964:18;;15132:106:0;11647:341:1;15132:106:0;15266:7;;-1:-1:-1;;;;;15253:20:0;;;15266:7;;15253:20;:46;;;;-1:-1:-1;;;;;;15278:21:0;;;;;;:13;:21;;;;;;;;15277:22;15253:46;15250:76;;;15322:1;15301:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;15250:76:0;15339:43;15356:6;15364:9;15375:6;15339:16;:43::i;:::-;15336:115;;;15384:41;15408:16;;15384:23;:41::i;:::-;15447:1;15427:9;:22;15336:115;-1:-1:-1;;;;;15481:17:0;;;;;;:9;:17;;;;;;:29;;15503:6;15481:21;:29::i;:::-;-1:-1:-1;;;;;15461:17:0;;;;;;:9;:17;;;;;;;;:49;;;;13232:13;:21;;;;;;;;13231:22;15546:90;;15630:6;15546:90;;;15587:40;15601:6;15609:9;15620:6;15587:13;:40::i;:::-;-1:-1:-1;;;;;15670:20:0;;;;;;:9;:20;;;;;;15521:115;;-1:-1:-1;15670:40:0;;15521:115;15670:24;:40::i;:::-;-1:-1:-1;;;;;15647:20:0;;;;;;;:9;:20;;;;;;;:63;;;;15726:43;;;;;;;;;;15754:14;1361:25:1;;1349:2;1334:18;;1215:177;15726:43:0;;;;;;;;14376:1401;14298:1479;;;:::o;2068:240::-;2188:7;2249:12;2241:6;;;;2233:29;;;;-1:-1:-1;;;2233:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2284:5:0;;;2068:240::o;11256:1052::-;5804:8;:15;;-1:-1:-1;;5804:15:0;5815:4;5804:15;;;;;;11401:9:::1;::::0;11380:15:::1;::::0;11360:8:::1;::::0;5804;;11359:60:::1;::::0;11417:1:::1;::::0;11360:51:::1;::::0;11401:9;;11360:36:::1;::::0;;;:12:::1;:15::i;:::-;:19:::0;::::1;:36::i;11359:60::-;11336:83;;11430:32;11465:38;11490:12;11465:20;11476:8;;11465:6;:10;;:20;;;;:::i;:38::-;11430:73:::0;-1:-1:-1;11514:14:0::1;11531:36;:6:::0;11430:73;11531:10:::1;:36::i;:::-;11514:53:::0;-1:-1:-1;11603:21:0::1;11635:24;11514:53:::0;11635:16:::1;:24::i;:::-;11670:20;11693:41;:21;11719:14:::0;11693:25:::1;:41::i;:::-;11670:64;;11745:19;11766:44;11783:26;11800:8;;11783:12;:16;;:26;;;;:::i;:::-;11766:12:::0;;:16:::1;:44::i;:::-;11745:65;;11821:29;11853:25;11869:8;;11853:11;:15;;:25;;;;:::i;:::-;11821:57:::0;-1:-1:-1;11892:34:0;;11889:103:::1;;11928:61;11941:24;11967:21;11928:12;:61::i;:::-;12048:15;::::0;12002:20:::1;::::0;12025:39:::1;::::0;:18:::1;:11:::0;12041:1:::1;12025:15;:18::i;:39::-;12002:62:::0;-1:-1:-1;12078:16:0;;12075:75:::1;;12104:20;::::0;12096:52:::1;::::0;-1:-1:-1;;;;;12104:20:0;;::::1;::::0;12096:52;::::1;;;::::0;12135:12;;12104:20:::1;12096:52:::0;12104:20;12096:52;12135:12;12104:20;12096:52;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12075:75;12186:21;12221:28:::0;;12218:83:::1;;12259:13;::::0;12251:48:::1;::::0;-1:-1:-1;;;;;12259:13:0;;::::1;::::0;12251:48;::::1;;;::::0;12283:15;;12259:13:::1;12251:48:::0;12259:13;12251:48;12283:15;12259:13;12251:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12218:83;-1:-1:-1::0;;5824:8:0;:16;;-1:-1:-1;;5824:16:0;;;-1:-1:-1;;;;;;;;11256:1052:0:o;1538:98::-;1596:7;1623:5;1627:1;1623;:5;:::i;8499:415::-;8642:16;;8719;;8709:4;8599;7800:18;;;:9;:18;;;;;;8754:8;;8599:4;;8632:26;;;;-1:-1:-1;8691:44:0;;8754:8;;8753:9;:27;;;;-1:-1:-1;8766:14:0;;-1:-1:-1;;;8766:14:0;;;;8753:27;:41;;;;-1:-1:-1;8784:10:0;;-1:-1:-1;;;8784:10:0;;;;8753:41;:53;;;;;8798:8;8753:53;:79;;;;-1:-1:-1;;;;;;8811:21:0;;;;;;:13;:21;;;;;;;;8810:22;8753:79;:103;;;;-1:-1:-1;8849:7:0;;-1:-1:-1;;;;;8836:20:0;;;8849:7;;8836:20;8753:103;:135;;;;;8873:15;;8860:9;;:28;;8753:135;:153;;;;;8892:14;8753:153;8746:160;8499:415;-1:-1:-1;;;;;;8499:415:0:o;13613:677::-;-1:-1:-1;;;;;13729:24:0;;13705:7;13729:24;;;:13;:24;;;;;;;;13725:53;;;-1:-1:-1;13763:13:0;;13756:20;;13725:53;13830:1;13791:36;13809:6;13817:9;13791:17;:36::i;:::-;:40;13788:480;;;13843:17;13863:65;13891:36;13909:6;13917:9;13891:17;:36::i;:::-;13874:11;;13863:23;;:6;;:10;:23::i;:65::-;13984:4;13966:24;;;;:9;:24;;;;;;13843:85;;-1:-1:-1;13966:39:0;;13843:85;13966:28;:39::i;:::-;13957:4;13939:24;;;;:9;:24;;;;;;;:66;;;;14021:42;;-1:-1:-1;;;;;14021:42:0;;;;;;;14053:9;1361:25:1;;1349:2;1334:18;;1215:177;14021:42:0;;;;;;;;14095:1;14077:7;;:20;:70;;;;;14140:7;;14101:36;14119:6;14127:9;14101:17;:36::i;:::-;:46;14077:70;14074:154;;;14149:77;14167:4;6201:42;14189:36;14217:7;;14189:23;14200:11;;14189:6;:10;;:23;;;;:::i;:36::-;14149:9;:77::i;:::-;14245:21;:6;14256:9;14245:10;:21::i;:::-;14238:28;;;;;13788:480;-1:-1:-1;14276:6:0;13613:677;-1:-1:-1;;13613:677:0:o;12669:443::-;12759:16;;;12773:1;12759:16;;;;;;;;12735:21;;12759:16;;;;;;;;;;-1:-1:-1;12759:16:0;12735:40;;12804:4;12786;12791:1;12786:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12786:23:0;;;:7;;;;;;;;;;:23;;;;12830:9;;:16;;;-1:-1:-1;;;12830:16:0;;;;:9;;;;;:14;;:16;;;;;12786:7;;12830:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12820:4;12825:1;12820:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12820:26:0;;;:7;;;;;;;;;:26;12889:9;;12857:56;;12874:4;;12889:9;12901:11;12857:8;:56::i;:::-;12924:9;;:180;;-1:-1:-1;;;12924:180:0;;-1:-1:-1;;;;;12924:9:0;;;;:60;;:180;;12999:11;;12924:9;;13041:4;;13068;;13088:15;;12924:180;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12724:388;12669:443;:::o;12316:345::-;12429:9;;12397:56;;12414:4;;-1:-1:-1;;;;;12429:9:0;12441:11;12397:8;:56::i;:::-;12464:9;;12608:14;;12464:189;;-1:-1:-1;;;12464:189:0;;12530:4;12464:189;;;13837:34:1;13887:18;;;13880:34;;;12464:9:0;13930:18:1;;;13923:34;;;13973:18;;;13966:34;-1:-1:-1;;;;;12608:14:0;;;14016:19:1;;;14009:44;12637:15:0;14069:19:1;;;14062:35;12464:9:0;;;:25;;12497:9;;13771:19:1;;12464:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12316:345;;:::o;13269:336::-;-1:-1:-1;;;;;13377:16:0;;13354:7;13377:16;;;:8;:16;;;;;;;;;:39;;-1:-1:-1;;;;;;13397:19:0;;;;;;:8;:19;;;;;;;;13377:39;13374:82;;;13425:11;;:29;;13449:3;13425:15;:29::i;:::-;13418:36;;;;13374:82;13482:7;;-1:-1:-1;;;;;13482:7:0;;;13469:20;;;;13466:46;;-1:-1:-1;13498:12:0;;13491:19;;13466:46;13535:7;;-1:-1:-1;;;;;13535:7:0;;;13525:17;;;;13522:42;;-1:-1:-1;13551:11:0;;13544:18;;13522:42;-1:-1:-1;13581:16:0;;13269:336;;;;:::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;1397:316::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;-1:-1:-1;;1582:23:1;;;1652:2;1637:18;;1624:32;;-1:-1:-1;1703:2:1;1688:18;;;1675:32;;1397:316;-1:-1:-1;1397:316:1:o;1718:456::-;1795:6;1803;1811;1864:2;1852:9;1843:7;1839:23;1835:32;1832:52;;;1880:1;1877;1870:12;1832:52;1919:9;1906:23;1938:31;1963:5;1938:31;:::i;:::-;1988:5;-1:-1:-1;2045:2:1;2030:18;;2017:32;2058:33;2017:32;2058:33;:::i;:::-;1718:456;;2110:7;;-1:-1:-1;;;2164:2:1;2149:18;;;;2136:32;;1718:456::o;2179:247::-;2238:6;2291:2;2279:9;2270:7;2266:23;2262:32;2259:52;;;2307:1;2304;2297:12;2259:52;2346:9;2333:23;2365:31;2390:5;2365:31;:::i;2828:118::-;2914:5;2907:13;2900:21;2893:5;2890:32;2880:60;;2936:1;2933;2926:12;2951:382;3016:6;3024;3077:2;3065:9;3056:7;3052:23;3048:32;3045:52;;;3093:1;3090;3083:12;3045:52;3132:9;3119:23;3151:31;3176:5;3151:31;:::i;:::-;3201:5;-1:-1:-1;3258:2:1;3243:18;;3230:32;3271:30;3230:32;3271:30;:::i;:::-;3320:7;3310:17;;;2951:382;;;;;:::o;3338:592::-;3451:6;3459;3467;3475;3483;3491;3499;3552:3;3540:9;3531:7;3527:23;3523:33;3520:53;;;3569:1;3566;3559:12;3520:53;-1:-1:-1;;3592:23:1;;;3662:2;3647:18;;3634:32;;-1:-1:-1;3713:2:1;3698:18;;3685:32;;3764:2;3749:18;;3736:32;;-1:-1:-1;3815:3:1;3800:19;;3787:33;;-1:-1:-1;3867:3:1;3852:19;;3839:33;;-1:-1:-1;3919:3:1;3904:19;3891:33;;-1:-1:-1;3338:592:1;-1:-1:-1;3338:592:1:o;3935:529::-;4012:6;4020;4028;4081:2;4069:9;4060:7;4056:23;4052:32;4049:52;;;4097:1;4094;4087:12;4049:52;4136:9;4123:23;4155:31;4180:5;4155:31;:::i;:::-;4205:5;-1:-1:-1;4262:2:1;4247:18;;4234:32;4275:33;4234:32;4275:33;:::i;:::-;4327:7;-1:-1:-1;4386:2:1;4371:18;;4358:32;4399:33;4358:32;4399:33;:::i;:::-;4451:7;4441:17;;;3935:529;;;;;:::o;4469:388::-;4537:6;4545;4598:2;4586:9;4577:7;4573:23;4569:32;4566:52;;;4614:1;4611;4604:12;4566:52;4653:9;4640:23;4672:31;4697:5;4672:31;:::i;:::-;4722:5;-1:-1:-1;4779:2:1;4764:18;;4751:32;4792:33;4751:32;4792:33;:::i;5122:750::-;5214:6;5222;5230;5283:2;5271:9;5262:7;5258:23;5254:32;5251:52;;;5299:1;5296;5289:12;5251:52;5339:9;5326:23;5368:18;5409:2;5401:6;5398:14;5395:34;;;5425:1;5422;5415:12;5395:34;5463:6;5452:9;5448:22;5438:32;;5508:7;5501:4;5497:2;5493:13;5489:27;5479:55;;5530:1;5527;5520:12;5479:55;5570:2;5557:16;5596:2;5588:6;5585:14;5582:34;;;5612:1;5609;5602:12;5582:34;5667:7;5660:4;5650:6;5647:1;5643:14;5639:2;5635:23;5631:34;5628:47;5625:67;;;5688:1;5685;5678:12;5625:67;5719:4;5711:13;;;;-1:-1:-1;5743:6:1;-1:-1:-1;;5784:20:1;;5771:34;5814:28;5771:34;5814:28;:::i;5877:329::-;6079:2;6061:21;;;6118:1;6098:18;;;6091:29;-1:-1:-1;;;6151:2:1;6136:18;;6129:36;6197:2;6182:18;;5877:329::o;6626:184::-;6696:6;6749:2;6737:9;6728:7;6724:23;6720:32;6717:52;;;6765:1;6762;6755:12;6717:52;-1:-1:-1;6788:16:1;;6626:184;-1:-1:-1;6626:184:1:o;7094:245::-;7161:6;7214:2;7202:9;7193:7;7189:23;7185:32;7182:52;;;7230:1;7227;7220:12;7182:52;7262:9;7256:16;7281:28;7303:5;7281:28;:::i;7981:127::-;8042:10;8037:3;8033:20;8030:1;8023:31;8073:4;8070:1;8063:15;8097:4;8094:1;8087:15;8113:127;8174:10;8169:3;8165:20;8162:1;8155:31;8205:4;8202:1;8195:15;8229:4;8226:1;8219:15;8245:135;8284:3;8305:17;;;8302:43;;8325:18;;:::i;:::-;-1:-1:-1;8372:1:1;8361:13;;8245:135::o;9193:128::-;9260:9;;;9281:11;;;9278:37;;;9295:18;;:::i;9326:168::-;9399:9;;;9430;;9447:15;;;9441:22;;9427:37;9417:71;;9468:18;;:::i;9499:217::-;9539:1;9565;9555:132;;9609:10;9604:3;9600:20;9597:1;9590:31;9644:4;9641:1;9634:15;9672:4;9669:1;9662:15;9555:132;-1:-1:-1;9701:9:1;;9499:217::o;11993:125::-;12058:9;;;12079:10;;;12076:36;;;12092:18;;:::i;12255:251::-;12325:6;12378:2;12366:9;12357:7;12353:23;12349:32;12346:52;;;12394:1;12391;12384:12;12346:52;12426:9;12420:16;12445:31;12470:5;12445:31;:::i;12511:980::-;12773:4;12821:3;12810:9;12806:19;12852:6;12841:9;12834:25;12878:2;12916:6;12911:2;12900:9;12896:18;12889:34;12959:3;12954:2;12943:9;12939:18;12932:31;12983:6;13018;13012:13;13049:6;13041;13034:22;13087:3;13076:9;13072:19;13065:26;;13126:2;13118:6;13114:15;13100:29;;13147:1;13157:195;13171:6;13168:1;13165:13;13157:195;;;13236:13;;-1:-1:-1;;;;;13232:39:1;13220:52;;13327:15;;;;13292:12;;;;13268:1;13186:9;13157:195;;;-1:-1:-1;;;;;;;13408:32:1;;;;13403:2;13388:18;;13381:60;-1:-1:-1;;;13472:3:1;13457:19;13450:35;13369:3;12511:980;-1:-1:-1;;;12511:980:1:o;14108:306::-;14196:6;14204;14212;14265:2;14253:9;14244:7;14240:23;14236:32;14233:52;;;14281:1;14278;14271:12;14233:52;14310:9;14304:16;14294:26;;14360:2;14349:9;14345:18;14339:25;14329:35;;14404:2;14393:9;14389:18;14383:25;14373:35;;14108:306;;;;;:::o

Swarm Source

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