ETH Price: $2,392.16 (-1.52%)

Token

Eosphorus AI (ERUS)
 

Overview

Max Total Supply

1,000,000,000 ERUS

Holders

74

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,809,879.549616533 ERUS

Value
$0.00
0xd4ab1f5e9b75da735f152000e727f7a729c5ef68
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:
ERUS

Compiler Version
v0.8.21+commit.d9974bed

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-25
*/

/**

Website: https://eosphorusai.xyz
App: https://app.eosphorusai.xyz
Twitter: https://twitter.com/eosphorus_ai
Telegram: https://t.me/eosphorus_ai
Docs:  https://docs.eosphorusai.xyz

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.18;

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

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

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

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

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

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

interface IRouter {
    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
        );

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract ERUS is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Eosphorus AI";
    string private constant _symbol = "ERUS";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1_000_000_000 * (10**_decimals);
    uint256 private _maxTransferAmount = 20_000_000 * (10**_decimals);
    uint256 private _maxWalletSize = 20_000_000 * (10**_decimals);
    uint256 private _swapLimitSize = 10_000_000 * (10**_decimals);
    uint256 private _minSwapSize = 711 * (10**_decimals);
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _exemptFromErusSwap;
    IRouter router;
    address public pair;
    bool private _tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 2;
    uint256 private utilityFee = 0;
    uint256 private buyFee = 2;
    uint256 private sellFee = 2;
    uint256 private transferFee = 0;
    uint256 private denominator = 100;
    bool private _swapActive = true;
    bool private _swapping;
    modifier lockTheSwap() {
        _swapping = true;
        _;
        _swapping = false;
    }

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant _erusdev =
        0x5bBe5C35EFF6a4B3ce80bE925c2Eb9e79543C214;
    address internal constant _erusmkt =
        0x5bBe5C35EFF6a4B3ce80bE925c2Eb9e79543C214;
    address private lpWallet = msg.sender;

    constructor() Ownable() {
        _exemptFromErusSwap[address(this)] = true;
        _exemptFromErusSwap[lpWallet] = true;
        _exemptFromErusSwap[_erusmkt] = true;
        _exemptFromErusSwap[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

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

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));
    }

    function preTxCheck(
        address sender,
        address recipient,
        uint256 amount
    ) internal pure {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            amount > uint256(0),
            "Transfer amount must be greater than zero"
        );
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        preTxCheck(sender, recipient, amount);
        _isTrdOpen(sender, recipient);
        checkMaxWallet(sender, recipient, amount);
        checkTxLimit(sender, recipient, amount);
        swapBack(sender, recipient, amount);
        (uint256 amountSent, uint256 amountReceived) = takeFees(
            sender,
            recipient,
            amount
        );
        _balances[sender] = _balances[sender].sub(amountSent);
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function reduceFee(uint256 _fee) external onlyOwner {
        marketingFee = _fee;
        buyFee = _fee;
        sellFee = _fee;

        require(
            buyFee <= 10 && sellFee <= 10,
            "buyFee and sellFee cannot be more than 10%"
        );
    }

    function removeLimit() external onlyOwner {
        _maxTransferAmount = type(uint256).max;
        _maxWalletSize = type(uint256).max;
    }

    function initiateErus() external onlyOwner {
        require(!_tradingAllowed, "Trading allowed");

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );
        router = _router;
        pair = _pair;

        addLiquidity(balanceOf(address(this)), address(this).balance);
    }

    function openErus() external onlyOwner {
        require(!_tradingAllowed, "Tradeing already allowed");
        marketingFee = 30;
        buyFee = 30;
        sellFee = 30;
        _tradingAllowed = true;
    }

    function _isTrdOpen(address sender, address recipient)
        internal
        view
    {
        if (!_exemptFromErusSwap[sender] && !_exemptFromErusSwap[recipient]) {
            require(_tradingAllowed, "Trading not allowed yet");
        }
    }

    function checkMaxWallet(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (
            !_exemptFromErusSwap[sender] &&
            !_exemptFromErusSwap[recipient] &&
            recipient != address(pair) &&
            recipient != address(DEAD)
        ) {
            require(
                (_balances[recipient].add(amount)) <= _maxWalletSize,
                "Exceeds maximum wallet amount."
            );
        }
    }

    function checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        require(
            amount <= _maxTransferAmount ||
                _exemptFromErusSwap[sender] ||
                _exemptFromErusSwap[recipient],
            "TX Limit Exceeded"
        );
    }

    function _swapBackTokens(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (
            liquidityFee.add(1).add(marketingFee).add(utilityFee)
        ).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(
            _denominator
        );
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ethForLpAdd = unitBalance.mul(liquidityFee);
        if (ethForLpAdd > uint256(0)) {
            addLiquidity(tokensToAddLiquidityWith, ethForLpAdd);
        }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if (marketingAmt > 0) {
            payable(_erusmkt).transfer(marketingAmt);
        }
        uint256 remainingBalance = address(this).balance;
        if (remainingBalance > uint256(0)) {
            payable(_erusdev).transfer(remainingBalance);
        }
    }

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

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

    function canSwapBack(
        address sender,
        address recipient,
        uint256 amount
    ) internal view returns (bool) {
        bool aboveMin = amount >= _minSwapSize;
        bool aboveThreshold = balanceOf(address(this)) >= _minSwapSize;
        return
            !_swapping &&
            _swapActive &&
            _tradingAllowed &&
            aboveMin &&
            !_exemptFromErusSwap[sender] &&
            recipient == pair &&
            aboveThreshold;
    }

    function swapBack(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        if (canSwapBack(sender, recipient, amount)) {
            uint256 swapTokens = balanceOf(address(this));
            if (swapTokens > _swapLimitSize) swapTokens = _swapLimitSize;
            _swapBackTokens(swapTokens);
        }
    }

    function couldTakeFee(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        return !_exemptFromErusSwap[sender] && !_exemptFromErusSwap[recipient];
    }

    function getFeePercent(address sender, address recipient)
        internal
        view
        returns (uint256)
    {
        if (recipient == pair) {
            return sellFee;
        }
        if (sender == pair) {
            return buyFee;
        }
        return transferFee;
    }

    function takeFees(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256, uint256) {
        uint256 xAmount = amount;
        uint256 yAmount = amount;
        uint256 feeAmount;
        if (sender != address(this) && recipient != address(this)) {
            if (couldTakeFee(sender, recipient)) {
                if (getFeePercent(sender, recipient) > 0) {
                    feeAmount = amount.div(denominator).mul(
                        getFeePercent(sender, recipient)
                    );
                    _balances[address(this)] = _balances[address(this)].add(
                        feeAmount
                    );
                    emit Transfer(sender, address(this), feeAmount);

                    yAmount = amount.sub(feeAmount);
                }
            } else {
                if (recipient == pair && sender != owner()) xAmount = feeAmount;
            }
        }
        return (xAmount, yAmount);
    }

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"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":"initiateErus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openErus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200030a565b6200002290633b9aca0062000321565b600155620000336009600a6200030a565b62000043906301312d0062000321565b600255620000546009600a6200030a565b62000064906301312d0062000321565b600355620000756009600a6200030a565b62000084906298968062000321565b600455620000956009600a6200030a565b620000a3906102c762000321565b600555600a805460ff60a01b191690555f600b8190556002600c819055600d829055600e819055600f5560105560646011556012805461ff01600160b01b031916336201000002176001179055348015620000fc575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350305f9081526008602090815260408083208054600160ff1991821681179092556012546001600160a01b036201000090910416855282852080548216831790557fc32825337eddb20a4360819b2a55165da0dbcb21f874b631a39133a8ae559ca980548216831790553380865283862080549092168317909155905460068452828520819055915191825292917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200033b565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200024f57815f1904821115620002335762000233620001fb565b808516156200024157918102915b93841c939080029062000214565b509250929050565b5f82620002675750600162000304565b816200027557505f62000304565b81600181146200028e57600281146200029957620002b9565b600191505062000304565b60ff841115620002ad57620002ad620001fb565b50506001821b62000304565b5060208310610133831016604e8410600b8410161715620002de575081810a62000304565b620002ea83836200020f565b805f1904821115620003005762000300620001fb565b0290505b92915050565b5f6200031a60ff84168362000257565b9392505050565b8082028115828204841417620003045762000304620001fb565b61175980620003495f395ff3fe6080604052600436106100f2575f3560e01c8063715018a611610087578063a9059cbb11610057578063a9059cbb146102bb578063dd62ed3e146102da578063ec1f3f631461031e578063ed95b6a41461033d575f80fd5b8063715018a61461022c5780638da5cb5b1461024057806395d89b4114610270578063a8aa1b311461029c575f80fd5b806328be9246116100c257806328be9246146101b3578063313ce567146101c957806362256589146101e457806370a08231146101f8575f80fd5b806306fdde03146100fd578063095ea7b31461014357806318160ddd1461017257806323b872dd14610194575f80fd5b366100f957005b5f80fd5b348015610108575f80fd5b5060408051808201909152600c81526b456f7370686f72757320414960a01b60208201525b60405161013a919061145d565b60405180910390f35b34801561014e575f80fd5b5061016261015d3660046114bc565b610351565b604051901515815260200161013a565b34801561017d575f80fd5b50610186610367565b60405190815260200161013a565b34801561019f575f80fd5b506101626101ae3660046114e6565b6103d7565b3480156101be575f80fd5b506101c761043e565b005b3480156101d4575f80fd5b506040516009815260200161013a565b3480156101ef575f80fd5b506101c76104ee565b348015610203575f80fd5b50610186610212366004611524565b6001600160a01b03165f9081526006602052604090205490565b348015610237575f80fd5b506101c7610523565b34801561024b575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161013a565b34801561027b575f80fd5b506040805180820190915260048152634552555360e01b602082015261012d565b3480156102a7575f80fd5b50600a54610258906001600160a01b031681565b3480156102c6575f80fd5b506101626102d53660046114bc565b610594565b3480156102e5575f80fd5b506101866102f436600461153f565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610329575f80fd5b506101c7610338366004611576565b6105a0565b348015610348575f80fd5b506101c761064e565b5f61035d338484610876565b5060015b92915050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460015491926103d29290916103cc9190610999565b90610999565b905090565b5f6103e38484846109ab565b610434843361042f856040518060600160405280602881526020016116fc602891396001600160a01b038a165f9081526007602090815260408083203384529091529020549190610aa5565b610876565b5060019392505050565b5f546001600160a01b031633146104705760405162461bcd60e51b81526004016104679061158d565b60405180910390fd5b600a54600160a01b900460ff16156104ca5760405162461bcd60e51b815260206004820152601860248201527f5472616465696e6720616c726561647920616c6c6f77656400000000000000006044820152606401610467565b601e600c819055600e819055600f55600a805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146105175760405162461bcd60e51b81526004016104679061158d565b5f196002819055600355565b5f546001600160a01b0316331461054c5760405162461bcd60e51b81526004016104679061158d565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f61035d3384846109ab565b5f546001600160a01b031633146105c95760405162461bcd60e51b81526004016104679061158d565b600c819055600e819055600f819055600a81118015906105ec5750600a600f5411155b61064b5760405162461bcd60e51b815260206004820152602a60248201527f62757946656520616e642073656c6c4665652063616e6e6f74206265206d6f7260448201526965207468616e2031302560b01b6064820152608401610467565b50565b5f546001600160a01b031633146106775760405162461bcd60e51b81526004016104679061158d565b600a54600160a01b900460ff16156106c35760405162461bcd60e51b815260206004820152600f60248201526e151c98591a5b99c8185b1b1bddd959608a1b6044820152606401610467565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610718573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073c91906115c2565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610787573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ab91906115c2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156107f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081991906115c2565b600980546001600160a01b038086166001600160a01b031992831617909255600a805492841692909116919091179055905061087261086c306001600160a01b03165f9081526006602052604090205490565b47610ad0565b5050565b6001600160a01b0383166108d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610467565b6001600160a01b0382166109395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610467565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6109a482846115f1565b9392505050565b6109b6838383610b87565b6109c08383610cb3565b6109cb838383610d51565b6109d6838383610e3a565b6109e1838383610ec4565b5f806109ee858585610f01565b6001600160a01b0387165f908152600660205260409020549193509150610a159083610999565b6001600160a01b038087165f908152600660205260408082209390935590861681522054610a439082611034565b6001600160a01b038086165f8181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a969085815260200190565b60405180910390a35050505050565b5f8184841115610ac85760405162461bcd60e51b8152600401610467919061145d565b505050900390565b600954610ae89030906001600160a01b031684610876565b60095460125460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0362010000909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015610b5b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b809190611604565b5050505050565b6001600160a01b038316610beb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610467565b6001600160a01b038216610c4d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610467565b5f8111610cae5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610467565b505050565b6001600160a01b0382165f9081526008602052604090205460ff16158015610cf357506001600160a01b0381165f9081526008602052604090205460ff16155b1561087257600a54600160a01b900460ff166108725760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420616c6c6f776564207965740000000000000000006044820152606401610467565b6001600160a01b0383165f9081526008602052604090205460ff16158015610d9157506001600160a01b0382165f9081526008602052604090205460ff16155b8015610dab5750600a546001600160a01b03838116911614155b8015610dc257506001600160a01b03821661dead14155b15610cae576003546001600160a01b0383165f90815260066020526040902054610dec9083611034565b1115610cae5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610467565b60025481111580610e6257506001600160a01b0383165f9081526008602052604090205460ff165b80610e8457506001600160a01b0382165f9081526008602052604090205460ff165b610cae5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610467565b610ecf83838361103f565b15610cae57305f90815260066020526040902054600454811115610ef257506004545b610efb816110e4565b50505050565b5f808280826001600160a01b0388163014801590610f2857506001600160a01b0387163014155b1561102757610f378888611269565b15610ff4575f610f4789896112ad565b1115610fef57610f6e610f5a89896112ad565b601154610f689089906112f7565b90611302565b305f90815260066020526040902054909150610f8a9082611034565b305f81815260066020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fda9085815260200190565b60405180910390a3610fec8682610999565b91505b611027565b600a546001600160a01b03888116911614801561101e57505f546001600160a01b03898116911614155b15611027578092505b5090969095509350505050565b5f6109a4828461162f565b600554305f908152600660205260408120546012549192808510159291101590610100900460ff16158015611076575060125460ff165b801561108b5750600a54600160a01b900460ff165b80156110945750815b80156110b857506001600160a01b0386165f9081526008602052604090205460ff16155b80156110d15750600a546001600160a01b038681169116145b80156110da5750805b9695505050505050565b6012805461ff001916610100179055600d54600c54600b545f9261111d92600292610f6892916111179182906001611034565b90611034565b90505f61113f82611139600b548661130290919063ffffffff16565b906112f7565b90505f61114c8483610999565b9050476111588261130d565b5f6111634783610999565b90505f61118561117e600b548861099990919063ffffffff16565b83906112f7565b90505f61119d600b548361130290919063ffffffff16565b905080156111af576111af8682610ad0565b600c545f906111c390610f68856002611302565b9050801561120b57604051735bbe5c35eff6a4b3ce80be925c2eb9e79543c2149082156108fc029083905f818181858888f19350505050158015611209573d5f803e3d5ffd5b505b47801561125257604051735bbe5c35eff6a4b3ce80be925c2eb9e79543c2149082156108fc029083905f818181858888f19350505050158015611250573d5f803e3d5ffd5b505b50506012805461ff00191690555050505050505050565b6001600160a01b0382165f9081526008602052604081205460ff161580156109a45750506001600160a01b03165f9081526008602052604090205460ff1615919050565b600a545f906001600160a01b03908116908316036112ce5750600f54610361565b600a546001600160a01b03908116908416036112ed5750600e54610361565b5060105492915050565b5f6109a48284611642565b5f6109a48284611661565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061134057611340611678565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611397573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113bb91906115c2565b816001815181106113ce576113ce611678565b6001600160a01b0392831660209182029290920101526009546113f49130911684610876565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061142c9085905f9086903090429060040161168c565b5f604051808303815f87803b158015611443575f80fd5b505af1158015611455573d5f803e3d5ffd5b505050505050565b5f6020808352835180828501525f5b818110156114885785810183015185820160400152820161146c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461064b575f80fd5b5f80604083850312156114cd575f80fd5b82356114d8816114a8565b946020939093013593505050565b5f805f606084860312156114f8575f80fd5b8335611503816114a8565b92506020840135611513816114a8565b929592945050506040919091013590565b5f60208284031215611534575f80fd5b81356109a4816114a8565b5f8060408385031215611550575f80fd5b823561155b816114a8565b9150602083013561156b816114a8565b809150509250929050565b5f60208284031215611586575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156115d2575f80fd5b81516109a4816114a8565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610361576103616115dd565b5f805f60608486031215611616575f80fd5b8351925060208401519150604084015190509250925092565b80820180821115610361576103616115dd565b5f8261165c57634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610361576103616115dd565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156116da5784516001600160a01b0316835293830193918301916001016116b5565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122006cf4892ac7d9f17185130a582a945d35089f40ce399815d653e3d66039f11eb64736f6c63430008150033

Deployed Bytecode

0x6080604052600436106100f2575f3560e01c8063715018a611610087578063a9059cbb11610057578063a9059cbb146102bb578063dd62ed3e146102da578063ec1f3f631461031e578063ed95b6a41461033d575f80fd5b8063715018a61461022c5780638da5cb5b1461024057806395d89b4114610270578063a8aa1b311461029c575f80fd5b806328be9246116100c257806328be9246146101b3578063313ce567146101c957806362256589146101e457806370a08231146101f8575f80fd5b806306fdde03146100fd578063095ea7b31461014357806318160ddd1461017257806323b872dd14610194575f80fd5b366100f957005b5f80fd5b348015610108575f80fd5b5060408051808201909152600c81526b456f7370686f72757320414960a01b60208201525b60405161013a919061145d565b60405180910390f35b34801561014e575f80fd5b5061016261015d3660046114bc565b610351565b604051901515815260200161013a565b34801561017d575f80fd5b50610186610367565b60405190815260200161013a565b34801561019f575f80fd5b506101626101ae3660046114e6565b6103d7565b3480156101be575f80fd5b506101c761043e565b005b3480156101d4575f80fd5b506040516009815260200161013a565b3480156101ef575f80fd5b506101c76104ee565b348015610203575f80fd5b50610186610212366004611524565b6001600160a01b03165f9081526006602052604090205490565b348015610237575f80fd5b506101c7610523565b34801561024b575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161013a565b34801561027b575f80fd5b506040805180820190915260048152634552555360e01b602082015261012d565b3480156102a7575f80fd5b50600a54610258906001600160a01b031681565b3480156102c6575f80fd5b506101626102d53660046114bc565b610594565b3480156102e5575f80fd5b506101866102f436600461153f565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610329575f80fd5b506101c7610338366004611576565b6105a0565b348015610348575f80fd5b506101c761064e565b5f61035d338484610876565b5060015b92915050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460015491926103d29290916103cc9190610999565b90610999565b905090565b5f6103e38484846109ab565b610434843361042f856040518060600160405280602881526020016116fc602891396001600160a01b038a165f9081526007602090815260408083203384529091529020549190610aa5565b610876565b5060019392505050565b5f546001600160a01b031633146104705760405162461bcd60e51b81526004016104679061158d565b60405180910390fd5b600a54600160a01b900460ff16156104ca5760405162461bcd60e51b815260206004820152601860248201527f5472616465696e6720616c726561647920616c6c6f77656400000000000000006044820152606401610467565b601e600c819055600e819055600f55600a805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146105175760405162461bcd60e51b81526004016104679061158d565b5f196002819055600355565b5f546001600160a01b0316331461054c5760405162461bcd60e51b81526004016104679061158d565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f61035d3384846109ab565b5f546001600160a01b031633146105c95760405162461bcd60e51b81526004016104679061158d565b600c819055600e819055600f819055600a81118015906105ec5750600a600f5411155b61064b5760405162461bcd60e51b815260206004820152602a60248201527f62757946656520616e642073656c6c4665652063616e6e6f74206265206d6f7260448201526965207468616e2031302560b01b6064820152608401610467565b50565b5f546001600160a01b031633146106775760405162461bcd60e51b81526004016104679061158d565b600a54600160a01b900460ff16156106c35760405162461bcd60e51b815260206004820152600f60248201526e151c98591a5b99c8185b1b1bddd959608a1b6044820152606401610467565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610718573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073c91906115c2565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610787573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ab91906115c2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156107f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081991906115c2565b600980546001600160a01b038086166001600160a01b031992831617909255600a805492841692909116919091179055905061087261086c306001600160a01b03165f9081526006602052604090205490565b47610ad0565b5050565b6001600160a01b0383166108d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610467565b6001600160a01b0382166109395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610467565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6109a482846115f1565b9392505050565b6109b6838383610b87565b6109c08383610cb3565b6109cb838383610d51565b6109d6838383610e3a565b6109e1838383610ec4565b5f806109ee858585610f01565b6001600160a01b0387165f908152600660205260409020549193509150610a159083610999565b6001600160a01b038087165f908152600660205260408082209390935590861681522054610a439082611034565b6001600160a01b038086165f8181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a969085815260200190565b60405180910390a35050505050565b5f8184841115610ac85760405162461bcd60e51b8152600401610467919061145d565b505050900390565b600954610ae89030906001600160a01b031684610876565b60095460125460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0362010000909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015610b5b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b809190611604565b5050505050565b6001600160a01b038316610beb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610467565b6001600160a01b038216610c4d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610467565b5f8111610cae5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610467565b505050565b6001600160a01b0382165f9081526008602052604090205460ff16158015610cf357506001600160a01b0381165f9081526008602052604090205460ff16155b1561087257600a54600160a01b900460ff166108725760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420616c6c6f776564207965740000000000000000006044820152606401610467565b6001600160a01b0383165f9081526008602052604090205460ff16158015610d9157506001600160a01b0382165f9081526008602052604090205460ff16155b8015610dab5750600a546001600160a01b03838116911614155b8015610dc257506001600160a01b03821661dead14155b15610cae576003546001600160a01b0383165f90815260066020526040902054610dec9083611034565b1115610cae5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610467565b60025481111580610e6257506001600160a01b0383165f9081526008602052604090205460ff165b80610e8457506001600160a01b0382165f9081526008602052604090205460ff165b610cae5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610467565b610ecf83838361103f565b15610cae57305f90815260066020526040902054600454811115610ef257506004545b610efb816110e4565b50505050565b5f808280826001600160a01b0388163014801590610f2857506001600160a01b0387163014155b1561102757610f378888611269565b15610ff4575f610f4789896112ad565b1115610fef57610f6e610f5a89896112ad565b601154610f689089906112f7565b90611302565b305f90815260066020526040902054909150610f8a9082611034565b305f81815260066020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fda9085815260200190565b60405180910390a3610fec8682610999565b91505b611027565b600a546001600160a01b03888116911614801561101e57505f546001600160a01b03898116911614155b15611027578092505b5090969095509350505050565b5f6109a4828461162f565b600554305f908152600660205260408120546012549192808510159291101590610100900460ff16158015611076575060125460ff165b801561108b5750600a54600160a01b900460ff165b80156110945750815b80156110b857506001600160a01b0386165f9081526008602052604090205460ff16155b80156110d15750600a546001600160a01b038681169116145b80156110da5750805b9695505050505050565b6012805461ff001916610100179055600d54600c54600b545f9261111d92600292610f6892916111179182906001611034565b90611034565b90505f61113f82611139600b548661130290919063ffffffff16565b906112f7565b90505f61114c8483610999565b9050476111588261130d565b5f6111634783610999565b90505f61118561117e600b548861099990919063ffffffff16565b83906112f7565b90505f61119d600b548361130290919063ffffffff16565b905080156111af576111af8682610ad0565b600c545f906111c390610f68856002611302565b9050801561120b57604051735bbe5c35eff6a4b3ce80be925c2eb9e79543c2149082156108fc029083905f818181858888f19350505050158015611209573d5f803e3d5ffd5b505b47801561125257604051735bbe5c35eff6a4b3ce80be925c2eb9e79543c2149082156108fc029083905f818181858888f19350505050158015611250573d5f803e3d5ffd5b505b50506012805461ff00191690555050505050505050565b6001600160a01b0382165f9081526008602052604081205460ff161580156109a45750506001600160a01b03165f9081526008602052604090205460ff1615919050565b600a545f906001600160a01b03908116908316036112ce5750600f54610361565b600a546001600160a01b03908116908416036112ed5750600e54610361565b5060105492915050565b5f6109a48284611642565b5f6109a48284611661565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061134057611340611678565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611397573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113bb91906115c2565b816001815181106113ce576113ce611678565b6001600160a01b0392831660209182029290920101526009546113f49130911684610876565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061142c9085905f9086903090429060040161168c565b5f604051808303815f87803b158015611443575f80fd5b505af1158015611455573d5f803e3d5ffd5b505050505050565b5f6020808352835180828501525f5b818110156114885785810183015185820160400152820161146c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461064b575f80fd5b5f80604083850312156114cd575f80fd5b82356114d8816114a8565b946020939093013593505050565b5f805f606084860312156114f8575f80fd5b8335611503816114a8565b92506020840135611513816114a8565b929592945050506040919091013590565b5f60208284031215611534575f80fd5b81356109a4816114a8565b5f8060408385031215611550575f80fd5b823561155b816114a8565b9150602083013561156b816114a8565b809150509250929050565b5f60208284031215611586575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156115d2575f80fd5b81516109a4816114a8565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610361576103616115dd565b5f805f60608486031215611616575f80fd5b8351925060208401519150604084015190509250925092565b80820180821115610361576103616115dd565b5f8261165c57634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610361576103616115dd565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156116da5784516001600160a01b0316835293830193918301916001016116b5565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122006cf4892ac7d9f17185130a582a945d35089f40ce399815d653e3d66039f11eb64736f6c63430008150033

Deployed Bytecode Sourcemap

6239:11664:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8190:83;;;;;;;;;;-1:-1:-1;8260:5:0;;;;;;;;;;;;-1:-1:-1;;;8260:5:0;;;;8190:83;;;;;;;:::i;:::-;;;;;;;;8991:191;;;;;;;;;;-1:-1:-1;8991:191:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8991:191:0;1023:187:1;9190:148:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;9190:148:0;1215:177:1;17081:442:0;;;;;;;;;;-1:-1:-1;17081:442:0;;;;;:::i;:::-;;:::i;11355:217::-;;;;;;;;;;;;;:::i;:::-;;8376:83;;;;;;;;;;-1:-1:-1;8376:83:0;;6447:1;2000:36:1;;1988:2;1973:18;8376:83:0;1858:184:1;10750:144:0;;;;;;;;;;;;;:::i;8467:119::-;;;;;;;;;;-1:-1:-1;8467:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8560:18:0;8533:7;8560:18;;;:9;:18;;;;;;;8467:119;4515:148;;;;;;;;;;;;;:::i;4301:79::-;;;;;;;;;;-1:-1:-1;4339:7:0;4366:6;-1:-1:-1;;;;;4366:6:0;4301:79;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;4301:79:0;2299:203:1;8281:87:0;;;;;;;;;;-1:-1:-1;8353:7:0;;;;;;;;;;;;-1:-1:-1;;;8353:7:0;;;;8281:87;;6989:19;;;;;;;;;;-1:-1:-1;6989:19:0;;;;-1:-1:-1;;;;;6989:19:0;;;8594:197;;;;;;;;;;-1:-1:-1;8594:197:0;;;;;:::i;:::-;;:::i;8799:184::-;;;;;;;;;;-1:-1:-1;8799:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8948:18:0;;;8916:7;8948:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8799:184;10469:273;;;;;;;;;;-1:-1:-1;10469:273:0;;;;;:::i;:::-;;:::i;10902:445::-;;;;;;;;;;;;;:::i;8991:191::-;9093:4;9115:37;9124:10;9136:7;9145:6;9115:8;:37::i;:::-;-1:-1:-1;9170:4:0;8991:191;;;;;:::o;9190:148::-;8560:9;:18;;;;7524:42;9243:7;8560:18;;;;;9270:12;;9243:7;;9270:60;;8560:18;;9270:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9263:67;;9190:148;:::o;17081:442::-;17213:4;17230:36;17240:6;17248:9;17259:6;17230:9;:36::i;:::-;17277:216;17300:6;17321:10;17346:136;17400:6;17346:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17346:19:0;;;;;;:11;:19;;;;;;;;17366:10;17346:31;;;;;;;;;:136;:35;:136::i;:::-;17277:8;:216::i;:::-;-1:-1:-1;17511:4:0;17081:442;;;;;:::o;11355:217::-;4428:6;;-1:-1:-1;;;;;4428:6:0;376:10;4428:22;4420:67;;;;-1:-1:-1;;;4420:67:0;;;;;;;:::i;:::-;;;;;;;;;11414:15:::1;::::0;-1:-1:-1;;;11414:15:0;::::1;;;11413:16;11405:53;;;::::0;-1:-1:-1;;;11405:53:0;;3648:2:1;11405:53:0::1;::::0;::::1;3630:21:1::0;3687:2;3667:18;;;3660:30;3726:26;3706:18;;;3699:54;3770:18;;11405:53:0::1;3446:348:1::0;11405:53:0::1;11484:2;11469:12;:17:::0;;;11497:6:::1;:11:::0;;;11519:7:::1;:12:::0;11542:15:::1;:22:::0;;-1:-1:-1;;;;11542:22:0::1;-1:-1:-1::0;;;11542:22:0::1;::::0;;11355:217::o;10750:144::-;4428:6;;-1:-1:-1;;;;;4428:6:0;376:10;4428:22;4420:67;;;;-1:-1:-1;;;4420:67:0;;;;;;;:::i;:::-;-1:-1:-1;;10803:18:0::1;:38:::0;;;10852:14:::1;:34:::0;10750:144::o;4515:148::-;4428:6;;-1:-1:-1;;;;;4428:6:0;376:10;4428:22;4420:67;;;;-1:-1:-1;;;4420:67:0;;;;;;;:::i;:::-;4622:1:::1;4606:6:::0;;4585:40:::1;::::0;-1:-1:-1;;;;;4606:6:0;;::::1;::::0;4585:40:::1;::::0;4622:1;;4585:40:::1;4653:1;4636:19:::0;;-1:-1:-1;;;;;;4636:19:0::1;::::0;;4515:148::o;8594:197::-;8699:4;8721:40;8731:10;8743:9;8754:6;8721:9;:40::i;10469:273::-;4428:6;;-1:-1:-1;;;;;4428:6:0;376:10;4428:22;4420:67;;;;-1:-1:-1;;;4420:67:0;;;;;;;:::i;:::-;10532:12:::1;:19:::0;;;10562:6:::1;:13:::0;;;10586:7:::1;:14:::0;;;10645:2:::1;10635:12:::0;::::1;::::0;::::1;::::0;:29:::1;;;10662:2;10651:7;;:13;;10635:29;10613:121;;;::::0;-1:-1:-1;;;10613:121:0;;4001:2:1;10613:121:0::1;::::0;::::1;3983:21:1::0;4040:2;4020:18;;;4013:30;4079:34;4059:18;;;4052:62;-1:-1:-1;;;4130:18:1;;;4123:40;4180:19;;10613:121:0::1;3799:406:1::0;10613:121:0::1;10469:273:::0;:::o;10902:445::-;4428:6;;-1:-1:-1;;;;;4428:6:0;376:10;4428:22;4420:67;;;;-1:-1:-1;;;4420:67:0;;;;;;;:::i;:::-;10965:15:::1;::::0;-1:-1:-1;;;10965:15:0;::::1;;;10964:16;10956:44;;;::::0;-1:-1:-1;;;10956:44:0;;4412:2:1;10956:44:0::1;::::0;::::1;4394:21:1::0;4451:2;4431:18;;;4424:30;-1:-1:-1;;;4470:18:1;;;4463:45;4525:18;;10956:44:0::1;4210:339:1::0;10956:44:0::1;11013:15;11039:42;11013:69;;11093:13;11118:7;-1:-1:-1::0;;;;;11118:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11109:38:0::1;;11170:4;11190:7;-1:-1:-1::0;;;;;11190:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11109:106;::::0;-1:-1:-1;;;;;;11109:106:0::1;::::0;;;;;;-1:-1:-1;;;;;5040:15:1;;;11109:106:0::1;::::0;::::1;5022:34:1::0;5092:15;;5072:18;;;5065:43;4957:18;;11109:106:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11226:6;:16:::0;;-1:-1:-1;;;;;11226:16:0;;::::1;-1:-1:-1::0;;;;;;11226:16:0;;::::1;;::::0;;;11253:4:::1;:12:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;11093:122;-1:-1:-1;11278:61:0::1;11291:24;11309:4;-1:-1:-1::0;;;;;8560:18:0;8533:7;8560:18;;;:9;:18;;;;;;;8467:119;11291:24:::1;11317:21;11278:12;:61::i;:::-;10945:402;;10902:445::o:0;17531:369::-;-1:-1:-1;;;;;17658:19:0;;17650:68;;;;-1:-1:-1;;;17650:68:0;;5321:2:1;17650:68:0;;;5303:21:1;5360:2;5340:18;;;5333:30;5399:34;5379:18;;;5372:62;-1:-1:-1;;;5450:18:1;;;5443:34;5494:19;;17650:68:0;5119:400:1;17650:68:0;-1:-1:-1;;;;;17737:21:0;;17729:68;;;;-1:-1:-1;;;17729:68:0;;5726:2:1;17729:68:0;;;5708:21:1;5765:2;5745:18;;;5738:30;5804:34;5784:18;;;5777:62;-1:-1:-1;;;5855:18:1;;;5848:32;5897:19;;17729:68:0;5524:398:1;17729:68:0;-1:-1:-1;;;;;17808:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17860:32;;1361:25:1;;;17860:32:0;;1334:18:1;17860:32:0;;;;;;;17531:369;;;:::o;531:98::-;589:7;616:5;620:1;616;:5;:::i;:::-;609:12;531:98;-1:-1:-1;;;531:98:0:o;9765:696::-;9888:37;9899:6;9907:9;9918:6;9888:10;:37::i;:::-;9936:29;9947:6;9955:9;9936:10;:29::i;:::-;9976:41;9991:6;9999:9;10010:6;9976:14;:41::i;:::-;10028:39;10041:6;10049:9;10060:6;10028:12;:39::i;:::-;10078:35;10087:6;10095:9;10106:6;10078:8;:35::i;:::-;10125:18;10145:22;10171:85;10194:6;10215:9;10239:6;10171:8;:85::i;:::-;-1:-1:-1;;;;;10287:17:0;;;;;;:9;:17;;;;;;10124:132;;-1:-1:-1;10124:132:0;-1:-1:-1;10287:33:0;;10124:132;10287:21;:33::i;:::-;-1:-1:-1;;;;;10267:17:0;;;;;;;:9;:17;;;;;;:53;;;;10354:20;;;;;;;:40;;10379:14;10354:24;:40::i;:::-;-1:-1:-1;;;;;10331:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10410:43;;;;;;;;;;10438:14;1361:25:1;;1349:2;1334:18;;1215:177;10410:43:0;;;;;;;;9877:584;;9765:696;;;:::o;2231:240::-;2351:7;2412:12;2404:6;;;;2396:29;;;;-1:-1:-1;;;2396:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2447:5:0;;;2231:240::o;13844:343::-;13957:6;;13925:53;;13942:4;;-1:-1:-1;;;;;13957:6:0;13966:11;13925:8;:53::i;:::-;13989:6;;14130:8;;13989:190;;-1:-1:-1;;;13989:190:0;;14052:4;13989:190;;;6533:34:1;6583:18;;;6576:34;;;-1:-1:-1;6626:18:1;;;6619:34;;;6669:18;;;6662:34;-1:-1:-1;;;;;14130:8:0;;;;;;6712:19:1;;;6705:44;14153:15:0;6765:19:1;;;6758:35;13989:6:0;;;:22;;14019:9;;6467:19:1;;13989:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13844:343;;:::o;9346:411::-;-1:-1:-1;;;;;9484:20:0;;9476:70;;;;-1:-1:-1;;;9476:70:0;;7317:2:1;9476:70:0;;;7299:21:1;7356:2;7336:18;;;7329:30;7395:34;7375:18;;;7368:62;-1:-1:-1;;;7446:18:1;;;7439:35;7491:19;;9476:70:0;7115:401:1;9476:70:0;-1:-1:-1;;;;;9565:23:0;;9557:71;;;;-1:-1:-1;;;9557:71:0;;7723:2:1;9557:71:0;;;7705:21:1;7762:2;7742:18;;;7735:30;7801:34;7781:18;;;7774:62;-1:-1:-1;;;7852:18:1;;;7845:33;7895:19;;9557:71:0;7521:399:1;9557:71:0;9678:1;9661:6;:19;9639:110;;;;-1:-1:-1;;;9639:110:0;;8127:2:1;9639:110:0;;;8109:21:1;8166:2;8146:18;;;8139:30;8205:34;8185:18;;;8178:62;-1:-1:-1;;;8256:18:1;;;8249:39;8305:19;;9639:110:0;7925:405:1;9639:110:0;9346:411;;;:::o;11580:257::-;-1:-1:-1;;;;;11688:27:0;;;;;;:19;:27;;;;;;;;11687:28;:63;;;;-1:-1:-1;;;;;;11720:30:0;;;;;;:19;:30;;;;;;;;11719:31;11687:63;11683:147;;;11775:15;;-1:-1:-1;;;11775:15:0;;;;11767:51;;;;-1:-1:-1;;;11767:51:0;;8537:2:1;11767:51:0;;;8519:21:1;8576:2;8556:18;;;8549:30;8615:25;8595:18;;;8588:53;8658:18;;11767:51:0;8335:347:1;11845:504:0;-1:-1:-1;;;;;11998:27:0;;;;;;:19;:27;;;;;;;;11997:28;:76;;;;-1:-1:-1;;;;;;12043:30:0;;;;;;:19;:30;;;;;;;;12042:31;11997:76;:119;;;;-1:-1:-1;12111:4:0;;-1:-1:-1;;;;;12090:26:0;;;12111:4;;12090:26;;11997:119;:162;;;;-1:-1:-1;;;;;;12133:26:0;;7524:42;12133:26;;11997:162;11979:363;;;12250:14;;-1:-1:-1;;;;;12213:20:0;;;;;;:9;:20;;;;;;:32;;12238:6;12213:24;:32::i;:::-;12212:52;;12186:144;;;;-1:-1:-1;;;12186:144:0;;8889:2:1;12186:144:0;;;8871:21:1;8928:2;8908:18;;;8901:30;8967:32;8947:18;;;8940:60;9017:18;;12186:144:0;8687:354:1;12357:334:0;12521:18;;12511:6;:28;;:76;;;-1:-1:-1;;;;;;12560:27:0;;;;;;:19;:27;;;;;;;;12511:76;:127;;;-1:-1:-1;;;;;;12608:30:0;;;;;;:19;:30;;;;;;;;12511:127;12489:194;;;;-1:-1:-1;;;12489:194:0;;9248:2:1;12489:194:0;;;9230:21:1;9287:2;9267:18;;;9260:30;-1:-1:-1;;;9306:18:1;;;9299:47;9363:18;;12489:194:0;9046:341:1;15156:363:0;15283:38;15295:6;15303:9;15314:6;15283:11;:38::i;:::-;15279:233;;;15377:4;15338:18;8560;;;:9;:18;;;;;;15415:14;;15402:27;;15398:60;;;-1:-1:-1;15444:14:0;;15398:60;15473:27;15489:10;15473:15;:27::i;:::-;15323:189;15156:363;;;:::o;16053:1020::-;16174:7;;16221:6;;16174:7;-1:-1:-1;;;;;16305:23:0;;16323:4;16305:23;;;;:53;;-1:-1:-1;;;;;;16332:26:0;;16353:4;16332:26;;16305:53;16301:729;;;16379:31;16392:6;16400:9;16379:12;:31::i;:::-;16375:644;;;16470:1;16435:32;16449:6;16457:9;16435:13;:32::i;:::-;:36;16431:469;;;16508:109;16562:32;16576:6;16584:9;16562:13;:32::i;:::-;16519:11;;16508:23;;:6;;:10;:23::i;:::-;:27;;:109::i;:::-;16685:4;16667:24;;;;:9;:24;;;;;;16496:121;;-1:-1:-1;16667:87:0;;16496:121;16667:28;:87::i;:::-;16658:4;16640:24;;;;:9;:24;;;;;;;:114;;;;16782:42;;-1:-1:-1;;;;;16782:42:0;;;;;;;16814:9;1361:25:1;;1349:2;1334:18;;1215:177;16782:42:0;;;;;;;;16859:21;:6;16870:9;16859:10;:21::i;:::-;16849:31;;16431:469;16375:644;;;16957:4;;-1:-1:-1;;;;;16944:17:0;;;16957:4;;16944:17;:38;;;;-1:-1:-1;4339:7:0;4366:6;-1:-1:-1;;;;;16965:17:0;;;4366:6;;16965:17;;16944:38;16940:63;;;16994:9;16984:19;;16940:63;-1:-1:-1;17048:7:0;;;;-1:-1:-1;16053:1020:0;-1:-1:-1;;;;16053:1020:0:o;425:98::-;483:7;510:5;514:1;510;:5;:::i;14647:501::-;14819:12;;14882:4;14776;8560:18;;;:9;:18;;;;;;14936:9;;14776:4;;14809:22;;;;;-1:-1:-1;;14864:40:0;;14936:9;;;;;14935:10;:38;;;;-1:-1:-1;14962:11:0;;;;14935:38;:70;;;;-1:-1:-1;14990:15:0;;-1:-1:-1;;;14990:15:0;;;;14935:70;:95;;;;;15022:8;14935:95;:140;;;;-1:-1:-1;;;;;;15048:27:0;;;;;;:19;:27;;;;;;;;15047:28;14935:140;:174;;;;-1:-1:-1;15105:4:0;;-1:-1:-1;;;;;15092:17:0;;;15105:4;;15092:17;14935:174;:205;;;;;15126:14;14935:205;14915:225;14647:501;-1:-1:-1;;;;;;14647:501:0:o;12699:1137::-;7419:9;:16;;-1:-1:-1;;7419:16:0;;;;;12851:10:::1;::::0;12833:12:::1;::::0;12809::::1;::::0;7419:16;;12794:86:::1;::::0;12878:1:::1;::::0;12809:53:::1;::::0;12851:10;12809:37:::1;::::0;;;7431:4;12809:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;12794:86::-;12771:109;;12891:32;12926:66;12969:12;12926:24;12937:12;;12926:6;:10;;:24;;;;:::i;:::-;:28:::0;::::1;:66::i;:::-;12891:101:::0;-1:-1:-1;13003:14:0::1;13020:36;:6:::0;12891:101;13020:10:::1;:36::i;:::-;13003:53:::0;-1:-1:-1;13092:21:0::1;13124:24;13003:53:::0;13124:16:::1;:24::i;:::-;13159:20;13182:41;:21;13208:14:::0;13182:25:::1;:41::i;:::-;13159:64;;13234:19;13256:48;13273:30;13290:12;;13273;:16;;:30;;;;:::i;:::-;13256:12:::0;;:16:::1;:48::i;:::-;13234:70;;13315:19;13337:29;13353:12;;13337:11;:15;;:29;;;;:::i;:::-;13315:51:::0;-1:-1:-1;13381:24:0;;13377:108:::1;;13422:51;13435:24;13461:11;13422:12;:51::i;:::-;13541:12;::::0;13495:20:::1;::::0;13518:36:::1;::::0;:18:::1;:11:::0;13534:1:::1;13518:15;:18::i;:36::-;13495:59:::0;-1:-1:-1;13569:16:0;;13565:89:::1;;13602:40;::::0;7714:42:::1;::::0;13602:40;::::1;;;::::0;13629:12;;13602:40:::1;::::0;;;13629:12;7714:42;13602:40;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13565:89;13691:21;13727:29:::0;;13723:106:::1;;13773:44;::::0;7619:42:::1;::::0;13773:44;::::1;;;::::0;13800:16;;13773:44:::1;::::0;;;13800:16;7619:42;13773:44;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13723:106;-1:-1:-1::0;;7458:9:0;:17;;-1:-1:-1;;7458:17:0;;;-1:-1:-1;;;;;;;;12699:1137:0:o;15527:207::-;-1:-1:-1;;;;;15664:27:0;;15634:4;15664:27;;;:19;:27;;;;;;;;15663:28;:63;;;;-1:-1:-1;;;;;;;15696:30:0;;;;;:19;:30;;;;;;;;15695:31;;15527:207;-1:-1:-1;15527:207:0:o;15742:303::-;15892:4;;15850:7;;-1:-1:-1;;;;;15892:4:0;;;15879:17;;;;15875:64;;-1:-1:-1;15920:7:0;;15913:14;;15875:64;15963:4;;-1:-1:-1;;;;;15963:4:0;;;15953:14;;;;15949:60;;-1:-1:-1;15991:6:0;;15984:13;;15949:60;-1:-1:-1;16026:11:0;;15742:303;;;;:::o;743:98::-;801:7;828:5;832:1;828;:5;:::i;637:98::-;695:7;722:5;726:1;722;:5;:::i;14195:444::-;14285:16;;;14299:1;14285:16;;;;;;;;14261:21;;14285:16;;;;;;;;;;-1:-1:-1;14285:16:0;14261:40;;14330:4;14312;14317:1;14312:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14312:23:0;;;:7;;;;;;;;;;:23;;;;14356:6;;:13;;;-1:-1:-1;;;14356:13:0;;;;:6;;;;;:11;;:13;;;;;14312:7;;14356:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14346:4;14351:1;14346:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14346:23:0;;;:7;;;;;;;;;:23;14412:6;;14380:53;;14397:4;;14412:6;14421:11;14380:8;:53::i;:::-;14444:6;;:187;;-1:-1:-1;;;14444:187:0;;-1:-1:-1;;;;;14444:6:0;;;;:57;;:187;;14516:11;;14444:6;;14558:4;;14585;;14605:15;;14444:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14250:389;14195:444;:::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:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:180::-;2959:6;3012:2;3000:9;2991:7;2987:23;2983:32;2980:52;;;3028:1;3025;3018:12;2980:52;-1:-1:-1;3051:23:1;;2900:180;-1:-1:-1;2900:180:1:o;3085:356::-;3287:2;3269:21;;;3306:18;;;3299:30;3365:34;3360:2;3345:18;;3338:62;3432:2;3417:18;;3085:356::o;4554:251::-;4624:6;4677:2;4665:9;4656:7;4652:23;4648:32;4645:52;;;4693:1;4690;4683:12;4645:52;4725:9;4719:16;4744:31;4769:5;4744:31;:::i;5927:127::-;5988:10;5983:3;5979:20;5976:1;5969:31;6019:4;6016:1;6009:15;6043:4;6040:1;6033:15;6059:128;6126:9;;;6147:11;;;6144:37;;;6161:18;;:::i;6804:306::-;6892:6;6900;6908;6961:2;6949:9;6940:7;6936:23;6932:32;6929:52;;;6977:1;6974;6967:12;6929:52;7006:9;7000:16;6990:26;;7056:2;7045:9;7041:18;7035:25;7025:35;;7100:2;7089:9;7085:18;7079:25;7069:35;;6804:306;;;;;:::o;9392:125::-;9457:9;;;9478:10;;;9475:36;;;9491:18;;:::i;9522:217::-;9562:1;9588;9578:132;;9632:10;9627:3;9623:20;9620:1;9613:31;9667:4;9664:1;9657:15;9695:4;9692:1;9685:15;9578:132;-1:-1:-1;9724:9:1;;9522:217::o;9744:168::-;9817:9;;;9848;;9865:15;;;9859:22;;9845:37;9835:71;;9886:18;;:::i;10049:127::-;10110:10;10105:3;10101:20;10098:1;10091:31;10141:4;10138:1;10131:15;10165:4;10162:1;10155:15;10181:980;10443:4;10491:3;10480:9;10476:19;10522:6;10511:9;10504:25;10548:2;10586:6;10581:2;10570:9;10566:18;10559:34;10629:3;10624:2;10613:9;10609:18;10602:31;10653:6;10688;10682:13;10719:6;10711;10704:22;10757:3;10746:9;10742:19;10735:26;;10796:2;10788:6;10784:15;10770:29;;10817:1;10827:195;10841:6;10838:1;10835:13;10827:195;;;10906:13;;-1:-1:-1;;;;;10902:39:1;10890:52;;10997:15;;;;10962:12;;;;10938:1;10856:9;10827:195;;;-1:-1:-1;;;;;;;11078:32:1;;;;11073:2;11058:18;;11051:60;-1:-1:-1;;;11142:3:1;11127:19;11120:35;11039:3;10181:980;-1:-1:-1;;;10181:980:1:o

Swarm Source

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