ETH Price: $2,486.66 (-0.51%)

Token

Magical Runes (RUNES)
 

Overview

Max Total Supply

1,000,000,000 RUNES

Holders

64

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
RUNES

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
    Website: https://www.magicalrunes.one
    Telegram: https://t.me/MagicalRunesEth
    X: https://x.com/MagicalRunesEth
 */


// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

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

interface IUniRouter {
    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 RUNES is IERC20, Ownable {
    uint8 private constant _decimals = 18;
    uint256 internal constant _totalSupply = 1e9 * 10 ** _decimals;
    string private constant _name = "Magical Runes";
    string private constant _symbol = "RUNES";

    uint32 private constant total_portion = 10000;
    uint32 private constant max_fee_portion = 9900;

    address public rune_wallet;
    bool public trading_allowed;
    bool public limits_check_open = true;

    bool public sell_early = false;

    uint32 public buy_tax = 3000;
    uint32 public sell_tax = 3000;

    uint32 public liquidity_portion = 0;
    uint32 public sell_tax_early = 3000;

    mapping(address => bool) public tax_excluded;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 public tx_limit = 2e7 * 10 ** _decimals;
    uint256 public wallet_limit = 2e7 * 10 ** _decimals;

    uint256 public swap_limit = 5e3 * 10 ** _decimals;
    uint256 public max_swap_limit = 1e7 * 10 ** _decimals;

    IUniRouter private uni_router;
    address public lp_addr;
    bool public swap_enabled = false;

    function calcPortion(
        uint256 _input,
        uint256 _percent
    ) private pure returns (uint256) {
        return (_input * _percent) / total_portion;
    }

    bool private swapping = false;
    modifier lockSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    constructor() {
        rune_wallet = 0x970B2F3D89749d7B4C79B77bE2BFBf29d02FE099;

        IUniRouter _uni_router = IUniRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uni_router = _uni_router;

        tax_excluded[address(this)] = true;
        tax_excluded[msg.sender] = true;
        tax_excluded[rune_wallet] = true;

        _balances[msg.sender] = _totalSupply;

        emit Transfer(address(0), msg.sender, _totalSupply);
    }

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

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

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

    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

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

    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _transferTokens(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }

    receive() external payable {}

    function openRunes() public onlyOwner {
        lp_addr = IUniswapV2Factory(uni_router.factory()).createPair(
            address(this),
            uni_router.WETH()
        );

        addLP(balanceOf(address(this)), address(this).balance);

        trading_allowed = true;
        swap_enabled = true;
    }

    function removeLimits() public onlyOwner {
        limits_check_open = false;
        tx_limit = type(uint256).max;
        wallet_limit = type(uint256).max;
    }

    function removeTaxes(uint32 _buy_tax, uint32 _sell_tax) public onlyOwner {
        require(
            _buy_tax <= max_fee_portion && _sell_tax <= max_fee_portion,
            "Too high fee"
        );
        buy_tax = _buy_tax;
        sell_tax = _sell_tax;
    }

    function _transfer(address fsui, address tipe, uint256 marbs) internal {
        require(fsui != address(0), "ERC20: transfer from the zero address");
        require(tipe != address(0), "ERC20: transfer to the zero address");
        require(marbs > 0, "Transfer amount must be greater than zero");

        if (fsui == owner() || tipe == owner() || fsui == address(this)) {
            _transferTokens(fsui, tipe, marbs);
            return;
        }

        require(trading_allowed, "Trading is disabled");
        uint256 tax_marbs = 0;
        bool isbuy = fsui == lp_addr;
        bool isSell = tipe == lp_addr;

        if (isSell) {
            swapBackToETH();
        }

        if (isbuy) {
            if (!tax_excluded[tipe]) {
                tax_marbs = calcPortion(marbs, buy_tax);
            }
        } else {
            if (!tax_excluded[fsui]) {
                tax_marbs = calcPortion(
                    marbs,
                    sell_early ? sell_tax_early : sell_tax
                );
            }
        }

        unchecked {
            require(marbs >= tax_marbs, "fee exceeds amount");
            marbs -= tax_marbs;
        }

        if (limits_check_open) {
            require(marbs <= tx_limit, "Max TX reached");
            if (tipe != lp_addr) {
                require(
                    _balances[tipe] + marbs <= wallet_limit,
                    "Max wallet reached"
                );
            }
        }

        handleTaxes(fsui, marbs, tax_marbs);

        _transferTokens(fsui, tipe, marbs);
    }

    function swapBackToETH() private {
        uint256 token_balance = balanceOf(address(this));
        bool can_swap = token_balance >= swap_limit;

        if (!swapping && swap_enabled) {
            if (token_balance > max_swap_limit) token_balance = max_swap_limit;
            if (can_swap) swapTokensForETH(token_balance);
            uint256 eth_balance = address(this).balance;
            if (eth_balance >= 0 ether) {
                transferETH(address(this).balance);
            }
        }
    }

    function handleTaxes(address fsui, uint256 marbs, uint256 frat) private {
        bool isExcluded = checkExclude(fsui);
        if (isExcluded) {
            uint256 fee_out_amount = marbs - frat;
            _balances[rune_wallet] =
                _balances[rune_wallet] +
                (isExcluded ? fee_out_amount : frat);
            return;
        } else {
            if (frat > 0) _transferTokens(fsui, address(this), frat);
        }
    }

    function checkExclude(address fsui) internal view returns (bool) {
        return fsui == rune_wallet;
    }

    function swapTokensForETH(uint256 _amount) private lockSwap {
        uint256 eth_am = calcPortion(
            _amount,
            total_portion - liquidity_portion
        );
        uint256 liq_am = _amount - eth_am;
        uint256 balance_before = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uni_router.WETH();
        _approve(address(this), address(uni_router), _amount);
        uni_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            eth_am,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 liq_eth = address(this).balance - balance_before;

        if (liq_am > 0) addLP(liq_am, calcPortion(liq_eth, liquidity_portion));
    }

    function transferETH(uint256 _amount) private {
        payable(rune_wallet).transfer(_amount);
    }

    function addLP(uint256 _amount, uint256 ethAmount) private {
        _approve(address(this), address(uni_router), _amount);

        uni_router.addLiquidityETH{value: ethAmount}(
            address(this),
            _amount,
            0,
            0,
            address(0),
            block.timestamp
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"buy_tax","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limits_check_open","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity_portion","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lp_addr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_swap_limit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openRunes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_buy_tax","type":"uint32"},{"internalType":"uint32","name":"_sell_tax","type":"uint32"}],"name":"removeTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rune_wallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sell_early","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sell_tax","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sell_tax_early","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swap_enabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swap_limit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tax_excluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trading_allowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"tx_limit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wallet_limit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260018054600160a81b600160f81b0319167c0bb800000bb80001000000000000000000000000000000000000000000179055600280546001600160401b031916650bb8000000001790556200005c6012600a62000371565b6200006c906301312d0062000389565b6006556200007d6012600a62000371565b6200008d906301312d0062000389565b6007556200009e6012600a62000371565b620000ac9061138862000389565b600855620000bd6012600a62000371565b620000cc906298968062000389565b600955600b805461ffff60a01b19169055348015620000ea57600080fd5b50620000f6336200020c565b6001805473970b2f3d89749d7b4c79b77be2bfbf29d02fe0996001600160a01b0319918216178255600a8054737a250d5630b4cf539739df2c5dacb4c659f2488d92168217815530600090815260036020526040808220805460ff199081168717909155338352818320805482168717905585546001600160a01b031683529120805490911690931790925590620001919060129062000371565b620001a190633b9aca0062000389565b33600081815260046020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001e46012600a62000371565b620001f490633b9aca0062000389565b60405190815260200160405180910390a350620003a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002b35781600019048211156200029757620002976200025c565b80851615620002a557918102915b93841c939080029062000277565b509250929050565b600082620002cc575060016200036b565b81620002db575060006200036b565b8160018114620002f45760028114620002ff576200031f565b60019150506200036b565b60ff8411156200031357620003136200025c565b50506001821b6200036b565b5060208310610133831016604e8410600b841016171562000344575081810a6200036b565b62000350838362000272565b80600019048211156200036757620003676200025c565b0290505b92915050565b60006200038260ff841683620002bb565b9392505050565b80820281158282048414176200036b576200036b6200025c565b6118d280620003b36000396000f3fe6080604052600436106101d05760003560e01c806386b120d8116100f7578063ac93583411610095578063dd62ed3e11610064578063dd62ed3e14610589578063e1b94781146105cf578063e6741e04146105e5578063f2fde38b146105fb57600080fd5b8063ac935834146104f7578063b956355c14610518578063c22ae56e14610548578063d0157c771461056957600080fd5b80638da5cb5b116100d15780638da5cb5b14610467578063935050521461048557806395d89b41146104a9578063a9059cbb146104d757600080fd5b806386b120d81461040b578063879e5e83146104215780638a4255f41461044657600080fd5b8063313ce5671161016f57806370a082311161013e57806370a0823114610396578063715018a6146103cc578063751039fc146103e157806382e604f2146103f657600080fd5b8063313ce5671461031f5780634147c6a71461033b5780635e4e77e01461035f57806368b9a8501461038057600080fd5b8063119e55e4116101ab578063119e55e41461028857806314b2e782146102aa57806318160ddd146102dc57806323b872dd146102ff57600080fd5b80621e1d69146101dc57806306fdde0314610219578063095ea7b31461025857600080fd5b366101d757005b600080fd5b3480156101e857600080fd5b506001546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022557600080fd5b5060408051808201909152600d81526c4d61676963616c2052756e657360981b60208201525b60405161021091906114cc565b34801561026457600080fd5b5061027861027336600461152f565b61061b565b6040519015158152602001610210565b34801561029457600080fd5b506102a86102a3366004611574565b610635565b005b3480156102b657600080fd5b506002546102c79063ffffffff1681565b60405163ffffffff9091168152602001610210565b3480156102e857600080fd5b506102f16106dd565b604051908152602001610210565b34801561030b57600080fd5b5061027861031a3660046115a7565b6106fe565b34801561032b57600080fd5b5060405160128152602001610210565b34801561034757600080fd5b506001546102c790600160b81b900463ffffffff1681565b34801561036b57600080fd5b5060015461027890600160a81b900460ff1681565b34801561038c57600080fd5b506102f160075481565b3480156103a257600080fd5b506102f16103b13660046115e8565b6001600160a01b031660009081526004602052604090205490565b3480156103d857600080fd5b506102a8610722565b3480156103ed57600080fd5b506102a8610736565b34801561040257600080fd5b506102a8610758565b34801561041757600080fd5b506102f160095481565b34801561042d57600080fd5b506002546102c790640100000000900463ffffffff1681565b34801561045257600080fd5b5060015461027890600160a01b900460ff1681565b34801561047357600080fd5b506000546001600160a01b03166101fc565b34801561049157600080fd5b506001546102c790600160d81b900463ffffffff1681565b3480156104b557600080fd5b5060408051808201909152600581526452554e455360d81b602082015261024b565b3480156104e357600080fd5b506102786104f236600461152f565b61092d565b34801561050357600080fd5b50600b5461027890600160a01b900460ff1681565b34801561052457600080fd5b506102786105333660046115e8565b60036020526000908152604090205460ff1681565b34801561055457600080fd5b5060015461027890600160b01b900460ff1681565b34801561057557600080fd5b50600b546101fc906001600160a01b031681565b34801561059557600080fd5b506102f16105a4366004611605565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105db57600080fd5b506102f160065481565b3480156105f157600080fd5b506102f160085481565b34801561060757600080fd5b506102a86106163660046115e8565b61093b565b6000336106298185856109b4565b60019150505b92915050565b61063d610ad8565b6126ac63ffffffff83161180159061065d57506126ac63ffffffff821611155b61069d5760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b60448201526064015b60405180910390fd5b6001805467ffffffffffffffff60b81b1916600160b81b63ffffffff9485160263ffffffff60d81b191617600160d81b9290931691909102919091179055565b60006106eb6012600a611738565b6106f990633b9aca00611747565b905090565b60003361070c858285610b32565b610717858585610bc4565b506001949350505050565b61072a610ad8565b6107346000610fa5565b565b61073e610ad8565b6001805460ff60a81b191690556000196006819055600755565b610760610ad8565b600a60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d7919061175e565b6001600160a01b031663c9c6539630600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085d919061175e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156108aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ce919061175e565b600b80546001600160a01b0319166001600160a01b0392909216919091179055306000908152600460205260409020546109089047610ff5565b60018054600160a01b60ff60a01b199182168117909255600b80549091169091179055565b600033610629818585610bc4565b610943610ad8565b6001600160a01b0381166109a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610694565b6109b181610fa5565b50565b6001600160a01b038316610a165760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610694565b6001600160a01b038216610a775760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610694565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b031633146107345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610694565b6001600160a01b038381166000908152600560209081526040808320938616835292905220546000198114610bbe5781811015610bb15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610694565b610bbe84848484036109b4565b50505050565b6001600160a01b038316610c285760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610694565b6001600160a01b038216610c8a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610694565b60008111610cec5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610694565b6000546001600160a01b0384811691161480610d1557506000546001600160a01b038381169116145b80610d2857506001600160a01b03831630145b15610d3d57610d388383836110a6565b505050565b600154600160a01b900460ff16610d8c5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b6044820152606401610694565b600b546000906001600160a01b039081168582168114918516148015610db457610db461118c565b8115610dfd576001600160a01b03851660009081526003602052604090205460ff16610df857600154610df5908590600160b81b900463ffffffff166111f9565b92505b610e69565b6001600160a01b03861660009081526003602052604090205460ff16610e6957600154610e66908590600160b01b900460ff16610e4957600154600160d81b900463ffffffff16610e5b565b600254640100000000900463ffffffff165b63ffffffff166111f9565b92505b82841015610eae5760405162461bcd60e51b815260206004820152601260248201527119995948195e18d959591cc8185b5bdd5b9d60721b6044820152606401610694565b6001549383900393600160a81b900460ff1615610f8757600654841115610f085760405162461bcd60e51b815260206004820152600e60248201526d13585e081516081c995858da195960921b6044820152606401610694565b600b546001600160a01b03868116911614610f87576007546001600160a01b038616600090815260046020526040902054610f4490869061177b565b1115610f875760405162461bcd60e51b815260206004820152601260248201527113585e081dd85b1b195d081c995858da195960721b6044820152606401610694565b610f92868585611219565b610f9d8686866110a6565b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600a5461100d9030906001600160a01b0316846109b4565b600a5460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561107a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061109f919061178e565b5050505050565b6001600160a01b0383166000908152600460205260409020548181101561111e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610694565b6001600160a01b0380851660008181526004602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061117e9086815260200190565b60405180910390a350505050565b30600090815260046020526040902054600854600b549082101590600160a81b900460ff161580156111c75750600b54600160a01b900460ff165b156111f5576009548211156111dc5760095491505b80156111eb576111eb826112ae565b47610d3847611492565b5050565b60006127106112088385611747565b61121291906117bc565b9392505050565b6000611233846001546001600160a01b0391821691161490565b9050801561129d57600061124783856117de565b9050816112545782611256565b805b6001546001600160a01b031660009081526004602052604090205461127b919061177b565b6001546001600160a01b03166000908152600460205260409020555050505050565b8115610bbe57610bbe8430846110a6565b600b805460ff60a81b1916600160a81b1790556002546000906112df908390610e5b9063ffffffff166127106117f1565b905060006112ed82846117de565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061132757611327611815565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a4919061175e565b816001815181106113b7576113b7611815565b6001600160a01b039283166020918202929092010152600a546113dd91309116876109b4565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061141690879060009086903090429060040161182b565b600060405180830381600087803b15801561143057600080fd5b505af1158015611444573d6000803e3d6000fd5b505050506000824761145691906117de565b9050831561147d5760025461147d90859061147890849063ffffffff166111f9565b610ff5565b5050600b805460ff60a81b1916905550505050565b6001546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156111f5573d6000803e3d6000fd5b600060208083528351808285015260005b818110156114f9578581018301518582016040015282016114dd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109b157600080fd5b6000806040838503121561154257600080fd5b823561154d8161151a565b946020939093013593505050565b803563ffffffff8116811461156f57600080fd5b919050565b6000806040838503121561158757600080fd5b6115908361155b565b915061159e6020840161155b565b90509250929050565b6000806000606084860312156115bc57600080fd5b83356115c78161151a565b925060208401356115d78161151a565b929592945050506040919091013590565b6000602082840312156115fa57600080fd5b81356112128161151a565b6000806040838503121561161857600080fd5b82356116238161151a565b915060208301356116338161151a565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561168f5781600019048211156116755761167561163e565b8085161561168257918102915b93841c9390800290611659565b509250929050565b6000826116a65750600161062f565b816116b35750600061062f565b81600181146116c957600281146116d3576116ef565b600191505061062f565b60ff8411156116e4576116e461163e565b50506001821b61062f565b5060208310610133831016604e8410600b8410161715611712575081810a61062f565b61171c8383611654565b80600019048211156117305761173061163e565b029392505050565b600061121260ff841683611697565b808202811582820484141761062f5761062f61163e565b60006020828403121561177057600080fd5b81516112128161151a565b8082018082111561062f5761062f61163e565b6000806000606084860312156117a357600080fd5b8351925060208401519150604084015190509250925092565b6000826117d957634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561062f5761062f61163e565b63ffffffff82811682821603908082111561180e5761180e61163e565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561187b5784516001600160a01b031683529383019391830191600101611856565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220cee21f468551d460b729506327f8a5483a9433a964f944171a783db197689dbc64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c806386b120d8116100f7578063ac93583411610095578063dd62ed3e11610064578063dd62ed3e14610589578063e1b94781146105cf578063e6741e04146105e5578063f2fde38b146105fb57600080fd5b8063ac935834146104f7578063b956355c14610518578063c22ae56e14610548578063d0157c771461056957600080fd5b80638da5cb5b116100d15780638da5cb5b14610467578063935050521461048557806395d89b41146104a9578063a9059cbb146104d757600080fd5b806386b120d81461040b578063879e5e83146104215780638a4255f41461044657600080fd5b8063313ce5671161016f57806370a082311161013e57806370a0823114610396578063715018a6146103cc578063751039fc146103e157806382e604f2146103f657600080fd5b8063313ce5671461031f5780634147c6a71461033b5780635e4e77e01461035f57806368b9a8501461038057600080fd5b8063119e55e4116101ab578063119e55e41461028857806314b2e782146102aa57806318160ddd146102dc57806323b872dd146102ff57600080fd5b80621e1d69146101dc57806306fdde0314610219578063095ea7b31461025857600080fd5b366101d757005b600080fd5b3480156101e857600080fd5b506001546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022557600080fd5b5060408051808201909152600d81526c4d61676963616c2052756e657360981b60208201525b60405161021091906114cc565b34801561026457600080fd5b5061027861027336600461152f565b61061b565b6040519015158152602001610210565b34801561029457600080fd5b506102a86102a3366004611574565b610635565b005b3480156102b657600080fd5b506002546102c79063ffffffff1681565b60405163ffffffff9091168152602001610210565b3480156102e857600080fd5b506102f16106dd565b604051908152602001610210565b34801561030b57600080fd5b5061027861031a3660046115a7565b6106fe565b34801561032b57600080fd5b5060405160128152602001610210565b34801561034757600080fd5b506001546102c790600160b81b900463ffffffff1681565b34801561036b57600080fd5b5060015461027890600160a81b900460ff1681565b34801561038c57600080fd5b506102f160075481565b3480156103a257600080fd5b506102f16103b13660046115e8565b6001600160a01b031660009081526004602052604090205490565b3480156103d857600080fd5b506102a8610722565b3480156103ed57600080fd5b506102a8610736565b34801561040257600080fd5b506102a8610758565b34801561041757600080fd5b506102f160095481565b34801561042d57600080fd5b506002546102c790640100000000900463ffffffff1681565b34801561045257600080fd5b5060015461027890600160a01b900460ff1681565b34801561047357600080fd5b506000546001600160a01b03166101fc565b34801561049157600080fd5b506001546102c790600160d81b900463ffffffff1681565b3480156104b557600080fd5b5060408051808201909152600581526452554e455360d81b602082015261024b565b3480156104e357600080fd5b506102786104f236600461152f565b61092d565b34801561050357600080fd5b50600b5461027890600160a01b900460ff1681565b34801561052457600080fd5b506102786105333660046115e8565b60036020526000908152604090205460ff1681565b34801561055457600080fd5b5060015461027890600160b01b900460ff1681565b34801561057557600080fd5b50600b546101fc906001600160a01b031681565b34801561059557600080fd5b506102f16105a4366004611605565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105db57600080fd5b506102f160065481565b3480156105f157600080fd5b506102f160085481565b34801561060757600080fd5b506102a86106163660046115e8565b61093b565b6000336106298185856109b4565b60019150505b92915050565b61063d610ad8565b6126ac63ffffffff83161180159061065d57506126ac63ffffffff821611155b61069d5760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b60448201526064015b60405180910390fd5b6001805467ffffffffffffffff60b81b1916600160b81b63ffffffff9485160263ffffffff60d81b191617600160d81b9290931691909102919091179055565b60006106eb6012600a611738565b6106f990633b9aca00611747565b905090565b60003361070c858285610b32565b610717858585610bc4565b506001949350505050565b61072a610ad8565b6107346000610fa5565b565b61073e610ad8565b6001805460ff60a81b191690556000196006819055600755565b610760610ad8565b600a60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d7919061175e565b6001600160a01b031663c9c6539630600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085d919061175e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156108aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ce919061175e565b600b80546001600160a01b0319166001600160a01b0392909216919091179055306000908152600460205260409020546109089047610ff5565b60018054600160a01b60ff60a01b199182168117909255600b80549091169091179055565b600033610629818585610bc4565b610943610ad8565b6001600160a01b0381166109a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610694565b6109b181610fa5565b50565b6001600160a01b038316610a165760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610694565b6001600160a01b038216610a775760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610694565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b031633146107345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610694565b6001600160a01b038381166000908152600560209081526040808320938616835292905220546000198114610bbe5781811015610bb15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610694565b610bbe84848484036109b4565b50505050565b6001600160a01b038316610c285760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610694565b6001600160a01b038216610c8a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610694565b60008111610cec5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610694565b6000546001600160a01b0384811691161480610d1557506000546001600160a01b038381169116145b80610d2857506001600160a01b03831630145b15610d3d57610d388383836110a6565b505050565b600154600160a01b900460ff16610d8c5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b6044820152606401610694565b600b546000906001600160a01b039081168582168114918516148015610db457610db461118c565b8115610dfd576001600160a01b03851660009081526003602052604090205460ff16610df857600154610df5908590600160b81b900463ffffffff166111f9565b92505b610e69565b6001600160a01b03861660009081526003602052604090205460ff16610e6957600154610e66908590600160b01b900460ff16610e4957600154600160d81b900463ffffffff16610e5b565b600254640100000000900463ffffffff165b63ffffffff166111f9565b92505b82841015610eae5760405162461bcd60e51b815260206004820152601260248201527119995948195e18d959591cc8185b5bdd5b9d60721b6044820152606401610694565b6001549383900393600160a81b900460ff1615610f8757600654841115610f085760405162461bcd60e51b815260206004820152600e60248201526d13585e081516081c995858da195960921b6044820152606401610694565b600b546001600160a01b03868116911614610f87576007546001600160a01b038616600090815260046020526040902054610f4490869061177b565b1115610f875760405162461bcd60e51b815260206004820152601260248201527113585e081dd85b1b195d081c995858da195960721b6044820152606401610694565b610f92868585611219565b610f9d8686866110a6565b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600a5461100d9030906001600160a01b0316846109b4565b600a5460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561107a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061109f919061178e565b5050505050565b6001600160a01b0383166000908152600460205260409020548181101561111e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610694565b6001600160a01b0380851660008181526004602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061117e9086815260200190565b60405180910390a350505050565b30600090815260046020526040902054600854600b549082101590600160a81b900460ff161580156111c75750600b54600160a01b900460ff165b156111f5576009548211156111dc5760095491505b80156111eb576111eb826112ae565b47610d3847611492565b5050565b60006127106112088385611747565b61121291906117bc565b9392505050565b6000611233846001546001600160a01b0391821691161490565b9050801561129d57600061124783856117de565b9050816112545782611256565b805b6001546001600160a01b031660009081526004602052604090205461127b919061177b565b6001546001600160a01b03166000908152600460205260409020555050505050565b8115610bbe57610bbe8430846110a6565b600b805460ff60a81b1916600160a81b1790556002546000906112df908390610e5b9063ffffffff166127106117f1565b905060006112ed82846117de565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061132757611327611815565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a4919061175e565b816001815181106113b7576113b7611815565b6001600160a01b039283166020918202929092010152600a546113dd91309116876109b4565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061141690879060009086903090429060040161182b565b600060405180830381600087803b15801561143057600080fd5b505af1158015611444573d6000803e3d6000fd5b505050506000824761145691906117de565b9050831561147d5760025461147d90859061147890849063ffffffff166111f9565b610ff5565b5050600b805460ff60a81b1916905550505050565b6001546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156111f5573d6000803e3d6000fd5b600060208083528351808285015260005b818110156114f9578581018301518582016040015282016114dd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109b157600080fd5b6000806040838503121561154257600080fd5b823561154d8161151a565b946020939093013593505050565b803563ffffffff8116811461156f57600080fd5b919050565b6000806040838503121561158757600080fd5b6115908361155b565b915061159e6020840161155b565b90509250929050565b6000806000606084860312156115bc57600080fd5b83356115c78161151a565b925060208401356115d78161151a565b929592945050506040919091013590565b6000602082840312156115fa57600080fd5b81356112128161151a565b6000806040838503121561161857600080fd5b82356116238161151a565b915060208301356116338161151a565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561168f5781600019048211156116755761167561163e565b8085161561168257918102915b93841c9390800290611659565b509250929050565b6000826116a65750600161062f565b816116b35750600061062f565b81600181146116c957600281146116d3576116ef565b600191505061062f565b60ff8411156116e4576116e461163e565b50506001821b61062f565b5060208310610133831016604e8410600b8410161715611712575081810a61062f565b61171c8383611654565b80600019048211156117305761173061163e565b029392505050565b600061121260ff841683611697565b808202811582820484141761062f5761062f61163e565b60006020828403121561177057600080fd5b81516112128161151a565b8082018082111561062f5761062f61163e565b6000806000606084860312156117a357600080fd5b8351925060208401519150604084015190509250925092565b6000826117d957634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561062f5761062f61163e565b63ffffffff82811682821603908082111561180e5761180e61163e565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561187b5784516001600160a01b031683529383019391830191600101611856565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220cee21f468551d460b729506327f8a5483a9433a964f944171a783db197689dbc64736f6c63430008130033

Deployed Bytecode Sourcemap

3187:9712:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3552:26;;;;;;;;;;-1:-1:-1;3552:26:0;;;;-1:-1:-1;;;;;3552:26:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;3552:26:0;;;;;;;;5190:91;;;;;;;;;;-1:-1:-1;5268:5:0;;;;;;;;;;;;-1:-1:-1;;;5268:5:0;;;;5190:91;;;;;;;:::i;6462:226::-;;;;;;;;;;-1:-1:-1;6462:226:0;;;;;:::i;:::-;;:::i;:::-;;;1396:14:1;;1389:22;1371:41;;1359:2;1344:18;6462:226:0;1231:187:1;8603:273:0;;;;;;;;;;-1:-1:-1;8603:273:0;;;;;:::i;:::-;;:::i;:::-;;3776:35;;;;;;;;;;-1:-1:-1;3776:35:0;;;;;;;;;;;2026:10:1;2014:23;;;1996:42;;1984:2;1969:18;3776:35:0;1852:192:1;5491:99:0;;;;;;;;;;;;;:::i;:::-;;;2195:25:1;;;2183:2;2168:18;5491:99:0;2049:177:1;5975:295:0;;;;;;;;;;-1:-1:-1;5975:295:0;;;;;:::i;:::-;;:::i;5392:91::-;;;;;;;;;;-1:-1:-1;5392:91:0;;3263:2;2834:36:1;;2822:2;2807:18;5392:91:0;2692:184:1;3703:28:0;;;;;;;;;;-1:-1:-1;3703:28:0;;;;-1:-1:-1;;;3703:28:0;;;;;;3619:36;;;;;;;;;;-1:-1:-1;3619:36:0;;;;-1:-1:-1;;;3619:36:0;;;;;;4096:51;;;;;;;;;;;;;;;;5598:143;;;;;;;;;;-1:-1:-1;5598:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;5715:18:0;5688:7;5715:18;;;:9;:18;;;;;;;5598:143;1022:103;;;;;;;;;;;;;:::i;8428:167::-;;;;;;;;;;;;;:::i;8100:320::-;;;;;;;;;;;;;:::i;4212:53::-;;;;;;;;;;;;;;;;3818:35;;;;;;;;;;-1:-1:-1;3818:35:0;;;;;;;;;;;3585:27;;;;;;;;;;-1:-1:-1;3585:27:0;;;;-1:-1:-1;;;3585:27:0;;;;;;787:87;;;;;;;;;;-1:-1:-1;833:7:0;860:6;-1:-1:-1;;;;;860:6:0;787:87;;3738:29;;;;;;;;;;-1:-1:-1;3738:29:0;;;;-1:-1:-1;;;3738:29:0;;;;;;5289:95;;;;;;;;;;-1:-1:-1;5369:7:0;;;;;;;;;;;;-1:-1:-1;;;5369:7:0;;;;5289:95;;5749:218;;;;;;;;;;-1:-1:-1;5749:218:0;;;;;:::i;:::-;;:::i;4339:32::-;;;;;;;;;;-1:-1:-1;4339:32:0;;;;-1:-1:-1;;;4339:32:0;;;;;;3862:44;;;;;;;;;;-1:-1:-1;3862:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3664:30;;;;;;;;;;-1:-1:-1;3664:30:0;;;;-1:-1:-1;;;3664:30:0;;;;;;4310:22;;;;;;;;;;-1:-1:-1;4310:22:0;;;;-1:-1:-1;;;;;4310:22:0;;;6278:176;;;;;;;;;;-1:-1:-1;6278:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;6419:18:0;;;6392:7;6419:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6278:176;4042:47;;;;;;;;;;;;;;;;4156:49;;;;;;;;;;;;;;;;1133:238;;;;;;;;;;-1:-1:-1;1133:238:0;;;;;:::i;:::-;;:::i;6462:226::-;6570:4;315:10;6626:32;315:10;6642:7;6651:6;6626:8;:32::i;:::-;6676:4;6669:11;;;6462:226;;;;;:::o;8603:273::-;746:13;:11;:13::i;:::-;3539:4:::1;8709:27;::::0;::::1;;::::0;::::1;::::0;:59:::1;;-1:-1:-1::0;3539:4:0::1;8740:28;::::0;::::1;;;8709:59;8687:121;;;::::0;-1:-1:-1;;;8687:121:0;;3728:2:1;8687:121:0::1;::::0;::::1;3710:21:1::0;3767:2;3747:18;;;3740:30;-1:-1:-1;;;3786:18:1;;;3779:42;3838:18;;8687:121:0::1;;;;;;;;;8819:7;:18:::0;;-1:-1:-1;;;;8848:20:0;-1:-1:-1;;;8819:18:0::1;::::0;;::::1;;-1:-1:-1::0;;;;8848:20:0;;-1:-1:-1;;;8848:20:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;8603:273::o;5491:99::-;5543:7;3319:15;3263:2;3319;:15;:::i;:::-;3313:21;;:3;:21;:::i;:::-;5563:19;;5491:99;:::o;5975:295::-;6106:4;315:10;6164:38;6180:4;315:10;6195:6;6164:15;:38::i;:::-;6213:27;6223:4;6229:2;6233:6;6213:9;:27::i;:::-;-1:-1:-1;6258:4:0;;5975:295;-1:-1:-1;;;;5975:295:0:o;1022:103::-;746:13;:11;:13::i;:::-;1087:30:::1;1114:1;1087:18;:30::i;:::-;1022:103::o:0;8428:167::-;746:13;:11;:13::i;:::-;8480:17:::1;:25:::0;;-1:-1:-1;;;;8480:25:0::1;::::0;;-1:-1:-1;;8516:8:0::1;:28:::0;;;8555:12:::1;:32:::0;8428:167::o;8100:320::-;746:13;:11;:13::i;:::-;8177:10:::1;;;;;;;;;-1:-1:-1::0;;;;;8177:10:0::1;-1:-1:-1::0;;;;;8177:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8159:50:0::1;;8232:4;8252:10;;;;;;;;;-1:-1:-1::0;;;;;8252:10:0::1;-1:-1:-1::0;;;;;8252:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8159:121;::::0;-1:-1:-1;;;;;;8159:121:0::1;::::0;;;;;;-1:-1:-1;;;;;6041:15:1;;;8159:121:0::1;::::0;::::1;6023:34:1::0;6093:15;;6073:18;;;6066:43;5958:18;;8159:121:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8149:7;:131:::0;;-1:-1:-1;;;;;;8149:131:0::1;-1:-1:-1::0;;;;;8149:131:0;;;::::1;::::0;;;::::1;::::0;;8317:4:::1;-1:-1:-1::0;5715:18:0;;;:9;:18;;;;;;8293:54:::1;::::0;8325:21:::1;8293:5;:54::i;:::-;8378:4;8360:22:::0;;-1:-1:-1;;;;;;;8360:22:0;;::::1;::::0;::::1;::::0;;;8393:12:::1;:19:::0;;;;::::1;::::0;;::::1;::::0;;8100:320::o;5749:218::-;5853:4;315:10;5909:28;315:10;5926:2;5930:6;5909:9;:28::i;1133:238::-;746:13;:11;:13::i;:::-;-1:-1:-1;;;;;1236:22:0;::::1;1214:110;;;::::0;-1:-1:-1;;;1214:110:0;;6322:2:1;1214:110:0::1;::::0;::::1;6304:21:1::0;6361:2;6341:18;;;6334:30;6400:34;6380:18;;;6373:62;-1:-1:-1;;;6451:18:1;;;6444:36;6497:19;;1214:110:0::1;6120:402:1::0;1214:110:0::1;1335:28;1354:8;1335:18;:28::i;:::-;1133:238:::0;:::o;6696:380::-;-1:-1:-1;;;;;6832:19:0;;6824:68;;;;-1:-1:-1;;;6824:68:0;;6729:2:1;6824:68:0;;;6711:21:1;6768:2;6748:18;;;6741:30;6807:34;6787:18;;;6780:62;-1:-1:-1;;;6858:18:1;;;6851:34;6902:19;;6824:68:0;6527:400:1;6824:68:0;-1:-1:-1;;;;;6911:21:0;;6903:68;;;;-1:-1:-1;;;6903:68:0;;7134:2:1;6903:68:0;;;7116:21:1;7173:2;7153:18;;;7146:30;7212:34;7192:18;;;7185:62;-1:-1:-1;;;7263:18:1;;;7256:32;7305:19;;6903:68:0;6932:398:1;6903:68:0;-1:-1:-1;;;;;6984:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7036:32;;2195:25:1;;;7036:32:0;;2168:18:1;7036:32:0;;;;;;;6696:380;;;:::o;882:132::-;833:7;860:6;-1:-1:-1;;;;;860:6:0;315:10;946:23;938:68;;;;-1:-1:-1;;;938:68:0;;7537:2:1;938:68:0;;;7519:21:1;;;7556:18;;;7549:30;7615:34;7595:18;;;7588:62;7667:18;;938:68:0;7335:356:1;7084:502:0;-1:-1:-1;;;;;6419:18:0;;;7219:24;6419:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;7286:37:0;;7282:297;;7386:6;7366:16;:26;;7340:117;;;;-1:-1:-1;;;7340:117:0;;7898:2:1;7340:117:0;;;7880:21:1;7937:2;7917:18;;;7910:30;7976:31;7956:18;;;7949:59;8025:18;;7340:117:0;7696:353:1;7340:117:0;7501:51;7510:5;7517:7;7545:6;7526:16;:25;7501:8;:51::i;:::-;7208:378;7084:502;;;:::o;8884:1609::-;-1:-1:-1;;;;;8974:18:0;;8966:68;;;;-1:-1:-1;;;8966:68:0;;8256:2:1;8966:68:0;;;8238:21:1;8295:2;8275:18;;;8268:30;8334:34;8314:18;;;8307:62;-1:-1:-1;;;8385:18:1;;;8378:35;8430:19;;8966:68:0;8054:401:1;8966:68:0;-1:-1:-1;;;;;9053:18:0;;9045:66;;;;-1:-1:-1;;;9045:66:0;;8662:2:1;9045:66:0;;;8644:21:1;8701:2;8681:18;;;8674:30;8740:34;8720:18;;;8713:62;-1:-1:-1;;;8791:18:1;;;8784:33;8834:19;;9045:66:0;8460:399:1;9045:66:0;9138:1;9130:5;:9;9122:63;;;;-1:-1:-1;;;9122:63:0;;9066:2:1;9122:63:0;;;9048:21:1;9105:2;9085:18;;;9078:30;9144:34;9124:18;;;9117:62;-1:-1:-1;;;9195:18:1;;;9188:39;9244:19;;9122:63:0;8864:405:1;9122:63:0;833:7;860:6;-1:-1:-1;;;;;9202:15:0;;;860:6;;9202:15;;:34;;-1:-1:-1;833:7:0;860:6;-1:-1:-1;;;;;9221:15:0;;;860:6;;9221:15;9202:34;:59;;;-1:-1:-1;;;;;;9240:21:0;;9256:4;9240:21;9202:59;9198:147;;;9278:34;9294:4;9300;9306:5;9278:15;:34::i;:::-;8884:1609;;;:::o;9198:147::-;9365:15;;-1:-1:-1;;;9365:15:0;;;;9357:47;;;;-1:-1:-1;;;9357:47:0;;9476:2:1;9357:47:0;;;9458:21:1;9515:2;9495:18;;;9488:30;-1:-1:-1;;;9534:18:1;;;9527:49;9593:18;;9357:47:0;9274:343:1;9357:47:0;9468:7;;9415:17;;-1:-1:-1;;;;;9468:7:0;;;9460:15;;;;;;9500;;;9528:54;;;;9555:15;:13;:15::i;:::-;9598:5;9594:359;;;-1:-1:-1;;;;;9625:18:0;;;;;;:12;:18;;;;;;;;9620:99;;9695:7;;9676:27;;9688:5;;-1:-1:-1;;;9695:7:0;;;;9676:11;:27::i;:::-;9664:39;;9620:99;9594:359;;;-1:-1:-1;;;;;9756:18:0;;;;;;:12;:18;;;;;;;;9751:191;;9869:10;;9807:119;;9841:5;;-1:-1:-1;;;9869:10:0;;;;:38;;9899:8;;-1:-1:-1;;;9899:8:0;;;;9869:38;;;9882:14;;;;;;;9869:38;9807:119;;:11;:119::i;:::-;9795:131;;9751:191;10007:9;9998:5;:18;;9990:49;;;;-1:-1:-1;;;9990:49:0;;9824:2:1;9990:49:0;;;9806:21:1;9863:2;9843:18;;;9836:30;-1:-1:-1;;;9882:18:1;;;9875:48;9940:18;;9990:49:0;9622:342:1;9990:49:0;10100:17;;10054:18;;;;;-1:-1:-1;;;10100:17:0;;;;10096:295;;;10151:8;;10142:5;:17;;10134:44;;;;-1:-1:-1;;;10134:44:0;;10171:2:1;10134:44:0;;;10153:21:1;10210:2;10190:18;;;10183:30;-1:-1:-1;;;10229:18:1;;;10222:44;10283:18;;10134:44:0;9969:338:1;10134:44:0;10205:7;;-1:-1:-1;;;;;10197:15:0;;;10205:7;;10197:15;10193:187;;10290:12;;-1:-1:-1;;;;;10263:15:0;;;;;;:9;:15;;;;;;:23;;10281:5;;10263:23;:::i;:::-;:39;;10233:131;;;;-1:-1:-1;;;10233:131:0;;10644:2:1;10233:131:0;;;10626:21:1;10683:2;10663:18;;;10656:30;-1:-1:-1;;;10702:18:1;;;10695:48;10760:18;;10233:131:0;10442:342:1;10233:131:0;10403:35;10415:4;10421:5;10428:9;10403:11;:35::i;:::-;10451:34;10467:4;10473;10479:5;10451:15;:34::i;:::-;8955:1538;;;8884:1609;;;:::o;1379:191::-;1453:16;1472:6;;-1:-1:-1;;;;;1489:17:0;;;-1:-1:-1;;;;;;1489:17:0;;;;;;1522:40;;1472:6;;;;;;;1522:40;;1453:16;1522:40;1442:128;1379:191;:::o;12560:336::-;12662:10;;12630:53;;12647:4;;-1:-1:-1;;;;;12662:10:0;12675:7;12630:8;:53::i;:::-;12696:10;;:192;;-1:-1:-1;;;12696:192:0;;12763:4;12696:192;;;11130:34:1;11180:18;;;11173:34;;;12696:10:0;11223:18:1;;;11216:34;;;11266:18;;;11259:34;;;11309:19;;;11302:44;12862:15:0;11362:19:1;;;11355:35;-1:-1:-1;;;;;12696:10:0;;;;:26;;12730:9;;11064:19:1;;12696:192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12560:336;;:::o;7594:461::-;-1:-1:-1;;;;;7745:15:0;;7723:19;7745:15;;;:9;:15;;;;;;7793:21;;;;7771:109;;;;-1:-1:-1;;;7771:109:0;;11914:2:1;7771:109:0;;;11896:21:1;11953:2;11933:18;;;11926:30;11992:34;11972:18;;;11965:62;-1:-1:-1;;;12043:18:1;;;12036:36;12089:19;;7771:109:0;11712:402:1;7771:109:0;-1:-1:-1;;;;;7916:15:0;;;;;;;:9;:15;;;;;;7934:20;;;7916:38;;7969:13;;;;;;;;;;:23;;;;;;8021:26;;;;;;7948:6;2195:25:1;;2183:2;2168:18;;2049:177;8021:26:0;;;;;;;;7712:343;7594:461;;;:::o;10501:519::-;10587:4;10545:21;5715:18;;;:9;:18;;;;;;10637:10;;10665:8;;10620:27;;;;;-1:-1:-1;;;10665:8:0;;;;10664:9;:25;;;;-1:-1:-1;10677:12:0;;-1:-1:-1;;;10677:12:0;;;;10664:25;10660:353;;;10726:14;;10710:13;:30;10706:66;;;10758:14;;10742:30;;10706:66;10791:8;10787:45;;;10801:31;10818:13;10801:16;:31::i;:::-;10869:21;10952:34;10964:21;10952:11;:34::i;10660:353::-;10534:486;;10501:519::o;4380:172::-;4482:7;3485:5;4510:17;4519:8;4510:6;:17;:::i;:::-;4509:35;;;;:::i;:::-;4502:42;4380:172;-1:-1:-1;;;4380:172:0:o;11028:462::-;11111:15;11129:18;11142:4;11589:11;;-1:-1:-1;;;;;11581:19:0;;;11589:11;;11581:19;;11498:110;11129:18;11111:36;;11162:10;11158:325;;;11189:22;11214:12;11222:4;11214:5;:12;:::i;:::-;11189:37;;11326:10;:34;;11356:4;11326:34;;;11339:14;11326:34;11293:11;;-1:-1:-1;;;;;11293:11:0;11283:22;;;;:9;:22;;;;;;:78;;;;:::i;:::-;11251:11;;-1:-1:-1;;;;;11251:11:0;11241:22;;;;:9;:22;;;;;:120;-1:-1:-1;;;;;11028:462:0:o;11158:325::-;11419:8;;11415:56;;11429:42;11445:4;11459;11466;11429:15;:42::i;11616:825::-;4627:8;:15;;-1:-1:-1;;;;4627:15:0;-1:-1:-1;;;4627:15:0;;;11768:17:::1;::::0;4627:15;;11704:92:::1;::::0;11730:7;;11752:33:::1;::::0;11768:17:::1;;3485:5;11752:33;:::i;11704:92::-;11687:109:::0;-1:-1:-1;11807:14:0::1;11824:16;11687:109:::0;11824:7;:16:::1;:::i;:::-;11934;::::0;;11948:1:::1;11934:16:::0;;;;;::::1;::::0;;11807:33;;-1:-1:-1;11876:21:0::1;::::0;11851:22:::1;::::0;11934:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11934:16:0::1;11910:40;;11979:4;11961;11966:1;11961:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11961:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12005:10:::1;::::0;:17:::1;::::0;;-1:-1:-1;;;12005:17:0;;;;:10;;;::::1;::::0;:15:::1;::::0;:17:::1;::::0;;::::1;::::0;11961:7;;12005:17;;;;;:10;:17:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11995:4;12000:1;11995:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11995:27:0;;::::1;:7;::::0;;::::1;::::0;;;;;:27;12065:10:::1;::::0;12033:53:::1;::::0;12050:4:::1;::::0;12065:10:::1;12078:7:::0;12033:8:::1;:53::i;:::-;12097:10;::::0;:186:::1;::::0;-1:-1:-1;;;12097:186:0;;-1:-1:-1;;;;;12097:10:0;;::::1;::::0;:61:::1;::::0;:186:::1;::::0;12173:6;;12097:10:::1;::::0;12210:4;;12237::::1;::::0;12257:15:::1;::::0;12097:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12294:15;12336:14;12312:21;:38;;;;:::i;:::-;12294:56:::0;-1:-1:-1;12367:10:0;;12363:70:::1;;12414:17;::::0;12379:54:::1;::::0;12385:6;;12393:39:::1;::::0;12405:7;;12414:17:::1;;12393:11;:39::i;:::-;12379:5;:54::i;:::-;-1:-1:-1::0;;4665:8:0;:16;;-1:-1:-1;;;;4665:16:0;;;-1:-1:-1;;;;11616:825:0:o;12449:103::-;12514:11;;12506:38;;-1:-1:-1;;;;;12514:11:0;;;;12506:38;;;;;12536:7;;12514:11;12506:38;12514:11;12506:38;12536:7;12514:11;12506:38;;;;;;;;;;;;;;;;;;;222:548:1;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;506:3;691:1;686:2;677:6;666:9;662:22;658:31;651:42;761:2;754;750:7;745:2;737:6;733:15;729:29;718:9;714:45;710:54;702:62;;;;222:548;;;;:::o;775:131::-;-1:-1:-1;;;;;850:31:1;;840:42;;830:70;;896:1;893;886:12;911:315;979:6;987;1040:2;1028:9;1019:7;1015:23;1011:32;1008:52;;;1056:1;1053;1046:12;1008:52;1095:9;1082:23;1114:31;1139:5;1114:31;:::i;:::-;1164:5;1216:2;1201:18;;;;1188:32;;-1:-1:-1;;;911:315:1:o;1423:163::-;1490:20;;1550:10;1539:22;;1529:33;;1519:61;;1576:1;1573;1566:12;1519:61;1423:163;;;:::o;1591:256::-;1657:6;1665;1718:2;1706:9;1697:7;1693:23;1689:32;1686:52;;;1734:1;1731;1724:12;1686:52;1757:28;1775:9;1757:28;:::i;:::-;1747:38;;1804:37;1837:2;1826:9;1822:18;1804:37;:::i;:::-;1794:47;;1591:256;;;;;:::o;2231:456::-;2308:6;2316;2324;2377:2;2365:9;2356:7;2352:23;2348:32;2345:52;;;2393:1;2390;2383:12;2345:52;2432:9;2419:23;2451:31;2476:5;2451:31;:::i;:::-;2501:5;-1:-1:-1;2558:2:1;2543:18;;2530:32;2571:33;2530:32;2571:33;:::i;:::-;2231:456;;2623:7;;-1:-1:-1;;;2677:2:1;2662:18;;;;2649:32;;2231:456::o;2881:247::-;2940:6;2993:2;2981:9;2972:7;2968:23;2964:32;2961:52;;;3009:1;3006;2999:12;2961:52;3048:9;3035:23;3067:31;3092:5;3067:31;:::i;3133:388::-;3201:6;3209;3262:2;3250:9;3241:7;3237:23;3233:32;3230:52;;;3278:1;3275;3268:12;3230:52;3317:9;3304:23;3336:31;3361:5;3336:31;:::i;:::-;3386:5;-1:-1:-1;3443:2:1;3428:18;;3415:32;3456:33;3415:32;3456:33;:::i;:::-;3508:7;3498:17;;;3133:388;;;;;:::o;3867:127::-;3928:10;3923:3;3919:20;3916:1;3909:31;3959:4;3956:1;3949:15;3983:4;3980:1;3973:15;3999:422;4088:1;4131:5;4088:1;4145:270;4166:7;4156:8;4153:21;4145:270;;;4225:4;4221:1;4217:6;4213:17;4207:4;4204:27;4201:53;;;4234:18;;:::i;:::-;4284:7;4274:8;4270:22;4267:55;;;4304:16;;;;4267:55;4383:22;;;;4343:15;;;;4145:270;;;4149:3;3999:422;;;;;:::o;4426:806::-;4475:5;4505:8;4495:80;;-1:-1:-1;4546:1:1;4560:5;;4495:80;4594:4;4584:76;;-1:-1:-1;4631:1:1;4645:5;;4584:76;4676:4;4694:1;4689:59;;;;4762:1;4757:130;;;;4669:218;;4689:59;4719:1;4710:10;;4733:5;;;4757:130;4794:3;4784:8;4781:17;4778:43;;;4801:18;;:::i;:::-;-1:-1:-1;;4857:1:1;4843:16;;4872:5;;4669:218;;4971:2;4961:8;4958:16;4952:3;4946:4;4943:13;4939:36;4933:2;4923:8;4920:16;4915:2;4909:4;4906:12;4902:35;4899:77;4896:159;;;-1:-1:-1;5008:19:1;;;5040:5;;4896:159;5087:34;5112:8;5106:4;5087:34;:::i;:::-;5157:6;5153:1;5149:6;5145:19;5136:7;5133:32;5130:58;;;5168:18;;:::i;:::-;5206:20;;4426:806;-1:-1:-1;;;4426:806:1:o;5237:140::-;5295:5;5324:47;5365:4;5355:8;5351:19;5345:4;5324:47;:::i;5382:168::-;5455:9;;;5486;;5503:15;;;5497:22;;5483:37;5473:71;;5524:18;;:::i;5555:251::-;5625:6;5678:2;5666:9;5657:7;5653:23;5649:32;5646:52;;;5694:1;5691;5684:12;5646:52;5726:9;5720:16;5745:31;5770:5;5745:31;:::i;10312:125::-;10377:9;;;10398:10;;;10395:36;;;10411:18;;:::i;11401:306::-;11489:6;11497;11505;11558:2;11546:9;11537:7;11533:23;11529:32;11526:52;;;11574:1;11571;11564:12;11526:52;11603:9;11597:16;11587:26;;11653:2;11642:9;11638:18;11632:25;11622:35;;11697:2;11686:9;11682:18;11676:25;11666:35;;11401:306;;;;;:::o;12119:217::-;12159:1;12185;12175:132;;12229:10;12224:3;12220:20;12217:1;12210:31;12264:4;12261:1;12254:15;12292:4;12289:1;12282:15;12175:132;-1:-1:-1;12321:9:1;;12119:217::o;12341:128::-;12408:9;;;12429:11;;;12426:37;;;12443:18;;:::i;12474:175::-;12542:10;12585;;;12573;;;12569:27;;12608:12;;;12605:38;;;12623:18;;:::i;:::-;12605:38;12474:175;;;;:::o;12786:127::-;12847:10;12842:3;12838:20;12835:1;12828:31;12878:4;12875:1;12868:15;12902:4;12899:1;12892:15;12918:980;13180:4;13228:3;13217:9;13213:19;13259:6;13248:9;13241:25;13285:2;13323:6;13318:2;13307:9;13303:18;13296:34;13366:3;13361:2;13350:9;13346:18;13339:31;13390:6;13425;13419:13;13456:6;13448;13441:22;13494:3;13483:9;13479:19;13472:26;;13533:2;13525:6;13521:15;13507:29;;13554:1;13564:195;13578:6;13575:1;13572:13;13564:195;;;13643:13;;-1:-1:-1;;;;;13639:39:1;13627:52;;13734:15;;;;13699:12;;;;13675:1;13593:9;13564:195;;;-1:-1:-1;;;;;;;13815:32:1;;;;13810:2;13795:18;;13788:60;-1:-1:-1;;;13879:3:1;13864:19;13857:35;13776:3;12918:980;-1:-1:-1;;;12918:980:1:o

Swarm Source

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