ETH Price: $4,069.70 (+4.42%)

Token

ERC-20: Aurk AI (AURK)
 

Overview

Max Total Supply

100,000,000 AURK

Holders

366

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
97,564.15053397620926092 AURK

Value
$0.00
0x867add18107e72f4eb8147de323e85a060685b69
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:
AURK

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 2024-12-13
*/

// SPDX-License-Identifier: MIT
/*
   _____   ____ _____________ ____  __.
  /  _  \ |    |   \______   \    |/ _|
 /  /_\  \|    |   /|       _/      <  
/    |    \    |  / |    |   \    |  \ 
\____|__  /______/  |____|_  /____|__ \
  Website:  https://aurk.org/
  X:        https://x.com/aiaurk
  Telegram: https://t.me/aurkai
  Docs:     https://aurk.gitbook.io/aurk-whitepaper
*/

pragma solidity 0.8.20;

interface IERC20 {
    event Transfer(
        address indexed sender,
        address indexed recipient,
        uint256 amount
    );
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 amount
    );

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

contract Ownable is Context {
    address private _contractOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * Constructor sets the deployer as the initial owner of the contract.
     */
    constructor() {
        address msgSender = _msgSender();
        _contractOwner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(
            _contractOwner == _msgSender(),
            "Ownable: caller is not the owner"
        );
        _;
    }

    /**
     * Transfers ownership to a new address.
     * newOwner cannot be a zero address.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _updateOwnership(newOwner);
    }

    function _updateOwnership(address newOwner) internal {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_contractOwner, newOwner);
        _contractOwner = newOwner;
    }

    /**
     * Renounces ownership, making the contract ownerless.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_contractOwner, address(0));
        _contractOwner = address(0);
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 tokenAmount,
        uint256 minETHAmount,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 tokenDesired,
        uint256 tokenMin,
        uint256 ethMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 tokenAmount,
            uint256 ethAmount,
            uint256 liquidity
        );
}

contract AURK is Context, IERC20, Ownable {
    string private constant _tokenName = "Aurk AI";
    string private constant _tokenSymbol = "AURK";
    uint8 private constant _tokenDecimals = 18;
    uint256 private constant _totalSupply = 100000000 * 10**_tokenDecimals;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _excludedAccounts;

    uint256 private constant _minSwapTokens = 10000 * 10**_tokenDecimals; // Min. tokens to swap
    uint256 private _maxSwapTokens = 50000 * 10**_tokenDecimals; // Max tokens to swap
    uint256 private _lastSwapBlock;
    uint256 private _swapCount;

    uint256 public maxTxValue = 1500000 * 10**_tokenDecimals; // Max tx value
    uint256 public maxWalletHoldings = 1500000 * 10**_tokenDecimals; // Max wallet value

    uint256 private _launchBlock;
    uint256 buyFeeRate = 30; // Buy fee
    uint256 sellFeeRate = 30; // Sell fee

    IUniswapV2Router02 private _uniswapV2Router;
    address public uniswapV2Pair;

    address ProjectWallet; //Primary Fee Wallet
    address DevOps;
    address EcoWallet;
    address BDWallet;
    address CreatorWallet;
    address UserWallet;
    address TeamWallet;

    bool private _isTradingActive = false;

    //** Begin Constructor

    constructor() {
        // Define wallet addresses
        ProjectWallet = 0x1eA8f412DD2f17BE2048880c18f5Ee5C1d6DcA95;
        EcoWallet = 0xFDf7Ad778F7Bdf8F8e1B49F2067dC54523a0abC8;
        BDWallet = 0x23545ecDC9EACe9F93BB4006047c00cE047b91fE;
        CreatorWallet = 0x921b6bb12a25275A03fEA22e419c82f2b56F9a51;
        UserWallet = 0x9Ab15eb4665Ae4bE78BCB04FF09D30d6269838ce;
        TeamWallet = 0x4c6ae48AEcC3251e2De83b1098B7b866BF6b6DfB;
        DevOps = 0x81A19e3bC368F67cdEE79B48cD78B82c7AAE43AE;

        // Calculate token allocations
        uint256 dexLiquidityTokens = (_totalSupply * 65) / 100;
        uint256 projectTokens = (_totalSupply * 2) / 100;
        uint256 ecosystemTokens = (_totalSupply * 10) / 100;
        uint256 businessDevTokens = (_totalSupply * 5) / 100;
        uint256 creatorTokens = (_totalSupply * 5) / 100;
        uint256 userTokens = (_totalSupply * 8) / 100;
        uint256 teamTokens = (_totalSupply * 5) / 100;

        // Distribute tokens
        _balances[address(this)] = dexLiquidityTokens; // DEX Liquidity
        _balances[ProjectWallet] = projectTokens; // Project Reserve
        _balances[EcoWallet] = ecosystemTokens; // Listings & Ecosystem
        _balances[BDWallet] = businessDevTokens; // Partnerships & Business Development
        _balances[CreatorWallet] = creatorTokens; // Creator Incentives
        _balances[UserWallet] = userTokens; // User Incentives
        _balances[TeamWallet] = teamTokens; // Team & Advisors

        // Apply exclusions
        _excludedAccounts[msg.sender] = 1;
        _excludedAccounts[address(this)] = 1;
        _excludedAccounts[ProjectWallet] = 1;
        _excludedAccounts[EcoWallet] = 1;
        _excludedAccounts[BDWallet] = 1;
        _excludedAccounts[CreatorWallet] = 1;
        _excludedAccounts[UserWallet] = 1;
        _excludedAccounts[TeamWallet] = 1;

        // Initialize swap-related state variables
        _lastSwapBlock = 0;
        _swapCount = 0;

        // Emit transfer events
        emit Transfer(address(0), address(this), dexLiquidityTokens);
        emit Transfer(address(0), ProjectWallet, projectTokens);
        emit Transfer(address(0), EcoWallet, ecosystemTokens);
        emit Transfer(address(0), BDWallet, businessDevTokens);
        emit Transfer(address(0), CreatorWallet, creatorTokens);
        emit Transfer(address(0), UserWallet, userTokens);
        emit Transfer(address(0), TeamWallet, teamTokens);
    }

    function name() public pure returns (string memory) {
        return _tokenName;
    }

    function symbol() public pure returns (string memory) {
        return _tokenSymbol;
    }

    function decimals() public pure returns (uint8) {
        return _tokenDecimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _totalSupply;
    }

    //Return fee rate values
    function getFeeRates()
        external
        view
        returns (uint256 buyTax, uint256 sellTax)
    {
        buyTax = buyFeeRate;
        sellTax = sellFeeRate;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _executeTransfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _setAllowance(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _executeTransfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _setAllowance(sender, _msgSender(), currentAllowance - amount);
            }
        }
        return true;
    }

    function _setAllowance(
        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);
    }

    //Enables trading and adds liquidity at once
    function startTrading() external onlyOwner {
        require(!_isTradingActive, "Trading is already enabled");
        _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        _setAllowance(address(this), address(_uniswapV2Router), _totalSupply);

        _uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );

        IERC20(uniswapV2Pair).approve(
            address(_uniswapV2Router),
            type(uint256).max
        );
        _isTradingActive = true;
        _launchBlock = block.number;
    }

    //Include or Exclude from fees
    function setExcludedAccount(address account, uint256 value)
        external
        onlyOwner
    {
        _excludedAccounts[account] = value;
    }

    //Remove limits when stable
    function disableLimits() external onlyOwner {
        maxTxValue = _totalSupply;
        maxWalletHoldings = _totalSupply;
    }

    // Adjust tax rates
    function adjustTaxRates(uint256 newBuyTaxRate, uint256 newSellTaxRate)
        external
        onlyOwner
    {
        require(newBuyTaxRate <= 100, "Buy tax rate cannot exceed 100%");
        require(newSellTaxRate <= 100, "Sell tax rate cannot exceed 100%");

        buyFeeRate = newBuyTaxRate;
        sellFeeRate = newSellTaxRate;
    }

    // Handles transfer and applies tax

    function _executeTokenTransfer(
        address from,
        address to,
        uint256 amount,
        uint256 taxRate
    ) private {
        uint256 taxAmount = (amount * taxRate) / 100;
        uint256 transferAmount = amount - taxAmount;

        _balances[from] -= amount;
        _balances[to] += transferAmount;
        _balances[address(this)] += taxAmount;

        emit Transfer(from, to, transferAmount);
    }

    //Transfer function
    function _executeTransfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "ERC20: transfer amount must be greater than zero");

        uint256 taxRate = 0;

        if (_excludedAccounts[from] == 0 && _excludedAccounts[to] == 0) {
            require(_isTradingActive, "Trading is not enabled yet");
            require(
                amount <= maxTxValue,
                "Transaction amount exceeds the maximum limit"
            );

            if (to != uniswapV2Pair && to != address(0xdead)) {
                require(
                    balanceOf(to) + amount <= maxWalletHoldings,
                    "Recipient wallet exceeds the maximum limit"
                );
            }

            if (block.number < _launchBlock + 3) {
                taxRate = (from == uniswapV2Pair) ? 30 : 30;
            } else {
                if (from == uniswapV2Pair) {
                    taxRate = buyFeeRate;
                } else if (to == uniswapV2Pair) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance > _minSwapTokens) {
                        uint256 swapAmount = _maxSwapTokens;
                        if (contractTokenBalance > amount)
                            contractTokenBalance = amount;
                        if (contractTokenBalance > swapAmount)
                            contractTokenBalance = swapAmount;
                        _exchangeTokensForEth(contractTokenBalance);
                    }
                    taxRate = sellFeeRate;
                }
            }
        }
        _executeTokenTransfer(from, to, amount, taxRate);
    }

    //Recovers stuck ETH
    function withdrawEth() external onlyOwner {
        (bool success, ) = owner().call{value: address(this).balance}("");
        require(success, "Rescue ETH failed");
    }

    //Recovers stuck tokens
    function recoverTokens() external onlyOwner {
        uint256 contractTokenBalance = balanceOf(address(this));
        require(contractTokenBalance > 0, "No tokens to rescue");

        _executeTokenTransfer(address(this), owner(), contractTokenBalance, 0);
    }

    //Force swapback
    function executeManualSwap(uint256 percent) external onlyOwner {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 swapAmount = (percent * contractTokenBalance) / 100;
        _exchangeTokensForEth(swapAmount);
    }

    //Swapback logic
    function _exchangeTokensForEth(uint256 tokenAmount) private {
        // Check if it's the current block
        if (block.number == _lastSwapBlock) {
            // Allow a maximum of 2 swaps in the same block
            require(_swapCount < 2, "Maximum swaps per block reached");
            _swapCount++;
        } else {
            // Reset for a new block
            _lastSwapBlock = block.number;
            _swapCount = 1;
        }

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();

        _setAllowance(address(this), address(_uniswapV2Router), tokenAmount);

        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 contractEthBalance = address(this).balance;

        // Calculate balances
        uint256 devOpsShare = (contractEthBalance * 10) / 100;
         uint256 projectShare = (contractEthBalance * 90) / 100;

        // Transfer to DevOps wallet
        (bool successDevOps, ) = DevOps.call{value: devOpsShare}("");
        require(successDevOps, "Transfer to DevOps failed");

        // Transfer to ProjectWallet
        (bool successProject, ) = ProjectWallet.call{value: projectShare}("");
        require(successProject, "Transfer to ProjectWallet failed");
    }

    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":"amount","type":"uint256"}],"name":"Approval","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":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"newBuyTaxRate","type":"uint256"},{"internalType":"uint256","name":"newSellTaxRate","type":"uint256"}],"name":"adjustTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"executeManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getFeeRates","outputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHoldings","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setExcludedAccount","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":"pure","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a6200068d565b620000209061c350620006a4565b600455620000316012600a6200068d565b62000040906216e360620006a4565b600755620000516012600a6200068d565b62000060906216e360620006a4565b600855601e600a819055600b556014805460ff60a01b1916905534801562000086575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600e80546001600160a01b0319908116731ea8f412dd2f17be2048880c18f5ee5c1d6dca951790915560108054821673fdf7ad778f7bdf8f8e1b49f2067dc54523a0abc81790556011805482167323545ecdc9eace9f93bb4006047c00ce047b91fe17905560128054821673921b6bb12a25275a03fea22e419c82f2b56f9a51178155601380548316739ab15eb4665ae4be78bcb04ff09d30d6269838ce179055601480548316734c6ae48aecc3251e2de83b1098b7b866bf6b6dfb179055600f80549092167381a19e3bc368f67cdee79b48cd78b82c7aae43ae179091555f90606490620001b890600a6200068d565b620001c8906305f5e100620006a4565b620001d5906041620006a4565b620001e19190620006be565b90505f6064620001f46012600a6200068d565b62000204906305f5e100620006a4565b62000211906002620006a4565b6200021d9190620006be565b90505f6064620002306012600a6200068d565b62000240906305f5e100620006a4565b6200024d90600a620006a4565b620002599190620006be565b90505f60646200026c6012600a6200068d565b6200027c906305f5e100620006a4565b62000289906005620006a4565b620002959190620006be565b90505f6064620002a86012600a6200068d565b620002b8906305f5e100620006a4565b620002c5906005620006a4565b620002d19190620006be565b90505f6064620002e46012600a6200068d565b620002f4906305f5e100620006a4565b62000301906008620006a4565b6200030d9190620006be565b90505f6064620003206012600a6200068d565b62000330906305f5e100620006a4565b6200033d906005620006a4565b620003499190620006be565b305f8181526001602081815260408084208d9055600e80546001600160a01b0390811686528286208e905560108054821687528387208e905560118054831688528488208e905560128054841689528589208e90556013805485168a52868a208e90556014805486168b52878b208d9055338b5260038952878b208a90558b8b52878b208a9055955485168a52868a20899055925484168952858920889055905483168852848820879055548216875283872086905554811686528286208590559054168452808420929092556005839055600683905590518b8152939450919290915f805160206200216a833981519152910160405180910390a3600e546040518781526001600160a01b03909116905f905f805160206200216a8339815191529060200160405180910390a36010546040518681526001600160a01b03909116905f905f805160206200216a8339815191529060200160405180910390a36011546040518581526001600160a01b03909116905f905f805160206200216a8339815191529060200160405180910390a36012546040518481526001600160a01b03909116905f905f805160206200216a8339815191529060200160405180910390a36013546040518381526001600160a01b03909116905f905f805160206200216a8339815191529060200160405180910390a36014546040518281526001600160a01b03909116905f905f805160206200216a8339815191529060200160405180910390a350505050505050620006de565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005d257815f1904821115620005b657620005b66200057e565b80851615620005c457918102915b93841c939080029062000597565b509250929050565b5f82620005ea5750600162000687565b81620005f857505f62000687565b81600181146200061157600281146200061c576200063c565b600191505062000687565b60ff8411156200063057620006306200057e565b50506001821b62000687565b5060208310610133831016604e8410600b841016171562000661575081810a62000687565b6200066d838362000592565b805f19048211156200068357620006836200057e565b0290505b92915050565b5f6200069d60ff841683620005da565b9392505050565b80820281158282048414176200068757620006876200057e565b5f82620006d957634e487b7160e01b5f52601260045260245ffd5b500490565b611a7e80620006ec5f395ff3fe60806040526004361061013f575f3560e01c80638da5cb5b116100b3578063b7ea78b51161006d578063b7ea78b514610397578063d6e7a55e146103ac578063dd62ed3e146103d3578063e8eecf4c14610417578063f2fde38b1461042c578063f928364c1461044b575f80fd5b80638da5cb5b146102e957806395d89b4114610305578063a0ef91df14610331578063a9059cbb14610345578063aabc60d614610364578063b77f39fe14610383575f80fd5b8063301c3d5c11610104578063301c3d5c14610211578063313ce56714610230578063477ce99b1461024b57806349bd5a5e1461026a57806370a08231146102a1578063715018a6146102d5575f80fd5b806306fdde031461014a578063095ea7b31461018b57806318160ddd146101ba57806323b872dd146101dc578063293230b8146101fb575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b506040805180820190915260078152664175726b20414960c81b60208201525b604051610182919061165e565b60405180910390f35b348015610196575f80fd5b506101aa6101a53660046116bd565b61045f565b6040519015158152602001610182565b3480156101c5575f80fd5b506101ce610475565b604051908152602001610182565b3480156101e7575f80fd5b506101aa6101f63660046116e7565b610495565b348015610206575f80fd5b5061020f61054a565b005b34801561021c575f80fd5b5061020f61022b3660046116bd565b6108eb565b34801561023b575f80fd5b5060405160128152602001610182565b348015610256575f80fd5b5061020f610265366004611725565b61092f565b348015610275575f80fd5b50600d54610289906001600160a01b031681565b6040516001600160a01b039091168152602001610182565b3480156102ac575f80fd5b506101ce6102bb36600461173c565b6001600160a01b03165f9081526001602052604090205490565b3480156102e0575f80fd5b5061020f61098e565b3480156102f4575f80fd5b505f546001600160a01b0316610289565b348015610310575f80fd5b506040805180820190915260048152634155524b60e01b6020820152610175565b34801561033c575f80fd5b5061020f6109ff565b348015610350575f80fd5b506101aa61035f3660046116bd565b610abf565b34801561036f575f80fd5b5061020f61037e36600461175e565b610acb565b34801561038e575f80fd5b5061020f610ba1565b3480156103a2575f80fd5b506101ce60085481565b3480156103b7575f80fd5b50600a54600b5460408051928352602083019190915201610182565b3480156103de575f80fd5b506101ce6103ed36600461177e565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610422575f80fd5b506101ce60075481565b348015610437575f80fd5b5061020f61044636600461173c565b610c38565b348015610456575f80fd5b5061020f610c6a565b5f61046b338484610ccf565b5060015b92915050565b5f6104826012600a6118a9565b610490906305f5e1006118b7565b905090565b5f6104a1848484610df2565b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f19811461053f57828110156105325760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61053f8533858403610ccf565b506001949350505050565b5f546001600160a01b031633146105735760405162461bcd60e51b8152600401610529906118ce565b601454600160a01b900460ff16156105cd5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610529565b600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561062f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106539190611903565b6001600160a01b031663c9c6539630600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d69190611903565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610720573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107449190611903565b600d80546001600160a01b0319166001600160a01b03928316179055600c54610789913091166107766012600a6118a9565b610784906305f5e1006118b7565b610ccf565b600c546001600160a01b031663f305d71947306107ba816001600160a01b03165f9081526001602052604090205490565b5f806107cd5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610833573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610858919061191e565b5050600d54600c5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156108ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d19190611949565b506014805460ff60a01b1916600160a01b17905543600955565b5f546001600160a01b031633146109145760405162461bcd60e51b8152600401610529906118ce565b6001600160a01b039091165f90815260036020526040902055565b5f546001600160a01b031633146109585760405162461bcd60e51b8152600401610529906118ce565b305f9081526001602052604081205490606461097483856118b7565b61097e9190611968565b905061098981611157565b505050565b5f546001600160a01b031633146109b75760405162461bcd60e51b8152600401610529906118ce565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610a285760405162461bcd60e51b8152600401610529906118ce565b5f80546040516001600160a01b039091169047908381818185875af1925050503d805f8114610a72576040519150601f19603f3d011682016040523d82523d5f602084013e610a77565b606091505b5050905080610abc5760405162461bcd60e51b815260206004820152601160248201527014995cd8dd59481155120819985a5b1959607a1b6044820152606401610529565b50565b5f61046b338484610df2565b5f546001600160a01b03163314610af45760405162461bcd60e51b8152600401610529906118ce565b6064821115610b455760405162461bcd60e51b815260206004820152601f60248201527f4275792074617820726174652063616e6e6f74206578636565642031303025006044820152606401610529565b6064811115610b965760405162461bcd60e51b815260206004820181905260248201527f53656c6c2074617820726174652063616e6e6f742065786365656420313030256044820152606401610529565b600a91909155600b55565b5f546001600160a01b03163314610bca5760405162461bcd60e51b8152600401610529906118ce565b305f9081526001602052604090205480610c1c5760405162461bcd60e51b81526020600482015260136024820152724e6f20746f6b656e7320746f2072657363756560681b6044820152606401610529565b610abc30610c315f546001600160a01b031690565b835f6114a5565b5f546001600160a01b03163314610c615760405162461bcd60e51b8152600401610529906118ce565b610abc816115a0565b5f546001600160a01b03163314610c935760405162461bcd60e51b8152600401610529906118ce565b610c9f6012600a6118a9565b610cad906305f5e1006118b7565b600755610cbc6012600a6118a9565b610cca906305f5e1006118b7565b600855565b6001600160a01b038316610d315760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610529565b6001600160a01b038216610d925760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610529565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610529565b5f8111610ebe5760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610529565b6001600160a01b0383165f90815260036020526040812054158015610ef857506001600160a01b0383165f90815260036020526040902054155b1561114557601454600160a01b900460ff16610f565760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610529565b600754821115610fbd5760405162461bcd60e51b815260206004820152602c60248201527f5472616e73616374696f6e20616d6f756e74206578636565647320746865206d60448201526b185e1a5b5d5b481b1a5b5a5d60a21b6064820152608401610529565b600d546001600160a01b03848116911614801590610fe657506001600160a01b03831661dead14155b15611078576008548261100d856001600160a01b03165f9081526001602052604090205490565b6110179190611987565b11156110785760405162461bcd60e51b815260206004820152602a60248201527f526563697069656e742077616c6c6574206578636565647320746865206d61786044820152691a5b5d5b481b1a5b5a5d60b21b6064820152608401610529565b600954611086906003611987565b4310156110b657600d546001600160a01b038581169116146110a957601e6110ac565b601e5b60ff169050611145565b600d546001600160a01b03908116908516036110d55750600a54611145565b600d546001600160a01b039081169084160361114557305f908152600160205260409020546111066012600a6118a9565b611112906127106118b7565b81111561113f5760045483821115611128578391505b80821115611134578091505b61113d82611157565b505b5050600b545b611151848484846114a5565b50505050565b60055443036111cb576002600654106111b25760405162461bcd60e51b815260206004820152601f60248201527f4d6178696d756d2073776170732070657220626c6f636b2072656163686564006044820152606401610529565b60068054905f6111c18361199a565b91905055506111d5565b4360055560016006555b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611208576112086119b2565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561125f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112839190611903565b81600181518110611296576112966119b2565b6001600160a01b039283166020918202929092010152600c546112bc9130911684610ccf565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906112f49085905f908690309042906004016119c6565b5f604051808303815f87803b15801561130b575f80fd5b505af115801561131d573d5f803e3d5ffd5b504792505f91506064905061133383600a6118b7565b61133d9190611968565b90505f606461134d84605a6118b7565b6113579190611968565b600f546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f81146113a6576040519150601f19603f3d011682016040523d82523d5f602084013e6113ab565b606091505b50509050806113fc5760405162461bcd60e51b815260206004820152601960248201527f5472616e7366657220746f204465764f7073206661696c6564000000000000006044820152606401610529565b600e546040515f916001600160a01b03169084908381818185875af1925050503d805f8114611446576040519150601f19603f3d011682016040523d82523d5f602084013e61144b565b606091505b505090508061149c5760405162461bcd60e51b815260206004820181905260248201527f5472616e7366657220746f2050726f6a65637457616c6c6574206661696c65646044820152606401610529565b50505050505050565b5f60646114b283856118b7565b6114bc9190611968565b90505f6114c98285611a35565b6001600160a01b0387165f908152600160205260408120805492935086929091906114f5908490611a35565b90915550506001600160a01b0385165f9081526001602052604081208054839290611521908490611987565b9091555050305f9081526001602052604081208054849290611544908490611987565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161159091815260200190565b60405180910390a3505050505050565b6001600160a01b0381166116055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610529565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6020808352835180828501525f5b818110156116895785810183015185820160400152820161166d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610abc575f80fd5b5f80604083850312156116ce575f80fd5b82356116d9816116a9565b946020939093013593505050565b5f805f606084860312156116f9575f80fd5b8335611704816116a9565b92506020840135611714816116a9565b929592945050506040919091013590565b5f60208284031215611735575f80fd5b5035919050565b5f6020828403121561174c575f80fd5b8135611757816116a9565b9392505050565b5f806040838503121561176f575f80fd5b50508035926020909101359150565b5f806040838503121561178f575f80fd5b823561179a816116a9565b915060208301356117aa816116a9565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561180357815f19048211156117e9576117e96117b5565b808516156117f657918102915b93841c93908002906117ce565b509250929050565b5f826118195750600161046f565b8161182557505f61046f565b816001811461183b576002811461184557611861565b600191505061046f565b60ff841115611856576118566117b5565b50506001821b61046f565b5060208310610133831016604e8410600b8410161715611884575081810a61046f565b61188e83836117c9565b805f19048211156118a1576118a16117b5565b029392505050565b5f61175760ff84168361180b565b808202811582820484141761046f5761046f6117b5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611913575f80fd5b8151611757816116a9565b5f805f60608486031215611930575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611959575f80fd5b81518015158114611757575f80fd5b5f8261198257634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561046f5761046f6117b5565b5f600182016119ab576119ab6117b5565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a145784516001600160a01b0316835293830193918301916001016119ef565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561046f5761046f6117b556fea26469706673582212208dbbb6f6aeccb38be53e5c89c46fde4f80b97b6a514e154b8d91822b75898a0d64736f6c63430008140033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061013f575f3560e01c80638da5cb5b116100b3578063b7ea78b51161006d578063b7ea78b514610397578063d6e7a55e146103ac578063dd62ed3e146103d3578063e8eecf4c14610417578063f2fde38b1461042c578063f928364c1461044b575f80fd5b80638da5cb5b146102e957806395d89b4114610305578063a0ef91df14610331578063a9059cbb14610345578063aabc60d614610364578063b77f39fe14610383575f80fd5b8063301c3d5c11610104578063301c3d5c14610211578063313ce56714610230578063477ce99b1461024b57806349bd5a5e1461026a57806370a08231146102a1578063715018a6146102d5575f80fd5b806306fdde031461014a578063095ea7b31461018b57806318160ddd146101ba57806323b872dd146101dc578063293230b8146101fb575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b506040805180820190915260078152664175726b20414960c81b60208201525b604051610182919061165e565b60405180910390f35b348015610196575f80fd5b506101aa6101a53660046116bd565b61045f565b6040519015158152602001610182565b3480156101c5575f80fd5b506101ce610475565b604051908152602001610182565b3480156101e7575f80fd5b506101aa6101f63660046116e7565b610495565b348015610206575f80fd5b5061020f61054a565b005b34801561021c575f80fd5b5061020f61022b3660046116bd565b6108eb565b34801561023b575f80fd5b5060405160128152602001610182565b348015610256575f80fd5b5061020f610265366004611725565b61092f565b348015610275575f80fd5b50600d54610289906001600160a01b031681565b6040516001600160a01b039091168152602001610182565b3480156102ac575f80fd5b506101ce6102bb36600461173c565b6001600160a01b03165f9081526001602052604090205490565b3480156102e0575f80fd5b5061020f61098e565b3480156102f4575f80fd5b505f546001600160a01b0316610289565b348015610310575f80fd5b506040805180820190915260048152634155524b60e01b6020820152610175565b34801561033c575f80fd5b5061020f6109ff565b348015610350575f80fd5b506101aa61035f3660046116bd565b610abf565b34801561036f575f80fd5b5061020f61037e36600461175e565b610acb565b34801561038e575f80fd5b5061020f610ba1565b3480156103a2575f80fd5b506101ce60085481565b3480156103b7575f80fd5b50600a54600b5460408051928352602083019190915201610182565b3480156103de575f80fd5b506101ce6103ed36600461177e565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610422575f80fd5b506101ce60075481565b348015610437575f80fd5b5061020f61044636600461173c565b610c38565b348015610456575f80fd5b5061020f610c6a565b5f61046b338484610ccf565b5060015b92915050565b5f6104826012600a6118a9565b610490906305f5e1006118b7565b905090565b5f6104a1848484610df2565b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f19811461053f57828110156105325760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61053f8533858403610ccf565b506001949350505050565b5f546001600160a01b031633146105735760405162461bcd60e51b8152600401610529906118ce565b601454600160a01b900460ff16156105cd5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610529565b600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561062f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106539190611903565b6001600160a01b031663c9c6539630600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d69190611903565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610720573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107449190611903565b600d80546001600160a01b0319166001600160a01b03928316179055600c54610789913091166107766012600a6118a9565b610784906305f5e1006118b7565b610ccf565b600c546001600160a01b031663f305d71947306107ba816001600160a01b03165f9081526001602052604090205490565b5f806107cd5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610833573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610858919061191e565b5050600d54600c5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156108ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d19190611949565b506014805460ff60a01b1916600160a01b17905543600955565b5f546001600160a01b031633146109145760405162461bcd60e51b8152600401610529906118ce565b6001600160a01b039091165f90815260036020526040902055565b5f546001600160a01b031633146109585760405162461bcd60e51b8152600401610529906118ce565b305f9081526001602052604081205490606461097483856118b7565b61097e9190611968565b905061098981611157565b505050565b5f546001600160a01b031633146109b75760405162461bcd60e51b8152600401610529906118ce565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610a285760405162461bcd60e51b8152600401610529906118ce565b5f80546040516001600160a01b039091169047908381818185875af1925050503d805f8114610a72576040519150601f19603f3d011682016040523d82523d5f602084013e610a77565b606091505b5050905080610abc5760405162461bcd60e51b815260206004820152601160248201527014995cd8dd59481155120819985a5b1959607a1b6044820152606401610529565b50565b5f61046b338484610df2565b5f546001600160a01b03163314610af45760405162461bcd60e51b8152600401610529906118ce565b6064821115610b455760405162461bcd60e51b815260206004820152601f60248201527f4275792074617820726174652063616e6e6f74206578636565642031303025006044820152606401610529565b6064811115610b965760405162461bcd60e51b815260206004820181905260248201527f53656c6c2074617820726174652063616e6e6f742065786365656420313030256044820152606401610529565b600a91909155600b55565b5f546001600160a01b03163314610bca5760405162461bcd60e51b8152600401610529906118ce565b305f9081526001602052604090205480610c1c5760405162461bcd60e51b81526020600482015260136024820152724e6f20746f6b656e7320746f2072657363756560681b6044820152606401610529565b610abc30610c315f546001600160a01b031690565b835f6114a5565b5f546001600160a01b03163314610c615760405162461bcd60e51b8152600401610529906118ce565b610abc816115a0565b5f546001600160a01b03163314610c935760405162461bcd60e51b8152600401610529906118ce565b610c9f6012600a6118a9565b610cad906305f5e1006118b7565b600755610cbc6012600a6118a9565b610cca906305f5e1006118b7565b600855565b6001600160a01b038316610d315760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610529565b6001600160a01b038216610d925760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610529565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610529565b5f8111610ebe5760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610529565b6001600160a01b0383165f90815260036020526040812054158015610ef857506001600160a01b0383165f90815260036020526040902054155b1561114557601454600160a01b900460ff16610f565760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610529565b600754821115610fbd5760405162461bcd60e51b815260206004820152602c60248201527f5472616e73616374696f6e20616d6f756e74206578636565647320746865206d60448201526b185e1a5b5d5b481b1a5b5a5d60a21b6064820152608401610529565b600d546001600160a01b03848116911614801590610fe657506001600160a01b03831661dead14155b15611078576008548261100d856001600160a01b03165f9081526001602052604090205490565b6110179190611987565b11156110785760405162461bcd60e51b815260206004820152602a60248201527f526563697069656e742077616c6c6574206578636565647320746865206d61786044820152691a5b5d5b481b1a5b5a5d60b21b6064820152608401610529565b600954611086906003611987565b4310156110b657600d546001600160a01b038581169116146110a957601e6110ac565b601e5b60ff169050611145565b600d546001600160a01b03908116908516036110d55750600a54611145565b600d546001600160a01b039081169084160361114557305f908152600160205260409020546111066012600a6118a9565b611112906127106118b7565b81111561113f5760045483821115611128578391505b80821115611134578091505b61113d82611157565b505b5050600b545b611151848484846114a5565b50505050565b60055443036111cb576002600654106111b25760405162461bcd60e51b815260206004820152601f60248201527f4d6178696d756d2073776170732070657220626c6f636b2072656163686564006044820152606401610529565b60068054905f6111c18361199a565b91905055506111d5565b4360055560016006555b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611208576112086119b2565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561125f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112839190611903565b81600181518110611296576112966119b2565b6001600160a01b039283166020918202929092010152600c546112bc9130911684610ccf565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906112f49085905f908690309042906004016119c6565b5f604051808303815f87803b15801561130b575f80fd5b505af115801561131d573d5f803e3d5ffd5b504792505f91506064905061133383600a6118b7565b61133d9190611968565b90505f606461134d84605a6118b7565b6113579190611968565b600f546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f81146113a6576040519150601f19603f3d011682016040523d82523d5f602084013e6113ab565b606091505b50509050806113fc5760405162461bcd60e51b815260206004820152601960248201527f5472616e7366657220746f204465764f7073206661696c6564000000000000006044820152606401610529565b600e546040515f916001600160a01b03169084908381818185875af1925050503d805f8114611446576040519150601f19603f3d011682016040523d82523d5f602084013e61144b565b606091505b505090508061149c5760405162461bcd60e51b815260206004820181905260248201527f5472616e7366657220746f2050726f6a65637457616c6c6574206661696c65646044820152606401610529565b50505050505050565b5f60646114b283856118b7565b6114bc9190611968565b90505f6114c98285611a35565b6001600160a01b0387165f908152600160205260408120805492935086929091906114f5908490611a35565b90915550506001600160a01b0385165f9081526001602052604081208054839290611521908490611987565b9091555050305f9081526001602052604081208054849290611544908490611987565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161159091815260200190565b60405180910390a3505050505050565b6001600160a01b0381166116055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610529565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6020808352835180828501525f5b818110156116895785810183015185820160400152820161166d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610abc575f80fd5b5f80604083850312156116ce575f80fd5b82356116d9816116a9565b946020939093013593505050565b5f805f606084860312156116f9575f80fd5b8335611704816116a9565b92506020840135611714816116a9565b929592945050506040919091013590565b5f60208284031215611735575f80fd5b5035919050565b5f6020828403121561174c575f80fd5b8135611757816116a9565b9392505050565b5f806040838503121561176f575f80fd5b50508035926020909101359150565b5f806040838503121561178f575f80fd5b823561179a816116a9565b915060208301356117aa816116a9565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561180357815f19048211156117e9576117e96117b5565b808516156117f657918102915b93841c93908002906117ce565b509250929050565b5f826118195750600161046f565b8161182557505f61046f565b816001811461183b576002811461184557611861565b600191505061046f565b60ff841115611856576118566117b5565b50506001821b61046f565b5060208310610133831016604e8410600b8410161715611884575081810a61046f565b61188e83836117c9565b805f19048211156118a1576118a16117b5565b029392505050565b5f61175760ff84168361180b565b808202811582820484141761046f5761046f6117b5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611913575f80fd5b8151611757816116a9565b5f805f60608486031215611930575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611959575f80fd5b81518015158114611757575f80fd5b5f8261198257634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561046f5761046f6117b5565b5f600182016119ab576119ab6117b5565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a145784516001600160a01b0316835293830193918301916001016119ef565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561046f5761046f6117b556fea26469706673582212208dbbb6f6aeccb38be53e5c89c46fde4f80b97b6a514e154b8d91822b75898a0d64736f6c63430008140033

Deployed Bytecode Sourcemap

3767:12644:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7658:88;;;;;;;;;;-1:-1:-1;7728:10:0;;;;;;;;;;;;-1:-1:-1;;;7728:10:0;;;;7658:88;;;;;;;:::i;:::-;;;;;;;;8810:198;;;;;;;;;;-1:-1:-1;8810:198:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8810:198:0;1023:187:1;7950:100:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;7950:100:0;1215:177:1;9016:624:0;;;;;;;;;;-1:-1:-1;9016:624:0;;;;;:::i;:::-;;:::i;10080:887::-;;;;;;;;;;;;;:::i;:::-;;11011:155;;;;;;;;;;-1:-1:-1;11011:155:0;;;;;:::i;:::-;;:::i;7854:88::-;;;;;;;;;;-1:-1:-1;7854:88:0;;3961:2;2000:36:1;;1988:2;1973:18;7854:88:0;1858:184:1;14619:251:0;;;;;;;;;;-1:-1:-1;14619:251:0;;;;;:::i;:::-;;:::i;4837:28::-;;;;;;;;;;-1:-1:-1;4837:28:0;;;;-1:-1:-1;;;;;4837:28:0;;;;;;-1:-1:-1;;;;;2396:32:1;;;2378:51;;2366:2;2351:18;4837:28:0;2232:203:1;8277:119:0;;;;;;;;;;-1:-1:-1;8277:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8370:18:0;8343:7;8370:18;;;:9;:18;;;;;;;8277:119;2718:164;;;;;;;;;;;;;:::i;1863:87::-;;;;;;;;;;-1:-1:-1;1901:7:0;1928:14;-1:-1:-1;;;;;1928:14:0;1863:87;;7754:92;;;;;;;;;;-1:-1:-1;7826:12:0;;;;;;;;;;;;-1:-1:-1;;;7826:12:0;;;;7754:92;;14110:174;;;;;;;;;;;;;:::i;8404:206::-;;;;;;;;;;-1:-1:-1;8404:206:0;;;;;:::i;:::-;;:::i;11371:351::-;;;;;;;;;;-1:-1:-1;11371:351:0;;;;;:::i;:::-;;:::i;14321:268::-;;;;;;;;;;;;;:::i;4574:63::-;;;;;;;;;;;;;;;;8088:181;;;;;;;;;;-1:-1:-1;8219:10:0;;8250:11;;8088:181;;;3119:25:1;;;3175:2;3160:18;;3153:34;;;;3092:18;8088:181:0;2945:248:1;8618:184:0;;;;;;;;;;-1:-1:-1;8618:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8767:18:0;;;8735:7;8767:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8618:184;4495:56;;;;;;;;;;;;;;;;2237:107;;;;;;;;;;-1:-1:-1;2237:107:0;;;;;:::i;:::-;;:::i;11207:131::-;;;;;;;;;;;;;:::i;8810:198::-;8912:4;8934:44;1386:10;8962:7;8971:6;8934:13;:44::i;:::-;-1:-1:-1;8996:4:0;8810:198;;;;;:::o;7950:100::-;8003:7;4022:18;3961:2;4022;:18;:::i;:::-;4010:30;;:9;:30;:::i;:::-;8023:19;;7950:100;:::o;9016:624::-;9148:4;9165:43;9182:6;9190:9;9201:6;9165:16;:43::i;:::-;-1:-1:-1;;;;;9248:19:0;;9221:24;9248:19;;;:11;:19;;;;;;;;1386:10;9248:33;;;;;;;;-1:-1:-1;;9296:37:0;;9292:319;;9396:6;9376:16;:26;;9350:128;;;;-1:-1:-1;;;9350:128:0;;5481:2:1;9350:128:0;;;5463:21:1;5520:2;5500:18;;;5493:30;5559:34;5539:18;;;5532:62;-1:-1:-1;;;5610:18:1;;;5603:38;5658:19;;9350:128:0;;;;;;;;;9522:62;9536:6;1386:10;9577:6;9558:16;:25;9522:13;:62::i;:::-;-1:-1:-1;9628:4:0;;9016:624;-1:-1:-1;;;;9016:624:0:o;10080:887::-;2012:14;;-1:-1:-1;;;;;2012:14:0;1386:10;2012:30;1990:112;;;;-1:-1:-1;;;1990:112:0;;;;;;;:::i;:::-;10143:16:::1;::::0;-1:-1:-1;;;10143:16:0;::::1;;;10142:17;10134:56;;;::::0;-1:-1:-1;;;10134:56:0;;6251:2:1;10134:56:0::1;::::0;::::1;6233:21:1::0;6290:2;6270:18;;;6263:30;6329:28;6309:18;;;6302:56;6375:18;;10134:56:0::1;6049:350:1::0;10134:56:0::1;10201:16;:105:::0;;-1:-1:-1;;;;;;10201:105:0::1;10253:42;10201:105:::0;;::::1;::::0;;;10353:26:::1;::::0;;-1:-1:-1;;;10353:26:0;;;;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;10253:42;10353:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10335:70:0::1;;10414:4;10421:16;;;;;;;;;-1:-1:-1::0;;;;;10421:16:0::1;-1:-1:-1::0;;;;;10421:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10335:110;::::0;-1:-1:-1;;;;;;10335:110:0::1;::::0;;;;;;-1:-1:-1;;;;;6890:15:1;;;10335:110:0::1;::::0;::::1;6872:34:1::0;6942:15;;6922:18;;;6915:43;6807:18;;10335:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10319:13;:126:::0;;-1:-1:-1;;;;;;10319:126:0::1;-1:-1:-1::0;;;;;10319:126:0;;::::1;;::::0;;10493:16:::1;::::0;10456:69:::1;::::0;10478:4:::1;::::0;10493:16:::1;4022:18;3961:2;4022;:18;:::i;:::-;4010:30;::::0;:9:::1;:30;:::i;:::-;10456:13;:69::i;:::-;10538:16;::::0;-1:-1:-1;;;;;10538:16:0::1;:32;10578:21;10623:4;10643:24;10623:4:::0;-1:-1:-1;;;;;8370:18:0;8343:7;8370:18;;;:9;:18;;;;;;;8277:119;10643:24:::1;10682:1;10698::::0;10714:7:::1;1901::::0;1928:14;-1:-1:-1;;;;;1928:14:0;;1863:87;10714:7:::1;10538:224;::::0;::::1;::::0;;;-1:-1:-1;;;;;;10538:224:0;;;-1:-1:-1;;;;;7328:15:1;;;10538:224:0::1;::::0;::::1;7310:34:1::0;7360:18;;;7353:34;;;;7403:18;;;7396:34;;;;7446:18;;;7439:34;7510:15;;;7489:19;;;7482:44;10736:15:0::1;7542:19:1::0;;;7535:35;7244:19;;10538:224:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;10782:13:0::1;::::0;10827:16:::1;::::0;10775:112:::1;::::0;-1:-1:-1;;;10775:112:0;;-1:-1:-1;;;;;10827:16:0;;::::1;10775:112;::::0;::::1;8066:51:1::0;-1:-1:-1;;8133:18:1;;;8126:34;10782:13:0;::::1;::::0;-1:-1:-1;10775:29:0::1;::::0;8039:18:1;;10775:112:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;10898:16:0::1;:23:::0;;-1:-1:-1;;;;10898:23:0::1;-1:-1:-1::0;;;10898:23:0::1;::::0;;10947:12:::1;10932;:27:::0;10080:887::o;11011:155::-;2012:14;;-1:-1:-1;;;;;2012:14:0;1386:10;2012:30;1990:112;;;;-1:-1:-1;;;1990:112:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11124:26:0;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:34;11011:155::o;14619:251::-;2012:14;;-1:-1:-1;;;;;2012:14:0;1386:10;2012:30;1990:112;;;;-1:-1:-1;;;1990:112:0;;;;;;;:::i;:::-;14742:4:::1;14693:28;8370:18:::0;;;:9;:18;;;;;;;14815:3:::1;14781:30;8370:18:::0;14781:7;:30:::1;:::i;:::-;14780:38;;;;:::i;:::-;14759:59;;14829:33;14851:10;14829:21;:33::i;:::-;14682:188;;14619:251:::0;:::o;2718:164::-;2012:14;;-1:-1:-1;;;;;2012:14:0;1386:10;2012:30;1990:112;;;;-1:-1:-1;;;1990:112:0;;;;;;;:::i;:::-;2833:1:::1;2809:14:::0;;2788:48:::1;::::0;-1:-1:-1;;;;;2809:14:0;;::::1;::::0;2788:48:::1;::::0;2833:1;;2788:48:::1;2872:1;2847:27:::0;;-1:-1:-1;;;;;;2847:27:0::1;::::0;;2718:164::o;14110:174::-;2012:14;;-1:-1:-1;;;;;2012:14:0;1386:10;2012:30;1990:112;;;;-1:-1:-1;;;1990:112:0;;;;;;;:::i;:::-;14164:12:::1;1928:14:::0;;14182:46:::1;::::0;-1:-1:-1;;;;;1928:14:0;;;;14202:21:::1;::::0;14164:12;14182:46;14164:12;14182:46;14202:21;1928:14;14182:46:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14163:65;;;14247:7;14239:37;;;::::0;-1:-1:-1;;;14239:37:0;;9087:2:1;14239:37:0::1;::::0;::::1;9069:21:1::0;9126:2;9106:18;;;9099:30;-1:-1:-1;;;9145:18:1;;;9138:47;9202:18;;14239:37:0::1;8885:341:1::0;14239:37:0::1;14152:132;14110:174::o:0;8404:206::-;8509:4;8531:49;1386:10;8562:9;8573:6;8531:16;:49::i;11371:351::-;2012:14;;-1:-1:-1;;;;;2012:14:0;1386:10;2012:30;1990:112;;;;-1:-1:-1;;;1990:112:0;;;;;;;:::i;:::-;11520:3:::1;11503:13;:20;;11495:64;;;::::0;-1:-1:-1;;;11495:64:0;;9433:2:1;11495:64:0::1;::::0;::::1;9415:21:1::0;9472:2;9452:18;;;9445:30;9511:33;9491:18;;;9484:61;9562:18;;11495:64:0::1;9231:355:1::0;11495:64:0::1;11596:3;11578:14;:21;;11570:66;;;::::0;-1:-1:-1;;;11570:66:0;;9793:2:1;11570:66:0::1;::::0;::::1;9775:21:1::0;;;9812:18;;;9805:30;9871:34;9851:18;;;9844:62;9923:18;;11570:66:0::1;9591:356:1::0;11570:66:0::1;11649:10;:26:::0;;;;11686:11:::1;:28:::0;11371:351::o;14321:268::-;2012:14;;-1:-1:-1;;;;;2012:14:0;1386:10;2012:30;1990:112;;;;-1:-1:-1;;;1990:112:0;;;;;;;:::i;:::-;14425:4:::1;14376:28;8370:18:::0;;;:9;:18;;;;;;14450:24;14442:56:::1;;;::::0;-1:-1:-1;;;14442:56:0;;10154:2:1;14442:56:0::1;::::0;::::1;10136:21:1::0;10193:2;10173:18;;;10166:30;-1:-1:-1;;;10212:18:1;;;10205:49;10271:18;;14442:56:0::1;9952:343:1::0;14442:56:0::1;14511:70;14541:4;14548:7;1901::::0;1928:14;-1:-1:-1;;;;;1928:14:0;;1863:87;14548:7:::1;14557:20;14579:1;14511:21;:70::i;2237:107::-:0;2012:14;;-1:-1:-1;;;;;2012:14:0;1386:10;2012:30;1990:112;;;;-1:-1:-1;;;1990:112:0;;;;;;;:::i;:::-;2310:26:::1;2327:8;2310:16;:26::i;11207:131::-:0;2012:14;;-1:-1:-1;;;;;2012:14:0;1386:10;2012:30;1990:112;;;;-1:-1:-1;;;1990:112:0;;;;;;;:::i;:::-;4022:18:::1;3961:2;4022;:18;:::i;:::-;4010:30;::::0;:9:::1;:30;:::i;:::-;11262:10;:25:::0;4022:18:::1;3961:2;4022;:18;:::i;:::-;4010:30;::::0;:9:::1;:30;:::i;:::-;11298:17;:32:::0;11207:131::o;9648:374::-;-1:-1:-1;;;;;9780:19:0;;9772:68;;;;-1:-1:-1;;;9772:68:0;;10502:2:1;9772:68:0;;;10484:21:1;10541:2;10521:18;;;10514:30;10580:34;10560:18;;;10553:62;-1:-1:-1;;;10631:18:1;;;10624:34;10675:19;;9772:68:0;10300:400:1;9772:68:0;-1:-1:-1;;;;;9859:21:0;;9851:68;;;;-1:-1:-1;;;9851:68:0;;10907:2:1;9851:68:0;;;10889:21:1;10946:2;10926:18;;;10919:30;10985:34;10965:18;;;10958:62;-1:-1:-1;;;11036:18:1;;;11029:32;11078:19;;9851:68:0;10705:398:1;9851:68:0;-1:-1:-1;;;;;9930:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9982:32;;1361:25:1;;;9982:32:0;;1334:18:1;9982:32:0;;;;;;;9648:374;;;:::o;12244:1832::-;-1:-1:-1;;;;;12373:18:0;;12365:68;;;;-1:-1:-1;;;12365:68:0;;11310:2:1;12365:68:0;;;11292:21:1;11349:2;11329:18;;;11322:30;11388:34;11368:18;;;11361:62;-1:-1:-1;;;11439:18:1;;;11432:35;11484:19;;12365:68:0;11108:401:1;12365:68:0;12461:1;12452:6;:10;12444:71;;;;-1:-1:-1;;;12444:71:0;;11716:2:1;12444:71:0;;;11698:21:1;11755:2;11735:18;;;11728:30;11794:34;11774:18;;;11767:62;-1:-1:-1;;;11845:18:1;;;11838:46;11901:19;;12444:71:0;11514:412:1;12444:71:0;-1:-1:-1;;;;;12564:23:0;;12528:15;12564:23;;;:17;:23;;;;;;:28;:58;;;;-1:-1:-1;;;;;;12596:21:0;;;;;;:17;:21;;;;;;:26;12564:58;12560:1450;;;12647:16;;-1:-1:-1;;;12647:16:0;;;;12639:55;;;;-1:-1:-1;;;12639:55:0;;12133:2:1;12639:55:0;;;12115:21:1;12172:2;12152:18;;;12145:30;12211:28;12191:18;;;12184:56;12257:18;;12639:55:0;11931:350:1;12639:55:0;12745:10;;12735:6;:20;;12709:126;;;;-1:-1:-1;;;12709:126:0;;12488:2:1;12709:126:0;;;12470:21:1;12527:2;12507:18;;;12500:30;12566:34;12546:18;;;12539:62;-1:-1:-1;;;12617:18:1;;;12610:42;12669:19;;12709:126:0;12286:408:1;12709:126:0;12862:13;;-1:-1:-1;;;;;12856:19:0;;;12862:13;;12856:19;;;;:44;;-1:-1:-1;;;;;;12879:21:0;;12893:6;12879:21;;12856:44;12852:244;;;12977:17;;12967:6;12951:13;12961:2;-1:-1:-1;;;;;8370:18:0;8343:7;8370:18;;;:9;:18;;;;;;;8277:119;12951:13;:22;;;;:::i;:::-;:43;;12921:159;;;;-1:-1:-1;;;12921:159:0;;13031:2:1;12921:159:0;;;13013:21:1;13070:2;13050:18;;;13043:30;13109:34;13089:18;;;13082:62;-1:-1:-1;;;13160:18:1;;;13153:40;13210:19;;12921:159:0;12829:406:1;12921:159:0;13131:12;;:16;;13146:1;13131:16;:::i;:::-;13116:12;:31;13112:887;;;13187:13;;-1:-1:-1;;;;;13179:21:0;;;13187:13;;13179:21;13178:33;;13209:2;13178:33;;;13204:2;13178:33;13168:43;;;;13112:887;;;13264:13;;-1:-1:-1;;;;;13264:13:0;;;13256:21;;;;13252:732;;-1:-1:-1;13312:10:0;;13252:732;;;13358:13;;-1:-1:-1;;;;;13358:13:0;;;13352:19;;;;13348:636;;13445:4;13396:28;8370:18;;;:9;:18;;;;;;4287;3961:2;4287;:18;:::i;:::-;4279:26;;:5;:26;:::i;:::-;13478:20;:37;13474:447;;;13565:14;;13610:29;;;13606:93;;;13693:6;13670:29;;13606:93;13753:10;13730:20;:33;13726:101;;;13817:10;13794:33;;13726:101;13854:43;13876:20;13854:21;:43::i;:::-;13517:404;13474:447;-1:-1:-1;;13953:11:0;;13348:636;14020:48;14042:4;14048:2;14052:6;14060:7;14020:21;:48::i;:::-;12354:1722;12244:1832;;;:::o;14900:1471::-;15035:14;;15019:12;:30;15015:338;;15148:1;15135:10;;:14;15127:58;;;;-1:-1:-1;;;15127:58:0;;13442:2:1;15127:58:0;;;13424:21:1;13481:2;13461:18;;;13454:30;13520:33;13500:18;;;13493:61;13571:18;;15127:58:0;13240:355:1;15127:58:0;15200:10;:12;;;:10;:12;;;:::i;:::-;;;;;;15015:338;;;15300:12;15283:14;:29;15340:1;15327:10;:14;15015:338;15389:16;;;15403:1;15389:16;;;;;;;;15365:21;;15389:16;;;;;;;;;;-1:-1:-1;15389:16:0;15365:40;;15434:4;15416;15421:1;15416:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15416:23:0;;;:7;;;;;;;;;;:23;;;;15460:16;;:23;;;-1:-1:-1;;;15460:23:0;;;;:16;;;;;:21;;:23;;;;;15416:7;;15460:23;;;;;:16;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15450:4;15455:1;15450:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15450:33:0;;;:7;;;;;;;;;:33;15533:16;;15496:68;;15518:4;;15533:16;15552:11;15496:13;:68::i;:::-;15577:16;;:197;;-1:-1:-1;;;15577:197:0;;-1:-1:-1;;;;;15577:16:0;;;;:67;;:197;;15659:11;;15577:16;;15701:4;;15728;;15748:15;;15577:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15816:21:0;;-1:-1:-1;15787:26:0;;-1:-1:-1;15931:3:0;;-1:-1:-1;15904:23:0;15816:21;15925:2;15904:23;:::i;:::-;15903:31;;;;:::i;:::-;15881:53;-1:-1:-1;15946:20:0;15997:3;15970:23;:18;15991:2;15970:23;:::i;:::-;15969:31;;;;:::i;:::-;16076:6;;:35;;15946:54;;-1:-1:-1;16052:18:0;;-1:-1:-1;;;;;16076:6:0;;;;16095:11;;16052:18;16076:35;16052:18;16076:35;16095:11;16076:6;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16051:60;;;16130:13;16122:51;;;;-1:-1:-1;;;16122:51:0;;15191:2:1;16122:51:0;;;15173:21:1;15230:2;15210:18;;;15203:30;15269:27;15249:18;;;15242:55;15314:18;;16122:51:0;14989:349:1;16122:51:0;16250:13;;:43;;16225:19;;-1:-1:-1;;;;;16250:13:0;;16276:12;;16225:19;16250:43;16225:19;16250:43;16276:12;16250:13;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16224:69;;;16312:14;16304:59;;;;-1:-1:-1;;;16304:59:0;;15545:2:1;16304:59:0;;;15527:21:1;;;15564:18;;;15557:30;15623:34;15603:18;;;15596:62;15675:18;;16304:59:0;15343:356:1;16304:59:0;14960:1411;;;;;;14900:1471;:::o;11773:438::-;11925:17;11966:3;11946:16;11955:7;11946:6;:16;:::i;:::-;11945:24;;;;:::i;:::-;11925:44;-1:-1:-1;11980:22:0;12005:18;11925:44;12005:6;:18;:::i;:::-;-1:-1:-1;;;;;12036:15:0;;;;;;:9;:15;;;;;:25;;11980:43;;-1:-1:-1;12055:6:0;;12036:15;;;:25;;12055:6;;12036:25;:::i;:::-;;;;-1:-1:-1;;;;;;;12072:13:0;;;;;;:9;:13;;;;;:31;;12089:14;;12072:13;:31;;12089:14;;12072:31;:::i;:::-;;;;-1:-1:-1;;12132:4:0;12114:24;;;;:9;:24;;;;;:37;;12142:9;;12114:24;:37;;12142:9;;12114:37;:::i;:::-;;;;;;;;12184:2;-1:-1:-1;;;;;12169:34:0;12178:4;-1:-1:-1;;;;;12169:34:0;;12188:14;12169:34;;;;1361:25:1;;1349:2;1334:18;;1215:177;12169:34:0;;;;;;;;11914:297;;11773:438;;;;:::o;2352:280::-;-1:-1:-1;;;;;2438:22:0;;2416:110;;;;-1:-1:-1;;;2416:110:0;;16039:2:1;2416:110:0;;;16021:21:1;16078:2;16058:18;;;16051:30;16117:34;16097:18;;;16090:62;-1:-1:-1;;;16168:18:1;;;16161:36;16214:19;;2416:110:0;15837:402:1;2416:110:0;2563:14;;;2542:46;;-1:-1:-1;;;;;2542:46:0;;;;2563:14;;;2542:46;;;2599:14;:25;;-1:-1:-1;;;;;;2599:25:0;-1:-1:-1;;;;;2599:25:0;;;;;;;;;;2352:280::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;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;2047:180::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;-1:-1:-1;2198:23:1;;2047:180;-1:-1:-1;2047:180:1:o;2440:247::-;2499:6;2552:2;2540:9;2531:7;2527:23;2523:32;2520:52;;;2568:1;2565;2558:12;2520:52;2607:9;2594:23;2626:31;2651:5;2626:31;:::i;:::-;2676:5;2440:247;-1:-1:-1;;;2440:247:1:o;2692:248::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;-1:-1:-1;;2860:23:1;;;2930:2;2915:18;;;2902:32;;-1:-1:-1;2692:248:1:o;3198:388::-;3266:6;3274;3327:2;3315:9;3306:7;3302:23;3298:32;3295:52;;;3343:1;3340;3333:12;3295:52;3382:9;3369:23;3401:31;3426:5;3401:31;:::i;:::-;3451:5;-1:-1:-1;3508:2:1;3493:18;;3480:32;3521:33;3480:32;3521:33;:::i;:::-;3573:7;3563:17;;;3198:388;;;;;:::o;3591:127::-;3652:10;3647:3;3643:20;3640:1;3633:31;3683:4;3680:1;3673:15;3707:4;3704:1;3697:15;3723:422;3812:1;3855:5;3812:1;3869:270;3890:7;3880:8;3877:21;3869:270;;;3949:4;3945:1;3941:6;3937:17;3931:4;3928:27;3925:53;;;3958:18;;:::i;:::-;4008:7;3998:8;3994:22;3991:55;;;4028:16;;;;3991:55;4107:22;;;;4067:15;;;;3869:270;;;3873:3;3723:422;;;;;:::o;4150:806::-;4199:5;4229:8;4219:80;;-1:-1:-1;4270:1:1;4284:5;;4219:80;4318:4;4308:76;;-1:-1:-1;4355:1:1;4369:5;;4308:76;4400:4;4418:1;4413:59;;;;4486:1;4481:130;;;;4393:218;;4413:59;4443:1;4434:10;;4457:5;;;4481:130;4518:3;4508:8;4505:17;4502:43;;;4525:18;;:::i;:::-;-1:-1:-1;;4581:1:1;4567:16;;4596:5;;4393:218;;4695:2;4685:8;4682:16;4676:3;4670:4;4667:13;4663:36;4657:2;4647:8;4644:16;4639:2;4633:4;4630:12;4626:35;4623:77;4620:159;;;-1:-1:-1;4732:19:1;;;4764:5;;4620:159;4811:34;4836:8;4830:4;4811:34;:::i;:::-;4881:6;4877:1;4873:6;4869:19;4860:7;4857:32;4854:58;;;4892:18;;:::i;:::-;4930:20;;4150:806;-1:-1:-1;;;4150:806:1:o;4961:140::-;5019:5;5048:47;5089:4;5079:8;5075:19;5069:4;5048:47;:::i;5106:168::-;5179:9;;;5210;;5227:15;;;5221:22;;5207:37;5197:71;;5248:18;;:::i;5688:356::-;5890:2;5872:21;;;5909:18;;;5902:30;5968:34;5963:2;5948:18;;5941:62;6035:2;6020:18;;5688:356::o;6404:251::-;6474:6;6527:2;6515:9;6506:7;6502:23;6498:32;6495:52;;;6543:1;6540;6533:12;6495:52;6575:9;6569:16;6594:31;6619:5;6594:31;:::i;7581:306::-;7669:6;7677;7685;7738:2;7726:9;7717:7;7713:23;7709:32;7706:52;;;7754:1;7751;7744:12;7706:52;7783:9;7777:16;7767:26;;7833:2;7822:9;7818:18;7812:25;7802:35;;7877:2;7866:9;7862:18;7856:25;7846:35;;7581:306;;;;;:::o;8171:277::-;8238:6;8291:2;8279:9;8270:7;8266:23;8262:32;8259:52;;;8307:1;8304;8297:12;8259:52;8339:9;8333:16;8392:5;8385:13;8378:21;8371:5;8368:32;8358:60;;8414:1;8411;8404:12;8453:217;8493:1;8519;8509:132;;8563:10;8558:3;8554:20;8551:1;8544:31;8598:4;8595:1;8588:15;8626:4;8623:1;8616:15;8509:132;-1:-1:-1;8655:9:1;;8453:217::o;12699:125::-;12764:9;;;12785:10;;;12782:36;;;12798:18;;:::i;13600:135::-;13639:3;13660:17;;;13657:43;;13680:18;;:::i;:::-;-1:-1:-1;13727:1:1;13716:13;;13600:135::o;13872:127::-;13933:10;13928:3;13924:20;13921:1;13914:31;13964:4;13961:1;13954:15;13988:4;13985:1;13978:15;14004:980;14266:4;14314:3;14303:9;14299:19;14345:6;14334:9;14327:25;14371:2;14409:6;14404:2;14393:9;14389:18;14382:34;14452:3;14447:2;14436:9;14432:18;14425:31;14476:6;14511;14505:13;14542:6;14534;14527:22;14580:3;14569:9;14565:19;14558:26;;14619:2;14611:6;14607:15;14593:29;;14640:1;14650:195;14664:6;14661:1;14658:13;14650:195;;;14729:13;;-1:-1:-1;;;;;14725:39:1;14713:52;;14820:15;;;;14785:12;;;;14761:1;14679:9;14650:195;;;-1:-1:-1;;;;;;;14901:32:1;;;;14896:2;14881:18;;14874:60;-1:-1:-1;;;14965:3:1;14950:19;14943:35;14862:3;14004:980;-1:-1:-1;;;14004:980:1:o;15704:128::-;15771:9;;;15792:11;;;15789:37;;;15806:18;;:::i

Swarm Source

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