ETH Price: $2,677.05 (+1.60%)

Token

ETG Finance (ETGF)
 

Overview

Max Total Supply

1,000,000,000 ETGF

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,136,450.732004855 ETGF

Value
$0.00
0x28FD522E9682997f18b824ed104d9996D4001782
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:
ETGF

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-09-26
*/

// SPDX-License-Identifier: MIT

/*
Website: https://www.etgfinance.org
Telegram: https://t.me/etg_erc
Twitter: https://twitter.com/etg_erc
*/

pragma solidity 0.8.21;

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 renounceOwnership() public onlyOwner {owner = address(0); emit OwnershipTransferred(address(0));}
    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);
}
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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}
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);
}
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 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;
        }
    }
}
contract ETGF is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = unicode"ETG Finance";
    string private constant _symbol = unicode"ETGF";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isExemptFee;
    IRouter router;
    address public pair;
    bool private tradeEnabled = false;
    bool private swapEnabled = true;
    uint256 private swappingcount;
    bool private swapping;
    uint256 swapAmount;
    uint256 private taxSwapThresh = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTaxSwap = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 100;
    uint256 private burnFee = 0;
    uint256 private totalFee = 1400;
    uint256 private sellFee = 2800;
    uint256 private transferFee = 1400;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal devAddress=0xb91589262b99cbE4D8771D6DA9De49B61F5E58C3; 
    address internal marketingAddress=0xb91589262b99cbE4D8771D6DA9De49B61F5E58C3;
    address internal teamAddress=0xb91589262b99cbE4D8771D6DA9De49B61F5E58C3;
    uint256 public maximumTx = ( _totalSupply * 250 ) / 10000;
    uint256 public maxSellAmount = ( _totalSupply * 250 ) / 10000;
    uint256 public maxHoldings = ( _totalSupply * 250 ) / 10000;
    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; pair = _pair;
        isExemptFee[teamAddress] = true;
        isExemptFee[marketingAddress] = true;
        isExemptFee[devAddress] = true;
        isExemptFee[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 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 startTrading() external onlyOwner {tradeEnabled = true;}
    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 getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function shouldClearCATokens(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTaxSwap;
        bool aboveThreshold = balanceOf(address(this)) >= taxSwapThresh;
        return !swapping && swapEnabled && tradeEnabled && aboveMin && !isExemptFee[sender] && recipient == pair && swappingcount >= swapAmount && aboveThreshold;
    }
    function setTransactionLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
        maximumTx = newTx; maxSellAmount = newTransfer; maxHoldings = 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 manualSwap() external onlyOwner {
        swapBackandBurnFees(taxSwapThresh);
    }
    function rescueERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(devAddress, _amount);
    }
    function swapBackandBurnFees(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(marketingAddress).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(devAddress).transfer(contractBalance);}
    }
    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            teamAddress,
            block.timestamp);
    }
    function chargeFees(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if (isExemptFee[recipient]) {return maximumTx;}
        if(getFeesExact(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getFeesExact(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getFeesExact(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        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(!isExemptFee[sender] && !isExemptFee[recipient]){require(tradeEnabled, "tradeEnabled");}
        if(!isExemptFee[sender] && !isExemptFee[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= maxHoldings, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= maxSellAmount || isExemptFee[sender] || isExemptFee[recipient], "TX Limit Exceeded");}
        require(amount <= maximumTx || isExemptFee[sender] || isExemptFee[recipient], "TX Limit Exceeded"); 
        if(recipient == pair && !isExemptFee[sender]){swappingcount += uint256(1);}
        if(shouldClearCATokens(sender, recipient, amount)){swapBackandBurnFees(taxSwapThresh); swappingcount = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = !isExemptFee[sender] ? chargeFees(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
    function getFeesExact(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }
    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 setContractSwapSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; taxSwapThresh = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTaxSwap = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }
    function setInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketingAddress = _marketing; teamAddress = _liquidity; devAddress = _development;
        isExemptFee[_marketing] = true; isExemptFee[_liquidity] = true; isExemptFee[_development] = true;
    }
    function setTransactionRequirements(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(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function 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);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExemptFee","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":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","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":"setContractSwapSettings","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":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTransactionLimits","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":"setTransactionRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","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"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004ae565b6200002290633b9aca00620004c5565b60018190556006805461ffff60a01b1916600160a81b179055620186a0906200004e906103e8620004c5565b6200005a9190620004df565b600a55620186a0600154600a620000729190620004c5565b6200007e9190620004df565b600b555f600c819055600d8190556064600e55600f556105786010819055610af060115560125561271060138190556014805473b91589262b99cbe4d8771d6da9de49b61f5e58c36001600160a01b0319918216811790925560158054821683179055601680549091169091179055600154620000fd9060fa620004c5565b620001099190620004df565b60175561271060015460fa620001209190620004c5565b6200012c9190620004df565b60185561271060015460fa620001439190620004c5565b6200014f9190620004df565b6019553480156200015e575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e99190620004ff565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000235573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025b9190620004ff565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002cc9190620004ff565b600580546001600160a01b038581166001600160a01b03199283161790925560068054848416921691909117905560165481165f908152600460209081526040808320805460ff19908116600190811790925560155486168552828520805482168317905560145490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000527565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003f357815f1904821115620003d757620003d76200039f565b80851615620003e557918102915b93841c9390800290620003b8565b509250929050565b5f826200040b57506001620004a8565b816200041957505f620004a8565b81600181146200043257600281146200043d576200045d565b6001915050620004a8565b60ff8411156200045157620004516200039f565b50506001821b620004a8565b5060208310610133831016604e8410600b841016171562000482575081810a620004a8565b6200048e8383620003b3565b805f1904821115620004a457620004a46200039f565b0290505b92915050565b5f620004be60ff841683620003fb565b9392505050565b8082028115828204841417620004a857620004a86200039f565b5f82620004fa57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000510575f80fd5b81516001600160a01b0381168114620004be575f80fd5b611baf80620005355f395ff3fe608060405260043610610164575f3560e01c8063893d20e8116100cd578063a8aa1b3111610087578063cb7f97d711610062578063cb7f97d71461044c578063dd62ed3e1461046b578063e54f4faa146104af578063f2fde38b146104c4575f80fd5b8063a8aa1b31146103f9578063a9059cbb14610418578063ac90547914610437575f80fd5b8063893d20e8146103215780638cd4426d146103515780639213c3581461037057806395d89b411461038f5780639cc35351146103bb5780639d8740cb146103da575f80fd5b8063313ce5671161011e578063313ce5671461026757806351bc3c851461028257806366d602ae1461029657806370a08231146102ab578063715018a6146102df578063891ff84a146102f3575f80fd5b806306fdde031461016f578063095ea7b3146101b457806318160ddd146101e357806323b872dd14610205578063293230b8146102245780632f54bf6e1461023a575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201909152600b81526a4554472046696e616e636560a81b60208201525b6040516101ab91906117ee565b60405180910390f35b3480156101bf575f80fd5b506101d36101ce366004611850565b6104e3565b60405190151581526020016101ab565b3480156101ee575f80fd5b506101f76104f9565b6040519081526020016101ab565b348015610210575f80fd5b506101d361021f36600461187a565b610569565b34801561022f575f80fd5b506102386105d1565b005b348015610245575f80fd5b506101d36102543660046118b8565b5f546001600160a01b0391821691161490565b348015610272575f80fd5b50604051600981526020016101ab565b34801561028d575f80fd5b50610238610618565b3480156102a1575f80fd5b506101f760185481565b3480156102b6575f80fd5b506101f76102c53660046118b8565b6001600160a01b03165f9081526002602052604090205490565b3480156102ea575f80fd5b5061023861064e565b3480156102fe575f80fd5b506101d361030d3660046118b8565b60046020525f908152604090205460ff1681565b34801561032c575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101ab565b34801561035c575f80fd5b5061023861036b366004611850565b6106bb565b34801561037b575f80fd5b5061023861038a3660046118d3565b6107e1565b34801561039a575f80fd5b5060408051808201909152600481526322aa23a360e11b602082015261019e565b3480156103c6575f80fd5b506102386103d536600461191b565b610885565b3480156103e5575f80fd5b506102386103f436600461191b565b6109b5565b348015610404575f80fd5b50600654610339906001600160a01b031681565b348015610423575f80fd5b506101d3610432366004611850565b610a1a565b348015610442575f80fd5b506101f760175481565b348015610457575f80fd5b50610238610466366004611944565b610a26565b348015610476575f80fd5b506101f761048536600461198b565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156104ba575f80fd5b506101f760195481565b3480156104cf575f80fd5b506102386104de3660046118b8565b610b1c565b5f6104ef338484610b98565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261056492909161055e9190610cbb565b90610cbb565b905090565b5f610575848484610cc6565b6105c684336105c185604051806060016040528060288152602001611b52602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190611205565b610b98565b5060015b9392505050565b5f546001600160a01b031633146106035760405162461bcd60e51b81526004016105fa906119c2565b60405180910390fd5b6006805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146106415760405162461bcd60e51b81526004016105fa906119c2565b61064c600a54611230565b565b5f546001600160a01b031633146106775760405162461bcd60e51b81526004016105fa906119c2565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146106e45760405162461bcd60e51b81526004016105fa906119c2565b6040516370a0823160e01b81523060048201525f906107659060649061075f9085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610735573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075991906119e2565b906113a0565b906113ab565b60145460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af11580156107b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107db91906119f9565b50505050565b5f546001600160a01b0316331461080a5760405162461bcd60e51b81526004016105fa906119c2565b601580546001600160a01b039485166001600160a01b0319918216811790925560168054948616948216851790556014805493909516921682179093555f92835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b5f546001600160a01b031633146108ae5760405162461bcd60e51b81526004016105fa906119c2565b5f6108ca61271061075f866001546113a090919063ffffffff16565b90505f6108e861271061075f866001546113a090919063ffffffff16565b90505f61090661271061075f866001546113a090919063ffffffff16565b60178490556018839055601981905590505f61092b6103e861075f60056107596104f9565b905080841015801561093d5750808310155b80156109495750808210155b6109ac5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105fa565b50505050505050565b5f546001600160a01b031633146109de5760405162461bcd60e51b81526004016105fa906119c2565b60098390556001546109f990620186a09061075f90856113a0565b600a55600154610a1290620186a09061075f90846113a0565b600b55505050565b5f6104ef338484610cc6565b5f546001600160a01b03163314610a4f5760405162461bcd60e51b81526004016105fa906119c2565b600c879055600d869055600f859055600e849055601083905560118290556012819055601354610a809060016113ab565b60105411158015610aa05750601354610a9a9060016113ab565b60115411155b8015610abb5750601354610ab59060016113ab565b60125411155b6109ac5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016105fa565b5f546001600160a01b03163314610b455760405162461bcd60e51b81526004016105fa906119c2565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610bfa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105fa565b6001600160a01b038216610c5b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105fa565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6105ca8284611a2c565b6001600160a01b038316610d2a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105fa565b6001600160a01b038216610d8c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105fa565b6001600160a01b0383165f90815260026020526040902054811115610e0d5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105fa565b6001600160a01b0383165f9081526004602052604090205460ff16158015610e4d57506001600160a01b0382165f9081526004602052604090205460ff16155b15610e9a57600654600160a01b900460ff16610e9a5760405162461bcd60e51b815260206004820152600c60248201526b1d1c985919515b98589b195960a21b60448201526064016105fa565b6001600160a01b0383165f9081526004602052604090205460ff16158015610eda57506001600160a01b0382165f9081526004602052604090205460ff16155b8015610ef457506006546001600160a01b03838116911614155b8015610f0b57506001600160a01b03821661dead14155b15610f83576019546001600160a01b0383165f90815260026020526040902054610f3590836113b6565b1115610f835760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105fa565b6006546001600160a01b038481169116146110225760185481111580610fc057506001600160a01b0383165f9081526004602052604090205460ff165b80610fe257506001600160a01b0382165f9081526004602052604090205460ff165b6110225760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105fa565b6017548111158061104a57506001600160a01b0383165f9081526004602052604090205460ff165b8061106c57506001600160a01b0382165f9081526004602052604090205460ff165b6110ac5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105fa565b6006546001600160a01b0383811691161480156110e157506001600160a01b0383165f9081526004602052604090205460ff16155b156110fe57600160075f8282546110f89190611a3f565b90915550505b6111098383836113c1565b1561111e57611119600a54611230565b5f6007555b6001600160a01b0383165f908152600260205260409020546111409082610cbb565b6001600160a01b0384165f90815260026020908152604080832093909355600490529081205460ff1615611174578161117f565b61117f848484611479565b6001600160a01b0384165f908152600260205260409020549091506111a490826113b6565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111f79085815260200190565b60405180910390a350505050565b5f81848411156112285760405162461bcd60e51b81526004016105fa91906117ee565b505050900390565b6008805460ff19166001908117909155600e54600d54600c545f93611269936002936107599391926112639283916113b6565b906113b6565b90505f6112858261075f600c54866113a090919063ffffffff16565b90505f6112928483610cbb565b90504761129e826115a3565b5f6112a94783610cbb565b90505f6112cb6112c4600c5488610cbb90919063ffffffff16565b83906113ab565b90505f6112e3600c54836113a090919063ffffffff16565b905080156112f5576112f586826116f3565b600d545f90611309906107598560026113a0565b9050801561134a576015546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611348573d5f803e3d5ffd5b505b47801561138a576014546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611388573d5f803e3d5ffd5b505b50506008805460ff191690555050505050505050565b5f6105ca8284611a52565b5f6105ca8284611a69565b5f6105ca8284611a3f565b600b54600a54305f9081526002602052604081205460085491938510159211159060ff161580156113fb5750600654600160a81b900460ff165b80156114105750600654600160a01b900460ff165b80156114195750815b801561143d57506001600160a01b0386165f9081526004602052604090205460ff16155b801561145657506006546001600160a01b038681169116145b8015611466575060095460075410155b801561146f5750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff16156114a257506017546105ca565b5f6114ad85856117a4565b111561159c575f6114cf6114c186866117a4565b6013546107599086906113ab565b305f908152600260205260409020549091506114eb90826113b6565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061153b9085815260200190565b60405180910390a35f600f5411801561155e5750600f5461155c86866117a4565b115b1561158a5761158a3061dead611585600f54610759601354896113ab90919063ffffffff16565b610cc6565b6115948382610cbb565b9150506105ca565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106115d6576115d6611a88565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561162d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116519190611a9c565b8160018151811061166457611664611a88565b6001600160a01b03928316602091820292909201015260055461168a9130911684610b98565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906116c29085905f90869030904290600401611ab7565b5f604051808303815f87803b1580156116d9575f80fd5b505af11580156116eb573d5f803e3d5ffd5b505050505050565b60055461170b9030906001600160a01b031684610b98565b60055460165460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611778573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061179d9190611b26565b5050505050565b6006545f906001600160a01b03908116908316036117c557506011546104f3565b6006546001600160a01b03908116908416036117e457506010546104f3565b5060125492915050565b5f6020808352835180828501525f5b81811015611819578581018301518582016040015282016117fd565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461184d575f80fd5b50565b5f8060408385031215611861575f80fd5b823561186c81611839565b946020939093013593505050565b5f805f6060848603121561188c575f80fd5b833561189781611839565b925060208401356118a781611839565b929592945050506040919091013590565b5f602082840312156118c8575f80fd5b81356105ca81611839565b5f805f606084860312156118e5575f80fd5b83356118f081611839565b9250602084013561190081611839565b9150604084013561191081611839565b809150509250925092565b5f805f6060848603121561192d575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a03121561195a575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f806040838503121561199c575f80fd5b82356119a781611839565b915060208301356119b781611839565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f602082840312156119f2575f80fd5b5051919050565b5f60208284031215611a09575f80fd5b815180151581146105ca575f80fd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156104f3576104f3611a18565b808201808211156104f3576104f3611a18565b80820281158282048414176104f3576104f3611a18565b5f82611a8357634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611aac575f80fd5b81516105ca81611839565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611b055784516001600160a01b031683529383019391830191600101611ae0565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611b38575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122062fc362a93ad2990921651da4761e6f732dae60308f8e80f9bed8fc7480caf6364736f6c63430008150033

Deployed Bytecode

0x608060405260043610610164575f3560e01c8063893d20e8116100cd578063a8aa1b3111610087578063cb7f97d711610062578063cb7f97d71461044c578063dd62ed3e1461046b578063e54f4faa146104af578063f2fde38b146104c4575f80fd5b8063a8aa1b31146103f9578063a9059cbb14610418578063ac90547914610437575f80fd5b8063893d20e8146103215780638cd4426d146103515780639213c3581461037057806395d89b411461038f5780639cc35351146103bb5780639d8740cb146103da575f80fd5b8063313ce5671161011e578063313ce5671461026757806351bc3c851461028257806366d602ae1461029657806370a08231146102ab578063715018a6146102df578063891ff84a146102f3575f80fd5b806306fdde031461016f578063095ea7b3146101b457806318160ddd146101e357806323b872dd14610205578063293230b8146102245780632f54bf6e1461023a575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201909152600b81526a4554472046696e616e636560a81b60208201525b6040516101ab91906117ee565b60405180910390f35b3480156101bf575f80fd5b506101d36101ce366004611850565b6104e3565b60405190151581526020016101ab565b3480156101ee575f80fd5b506101f76104f9565b6040519081526020016101ab565b348015610210575f80fd5b506101d361021f36600461187a565b610569565b34801561022f575f80fd5b506102386105d1565b005b348015610245575f80fd5b506101d36102543660046118b8565b5f546001600160a01b0391821691161490565b348015610272575f80fd5b50604051600981526020016101ab565b34801561028d575f80fd5b50610238610618565b3480156102a1575f80fd5b506101f760185481565b3480156102b6575f80fd5b506101f76102c53660046118b8565b6001600160a01b03165f9081526002602052604090205490565b3480156102ea575f80fd5b5061023861064e565b3480156102fe575f80fd5b506101d361030d3660046118b8565b60046020525f908152604090205460ff1681565b34801561032c575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101ab565b34801561035c575f80fd5b5061023861036b366004611850565b6106bb565b34801561037b575f80fd5b5061023861038a3660046118d3565b6107e1565b34801561039a575f80fd5b5060408051808201909152600481526322aa23a360e11b602082015261019e565b3480156103c6575f80fd5b506102386103d536600461191b565b610885565b3480156103e5575f80fd5b506102386103f436600461191b565b6109b5565b348015610404575f80fd5b50600654610339906001600160a01b031681565b348015610423575f80fd5b506101d3610432366004611850565b610a1a565b348015610442575f80fd5b506101f760175481565b348015610457575f80fd5b50610238610466366004611944565b610a26565b348015610476575f80fd5b506101f761048536600461198b565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156104ba575f80fd5b506101f760195481565b3480156104cf575f80fd5b506102386104de3660046118b8565b610b1c565b5f6104ef338484610b98565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261056492909161055e9190610cbb565b90610cbb565b905090565b5f610575848484610cc6565b6105c684336105c185604051806060016040528060288152602001611b52602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190611205565b610b98565b5060015b9392505050565b5f546001600160a01b031633146106035760405162461bcd60e51b81526004016105fa906119c2565b60405180910390fd5b6006805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146106415760405162461bcd60e51b81526004016105fa906119c2565b61064c600a54611230565b565b5f546001600160a01b031633146106775760405162461bcd60e51b81526004016105fa906119c2565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146106e45760405162461bcd60e51b81526004016105fa906119c2565b6040516370a0823160e01b81523060048201525f906107659060649061075f9085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610735573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075991906119e2565b906113a0565b906113ab565b60145460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af11580156107b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107db91906119f9565b50505050565b5f546001600160a01b0316331461080a5760405162461bcd60e51b81526004016105fa906119c2565b601580546001600160a01b039485166001600160a01b0319918216811790925560168054948616948216851790556014805493909516921682179093555f92835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b5f546001600160a01b031633146108ae5760405162461bcd60e51b81526004016105fa906119c2565b5f6108ca61271061075f866001546113a090919063ffffffff16565b90505f6108e861271061075f866001546113a090919063ffffffff16565b90505f61090661271061075f866001546113a090919063ffffffff16565b60178490556018839055601981905590505f61092b6103e861075f60056107596104f9565b905080841015801561093d5750808310155b80156109495750808210155b6109ac5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105fa565b50505050505050565b5f546001600160a01b031633146109de5760405162461bcd60e51b81526004016105fa906119c2565b60098390556001546109f990620186a09061075f90856113a0565b600a55600154610a1290620186a09061075f90846113a0565b600b55505050565b5f6104ef338484610cc6565b5f546001600160a01b03163314610a4f5760405162461bcd60e51b81526004016105fa906119c2565b600c879055600d869055600f859055600e849055601083905560118290556012819055601354610a809060016113ab565b60105411158015610aa05750601354610a9a9060016113ab565b60115411155b8015610abb5750601354610ab59060016113ab565b60125411155b6109ac5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016105fa565b5f546001600160a01b03163314610b455760405162461bcd60e51b81526004016105fa906119c2565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610bfa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105fa565b6001600160a01b038216610c5b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105fa565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6105ca8284611a2c565b6001600160a01b038316610d2a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105fa565b6001600160a01b038216610d8c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105fa565b6001600160a01b0383165f90815260026020526040902054811115610e0d5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105fa565b6001600160a01b0383165f9081526004602052604090205460ff16158015610e4d57506001600160a01b0382165f9081526004602052604090205460ff16155b15610e9a57600654600160a01b900460ff16610e9a5760405162461bcd60e51b815260206004820152600c60248201526b1d1c985919515b98589b195960a21b60448201526064016105fa565b6001600160a01b0383165f9081526004602052604090205460ff16158015610eda57506001600160a01b0382165f9081526004602052604090205460ff16155b8015610ef457506006546001600160a01b03838116911614155b8015610f0b57506001600160a01b03821661dead14155b15610f83576019546001600160a01b0383165f90815260026020526040902054610f3590836113b6565b1115610f835760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105fa565b6006546001600160a01b038481169116146110225760185481111580610fc057506001600160a01b0383165f9081526004602052604090205460ff165b80610fe257506001600160a01b0382165f9081526004602052604090205460ff165b6110225760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105fa565b6017548111158061104a57506001600160a01b0383165f9081526004602052604090205460ff165b8061106c57506001600160a01b0382165f9081526004602052604090205460ff165b6110ac5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105fa565b6006546001600160a01b0383811691161480156110e157506001600160a01b0383165f9081526004602052604090205460ff16155b156110fe57600160075f8282546110f89190611a3f565b90915550505b6111098383836113c1565b1561111e57611119600a54611230565b5f6007555b6001600160a01b0383165f908152600260205260409020546111409082610cbb565b6001600160a01b0384165f90815260026020908152604080832093909355600490529081205460ff1615611174578161117f565b61117f848484611479565b6001600160a01b0384165f908152600260205260409020549091506111a490826113b6565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111f79085815260200190565b60405180910390a350505050565b5f81848411156112285760405162461bcd60e51b81526004016105fa91906117ee565b505050900390565b6008805460ff19166001908117909155600e54600d54600c545f93611269936002936107599391926112639283916113b6565b906113b6565b90505f6112858261075f600c54866113a090919063ffffffff16565b90505f6112928483610cbb565b90504761129e826115a3565b5f6112a94783610cbb565b90505f6112cb6112c4600c5488610cbb90919063ffffffff16565b83906113ab565b90505f6112e3600c54836113a090919063ffffffff16565b905080156112f5576112f586826116f3565b600d545f90611309906107598560026113a0565b9050801561134a576015546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611348573d5f803e3d5ffd5b505b47801561138a576014546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611388573d5f803e3d5ffd5b505b50506008805460ff191690555050505050505050565b5f6105ca8284611a52565b5f6105ca8284611a69565b5f6105ca8284611a3f565b600b54600a54305f9081526002602052604081205460085491938510159211159060ff161580156113fb5750600654600160a81b900460ff165b80156114105750600654600160a01b900460ff165b80156114195750815b801561143d57506001600160a01b0386165f9081526004602052604090205460ff16155b801561145657506006546001600160a01b038681169116145b8015611466575060095460075410155b801561146f5750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff16156114a257506017546105ca565b5f6114ad85856117a4565b111561159c575f6114cf6114c186866117a4565b6013546107599086906113ab565b305f908152600260205260409020549091506114eb90826113b6565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061153b9085815260200190565b60405180910390a35f600f5411801561155e5750600f5461155c86866117a4565b115b1561158a5761158a3061dead611585600f54610759601354896113ab90919063ffffffff16565b610cc6565b6115948382610cbb565b9150506105ca565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106115d6576115d6611a88565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561162d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116519190611a9c565b8160018151811061166457611664611a88565b6001600160a01b03928316602091820292909201015260055461168a9130911684610b98565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906116c29085905f90869030904290600401611ab7565b5f604051808303815f87803b1580156116d9575f80fd5b505af11580156116eb573d5f803e3d5ffd5b505050505050565b60055461170b9030906001600160a01b031684610b98565b60055460165460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611778573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061179d9190611b26565b5050505050565b6006545f906001600160a01b03908116908316036117c557506011546104f3565b6006546001600160a01b03908116908416036117e457506010546104f3565b5060125492915050565b5f6020808352835180828501525f5b81811015611819578581018301518582016040015282016117fd565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461184d575f80fd5b50565b5f8060408385031215611861575f80fd5b823561186c81611839565b946020939093013593505050565b5f805f6060848603121561188c575f80fd5b833561189781611839565b925060208401356118a781611839565b929592945050506040919091013590565b5f602082840312156118c8575f80fd5b81356105ca81611839565b5f805f606084860312156118e5575f80fd5b83356118f081611839565b9250602084013561190081611839565b9150604084013561191081611839565b809150509250925092565b5f805f6060848603121561192d575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a03121561195a575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f806040838503121561199c575f80fd5b82356119a781611839565b915060208301356119b781611839565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f602082840312156119f2575f80fd5b5051919050565b5f60208284031215611a09575f80fd5b815180151581146105ca575f80fd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156104f3576104f3611a18565b808201808211156104f3576104f3611a18565b80820281158282048414176104f3576104f3611a18565b5f82611a8357634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611aac575f80fd5b81516105ca81611839565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611b055784516001600160a01b031683529383019391830191600101611ae0565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611b38575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122062fc362a93ad2990921651da4761e6f732dae60308f8e80f9bed8fc7480caf6364736f6c63430008150033

Deployed Bytecode Sourcemap

3670:10630:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5968:67;;;;;;;;;;-1:-1:-1;6028:5:0;;;;;;;;;;;;-1:-1:-1;;;6028:5:0;;;;5968:67;;;;;;;:::i;:::-;;;;;;;;6191:133;;;;;;;;;;-1:-1:-1;6191:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6191:133:0;1023:187:1;6330:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6330:132:0;1215:177:1;12031:309:0;;;;;;;;;;-1:-1:-1;12031:309:0;;;;;:::i;:::-;;:::i;6468:65::-;;;;;;;;;;;;;:::i;:::-;;363:87;;;;;;;;;;-1:-1:-1;363:87:0;;;;;:::i;:::-;418:4;443:5;-1:-1:-1;;;;;432:16:0;;;443:5;;432:16;;363:87;6118:67;;;;;;;;;;-1:-1:-1;6118:67:0;;3891:1;2252:36:1;;2240:2;2225:18;6118:67:0;2110:184:1;7972:94:0;;;;;;;;;;;;;:::i;5254:61::-;;;;;;;;;;;;;;;;6901:103;;;;;;;;;;-1:-1:-1;6901:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;6984:18:0;6967:7;6984:18;;;:9;:18;;;;;;;6901:103;456:106;;;;;;;;;;;;;:::i;4088:44::-;;;;;;;;;;-1:-1:-1;4088:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6817:78;;;;;;;;;;-1:-1:-1;6869:7:0;6887:5;-1:-1:-1;;;;;6887:5:0;6817:78;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;6817:78:0;2299:203:1;8072:232:0;;;;;;;;;;-1:-1:-1;8072:232:0;;;;;:::i;:::-;;:::i;12667:319::-;;;;;;;;;;-1:-1:-1;12667:319:0;;;;;:::i;:::-;;:::i;6041:71::-;;;;;;;;;;-1:-1:-1;6103:7:0;;;;;;;;;;;;-1:-1:-1;;;6103:7:0;;;;6041:71;;7418:548;;;;;;;;;;-1:-1:-1;7418:548:0;;;;;:::i;:::-;;:::i;12346:315::-;;;;;;;;;;-1:-1:-1;12346:315:0;;;;;:::i;:::-;;:::i;4160:19::-;;;;;;;;;;-1:-1:-1;4160:19:0;;;;-1:-1:-1;;;;;4160:19:0;;;6539:139;;;;;;;;;;-1:-1:-1;6539:139:0;;;;;:::i;:::-;;:::i;5190:57::-;;;;;;;;;;;;;;;;12992:524;;;;;;;;;;-1:-1:-1;12992:524:0;;;;;:::i;:::-;;:::i;6684:127::-;;;;;;;;;;-1:-1:-1;6684:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;6782:18:0;;;6765:7;6782:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6684:127;5322:59;;;;;;;;;;;;;;;;568:111;;;;;;;;;;-1:-1:-1;568:111:0;;;;;:::i;:::-;;:::i;6191:133::-;6266:4;6273:37;6282:10;6294:7;6303:6;6273:8;:37::i;:::-;-1:-1:-1;6318:4:0;6191:133;;;;;:::o;6330:132::-;6984:9;:18;;;;4902:42;6383:7;6984:18;;;;;6400:12;;6383:7;;6400:60;;6984:18;;6400:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;6393:67;;6330:132;:::o;12031:309::-;12129:4;12146:36;12156:6;12164:9;12175:6;12146:9;:36::i;:::-;12193:117;12202:6;12210:10;12222:87;12258:6;12222:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12222:19:0;;;;;;:11;:19;;;;;;;;12242:10;12222:31;;;;;;;;;:87;:35;:87::i;:::-;12193:8;:117::i;:::-;-1:-1:-1;12328:4:0;12031:309;;;;;;:::o;6468:65::-;418:4;443:5;-1:-1:-1;;;;;443:5:0;330:10;432:16;314:38;;;;-1:-1:-1;;;314:38:0;;;;;;;:::i;:::-;;;;;;;;;6512:12:::1;:19:::0;;-1:-1:-1;;;;6512:19:0::1;-1:-1:-1::0;;;6512:19:0::1;::::0;;6468:65::o;7972:94::-;418:4;443:5;-1:-1:-1;;;;;443:5:0;330:10;432:16;314:38;;;;-1:-1:-1;;;314:38:0;;;;;;;:::i;:::-;8024:34:::1;8044:13;;8024:19;:34::i;:::-;7972:94::o:0;456:106::-;418:4;443:5;-1:-1:-1;;;;;443:5:0;330:10;432:16;314:38;;;;-1:-1:-1;;;314:38:0;;;;;;;:::i;:::-;519:1:::1;503:18:::0;;-1:-1:-1;;;;;;503:18:0::1;::::0;;528:32:::1;::::0;2445:51:1;;;528:32:0::1;::::0;2433:2:1;2418:18;528:32:0::1;;;;;;;456:106::o:0;8072:232::-;418:4;443:5;-1:-1:-1;;;;;443:5:0;330:10;432:16;314:38;;;;-1:-1:-1;;;314:38:0;;;;;;;:::i;:::-;8176:41:::1;::::0;-1:-1:-1;;;8176:41:0;;8211:4:::1;8176:41;::::0;::::1;2445:51:1::0;8158:15:0::1;::::0;8176:63:::1;::::0;8235:3:::1;::::0;8176:54:::1;::::0;8222:7;;-1:-1:-1;;;;;8176:26:0;::::1;::::0;::::1;::::0;2418:18:1;;8176:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45:::0;::::1;:54::i;:::-;:58:::0;::::1;:63::i;:::-;8276:10;::::0;8250:46:::1;::::0;-1:-1:-1;;;8250:46:0;;-1:-1:-1;;;;;8276:10:0;;::::1;8250:46;::::0;::::1;5309:51:1::0;5376:18;;;5369:34;;;8158:81:0;;-1:-1:-1;8250:25:0;::::1;::::0;::::1;::::0;5282:18:1;;8250:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8147:157;8072:232:::0;;:::o;12667:319::-;418:4;443:5;-1:-1:-1;;;;;443:5:0;330:10;432:16;314:38;;;;-1:-1:-1;;;314:38:0;;;;;;;:::i;:::-;12789:16:::1;:29:::0;;-1:-1:-1;;;;;12789:29:0;;::::1;-1:-1:-1::0;;;;;;12789:29:0;;::::1;::::0;::::1;::::0;;;12820:11:::1;:24:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;12846:10:::1;:25:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;12789:16:::1;12882:23:::0;;;:11:::1;:23;::::0;;;;;:30;;-1:-1:-1;;12882:30:0;;::::1;12789:29:::0;12882:30;;::::1;::::0;;;12914:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;12946:25;;;;;;:32;;;;::::1;::::0;;::::1;::::0;;12667:319::o;7418:548::-;418:4;443:5;-1:-1:-1;;;;;443:5:0;330:10;432:16;314:38;;;;-1:-1:-1;;;314:38:0;;;;;;;:::i;:::-;7524:13:::1;7540:33;7567:5;7540:22;7557:4;7540:12;;:16;;:22;;;;:::i;:33::-;7524:49;;7575:19;7597:34;7625:5;7597:23;7614:5;7597:12;;:16;;:23;;;;:::i;:34::-;7575:56;;7633:17;7653:36;7683:5;7653:25;7670:7;7653:12;;:16;;:25;;;;:::i;:36::-;7700:9;:17:::0;;;7719:13:::1;:27:::0;;;7748:11:::1;:23:::0;;;7633:56;-1:-1:-1;;7798:30:0::1;7823:4;7798:20;7816:1;7798:13;:11;:13::i;:30::-;7782:46;;7856:5;7847;:14;;:38;;;;;7880:5;7865:11;:20;;7847:38;:60;;;;;7902:5;7889:9;:18;;7847:60;7839:119;;;::::0;-1:-1:-1;;;7839:119:0;;5898:2:1;7839:119:0::1;::::0;::::1;5880:21:1::0;5937:2;5917:18;;;5910:30;5976:34;5956:18;;;5949:62;-1:-1:-1;;;6027:18:1;;;6020:44;6081:19;;7839:119:0::1;5696:410:1::0;7839:119:0::1;7513:453;;;;7418:548:::0;;;:::o;12346:315::-;418:4;443:5;-1:-1:-1;;;;;443:5:0;330:10;432:16;314:38;;;;-1:-1:-1;;;314:38:0;;;;;;;:::i;:::-;12479:10:::1;:24:::0;;;12521:12:::1;::::0;:53:::1;::::0;12566:6:::1;::::0;12521:32:::1;::::0;12538:14;12521:16:::1;:32::i;:53::-;12505:13;:69:::0;12599:12:::1;::::0;:54:::1;::::0;12645:6:::1;::::0;12599:33:::1;::::0;12616:15;12599:16:::1;:33::i;:54::-;12586:10;:67:::0;-1:-1:-1;;;12346:315:0:o;6539:139::-;6617:4;6624:40;6634:10;6646:9;6657:6;6624:9;:40::i;12992:524::-;418:4;443:5;-1:-1:-1;;;;;443:5:0;330:10;432:16;314:38;;;;-1:-1:-1;;;314:38:0;;;;;;;:::i;:::-;13182:12:::1;:25:::0;;;13209:12:::1;:25:::0;;;13236:7:::1;:15:::0;;;13253:14:::1;:29:::0;;;13284:8:::1;:17:::0;;;13303:7:::1;:15:::0;;;13320:11:::1;:20:::0;;;13371:11:::1;::::0;:18:::1;::::0;-1:-1:-1;13371:15:0::1;:18::i;:::-;13359:8;;:30;;:63;;;;-1:-1:-1::0;13404:11:0::1;::::0;:18:::1;::::0;13420:1:::1;13404:15;:18::i;:::-;13393:7;;:29;;13359:63;:100;;;;-1:-1:-1::0;13441:11:0::1;::::0;:18:::1;::::0;13457:1:::1;13441:15;:18::i;:::-;13426:11;;:33;;13359:100;13351:157;;;::::0;-1:-1:-1;;;13351:157:0;;6313:2:1;13351:157:0::1;::::0;::::1;6295:21:1::0;6352:2;6332:18;;;6325:30;6391:34;6371:18;;;6364:62;-1:-1:-1;;;6442:18:1;;;6435:42;6494:19;;13351:157:0::1;6111:408:1::0;568:111:0;418:4;443:5;-1:-1:-1;;;;;443:5:0;330:10;432:16;314:38;;;;-1:-1:-1;;;314:38:0;;;;;;;:::i;:::-;634:5:::1;:11:::0;;-1:-1:-1;;;;;;634:11:0::1;-1:-1:-1::0;;;;;634:11:0;::::1;::::0;;::::1;::::0;;;652:25:::1;::::0;2445:51:1;;;652:25:0::1;::::0;2433:2:1;2418:18;652:25:0::1;;;;;;;568:111:::0;:::o;13522:335::-;-1:-1:-1;;;;;13615:19:0;;13607:68;;;;-1:-1:-1;;;13607:68:0;;6942:2:1;13607:68:0;;;6924:21:1;6981:2;6961:18;;;6954:30;7020:34;7000:18;;;6993:62;-1:-1:-1;;;7071:18:1;;;7064:34;7115:19;;13607:68:0;6740:400:1;13607:68:0;-1:-1:-1;;;;;13694:21:0;;13686:68;;;;-1:-1:-1;;;13686:68:0;;7347:2:1;13686:68:0;;;7329:21:1;7386:2;7366:18;;;7359:30;7425:34;7405:18;;;7398:62;-1:-1:-1;;;7476:18:1;;;7469:32;7518:19;;13686:68:0;7145:398:1;13686:68:0;-1:-1:-1;;;;;13765:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13817:32;;1361:25:1;;;13817:32:0;;1334:18:1;13817:32:0;;;;;;;13522:335;;;:::o;2507:98::-;2565:7;2592:5;2596:1;2592;:5;:::i;10373:1426::-;-1:-1:-1;;;;;10470:20:0;;10462:70;;;;-1:-1:-1;;;10462:70:0;;8015:2:1;10462:70:0;;;7997:21:1;8054:2;8034:18;;;8027:30;8093:34;8073:18;;;8066:62;-1:-1:-1;;;8144:18:1;;;8137:35;8189:19;;10462:70:0;7813:401:1;10462:70:0;-1:-1:-1;;;;;10551:23:0;;10543:71;;;;-1:-1:-1;;;10543:71:0;;8421:2:1;10543:71:0;;;8403:21:1;8460:2;8440:18;;;8433:30;8499:34;8479:18;;;8472:62;-1:-1:-1;;;8550:18:1;;;8543:33;8593:19;;10543:71:0;8219:399:1;10543:71:0;-1:-1:-1;;;;;6984:18:0;;6967:7;6984:18;;;:9;:18;;;;;;10633:6;:27;;10625:88;;;;-1:-1:-1;;;10625:88:0;;8825:2:1;10625:88:0;;;8807:21:1;8864:2;8844:18;;;8837:30;8903:34;8883:18;;;8876:62;-1:-1:-1;;;8954:18:1;;;8947:47;9011:19;;10625:88:0;8623:413:1;10625:88:0;-1:-1:-1;;;;;10728:19:0;;;;;;:11;:19;;;;;;;;10727:20;:47;;;;-1:-1:-1;;;;;;10752:22:0;;;;;;:11;:22;;;;;;;;10751:23;10727:47;10724:91;;;10784:12;;-1:-1:-1;;;10784:12:0;;;;10776:37;;;;-1:-1:-1;;;10776:37:0;;9243:2:1;10776:37:0;;;9225:21:1;9282:2;9262:18;;;9255:30;-1:-1:-1;;;9301:18:1;;;9294:42;9353:18;;10776:37:0;9041:336:1;10776:37:0;-1:-1:-1;;;;;10829:19:0;;;;;;:11;:19;;;;;;;;10828:20;:47;;;;-1:-1:-1;;;;;;10853:22:0;;;;;;:11;:22;;;;;;;;10852:23;10828:47;:77;;;;-1:-1:-1;10900:4:0;;-1:-1:-1;;;;;10879:26:0;;;10900:4;;10879:26;;10828:77;:107;;;;-1:-1:-1;;;;;;10909:26:0;;4902:42;10909:26;;10828:107;10825:216;;;10993:11;;-1:-1:-1;;;;;10956:20:0;;;;;;:9;:20;;;;;;:32;;10981:6;10956:24;:32::i;:::-;10955:49;;10947:92;;;;-1:-1:-1;;;10947:92:0;;9584:2:1;10947:92:0;;;9566:21:1;9623:2;9603:18;;;9596:30;9662:32;9642:18;;;9635:60;9712:18;;10947:92:0;9382:354:1;10947:92:0;11064:4;;-1:-1:-1;;;;;11054:14:0;;;11064:4;;11054:14;11051:123;;11088:13;;11078:6;:23;;:46;;;-1:-1:-1;;;;;;11105:19:0;;;;;;:11;:19;;;;;;;;11078:46;:72;;;-1:-1:-1;;;;;;11128:22:0;;;;;;:11;:22;;;;;;;;11078:72;11070:102;;;;-1:-1:-1;;;11070:102:0;;9943:2:1;11070:102:0;;;9925:21:1;9982:2;9962:18;;;9955:30;-1:-1:-1;;;10001:18:1;;;9994:47;10058:18;;11070:102:0;9741:341:1;11070:102:0;11202:9;;11192:6;:19;;:42;;;-1:-1:-1;;;;;;11215:19:0;;;;;;:11;:19;;;;;;;;11192:42;:68;;;-1:-1:-1;;;;;;11238:22:0;;;;;;:11;:22;;;;;;;;11192:68;11184:98;;;;-1:-1:-1;;;11184:98:0;;9943:2:1;11184:98:0;;;9925:21:1;9982:2;9962:18;;;9955:30;-1:-1:-1;;;10001:18:1;;;9994:47;10058:18;;11184:98:0;9741:341:1;11184:98:0;11310:4;;-1:-1:-1;;;;;11297:17:0;;;11310:4;;11297:17;:41;;;;-1:-1:-1;;;;;;11319:19:0;;;;;;:11;:19;;;;;;;;11318:20;11297:41;11294:75;;;11365:1;11340:13;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;11294:75:0;11382:46;11402:6;11410:9;11421:6;11382:19;:46::i;:::-;11379:115;;;11430:34;11450:13;;11430:19;:34::i;:::-;11490:1;11466:13;:26;11379:115;-1:-1:-1;;;;;11524:17:0;;;;;;:9;:17;;;;;;:29;;11546:6;11524:21;:29::i;:::-;-1:-1:-1;;;;;11504:17:0;;;;;;:9;:17;;;;;;;;:49;;;;11590:11;:19;;;;;;;;11589:20;:69;;11652:6;11589:69;;;11612:37;11623:6;11631:9;11642:6;11612:10;:37::i;:::-;-1:-1:-1;;;;;11692:20:0;;;;;;:9;:20;;;;;;11564:94;;-1:-1:-1;11692:40:0;;11564:94;11692:24;:40::i;:::-;-1:-1:-1;;;;;11669:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11748:43;;;;;;;;;;11776:14;1361:25:1;;1349:2;1334:18;;1215:177;11748:43:0;;;;;;;;10451:1348;10373:1426;;;:::o;2931:240::-;3051:7;3112:12;3104:6;;;;3096:29;;;;-1:-1:-1;;;3096:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3147:5:0;;;2931:240::o;8310:1056::-;4512:8;:15;;-1:-1:-1;;4512:15:0;4523:4;4512:15;;;;;;8452:14:::1;::::0;8434:12:::1;::::0;8410::::1;::::0;4512:8;;8409:66:::1;::::0;8473:1:::1;::::0;8410:57:::1;::::0;8452:14;;8410:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;8409:66::-;8386:89;;8486:32;8521:42;8550:12;8521:24;8532:12;;8521:6;:10;;:24;;;;:::i;:42::-;8486:77:::0;-1:-1:-1;8574:14:0::1;8591:36;:6:::0;8486:77;8591:10:::1;:36::i;:::-;8574:53:::0;-1:-1:-1;8663:21:0::1;8695:24;8574:53:::0;8695:16:::1;:24::i;:::-;8730:20;8753:41;:21;8779:14:::0;8753:25:::1;:41::i;:::-;8730:64;;8805:19;8826:48;8843:30;8860:12;;8843;:16;;:30;;;;:::i;:::-;8826:12:::0;;:16:::1;:48::i;:::-;8805:69;;8885:29;8917;8933:12;;8917:11;:15;;:29;;;;:::i;:::-;8885:61:::0;-1:-1:-1;8960:34:0;;8957:103:::1;;8996:61;9009:24;9035:21;8996:12;:61::i;:::-;9116:12;::::0;9070:20:::1;::::0;9093:36:::1;::::0;:18:::1;:11:::0;9109:1:::1;9093:15;:18::i;:36::-;9070:59:::0;-1:-1:-1;9143:16:0;;9140:71:::1;;9169:16;::::0;9161:48:::1;::::0;-1:-1:-1;;;;;9169:16:0;;::::1;::::0;9161:48;::::1;;;::::0;9196:12;;9169:16:::1;9161:48:::0;9169:16;9161:48;9196:12;9169:16;9161:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9140:71;9247:21;9282:28:::0;;9279:80:::1;;9320:10;::::0;9312:45:::1;::::0;-1:-1:-1;;;;;9320:10:0;;::::1;::::0;9312:45;::::1;;;::::0;9341:15;;9320:10:::1;9312:45:::0;9320:10;9312:45;9341:15;9320:10;9312:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9279:80;-1:-1:-1::0;;4532:8:0;:16;;-1:-1:-1;;4532:16:0;;;-1:-1:-1;;;;;;;;8310:1056:0:o;2613:98::-;2671:7;2698:5;2702:1;2698;:5;:::i;2719:98::-;2777:7;2804:5;2808:1;2804;:5;:::i;2401:98::-;2459:7;2486:5;2490:1;2486;:5;:::i;7010:402::-;7156:10;;7227:13;;7217:4;7113;6984:18;;;:9;:18;;;;;;7259:8;;7113:4;;7146:20;;;;-1:-1:-1;7199:41:0;;7259:8;;7258:9;:24;;;;-1:-1:-1;7271:11:0;;-1:-1:-1;;;7271:11:0;;;;7258:24;:40;;;;-1:-1:-1;7286:12:0;;-1:-1:-1;;;7286:12:0;;;;7258:40;:52;;;;;7302:8;7258:52;:76;;;;-1:-1:-1;;;;;;7315:19:0;;;;;;:11;:19;;;;;;;;7314:20;7258:76;:97;;;;-1:-1:-1;7351:4:0;;-1:-1:-1;;;;;7338:17:0;;;7351:4;;7338:17;7258:97;:128;;;;;7376:10;;7359:13;;:27;;7258:128;:146;;;;;7390:14;7258:146;7251:153;7010:402;-1:-1:-1;;;;;;7010:402:0:o;9714:653::-;-1:-1:-1;;;;;9827:22:0;;9803:7;9827:22;;;:11;:22;;;;;;;;9823:47;;;-1:-1:-1;9859:9:0;;9852:16;;9823:47;9917:1;9883:31;9896:6;9904:9;9883:12;:31::i;:::-;:35;9880:465;;;9930:17;9950:60;9978:31;9991:6;9999:9;9978:12;:31::i;:::-;9961:11;;9950:23;;:6;;:10;:23::i;:60::-;10066:4;10048:24;;;;:9;:24;;;;;;9930:80;;-1:-1:-1;10048:39:0;;9930:80;10048:28;:39::i;:::-;10039:4;10021:24;;;;:9;:24;;;;;;;:66;;;;10103:42;;-1:-1:-1;;;;;10103:42:0;;;;;;;10135:9;1361:25:1;;1349:2;1334:18;;1215:177;10103:42:0;;;;;;;;10177:1;10159:7;;:20;:65;;;;;10217:7;;10183:31;10196:6;10204:9;10183:12;:31::i;:::-;:41;10159:65;10156:149;;;10226:77;10244:4;4902:42;10266:36;10294:7;;10266:23;10277:11;;10266:6;:10;;:23;;;;:::i;:36::-;10226:9;:77::i;:::-;10322:21;:6;10333:9;10322:10;:21::i;:::-;10315:28;;;;;9880:465;-1:-1:-1;10353:6:0;9714:653;-1:-1:-1;;9714:653:0:o;13863:434::-;13953:16;;;13967:1;13953:16;;;;;;;;13929:21;;13953:16;;;;;;;;;;-1:-1:-1;13953:16:0;13929:40;;13998:4;13980;13985:1;13980:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13980:23:0;;;:7;;;;;;;;;;:23;;;;14024:6;;:13;;;-1:-1:-1;;;14024:13:0;;;;:6;;;;;:11;;:13;;;;;13980:7;;14024:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14014:4;14019:1;14014:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14014:23:0;;;:7;;;;;;;;;:23;14080:6;;14048:53;;14065:4;;14080:6;14089:11;14048:8;:53::i;:::-;14112:6;;:177;;-1:-1:-1;;;14112:177:0;;-1:-1:-1;;;;;14112:6:0;;;;:57;;:177;;14184:11;;14112:6;;14226:4;;14253;;14273:15;;14112:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13918:379;13863:434;:::o;9372:336::-;9485:6;;9453:53;;9470:4;;-1:-1:-1;;;;;9485:6:0;9494:11;9453:8;:53::i;:::-;9517:6;;9658:11;;9517:183;;-1:-1:-1;;;9517:183:0;;9580:4;9517:183;;;12458:34:1;12508:18;;;12501:34;;;9517:6:0;12551:18:1;;;12544:34;;;12594:18;;;12587:34;-1:-1:-1;;;;;9658:11:0;;;12637:19:1;;;12630:44;9684:15:0;12690:19:1;;;12683:35;9517:6:0;;;:22;;9547:9;;12392:19:1;;9517:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9372:336;;:::o;11805:220::-;11921:4;;11885:7;;-1:-1:-1;;;;;11921:4:0;;;11908:17;;;;11905:38;;-1:-1:-1;11934:7:0;;11927:14;;11905:38;11966:4;;-1:-1:-1;;;;;11966:4:0;;;11956:14;;;;11953:36;;-1:-1:-1;11979:8:0;;11972:15;;11953:36;-1:-1:-1;12006:11:0;;11805:220;;;;:::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:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2507:529::-;2584:6;2592;2600;2653:2;2641:9;2632:7;2628:23;2624:32;2621:52;;;2669:1;2666;2659:12;2621:52;2708:9;2695:23;2727:31;2752:5;2727:31;:::i;:::-;2777:5;-1:-1:-1;2834:2:1;2819:18;;2806:32;2847:33;2806:32;2847:33;:::i;:::-;2899:7;-1:-1:-1;2958:2:1;2943:18;;2930:32;2971:33;2930:32;2971:33;:::i;:::-;3023:7;3013:17;;;2507:529;;;;;:::o;3041:316::-;3118:6;3126;3134;3187:2;3175:9;3166:7;3162:23;3158:32;3155:52;;;3203:1;3200;3193:12;3155:52;-1:-1:-1;;3226:23:1;;;3296:2;3281:18;;3268:32;;-1:-1:-1;3347:2:1;3332:18;;;3319:32;;3041:316;-1:-1:-1;3041:316:1:o;3362:592::-;3475:6;3483;3491;3499;3507;3515;3523;3576:3;3564:9;3555:7;3551:23;3547:33;3544:53;;;3593:1;3590;3583:12;3544:53;-1:-1:-1;;3616:23:1;;;3686:2;3671:18;;3658:32;;-1:-1:-1;3737:2:1;3722:18;;3709:32;;3788:2;3773:18;;3760:32;;-1:-1:-1;3839:3:1;3824:19;;3811:33;;-1:-1:-1;3891:3:1;3876:19;;3863:33;;-1:-1:-1;3943:3:1;3928:19;3915:33;;-1:-1:-1;3362:592:1;-1:-1:-1;3362:592:1:o;3959:388::-;4027:6;4035;4088:2;4076:9;4067:7;4063:23;4059:32;4056:52;;;4104:1;4101;4094:12;4056:52;4143:9;4130:23;4162:31;4187:5;4162:31;:::i;:::-;4212:5;-1:-1:-1;4269:2:1;4254:18;;4241:32;4282:33;4241:32;4282:33;:::i;:::-;4334:7;4324:17;;;3959:388;;;;;:::o;4612:329::-;4814:2;4796:21;;;4853:1;4833:18;;;4826:29;-1:-1:-1;;;4886:2:1;4871:18;;4864:36;4932:2;4917:18;;4612:329::o;4946:184::-;5016:6;5069:2;5057:9;5048:7;5044:23;5040:32;5037:52;;;5085:1;5082;5075:12;5037:52;-1:-1:-1;5108:16:1;;4946:184;-1:-1:-1;4946:184:1:o;5414:277::-;5481:6;5534:2;5522:9;5513:7;5509:23;5505:32;5502:52;;;5550:1;5547;5540:12;5502:52;5582:9;5576:16;5635:5;5628:13;5621:21;5614:5;5611:32;5601:60;;5657:1;5654;5647:12;7548:127;7609:10;7604:3;7600:20;7597:1;7590:31;7640:4;7637:1;7630:15;7664:4;7661:1;7654:15;7680:128;7747:9;;;7768:11;;;7765:37;;;7782:18;;:::i;10087:125::-;10152:9;;;10173:10;;;10170:36;;;10186:18;;:::i;10217:168::-;10290:9;;;10321;;10338:15;;;10332:22;;10318:37;10308:71;;10359:18;;:::i;10390:217::-;10430:1;10456;10446:132;;10500:10;10495:3;10491:20;10488:1;10481:31;10535:4;10532:1;10525:15;10563:4;10560:1;10553:15;10446:132;-1:-1:-1;10592:9:1;;10390:217::o;10744:127::-;10805:10;10800:3;10796:20;10793:1;10786:31;10836:4;10833:1;10826:15;10860:4;10857:1;10850:15;10876:251;10946:6;10999:2;10987:9;10978:7;10974:23;10970:32;10967:52;;;11015:1;11012;11005:12;10967:52;11047:9;11041:16;11066:31;11091:5;11066:31;:::i;11132:980::-;11394:4;11442:3;11431:9;11427:19;11473:6;11462:9;11455:25;11499:2;11537:6;11532:2;11521:9;11517:18;11510:34;11580:3;11575:2;11564:9;11560:18;11553:31;11604:6;11639;11633:13;11670:6;11662;11655:22;11708:3;11697:9;11693:19;11686:26;;11747:2;11739:6;11735:15;11721:29;;11768:1;11778:195;11792:6;11789:1;11786:13;11778:195;;;11857:13;;-1:-1:-1;;;;;11853:39:1;11841:52;;11948:15;;;;11913:12;;;;11889:1;11807:9;11778:195;;;-1:-1:-1;;;;;;;12029:32:1;;;;12024:2;12009:18;;12002:60;-1:-1:-1;;;12093:3:1;12078:19;12071:35;11990:3;11132:980;-1:-1:-1;;;11132:980:1:o;12729:306::-;12817:6;12825;12833;12886:2;12874:9;12865:7;12861:23;12857:32;12854:52;;;12902:1;12899;12892:12;12854:52;12931:9;12925:16;12915:26;;12981:2;12970:9;12966:18;12960:25;12950:35;;13025:2;13014:9;13010:18;13004:25;12994:35;;12729:306;;;;;:::o

Swarm Source

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