ETH Price: $2,447.71 (-0.89%)

Token

Neural Ai (NEURAL)
 

Overview

Max Total Supply

10,000,000 NEURAL

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
89,272.787647208 NEURAL

Value
$0.00
0x2ba5fe6d284eda1afe304f2cc724184bbd2010ec
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:
NeuralAi

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-07
*/

// SPDX-License-Identifier: Unlicensed
/**
    Train, develop, and scale AI applications without the hassle and big price tag associated with maintaining your own hardware solutions.
    Website: https://goneural.ai/
    Twitter: https://twitter.com/GoNeuralAI
    Telegram: https://t.me/GoNeuralAi
**/
pragma solidity 0.8.24;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        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 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract NeuralAi is Context, IERC20, Ownable {
    using SafeMath for uint256;
    uint8 private constant _decimals = 9;
    string private constant _name = "Neural Ai";
    string private constant _symbol = "NEURAL";
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    uint256 private constant MAX = ~uint256(0);
    uint256 public constant _tTotal = 10_000_000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 20;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 20;

    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable private _marketingAddress;

    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxWalletSize = _tTotal * 2 / 100;
    uint256 public _swapTokensAtAmount = _tTotal / 1000;

    bool private launched = false;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;
        _marketingAddress = payable(msg.sender);
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromFee[address(_uniswapV2Router)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_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)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            require(launched, "TOKEN: This account cannot send tokens until trading is enabled");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            if(to == uniswapV2Pair) {
                require(_maxWalletSize < _tTotal, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function launch() public onlyOwner {
        launched = true;
    }

    function manualswap() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokens(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function setMaxWallet(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
        require(maxWalletSize >= _tTotal / 200, "Min 0.5% max wallet");
    }

    function setFees(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        require(redisFeeOnBuy+taxFeeOnBuy <=30 &&redisFeeOnSell+taxFeeOnSell <= 30, "Max 30%");
    }
}

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":"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":"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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokens","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"},{"stateMutability":"payable","type":"receive"}]

608060405262000018662386f26fc100005f1962000364565b62000025905f196200038e565b6008555f600a8190556014600b819055600c829055600d819055600e829055600f8190556010919091556011556012805461ffff60a01b1916600160a81b17905560646200007c662386f26fc100006002620003aa565b620000889190620003c4565b601355620000a06103e8662386f26fc10000620003c4565b6014556015805460ff19169055348015620000b9575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600854335f8181526003602090815260409182902093909355601280546001600160a01b0319908116909317905560068054737a250d5630b4cf539739df2c5dacb4c659f2488d931683179055805163c45a015560e01b815290519192839263c45a01559260048082019392918290030181865afa1580156200017f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a59190620003da565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002179190620003da565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000262573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002889190620003da565b600780546001600160a01b0319166001600160a01b039283161790555f80548216815260026020526040808220805460ff1990811660019081179092553084528284208054821683179055601254851684528284208054821683179055938516835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc100006040516200034191815260200190565b60405180910390a35062000409565b634e487b7160e01b5f52601260045260245ffd5b5f8262000375576200037562000350565b500690565b634e487b7160e01b5f52601160045260245ffd5b81810381811115620003a457620003a46200037a565b92915050565b8082028115828204841417620003a457620003a46200037a565b5f82620003d557620003d562000350565b500490565b5f60208284031215620003eb575f80fd5b81516001600160a01b038116811462000402575f80fd5b9392505050565b6116b180620004175f395ff3fe608060405260043610610134575f3560e01c8063715018a6116100a8578063af465a271161006d578063af465a271461035f578063c3c8cd8014610379578063c492f0461461038d578063dd62ed3e146103ac578063dd888005146103f0578063f2fde38b1461040f575f80fd5b8063715018a6146102cd5780638da5cb5b146102e15780638f9a55c0146102fd57806395d89b4114610312578063a9059cbb14610340575f80fd5b80632fd689e3116100f95780632fd689e314610209578063313ce5671461021e57806349bd5a5e146102395780635d0044ca146102705780636fcba3771461028f57806370a08231146102ae575f80fd5b806301339c211461013f57806306fdde0314610155578063095ea7b31461019857806318160ddd146101c757806323b872dd146101ea575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b5061015361042e565b005b348015610160575f80fd5b506040805180820190915260098152684e657572616c20416960b81b60208201525b60405161018f91906112e8565b60405180910390f35b3480156101a3575f80fd5b506101b76101b2366004611348565b61046f565b604051901515815260200161018f565b3480156101d2575f80fd5b50662386f26fc100005b60405190815260200161018f565b3480156101f5575f80fd5b506101b7610204366004611372565b610485565b348015610214575f80fd5b506101dc60145481565b348015610229575f80fd5b506040516009815260200161018f565b348015610244575f80fd5b50600754610258906001600160a01b031681565b6040516001600160a01b03909116815260200161018f565b34801561027b575f80fd5b5061015361028a3660046113b0565b6104ec565b34801561029a575f80fd5b506101536102a93660046113c7565b610574565b3480156102b9575f80fd5b506101dc6102c83660046113f6565b610611565b3480156102d8575f80fd5b50610153610632565b3480156102ec575f80fd5b505f546001600160a01b0316610258565b348015610308575f80fd5b506101dc60135481565b34801561031d575f80fd5b5060408051808201909152600681526513915554905360d21b6020820152610182565b34801561034b575f80fd5b506101b761035a366004611348565b6106a3565b34801561036a575f80fd5b506101dc662386f26fc1000081565b348015610384575f80fd5b506101536106af565b348015610398575f80fd5b506101536103a7366004611411565b6106e3565b3480156103b7575f80fd5b506101dc6103c6366004611494565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b3480156103fb575f80fd5b5061015361040a3660046113b0565b610770565b34801561041a575f80fd5b506101536104293660046113f6565b61079e565b5f546001600160a01b031633146104605760405162461bcd60e51b8152600401610457906114cb565b60405180910390fd5b6015805460ff19166001179055565b5f61047b338484610885565b5060015b92915050565b5f6104918484846108e5565b6104e284336104dd85604051806060016040528060288152602001611654602891396001600160a01b038a165f9081526005602090815260408083203384529091529020549190610bf2565b610885565b5060019392505050565b5f546001600160a01b031633146105155760405162461bcd60e51b8152600401610457906114cb565b601381905561052c60c8662386f26fc10000611514565b8110156105715760405162461bcd60e51b8152602060048201526013602482015272135a5b880c0b8d49481b585e081dd85b1b195d606a1b6044820152606401610457565b50565b5f546001600160a01b0316331461059d5760405162461bcd60e51b8152600401610457906114cb565b600a849055600c839055600b829055600d819055601e6105bd8386611533565b111580156105d55750601e6105d28285611533565b11155b61060b5760405162461bcd60e51b81526020600482015260076024820152664d61782033302560c81b6044820152606401610457565b50505050565b6001600160a01b0381165f9081526003602052604081205461047f90610c2a565b5f546001600160a01b0316331461065b5760405162461bcd60e51b8152600401610457906114cb565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f61047b3384846108e5565b6012546001600160a01b0316336001600160a01b0316146106ce575f80fd5b5f6106d830610611565b905061057181610cac565b5f546001600160a01b0316331461070c5760405162461bcd60e51b8152600401610457906114cb565b5f5b8281101561060b578160025f86868581811061072c5761072c611546565b905060200201602081019061074191906113f6565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161070e565b5f546001600160a01b031633146107995760405162461bcd60e51b8152600401610457906114cb565b601455565b5f546001600160a01b031633146107c75760405162461bcd60e51b8152600401610457906114cb565b6001600160a01b03811661082c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610457565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f9081526002602052604090205460ff1615801561092557506001600160a01b0382165f9081526002602052604090205460ff16155b15610aee5760155460ff166109a25760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610457565b6007546001600160a01b038381169116146109eb57601354816109c484610611565b6109ce9190611533565b106109eb5760405162461bcd60e51b81526004016104579061155a565b6007546001600160a01b0390811690831603610a2957662386f26fc1000060135410610a295760405162461bcd60e51b81526004016104579061155a565b5f610a3330610611565b60145490915081108015908190610a545750601254600160a01b900460ff16155b8015610a6e57506007546001600160a01b03868116911614155b8015610a835750601254600160a81b900460ff165b8015610aa757506001600160a01b0385165f9081526002602052604090205460ff16155b8015610acb57506001600160a01b0384165f9081526002602052604090205460ff16155b15610aeb57610ad982610cac565b478015610ae957610ae947610e1c565b505b50505b6001600160a01b0383165f9081526002602052604090205460019060ff1680610b2e57506001600160a01b0383165f9081526002602052604090205460ff165b80610b6057506007546001600160a01b03858116911614801590610b6057506007546001600160a01b03848116911614155b15610b6c57505f610be6565b6007546001600160a01b038581169116148015610b9757506006546001600160a01b03848116911614155b15610ba957600a54600e55600b54600f555b6007546001600160a01b038481169116148015610bd457506006546001600160a01b03858116911614155b15610be657600c54600e55600d54600f555b61060b84848484610e57565b5f8184841115610c155760405162461bcd60e51b815260040161045791906112e8565b505f610c21848661159d565b95945050505050565b5f600854821115610c905760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610457565b5f610c99610e85565b9050610ca58382610ea6565b9392505050565b6012805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610cf257610cf2611546565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610d49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6d91906115b0565b81600181518110610d8057610d80611546565b6001600160a01b039283166020918202929092010152600654610da69130911684610885565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790610dde9085905f908690309042906004016115cb565b5f604051808303815f87803b158015610df5575f80fd5b505af1158015610e07573d5f803e3d5ffd5b50506012805460ff60a01b1916905550505050565b6012546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610e53573d5f803e3d5ffd5b5050565b80610e6457610e64610ee7565b610e6f848484610f14565b8061060b5761060b601054600e55601154600f55565b5f805f610e90611005565b9092509050610e9f8282610ea6565b9250505090565b5f610ca583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611042565b600e54158015610ef75750600f54155b15610efe57565b600e8054601055600f80546011555f9182905555565b5f805f805f80610f238761106e565b6001600160a01b038f165f90815260036020526040902054959b50939950919750955093509150610f5490876110c3565b6001600160a01b03808b165f9081526003602052604080822093909355908a1681522054610f829086611104565b6001600160a01b0389165f90815260036020526040902055610fa381611162565b610fad84836111a8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ff291815260200190565b60405180910390a3505050505050505050565b6008545f908190662386f26fc1000061101e8282610ea6565b82101561103957505060085492662386f26fc1000092509050565b90939092509050565b5f81836110625760405162461bcd60e51b815260040161045791906112e8565b505f610c218486611514565b5f805f805f805f805f6110868a600e54600f546111cc565b9250925092505f611095610e85565b90505f805f6110a68e87878761121e565b919e509c509a509598509396509194505050505091939550919395565b5f610ca583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bf2565b5f806111108385611533565b905083811015610ca55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610457565b5f61116b610e85565b90505f611178838361126a565b305f908152600360205260409020549091506111949082611104565b305f90815260036020526040902055505050565b6008546111b590836110c3565b6008556009546111c59082611104565b6009555050565b5f8080806111e560646111df898961126a565b90610ea6565b90505f6111f760646111df8a8961126a565b90505f61120e826112088b866110c3565b906110c3565b9992985090965090945050505050565b5f80808061122c888661126a565b90505f611239888761126a565b90505f611246888861126a565b90505f6112578261120886866110c3565b939b939a50919850919650505050505050565b5f825f0361127957505f61047f565b5f611284838561163c565b9050826112918583611514565b14610ca55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610457565b5f602080835283518060208501525f5b81811015611314578581018301518582016040015282016112f8565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610571575f80fd5b5f8060408385031215611359575f80fd5b823561136481611334565b946020939093013593505050565b5f805f60608486031215611384575f80fd5b833561138f81611334565b9250602084013561139f81611334565b929592945050506040919091013590565b5f602082840312156113c0575f80fd5b5035919050565b5f805f80608085870312156113da575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215611406575f80fd5b8135610ca581611334565b5f805f60408486031215611423575f80fd5b833567ffffffffffffffff8082111561143a575f80fd5b818601915086601f83011261144d575f80fd5b81358181111561145b575f80fd5b8760208260051b850101111561146f575f80fd5b602092830195509350508401358015158114611489575f80fd5b809150509250925092565b5f80604083850312156114a5575f80fd5b82356114b081611334565b915060208301356114c081611334565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261152e57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561047f5761047f611500565b634e487b7160e01b5f52603260045260245ffd5b60208082526023908201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696040820152627a652160e81b606082015260800190565b8181038181111561047f5761047f611500565b5f602082840312156115c0575f80fd5b8151610ca581611334565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561161b5784516001600160a01b0316835293830193918301916001016115f6565b50506001600160a01b03969096166060850152505050608001529392505050565b808202811582820484141761047f5761047f61150056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d7236043b3c8e442c8611350bd8f501b15318a951e41c42d3353154035bf94e664736f6c63430008180033

Deployed Bytecode

0x608060405260043610610134575f3560e01c8063715018a6116100a8578063af465a271161006d578063af465a271461035f578063c3c8cd8014610379578063c492f0461461038d578063dd62ed3e146103ac578063dd888005146103f0578063f2fde38b1461040f575f80fd5b8063715018a6146102cd5780638da5cb5b146102e15780638f9a55c0146102fd57806395d89b4114610312578063a9059cbb14610340575f80fd5b80632fd689e3116100f95780632fd689e314610209578063313ce5671461021e57806349bd5a5e146102395780635d0044ca146102705780636fcba3771461028f57806370a08231146102ae575f80fd5b806301339c211461013f57806306fdde0314610155578063095ea7b31461019857806318160ddd146101c757806323b872dd146101ea575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b5061015361042e565b005b348015610160575f80fd5b506040805180820190915260098152684e657572616c20416960b81b60208201525b60405161018f91906112e8565b60405180910390f35b3480156101a3575f80fd5b506101b76101b2366004611348565b61046f565b604051901515815260200161018f565b3480156101d2575f80fd5b50662386f26fc100005b60405190815260200161018f565b3480156101f5575f80fd5b506101b7610204366004611372565b610485565b348015610214575f80fd5b506101dc60145481565b348015610229575f80fd5b506040516009815260200161018f565b348015610244575f80fd5b50600754610258906001600160a01b031681565b6040516001600160a01b03909116815260200161018f565b34801561027b575f80fd5b5061015361028a3660046113b0565b6104ec565b34801561029a575f80fd5b506101536102a93660046113c7565b610574565b3480156102b9575f80fd5b506101dc6102c83660046113f6565b610611565b3480156102d8575f80fd5b50610153610632565b3480156102ec575f80fd5b505f546001600160a01b0316610258565b348015610308575f80fd5b506101dc60135481565b34801561031d575f80fd5b5060408051808201909152600681526513915554905360d21b6020820152610182565b34801561034b575f80fd5b506101b761035a366004611348565b6106a3565b34801561036a575f80fd5b506101dc662386f26fc1000081565b348015610384575f80fd5b506101536106af565b348015610398575f80fd5b506101536103a7366004611411565b6106e3565b3480156103b7575f80fd5b506101dc6103c6366004611494565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b3480156103fb575f80fd5b5061015361040a3660046113b0565b610770565b34801561041a575f80fd5b506101536104293660046113f6565b61079e565b5f546001600160a01b031633146104605760405162461bcd60e51b8152600401610457906114cb565b60405180910390fd5b6015805460ff19166001179055565b5f61047b338484610885565b5060015b92915050565b5f6104918484846108e5565b6104e284336104dd85604051806060016040528060288152602001611654602891396001600160a01b038a165f9081526005602090815260408083203384529091529020549190610bf2565b610885565b5060019392505050565b5f546001600160a01b031633146105155760405162461bcd60e51b8152600401610457906114cb565b601381905561052c60c8662386f26fc10000611514565b8110156105715760405162461bcd60e51b8152602060048201526013602482015272135a5b880c0b8d49481b585e081dd85b1b195d606a1b6044820152606401610457565b50565b5f546001600160a01b0316331461059d5760405162461bcd60e51b8152600401610457906114cb565b600a849055600c839055600b829055600d819055601e6105bd8386611533565b111580156105d55750601e6105d28285611533565b11155b61060b5760405162461bcd60e51b81526020600482015260076024820152664d61782033302560c81b6044820152606401610457565b50505050565b6001600160a01b0381165f9081526003602052604081205461047f90610c2a565b5f546001600160a01b0316331461065b5760405162461bcd60e51b8152600401610457906114cb565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f61047b3384846108e5565b6012546001600160a01b0316336001600160a01b0316146106ce575f80fd5b5f6106d830610611565b905061057181610cac565b5f546001600160a01b0316331461070c5760405162461bcd60e51b8152600401610457906114cb565b5f5b8281101561060b578160025f86868581811061072c5761072c611546565b905060200201602081019061074191906113f6565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161070e565b5f546001600160a01b031633146107995760405162461bcd60e51b8152600401610457906114cb565b601455565b5f546001600160a01b031633146107c75760405162461bcd60e51b8152600401610457906114cb565b6001600160a01b03811661082c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610457565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f9081526002602052604090205460ff1615801561092557506001600160a01b0382165f9081526002602052604090205460ff16155b15610aee5760155460ff166109a25760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610457565b6007546001600160a01b038381169116146109eb57601354816109c484610611565b6109ce9190611533565b106109eb5760405162461bcd60e51b81526004016104579061155a565b6007546001600160a01b0390811690831603610a2957662386f26fc1000060135410610a295760405162461bcd60e51b81526004016104579061155a565b5f610a3330610611565b60145490915081108015908190610a545750601254600160a01b900460ff16155b8015610a6e57506007546001600160a01b03868116911614155b8015610a835750601254600160a81b900460ff165b8015610aa757506001600160a01b0385165f9081526002602052604090205460ff16155b8015610acb57506001600160a01b0384165f9081526002602052604090205460ff16155b15610aeb57610ad982610cac565b478015610ae957610ae947610e1c565b505b50505b6001600160a01b0383165f9081526002602052604090205460019060ff1680610b2e57506001600160a01b0383165f9081526002602052604090205460ff165b80610b6057506007546001600160a01b03858116911614801590610b6057506007546001600160a01b03848116911614155b15610b6c57505f610be6565b6007546001600160a01b038581169116148015610b9757506006546001600160a01b03848116911614155b15610ba957600a54600e55600b54600f555b6007546001600160a01b038481169116148015610bd457506006546001600160a01b03858116911614155b15610be657600c54600e55600d54600f555b61060b84848484610e57565b5f8184841115610c155760405162461bcd60e51b815260040161045791906112e8565b505f610c21848661159d565b95945050505050565b5f600854821115610c905760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610457565b5f610c99610e85565b9050610ca58382610ea6565b9392505050565b6012805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610cf257610cf2611546565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610d49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6d91906115b0565b81600181518110610d8057610d80611546565b6001600160a01b039283166020918202929092010152600654610da69130911684610885565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790610dde9085905f908690309042906004016115cb565b5f604051808303815f87803b158015610df5575f80fd5b505af1158015610e07573d5f803e3d5ffd5b50506012805460ff60a01b1916905550505050565b6012546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610e53573d5f803e3d5ffd5b5050565b80610e6457610e64610ee7565b610e6f848484610f14565b8061060b5761060b601054600e55601154600f55565b5f805f610e90611005565b9092509050610e9f8282610ea6565b9250505090565b5f610ca583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611042565b600e54158015610ef75750600f54155b15610efe57565b600e8054601055600f80546011555f9182905555565b5f805f805f80610f238761106e565b6001600160a01b038f165f90815260036020526040902054959b50939950919750955093509150610f5490876110c3565b6001600160a01b03808b165f9081526003602052604080822093909355908a1681522054610f829086611104565b6001600160a01b0389165f90815260036020526040902055610fa381611162565b610fad84836111a8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ff291815260200190565b60405180910390a3505050505050505050565b6008545f908190662386f26fc1000061101e8282610ea6565b82101561103957505060085492662386f26fc1000092509050565b90939092509050565b5f81836110625760405162461bcd60e51b815260040161045791906112e8565b505f610c218486611514565b5f805f805f805f805f6110868a600e54600f546111cc565b9250925092505f611095610e85565b90505f805f6110a68e87878761121e565b919e509c509a509598509396509194505050505091939550919395565b5f610ca583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bf2565b5f806111108385611533565b905083811015610ca55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610457565b5f61116b610e85565b90505f611178838361126a565b305f908152600360205260409020549091506111949082611104565b305f90815260036020526040902055505050565b6008546111b590836110c3565b6008556009546111c59082611104565b6009555050565b5f8080806111e560646111df898961126a565b90610ea6565b90505f6111f760646111df8a8961126a565b90505f61120e826112088b866110c3565b906110c3565b9992985090965090945050505050565b5f80808061122c888661126a565b90505f611239888761126a565b90505f611246888861126a565b90505f6112578261120886866110c3565b939b939a50919850919650505050505050565b5f825f0361127957505f61047f565b5f611284838561163c565b9050826112918583611514565b14610ca55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610457565b5f602080835283518060208501525f5b81811015611314578581018301518582016040015282016112f8565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610571575f80fd5b5f8060408385031215611359575f80fd5b823561136481611334565b946020939093013593505050565b5f805f60608486031215611384575f80fd5b833561138f81611334565b9250602084013561139f81611334565b929592945050506040919091013590565b5f602082840312156113c0575f80fd5b5035919050565b5f805f80608085870312156113da575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215611406575f80fd5b8135610ca581611334565b5f805f60408486031215611423575f80fd5b833567ffffffffffffffff8082111561143a575f80fd5b818601915086601f83011261144d575f80fd5b81358181111561145b575f80fd5b8760208260051b850101111561146f575f80fd5b602092830195509350508401358015158114611489575f80fd5b809150509250925092565b5f80604083850312156114a5575f80fd5b82356114b081611334565b915060208301356114c081611334565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261152e57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561047f5761047f611500565b634e487b7160e01b5f52603260045260245ffd5b60208082526023908201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696040820152627a652160e81b606082015260800190565b8181038181111561047f5761047f611500565b5f602082840312156115c0575f80fd5b8151610ca581611334565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561161b5784516001600160a01b0316835293830193918301916001016115f6565b50506001600160a01b03969096166060850152505050608001529392505050565b808202811582820484141761047f5761047f61150056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d7236043b3c8e442c8611350bd8f501b15318a951e41c42d3353154035bf94e664736f6c63430008180033

Deployed Bytecode Sourcemap

4338:11820:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11470:69;;;;;;;;;;;;;:::i;:::-;;6517:83;;;;;;;;;;-1:-1:-1;6587:5:0;;;;;;;;;;;;-1:-1:-1;;;6587:5:0;;;;6517:83;;;;;;;:::i;:::-;;;;;;;;7442:193;;;;;;;;;;-1:-1:-1;7442:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7442:193:0;1023:187:1;6794:95:0;;;;;;;;;;-1:-1:-1;4965:18:0;6794:95;;;1361:25:1;;;1349:2;1334:18;6794:95:0;1215:177:1;7643:446:0;;;;;;;;;;-1:-1:-1;7643:446:0;;;;;:::i;:::-;;:::i;5625:51::-;;;;;;;;;;;;;;;;6703:83;;;;;;;;;;-1:-1:-1;6703:83:0;;4459:1;2000:36:1;;1988:2;1973:18;6703:83:0;1858:184:1;4847:28:0;;;;;;;;;;-1:-1:-1;4847:28:0;;;;-1:-1:-1;;;;;4847:28:0;;;;;;-1:-1:-1;;;;;2211:32:1;;;2193:51;;2181:2;2166:18;4847:28:0;2047:203:1;15574:184:0;;;;;;;;;;-1:-1:-1;15574:184:0;;;;;:::i;:::-;;:::i;15766:389::-;;;;;;;;;;-1:-1:-1;15766:389:0;;;;;:::i;:::-;;:::i;6897:138::-;;;;;;;;;;-1:-1:-1;6897:138:0;;;;;:::i;:::-;;:::i;1825:148::-;;;;;;;;;;;;;:::i;1611:79::-;;;;;;;;;;-1:-1:-1;1649:7:0;1676:6;-1:-1:-1;;;;;1676:6:0;1611:79;;5569:49;;;;;;;;;;;;;;;;6608:87;;;;;;;;;;-1:-1:-1;6680:7:0;;;;;;;;;;;;-1:-1:-1;;;6680:7:0;;;;6608:87;;7043:199;;;;;;;;;;-1:-1:-1;7043:199:0;;;;;:::i;:::-;;:::i;4931:52::-;;;;;;;;;;;;4965:18;4931:52;;11547:197;;;;;;;;;;;;;:::i;15332:234::-;;;;;;;;;;-1:-1:-1;15332:234:0;;;;;:::i;:::-;;:::i;7250:184::-;;;;;;;;;;-1:-1:-1;7250:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7399:18:0;;;7367:7;7399:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7250:184;15194:130;;;;;;;;;;-1:-1:-1;15194:130:0;;;;;:::i;:::-;;:::i;1981:244::-;;;;;;;;;;-1:-1:-1;1981:244:0;;;;;:::i;:::-;;:::i;11470:69::-;1738:6;;-1:-1:-1;;;;;1738:6:0;450:10;1738:22;1730:67;;;;-1:-1:-1;;;1730:67:0;;;;;;;:::i;:::-;;;;;;;;;11516:8:::1;:15:::0;;-1:-1:-1;;11516:15:0::1;11527:4;11516:15;::::0;;11470:69::o;7442:193::-;7544:4;7566:39;450:10;7589:7;7598:6;7566:8;:39::i;:::-;-1:-1:-1;7623:4:0;7442:193;;;;;:::o;7643:446::-;7775:4;7792:36;7802:6;7810:9;7821:6;7792:9;:36::i;:::-;7839:220;7862:6;450:10;7910:138;7966:6;7910:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7910:19:0;;;;;;:11;:19;;;;;;;;450:10;7910:33;;;;;;;;;;:37;:138::i;:::-;7839:8;:220::i;:::-;-1:-1:-1;8077:4:0;7643:446;;;;;:::o;15574:184::-;1738:6;;-1:-1:-1;;;;;1738:6:0;450:10;1738:22;1730:67;;;;-1:-1:-1;;;1730:67:0;;;;;;;:::i;:::-;15647:14:::1;:30:::0;;;15713:13:::1;15723:3;4965:18;15713:13;:::i;:::-;15696;:30;;15688:62;;;::::0;-1:-1:-1;;;15688:62:0;;5179:2:1;15688:62:0::1;::::0;::::1;5161:21:1::0;5218:2;5198:18;;;5191:30;-1:-1:-1;;;5237:18:1;;;5230:49;5296:18;;15688:62:0::1;4977:343:1::0;15688:62:0::1;15574:184:::0;:::o;15766:389::-;1738:6;;-1:-1:-1;;;;;1738:6:0;450:10;1738:22;1730:67;;;;-1:-1:-1;;;1730:67:0;;;;;;;:::i;:::-;15901:14:::1;:30:::0;;;15942:15:::1;:32:::0;;;15985:12:::1;:26:::0;;;16022:13:::1;:28:::0;;;16097:2:::1;16069:25;16000:11:::0;15918:13;16069:25:::1;:::i;:::-;:30;;:66;;;;-1:-1:-1::0;16133:2:0::1;16102:27;16117:12:::0;16102:14;:27:::1;:::i;:::-;:33;;16069:66;16061:86;;;::::0;-1:-1:-1;;;16061:86:0;;5657:2:1;16061:86:0::1;::::0;::::1;5639:21:1::0;5696:1;5676:18;;;5669:29;-1:-1:-1;;;5714:18:1;;;5707:37;5761:18;;16061:86:0::1;5455:330:1::0;16061:86:0::1;15766:389:::0;;;;:::o;6897:138::-;-1:-1:-1;;;;;7010:16:0;;6963:7;7010:16;;;:7;:16;;;;;;6990:37;;:19;:37::i;1825:148::-;1738:6;;-1:-1:-1;;;;;1738:6:0;450:10;1738:22;1730:67;;;;-1:-1:-1;;;1730:67:0;;;;;;;:::i;:::-;1932:1:::1;1916:6:::0;;1895:40:::1;::::0;-1:-1:-1;;;;;1916:6:0;;::::1;::::0;1895:40:::1;::::0;1932:1;;1895:40:::1;1963:1;1946:19:::0;;-1:-1:-1;;;;;;1946:19:0::1;::::0;;1825:148::o;7043:199::-;7148:4;7170:42;450:10;7194:9;7205:6;7170:9;:42::i;11547:197::-;11613:17;;-1:-1:-1;;;;;11613:17:0;450:10;-1:-1:-1;;;;;11597:33:0;;11589:42;;;;;;11642:23;11668:24;11686:4;11668:9;:24::i;:::-;11642:50;;11703:33;11720:15;11703:16;:33::i;15332:234::-;1738:6;;-1:-1:-1;;;;;1738:6:0;450:10;1738:22;1730:67;;;;-1:-1:-1;;;1730:67:0;;;;;;;:::i;:::-;15449:9:::1;15445:114;15464:19:::0;;::::1;15445:114;;;15539:8;15505:18;:31;15524:8;;15533:1;15524:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15505:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15505:31:0;:42;;-1:-1:-1;;15505:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;15485:3:0::1;15445:114;;15194:130:::0;1738:6;;-1:-1:-1;;;;;1738:6:0;450:10;1738:22;1730:67;;;;-1:-1:-1;;;1730:67:0;;;;;;;:::i;:::-;15276:19:::1;:40:::0;15194:130::o;1981:244::-;1738:6;;-1:-1:-1;;;;;1738:6:0;450:10;1738:22;1730:67;;;;-1:-1:-1;;;1730:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2070:22:0;::::1;2062:73;;;::::0;-1:-1:-1;;;2062:73:0;;6124:2:1;2062:73:0::1;::::0;::::1;6106:21:1::0;6163:2;6143:18;;;6136:30;6202:34;6182:18;;;6175:62;-1:-1:-1;;;6253:18:1;;;6246:36;6299:19;;2062:73:0::1;5922:402:1::0;2062:73:0::1;2172:6;::::0;;2151:38:::1;::::0;-1:-1:-1;;;;;2151:38:0;;::::1;::::0;2172:6;::::1;::::0;2151:38:::1;::::0;::::1;2200:6;:17:::0;;-1:-1:-1;;;;;;2200:17:0::1;-1:-1:-1::0;;;;;2200:17:0;;;::::1;::::0;;;::::1;::::0;;1981:244::o;8780:211::-;-1:-1:-1;;;;;8899:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8951:32;;1361:25:1;;;8951:32:0;;1334:18:1;8951:32:0;;;;;;;8780:211;;;:::o;8999:1865::-;-1:-1:-1;;;;;9118:24:0;;;;;;:18;:24;;;;;;;;9117:25;:52;;;;-1:-1:-1;;;;;;9147:22:0;;;;;;:18;:22;;;;;;;;9146:23;9117:52;9113:1025;;;9194:8;;;;9186:84;;;;-1:-1:-1;;;9186:84:0;;6531:2:1;9186:84:0;;;6513:21:1;6570:2;6550:18;;;6543:30;6609:34;6589:18;;;6582:62;6680:33;6660:18;;;6653:61;6731:19;;9186:84:0;6329:427:1;9186:84:0;9296:13;;-1:-1:-1;;;;;9290:19:0;;;9296:13;;9290:19;9287:146;;9363:14;;9354:6;9338:13;9348:2;9338:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9330:87;;;;-1:-1:-1;;;9330:87:0;;;;;;;:::i;:::-;9458:13;;-1:-1:-1;;;;;9458:13:0;;;9452:19;;;;9449:131;;4965:18;9500:14;;:24;9492:72;;;;-1:-1:-1;;;9492:72:0;;;;;;;:::i;:::-;9596:28;9627:24;9645:4;9627:9;:24::i;:::-;9705:19;;9596:55;;-1:-1:-1;9681:43:0;;;;;;;9745:18;;-1:-1:-1;9757:6:0;;-1:-1:-1;;;9757:6:0;;;;9756:7;9745:18;:43;;;;-1:-1:-1;9775:13:0;;-1:-1:-1;;;;;9767:21:0;;;9775:13;;9767:21;;9745:43;:58;;;;-1:-1:-1;9792:11:0;;-1:-1:-1;;;9792:11:0;;;;9745:58;:87;;;;-1:-1:-1;;;;;;9808:24:0;;;;;;:18;:24;;;;;;;;9807:25;9745:87;:114;;;;-1:-1:-1;;;;;;9837:22:0;;;;;;:18;:22;;;;;;;;9836:23;9745:114;9741:386;;;9880:38;9897:20;9880:16;:38::i;:::-;9966:21;10010:22;;10006:106;;10057:35;10070:21;10057:12;:35::i;:::-;9861:266;9741:386;9171:967;;9113:1025;-1:-1:-1;;;;;10214:24:0;;10150:12;10214:24;;;:18;:24;;;;;;10165:4;;10214:24;;;:50;;-1:-1:-1;;;;;;10242:22:0;;;;;;:18;:22;;;;;;;;10214:50;10213:102;;;-1:-1:-1;10278:13:0;;-1:-1:-1;;;;;10270:21:0;;;10278:13;;10270:21;;;;:44;;-1:-1:-1;10301:13:0;;-1:-1:-1;;;;;10295:19:0;;;10301:13;;10295:19;;10270:44;10209:594;;;-1:-1:-1;10342:5:0;10209:594;;;10425:13;;-1:-1:-1;;;;;10417:21:0;;;10425:13;;10417:21;:55;;;;-1:-1:-1;10456:15:0;;-1:-1:-1;;;;;10442:30:0;;;10456:15;;10442:30;;10417:55;10414:162;;;10505:14;;10493:9;:26;10548:12;;10538:7;:22;10414:162;10635:13;;-1:-1:-1;;;;;10629:19:0;;;10635:13;;10629:19;:55;;;;-1:-1:-1;10668:15:0;;-1:-1:-1;;;;;10652:32:0;;;10668:15;;10652:32;;10629:55;10625:165;;;10717:15;;10705:9;:27;10761:13;;10751:7;:23;10625:165;10815:41;10830:4;10836:2;10840:6;10848:7;10815:14;:41::i;2589:224::-;2709:7;2745:12;2737:6;;;;2729:29;;;;-1:-1:-1;;;2729:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2769:9:0;2781:5;2785:1;2781;:5;:::i;:::-;2769:17;2589:224;-1:-1:-1;;;;;2589:224:0:o;8097:323::-;8192:7;8250;;8239;:18;;8217:110;;;;-1:-1:-1;;;8217:110:0;;7500:2:1;8217:110:0;;;7482:21:1;7539:2;7519:18;;;7512:30;7578:34;7558:18;;;7551:62;-1:-1:-1;;;7629:18:1;;;7622:40;7679:19;;8217:110:0;7298:406:1;8217:110:0;8338:19;8360:10;:8;:10::i;:::-;8338:32;-1:-1:-1;8388:24:0;:7;8338:32;8388:11;:24::i;:::-;8381:31;8097:323;-1:-1:-1;;;8097:323:0:o;10872:483::-;5755:6;:13;;-1:-1:-1;;;;5755:13:0;-1:-1:-1;;;5755:13:0;;;10974:16:::1;::::0;;10988:1:::1;10974:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10974:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10974:16:0::1;10950:40;;11019:4;11001;11006:1;11001:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11001:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11045:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11045:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11001:7;;11045:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11035:4;11040:1;11035:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11035:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11110:15:::1;::::0;11078:62:::1;::::0;11095:4:::1;::::0;11110:15:::1;11128:11:::0;11078:8:::1;:62::i;:::-;11151:15;::::0;:196:::1;::::0;-1:-1:-1;;;11151:196:0;;-1:-1:-1;;;;;11151:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11232:11;;11151:15:::1;::::0;11274:4;;11301::::1;::::0;11321:15:::1;::::0;11151:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5791:6:0;:14;;-1:-1:-1;;;;5791:14:0;;;-1:-1:-1;;;;10872:483:0:o;11363:99::-;11420:17;;:34;;-1:-1:-1;;;;;11420:17:0;;;;:34;;;;;11447:6;;11420:17;:34;:17;:34;11447:6;11420:17;:34;;;;;;;;;;;;;;;;;;;;;11363:99;:::o;11752:282::-;11908:7;11903:28;;11917:14;:12;:14::i;:::-;11942:44;11960:6;11968:9;11979:6;11942:17;:44::i;:::-;12002:7;11997:29;;12011:15;8711:17;;8699:9;:29;8749:15;;8739:7;:25;8655:117;14713:164;14755:7;14776:15;14793;14812:19;:17;:19::i;:::-;14775:56;;-1:-1:-1;14775:56:0;-1:-1:-1;14849:20:0;14775:56;;14849:11;:20::i;:::-;14842:27;;;;14713:164;:::o;3075:132::-;3133:7;3160:39;3164:1;3167;3160:39;;;;;;;;;;;;;;;;;:3;:39::i;8428:219::-;8475:9;;:14;:30;;;;-1:-1:-1;8493:7:0;;:12;8475:30;8471:43;;;8428:219::o;8471:43::-;8546:9;;;8526:17;:29;8584:7;;;8566:15;:25;-1:-1:-1;8604:13:0;;;;8628:11;8428:219::o;12042:610::-;12189:15;12219:23;12257:12;12284:23;12322:12;12349:13;12376:19;12387:7;12376:10;:19::i;:::-;-1:-1:-1;;;;;12424:15:0;;;;;;:7;:15;;;;;;12174:221;;-1:-1:-1;12174:221:0;;-1:-1:-1;12174:221:0;;-1:-1:-1;12174:221:0;-1:-1:-1;12174:221:0;-1:-1:-1;12174:221:0;-1:-1:-1;12424:28:0;;12174:221;12424:19;:28::i;:::-;-1:-1:-1;;;;;12406:15:0;;;;;;;:7;:15;;;;;;:46;;;;12484:18;;;;;;;:39;;12507:15;12484:22;:39::i;:::-;-1:-1:-1;;;;;12463:18:0;;;;;;:7;:18;;;;;:60;12534:16;12544:5;12534:9;:16::i;:::-;12561:23;12573:4;12579;12561:11;:23::i;:::-;12617:9;-1:-1:-1;;;;;12600:44:0;12609:6;-1:-1:-1;;;;;12600:44:0;;12628:15;12600:44;;;;1361:25:1;;1349:2;1334:18;;1215:177;12600:44:0;;;;;;;;12163:489;;;;;;12042:610;;;:::o;14885:257::-;14983:7;;14936;;;;4965:18;15051:20;14983:7;4965:18;15051:11;:20::i;:::-;15041:7;:30;15037:61;;;-1:-1:-1;;15081:7:0;;;4965:18;;-1:-1:-1;14885:257:0;-1:-1:-1;14885:257:0:o;15037:61::-;15117:7;;15126;;-1:-1:-1;14885:257:0;-1:-1:-1;14885:257:0:o;3215:223::-;3335:7;3370:12;3363:5;3355:28;;;;-1:-1:-1;;;3355:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3394:9:0;3406:5;3410:1;3406;:5;:::i;13071:615::-;13171:7;13193;13215;13237;13259;13281;13317:23;13342:12;13356:13;13386:40;13398:7;13407:9;;13418:7;;13386:11;:40::i;:::-;13316:110;;;;;;13437:19;13459:10;:8;:10::i;:::-;13437:32;;13481:15;13498:23;13523:12;13552:46;13564:7;13573:4;13579:5;13586:11;13552;:46::i;:::-;13480:118;;-1:-1:-1;13480:118:0;-1:-1:-1;13480:118:0;-1:-1:-1;13649:15:0;;-1:-1:-1;13666:4:0;;-1:-1:-1;13672:5:0;;-1:-1:-1;;;;;13071:615:0;;;;;;;:::o;2445:136::-;2503:7;2530:43;2534:1;2537;2530:43;;;;;;;;;;;;;;;;;:3;:43::i;2258:179::-;2316:7;;2348:5;2352:1;2348;:5;:::i;:::-;2336:17;;2377:1;2372;:6;;2364:46;;;;-1:-1:-1;;;2364:46:0;;9284:2:1;2364:46:0;;;9266:21:1;9323:2;9303:18;;;9296:30;9362:29;9342:18;;;9335:57;9409:18;;2364:46:0;9082:351:1;12660:211:0;12713:19;12735:10;:8;:10::i;:::-;12713:32;-1:-1:-1;12756:13:0;12772:22;:5;12713:32;12772:9;:22::i;:::-;12846:4;12830:22;;;;:7;:22;;;;;;12756:38;;-1:-1:-1;12830:33:0;;12756:38;12830:26;:33::i;:::-;12821:4;12805:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12660:211:0:o;12879:147::-;12957:7;;:17;;12969:4;12957:11;:17::i;:::-;12947:7;:27;12998:10;;:20;;13013:4;12998:14;:20::i;:::-;12985:10;:33;-1:-1:-1;;12879:147:0:o;13694:469::-;13863:7;;;;13957:30;13983:3;13957:21;:7;13969:8;13957:11;:21::i;:::-;:25;;:30::i;:::-;13942:45;-1:-1:-1;13998:13:0;14014:28;14038:3;14014:19;:7;14026:6;14014:11;:19::i;:28::-;13998:44;-1:-1:-1;14053:23:0;14079:28;13998:44;14079:17;:7;14091:4;14079:11;:17::i;:::-;:21;;:28::i;:::-;14053:54;14143:4;;-1:-1:-1;14149:5:0;;-1:-1:-1;13694:469:0;;-1:-1:-1;;;;;13694:469:0:o;14171:534::-;14365:7;;;;14462:24;:7;14474:11;14462;:24::i;:::-;14444:42;-1:-1:-1;14497:12:0;14512:21;:4;14521:11;14512:8;:21::i;:::-;14497:36;-1:-1:-1;14544:13:0;14560:22;:5;14570:11;14560:9;:22::i;:::-;14544:38;-1:-1:-1;14593:23:0;14619:28;14544:38;14619:17;:7;14631:4;14619:11;:17::i;:28::-;14666:7;;;;-1:-1:-1;14692:4:0;;-1:-1:-1;14171:534:0;;-1:-1:-1;;;;;;;14171:534:0:o;2821:246::-;2879:7;2903:1;2908;2903:6;2899:47;;-1:-1:-1;2933:1:0;2926:8;;2899:47;2956:9;2968:5;2972:1;2968;:5;:::i;:::-;2956:17;-1:-1:-1;3001:1:0;2992:5;2996:1;2956:17;2992:5;:::i;:::-;:10;2984:56;;;;-1:-1:-1;;;2984:56:0;;9813:2:1;2984:56:0;;;9795:21:1;9852:2;9832:18;;;9825:30;9891:34;9871:18;;;9864:62;-1:-1:-1;;;9942:18:1;;;9935:31;9983:19;;2984:56:0;9611:397:1;14:548;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;2255:180::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;-1:-1:-1;2406:23:1;;2255:180;-1:-1:-1;2255:180:1:o;2440:385::-;2526:6;2534;2542;2550;2603:3;2591:9;2582:7;2578:23;2574:33;2571:53;;;2620:1;2617;2610:12;2571:53;-1:-1:-1;;2643:23:1;;;2713:2;2698:18;;2685:32;;-1:-1:-1;2764:2:1;2749:18;;2736:32;;2815:2;2800:18;2787:32;;-1:-1:-1;2440:385:1;-1:-1:-1;2440:385:1:o;2830:247::-;2889:6;2942:2;2930:9;2921:7;2917:23;2913:32;2910:52;;;2958:1;2955;2948:12;2910:52;2997:9;2984:23;3016:31;3041:5;3016:31;:::i;3082:782::-;3174:6;3182;3190;3243:2;3231:9;3222:7;3218:23;3214:32;3211:52;;;3259:1;3256;3249:12;3211:52;3299:9;3286:23;3328:18;3369:2;3361:6;3358:14;3355:34;;;3385:1;3382;3375:12;3355:34;3423:6;3412:9;3408:22;3398:32;;3468:7;3461:4;3457:2;3453:13;3449:27;3439:55;;3490:1;3487;3480:12;3439:55;3530:2;3517:16;3556:2;3548:6;3545:14;3542:34;;;3572:1;3569;3562:12;3542:34;3627:7;3620:4;3610:6;3607:1;3603:14;3599:2;3595:23;3591:34;3588:47;3585:67;;;3648:1;3645;3638:12;3585:67;3679:4;3671:13;;;;-1:-1:-1;3703:6:1;-1:-1:-1;;3744:20:1;;3731:34;3801:13;;3794:21;3784:32;;3774:60;;3830:1;3827;3820:12;3774:60;3853:5;3843:15;;;3082:782;;;;;:::o;3869:388::-;3937:6;3945;3998:2;3986:9;3977:7;3973:23;3969:32;3966:52;;;4014:1;4011;4004:12;3966:52;4053:9;4040:23;4072:31;4097:5;4072:31;:::i;:::-;4122:5;-1:-1:-1;4179:2:1;4164:18;;4151:32;4192:33;4151:32;4192:33;:::i;:::-;4244:7;4234:17;;;3869:388;;;;;:::o;4262:356::-;4464:2;4446:21;;;4483:18;;;4476:30;4542:34;4537:2;4522:18;;4515:62;4609:2;4594:18;;4262:356::o;4623:127::-;4684:10;4679:3;4675:20;4672:1;4665:31;4715:4;4712:1;4705:15;4739:4;4736:1;4729:15;4755:217;4795:1;4821;4811:132;;4865:10;4860:3;4856:20;4853:1;4846:31;4900:4;4897:1;4890:15;4928:4;4925:1;4918:15;4811:132;-1:-1:-1;4957:9:1;;4755:217::o;5325:125::-;5390:9;;;5411:10;;;5408:36;;;5424:18;;:::i;5790:127::-;5851:10;5846:3;5842:20;5839:1;5832:31;5882:4;5879:1;5872:15;5906:4;5903:1;5896:15;6761:399;6963:2;6945:21;;;7002:2;6982:18;;;6975:30;7041:34;7036:2;7021:18;;7014:62;-1:-1:-1;;;7107:2:1;7092:18;;7085:33;7150:3;7135:19;;6761:399::o;7165:128::-;7232:9;;;7253:11;;;7250:37;;;7267:18;;:::i;7841:251::-;7911:6;7964:2;7952:9;7943:7;7939:23;7935:32;7932:52;;;7980:1;7977;7970:12;7932:52;8012:9;8006:16;8031:31;8056:5;8031:31;:::i;8097:980::-;8359:4;8407:3;8396:9;8392:19;8438:6;8427:9;8420:25;8464:2;8502:6;8497:2;8486:9;8482:18;8475:34;8545:3;8540:2;8529:9;8525:18;8518:31;8569:6;8604;8598:13;8635:6;8627;8620:22;8673:3;8662:9;8658:19;8651:26;;8712:2;8704:6;8700:15;8686:29;;8733:1;8743:195;8757:6;8754:1;8751:13;8743:195;;;8822:13;;-1:-1:-1;;;;;8818:39:1;8806:52;;8913:15;;;;8878:12;;;;8854:1;8772:9;8743:195;;;-1:-1:-1;;;;;;;8994:32:1;;;;8989:2;8974:18;;8967:60;-1:-1:-1;;;9058:3:1;9043:19;9036:35;8955:3;8097:980;-1:-1:-1;;;8097:980:1:o;9438:168::-;9511:9;;;9542;;9559:15;;;9553:22;;9539:37;9529:71;;9580:18;;:::i

Swarm Source

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