ETH Price: $3,390.98 (+1.54%)

Token

Spectre (SPCTR)
 

Overview

Max Total Supply

100,000,000,000 SPCTR

Holders

1,348 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH (+0.73%)

Onchain Market Cap

$26,939.00

Circulating Supply Market Cap

$24,994.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,000 SPCTR

Value
$0.00 ( ~0 Eth) [0.0000%]
0x58dd83896f5098c5d09306a1b0b1d0c27cca1f2e
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Spectre is a cryptocurrency that thrives on political chaos, empowering individuals to shape global narratives. Operating in the shadows, it turns unrest into opportunity and aims to return power to the people.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SPECTRE

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license, Audited

Contract Source Code (Solidity)Audit Report

/**
 *Submitted for verification at Etherscan.io on 2024-09-27
*/

// SPDX-License-Identifier: UNLICENSE

/**
    Website     : https://spectre.quest
    Telegram    : https://t.me/SpectreTheCoin
    X/Twitter   : https://x.com/SpectreTheCoin
*/

pragma solidity 0.8.27;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract SPECTRE is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;

    address payable private immutable _spectreWallet;
    address payable public _spectreMultiSegWallet;

    uint256 private constant _initialBuyTax = 22;
    uint256 private constant _initialSellTax = 22;
    uint256 public constant _finalBuyTax = 0;
    uint256 public _finalSellTax = 2;
    uint256 private constant _reduceBuyTaxAt = 40;
    uint256 private constant _reduceSellTaxAt = 40;
    uint256 private constant _preventSwapBefore = 40;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000000 * 10**_decimals;
    string private constant _name = unicode"Spectre";
    string private constant _symbol = unicode"SPCTR";
    uint256 public _maxTxAmount = (_tTotal * 1) / 100;
    uint256 public _maxWalletSize = (_tTotal * 1) / 100;
    uint256 public constant _maxTaxSwap = (_tTotal * 1) / 100;
    uint256 public constant _taxSwapThreshold = (_tTotal * 1) / 1000;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    event clearTokens(address tokenAddressToClear, uint256 Amount);
    event MaxTxAmountUpdated(uint256 _maxTxAmount);

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

    constructor() {
        _spectreWallet = payable(_msgSender());
        _spectreMultiSegWallet = payable(_msgSender());
        uint256 _forMarketingTeamCexFutureBurn = (_tTotal * 22) / 100;
        _balances[_spectreMultiSegWallet] = _forMarketingTeamCexFutureBurn;
        _balances[address(this)] = _tTotal - _forMarketingTeamCexFutureBurn;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_spectreWallet] = true;
        emit Transfer(
            address(0),
            _spectreMultiSegWallet,
            _forMarketingTeamCexFutureBurn
        );
        emit Transfer(
            address(0),
            address(this),
            _tTotal - _forMarketingTeamCexFutureBurn
        );
    }

    modifier onlySpectreWallet() {
        require(
            _msgSender() == _spectreWallet,
            "Unauthorized access: Caller is not the Spectre wallet."
        );
        _;
    }

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

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

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

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

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

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

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

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

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        if (
            from != owner() &&
            to != owner() &&
            from != _spectreMultiSegWallet &&
            to != _spectreMultiSegWallet
        ) {
            require(
                !bots[from] && !bots[to],
                "Transaction blocked: Address is flagged as a bot."
            );

            if (_buyCount == 0) {
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceBuyTaxAt)
                            ? _finalBuyTax
                            : _initialBuyTax
                    )
                    .div(100);
            }

            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to]
            ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(
                    balanceOf(to) + amount <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceBuyTaxAt)
                            ? _finalBuyTax
                            : _initialBuyTax
                    )
                    .div(100);

                if (_buyCount <= (_reduceBuyTaxAt + _reduceSellTaxAt)) {
                    _buyCount++;
                }
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceSellTaxAt)
                            ? _finalSellTax
                            : _initialSellTax
                    )
                    .div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                contractTokenBalance > _taxSwapThreshold &&
                _buyCount > _preventSwapBefore
            ) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                if (sellCount < 3) {
                    swapTokensForEth(
                        min(amount, min(contractTokenBalance, _maxTaxSwap))
                    );
                    uint256 contractETHBalance = address(this).balance;
                    if (contractETHBalance > 0) {
                        sendETHToMultiSeg(address(this).balance);
                    }
                    sellCount++;
                    lastSellBlock = block.number;
                }
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

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

    function removeSpectreLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToMultiSeg(uint256 amount) private {
        (bool success, ) = _spectreMultiSegWallet.call{value: amount}("");
        if (!success) {
            _spectreWallet.transfer(amount);
        }
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
        for (uint256 i = 0; i < notbot.length; i++) {
            bots[notbot[i]] = false;
        }
    }

    function isBot(address a) public view returns (bool) {
        return bots[a];
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
        swapEnabled = true;
        tradingOpen = true;
    }

    function reduceSpectreSellTaxFee(uint256 _newFee)
        external
        onlySpectreWallet
    {
        require(
            _newFee <= _finalSellTax,
            "Invalid fee: New fee must be lower or equal to current sell tax."
        );
        _finalSellTax = _newFee;
    }

    function sendTokensToSpectreMultiSeg(address tokenAddress)
        external
        onlySpectreWallet
        returns (bool success)
    {
        emit clearTokens(
            tokenAddress,
            IERC20(tokenAddress).balanceOf(address(this))
        );
        return
            IERC20(tokenAddress).transfer(
                _spectreMultiSegWallet,
                IERC20(tokenAddress).balanceOf(address(this))
            );
    }

    function swapTaxToETH() external onlySpectreWallet {
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(min(tokenBalance, _maxTaxSwap));
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToMultiSeg(ethBalance);
        }
    }

    function sendETHToSpectreMultiSeg() external onlySpectreWallet {
        require(address(this).balance > 0, "Token: no ETH to clear");
        uint256 contractETHBalance = address(this).balance;
        sendETHToMultiSeg(contractETHBalance);
    }

    function updateSpectreTaxWallet(address payable _newSpectreMultiSegWallet)
        external
        onlyOwner
    {
        require(
            _newSpectreMultiSegWallet != address(0),
            "Enter a valid wallet"
        );
        _spectreMultiSegWallet = payable(_newSpectreMultiSegWallet);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenAddressToClear","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"clearTokens","type":"event"},{"inputs":[],"name":"_finalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_finalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_spectreMultiSegWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceSpectreSellTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeSpectreLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendETHToSpectreMultiSeg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"sendTokensToSpectreMultiSeg","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTaxToETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newSpectreMultiSegWallet","type":"address"}],"name":"updateSpectreTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405260026006555f600755606461001b6009600a61035b565b61002a9064174876e800610370565b610035906001610370565b61003f9190610387565b60085560646100506009600a61035b565b61005f9064174876e800610370565b61006a906001610370565b6100749190610387565b600955600b805461ffff60a81b191690555f600c819055600d55348015610099575f5ffd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350336080819052600580546001600160a01b03191690911790555f60646101026009600a61035b565b6101119064174876e800610370565b61011c906016610370565b6101269190610387565b6005546001600160a01b03165f9081526001602052604090208190559050806101516009600a61035b565b6101609064174876e800610370565b61016a91906103a6565b305f9081526001602081905260408220929092556003906101925f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260039093528183208054851660019081179091556080518216845282842080549095161790935560055490519216915f51602061256e5f395f51905f529061020d9085815260200190565b60405180910390a3305f5f51602061256e5f395f51905f52836102326009600a61035b565b6102419064174876e800610370565b61024b91906103a6565b60405190815260200160405180910390a3506103b9565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156102b15780850481111561029557610295610262565b60018416156102a357908102905b60019390931c92800261027a565b935093915050565b5f826102c757506001610355565b816102d357505f610355565b81600181146102e957600281146102f35761030f565b6001915050610355565b60ff84111561030457610304610262565b50506001821b610355565b5060208310610133831016604e8410600b8410161715610332575081810a610355565b61033e5f198484610276565b805f190482111561035157610351610262565b0290505b92915050565b5f61036960ff8416836102b9565b9392505050565b808202811582820484141761035557610355610262565b5f826103a157634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561035557610355610262565b6080516121816103ed5f395f818161056b0152818161076901528181610a7901528181610feb01526113be01526121815ff3fe6080604052600436106101b2575f3560e01c8063715018a6116100e7578063b803393711610087578063c9567bf911610062578063c9567bf9146104bc578063d34628cc146104d0578063dd62ed3e146104ef578063e80d0f9814610533575f5ffd5b8063b803393714610476578063baeb7a7d14610495578063bf474bed146104a8575f5ffd5b80638f9a55c0116100c25780638f9a55c01461040157806395d89b4114610416578063a9059cbb14610443578063a9d2f90414610462575f5ffd5b8063715018a6146103bc5780637d1db4a5146103d05780638da5cb5b146103e5575f5ffd5b806331c2d847116101525780633ef947211161012d5780633ef94721146103285780634516f8791461033d57806366f915b91461035157806370a0823114610388575f5ffd5b806331c2d847146102b357806332b34098146102d25780633bbac579146102f1575f5ffd5b80630faee56f1161018d5780630faee56f1461024357806318160ddd1461026557806323b872dd14610279578063313ce56714610298575f5ffd5b806306fdde03146101bd578063095ea7b3146101fe5780630e9a1e021461022d575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506040805180820190915260078152665370656374726560c81b60208201525b6040516101f59190611c1b565b60405180910390f35b348015610209575f5ffd5b5061021d610218366004611c6f565b610552565b60405190151581526020016101f5565b348015610238575f5ffd5b50610241610568565b005b34801561024e575f5ffd5b50610257610625565b6040519081526020016101f5565b348015610270575f5ffd5b5061025761065a565b348015610284575f5ffd5b5061021d610293366004611c99565b61067b565b3480156102a3575f5ffd5b50604051600981526020016101f5565b3480156102be575f5ffd5b506102416102cd366004611ceb565b6106e2565b3480156102dd575f5ffd5b5061021d6102ec366004611db6565b610765565b3480156102fc575f5ffd5b5061021d61030b366004611db6565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610333575f5ffd5b5061025760065481565b348015610348575f5ffd5b50610241610943565b34801561035c575f5ffd5b50600554610370906001600160a01b031681565b6040516001600160a01b0390911681526020016101f5565b348015610393575f5ffd5b506102576103a2366004611db6565b6001600160a01b03165f9081526001602052604090205490565b3480156103c7575f5ffd5b506102416109f9565b3480156103db575f5ffd5b5061025760085481565b3480156103f0575f5ffd5b505f546001600160a01b0316610370565b34801561040c575f5ffd5b5061025760095481565b348015610421575f5ffd5b5060408051808201909152600581526429a821aa2960d91b60208201526101e8565b34801561044e575f5ffd5b5061021d61045d366004611c6f565b610a6a565b34801561046d575f5ffd5b50610241610a76565b348015610481575f5ffd5b50610241610490366004611db6565b610b13565b3480156104a0575f5ffd5b506102575f81565b3480156104b3575f5ffd5b50610257610bab565b3480156104c7575f5ffd5b50610241610bba565b3480156104db575f5ffd5b506102416104ea366004611ceb565b610f64565b3480156104fa575f5ffd5b50610257610509366004611dd1565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561053e575f5ffd5b5061024161054d366004611e08565b610fe8565b5f61055e3384846110af565b5060015b92915050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146105b95760405162461bcd60e51b81526004016105b090611e1f565b60405180910390fd5b305f9081526001602052604090205480156106115761061161060c8260646105e36009600a611f6c565b6105f29064174876e800611f7a565b6105fd906001611f7a565b6106079190611f91565b6111d2565b6111e9565b4780156106215761062181611359565b5050565b60646106336009600a611f6c565b6106429064174876e800611f7a565b61064d906001611f7a565b6106579190611f91565b81565b5f6106676009600a611f6c565b6106769064174876e800611f7a565b905090565b5f610687848484611409565b6106d884336106d385604051806060016040528060288152602001612124602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611a59565b6110af565b5060019392505050565b5f546001600160a01b0316331461070b5760405162461bcd60e51b81526004016105b090611fb0565b5f5b8151811015610621575f60045f84848151811061072c5761072c611fe5565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161070d565b5f337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146107ae5760405162461bcd60e51b81526004016105b090611e1f565b6040516370a0823160e01b81523060048201527fcc64f4b58700d508cbef022437a263aa8492b515d3b21b026f9449727df3fe149083906001600160a01b038216906370a0823190602401602060405180830381865afa158015610814573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108389190611ff9565b604080516001600160a01b03909316835260208301919091520160405180910390a16005546040516370a0823160e01b81523060048201526001600160a01b038481169263a9059cbb9291169083906370a0823190602401602060405180830381865afa1580156108ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cf9190611ff9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610917573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093b9190612010565b90505b919050565b5f546001600160a01b0316331461096c5760405162461bcd60e51b81526004016105b090611fb0565b6109786009600a611f6c565b6109879064174876e800611f7a565b6008556109966009600a611f6c565b6109a59064174876e800611f7a565b60099081557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf906109d790600a611f6c565b6109e69064174876e800611f7a565b60405190815260200160405180910390a1565b5f546001600160a01b03163314610a225760405162461bcd60e51b81526004016105b090611fb0565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f61055e338484611409565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610abe5760405162461bcd60e51b81526004016105b090611e1f565b5f4711610b065760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b60448201526064016105b0565b47610b1081611359565b50565b5f546001600160a01b03163314610b3c5760405162461bcd60e51b81526004016105b090611fb0565b6001600160a01b038116610b895760405162461bcd60e51b8152602060048201526014602482015273115b9d195c8818481d985b1a59081dd85b1b195d60621b60448201526064016105b0565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6103e86106336009600a611f6c565b5f546001600160a01b03163314610be35760405162461bcd60e51b81526004016105b090611fb0565b600b54600160a01b900460ff1615610c3d5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105b0565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081178255610c8791309190610c7890600990611f6c565b6106d39064174876e800611f7a565b600a5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfb919061202f565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d5a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7e919061202f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610dc8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dec919061202f565b600b80546001600160a01b039283166001600160a01b0319909116179055600a541663f305d7194730610e33816001600160a01b03165f9081526001602052604090205490565b5f5f610e465f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610eac573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ed1919061204a565b5050600b54600a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a9190612010565b50600b805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610f8d5760405162461bcd60e51b81526004016105b090611fb0565b5f5b815181101561062157600160045f848481518110610faf57610faf611fe5565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610f8f565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146110305760405162461bcd60e51b81526004016105b090611e1f565b6006548111156110aa576040805162461bcd60e51b81526020600482015260248101919091527f496e76616c6964206665653a204e657720666565206d757374206265206c6f7760448201527f6572206f7220657175616c20746f2063757272656e742073656c6c207461782e60648201526084016105b0565b600655565b6001600160a01b0383166111115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b0565b6001600160a01b0382166111725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b0565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8183116111e057826111e2565b815b9392505050565b600b805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061122f5761122f611fe5565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611286573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112aa919061202f565b816001815181106112bd576112bd611fe5565b6001600160a01b039283166020918202929092010152600a546112e391309116846110af565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061131b9085905f90869030904290600401612075565b5f604051808303815f87803b158015611332575f5ffd5b505af1158015611344573d5f5f3e3d5ffd5b5050600b805460ff60a81b1916905550505050565b6005546040515f916001600160a01b03169083908381818185875af1925050503d805f81146113a3576040519150601f19603f3d011682016040523d82523d5f602084013e6113a8565b606091505b5050905080610621576040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083156108fc029084905f818181858888f19350505050158015611404573d5f5f3e3d5ffd5b505050565b6001600160a01b03831661146d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b0565b6001600160a01b0382166114cf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b0565b5f81116115305760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105b0565b5f80546001600160a01b0385811691161480159061155b57505f546001600160a01b03848116911614155b801561157557506005546001600160a01b03858116911614155b801561158f57506005546001600160a01b03848116911614155b1561191c576001600160a01b0384165f9081526004602052604090205460ff161580156115d457506001600160a01b0383165f9081526004602052604090205460ff16155b61163a5760405162461bcd60e51b815260206004820152603160248201527f5472616e73616374696f6e20626c6f636b65643a204164647265737320697320604482015270333630b3b3b2b21030b99030903137ba1760791b60648201526084016105b0565b6007545f0361166e5761166b606461166560286007541161165c57601661165e565b5f5b8590611a91565b90611b0f565b90505b600b546001600160a01b0385811691161480156116995750600a546001600160a01b03848116911614155b80156116bd57506001600160a01b0383165f9081526003602052604090205460ff16155b156117d1576008548211156117145760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016105b0565b60095482611736856001600160a01b03165f9081526001602052604090205490565b61174091906120e5565b111561178e5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016105b0565b6117a7606461166560286007541161165c57601661165e565b90506117b46028806120e5565b600754116117d15760078054905f6117cb836120f8565b91905055505b600b546001600160a01b0384811691161480156117f757506001600160a01b0384163014155b156118225761181f606461166560286007541161181557601661165e565b6006548590611a91565b90505b305f90815260016020526040902054600b54600160a81b900460ff161580156118585750600b546001600160a01b038581169116145b801561186d5750600b54600160b01b900460ff165b80156118aa57506103e86118836009600a611f6c565b6118929064174876e800611f7a565b61189d906001611f7a565b6118a79190611f91565b81115b80156118b857506028600754115b1561191a57600d544311156118cc575f600c555b6003600c54101561191a576118f061060c846106078460646105e36009600a611f6c565b4780156119005761190047611359565b600c8054905f61190f836120f8565b909155505043600d55505b505b801561199457305f9081526001602052604090205461193b9082611b50565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061198b9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546119b69083611bae565b6001600160a01b0385165f908152600160205260409020556119f96119db8383611bae565b6001600160a01b0385165f9081526001602052604090205490611b50565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611a428585611bae565b60405190815260200160405180910390a350505050565b5f8184841115611a7c5760405162461bcd60e51b81526004016105b09190611c1b565b505f611a888486612110565b95945050505050565b5f825f03611aa057505f610562565b5f611aab8385611f7a565b905082611ab88583611f91565b146111e25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105b0565b5f6111e283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bef565b5f80611b5c83856120e5565b9050838110156111e25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105b0565b5f6111e283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a59565b5f8183611c0f5760405162461bcd60e51b81526004016105b09190611c1b565b505f611a888486611f91565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610b10575f5ffd5b803561093e81611c50565b5f5f60408385031215611c80575f5ffd5b8235611c8b81611c50565b946020939093013593505050565b5f5f5f60608486031215611cab575f5ffd5b8335611cb681611c50565b92506020840135611cc681611c50565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611cfb575f5ffd5b813567ffffffffffffffff811115611d11575f5ffd5b8201601f81018413611d21575f5ffd5b803567ffffffffffffffff811115611d3b57611d3b611cd7565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611d6857611d68611cd7565b604052918252602081840181019290810187841115611d85575f5ffd5b6020850194505b83851015611dab57611d9d85611c64565b815260209485019401611d8c565b509695505050505050565b5f60208284031215611dc6575f5ffd5b81356111e281611c50565b5f5f60408385031215611de2575f5ffd5b8235611ded81611c50565b91506020830135611dfd81611c50565b809150509250929050565b5f60208284031215611e18575f5ffd5b5035919050565b60208082526036908201527f556e617574686f72697a6564206163636573733a2043616c6c6572206973206e60408201527537ba103a34329029b832b1ba3932903bb0b63632ba1760511b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611ec457808504811115611ea857611ea8611e75565b6001841615611eb657908102905b60019390931c928002611e8d565b935093915050565b5f82611eda57506001610562565b81611ee657505f610562565b8160018114611efc5760028114611f0657611f22565b6001915050610562565b60ff841115611f1757611f17611e75565b50506001821b610562565b5060208310610133831016604e8410600b8410161715611f45575081810a610562565b611f515f198484611e89565b805f1904821115611f6457611f64611e75565b029392505050565b5f6111e260ff841683611ecc565b808202811582820484141761056257610562611e75565b5f82611fab57634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612009575f5ffd5b5051919050565b5f60208284031215612020575f5ffd5b815180151581146111e2575f5ffd5b5f6020828403121561203f575f5ffd5b81516111e281611c50565b5f5f5f6060848603121561205c575f5ffd5b5050815160208301516040909301519094929350919050565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156120c55783516001600160a01b031683526020938401939092019160010161209e565b50506001600160a01b039590951660608401525050608001529392505050565b8082018082111561056257610562611e75565b5f6001820161210957612109611e75565b5060010190565b8181038181111561056257610562611e7556fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bc7b07ac82e098a00481f41c78126613ddc04e0c2921656b4b34c380e7b05cdd64736f6c634300081b0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106101b2575f3560e01c8063715018a6116100e7578063b803393711610087578063c9567bf911610062578063c9567bf9146104bc578063d34628cc146104d0578063dd62ed3e146104ef578063e80d0f9814610533575f5ffd5b8063b803393714610476578063baeb7a7d14610495578063bf474bed146104a8575f5ffd5b80638f9a55c0116100c25780638f9a55c01461040157806395d89b4114610416578063a9059cbb14610443578063a9d2f90414610462575f5ffd5b8063715018a6146103bc5780637d1db4a5146103d05780638da5cb5b146103e5575f5ffd5b806331c2d847116101525780633ef947211161012d5780633ef94721146103285780634516f8791461033d57806366f915b91461035157806370a0823114610388575f5ffd5b806331c2d847146102b357806332b34098146102d25780633bbac579146102f1575f5ffd5b80630faee56f1161018d5780630faee56f1461024357806318160ddd1461026557806323b872dd14610279578063313ce56714610298575f5ffd5b806306fdde03146101bd578063095ea7b3146101fe5780630e9a1e021461022d575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506040805180820190915260078152665370656374726560c81b60208201525b6040516101f59190611c1b565b60405180910390f35b348015610209575f5ffd5b5061021d610218366004611c6f565b610552565b60405190151581526020016101f5565b348015610238575f5ffd5b50610241610568565b005b34801561024e575f5ffd5b50610257610625565b6040519081526020016101f5565b348015610270575f5ffd5b5061025761065a565b348015610284575f5ffd5b5061021d610293366004611c99565b61067b565b3480156102a3575f5ffd5b50604051600981526020016101f5565b3480156102be575f5ffd5b506102416102cd366004611ceb565b6106e2565b3480156102dd575f5ffd5b5061021d6102ec366004611db6565b610765565b3480156102fc575f5ffd5b5061021d61030b366004611db6565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610333575f5ffd5b5061025760065481565b348015610348575f5ffd5b50610241610943565b34801561035c575f5ffd5b50600554610370906001600160a01b031681565b6040516001600160a01b0390911681526020016101f5565b348015610393575f5ffd5b506102576103a2366004611db6565b6001600160a01b03165f9081526001602052604090205490565b3480156103c7575f5ffd5b506102416109f9565b3480156103db575f5ffd5b5061025760085481565b3480156103f0575f5ffd5b505f546001600160a01b0316610370565b34801561040c575f5ffd5b5061025760095481565b348015610421575f5ffd5b5060408051808201909152600581526429a821aa2960d91b60208201526101e8565b34801561044e575f5ffd5b5061021d61045d366004611c6f565b610a6a565b34801561046d575f5ffd5b50610241610a76565b348015610481575f5ffd5b50610241610490366004611db6565b610b13565b3480156104a0575f5ffd5b506102575f81565b3480156104b3575f5ffd5b50610257610bab565b3480156104c7575f5ffd5b50610241610bba565b3480156104db575f5ffd5b506102416104ea366004611ceb565b610f64565b3480156104fa575f5ffd5b50610257610509366004611dd1565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561053e575f5ffd5b5061024161054d366004611e08565b610fe8565b5f61055e3384846110af565b5060015b92915050565b337f0000000000000000000000001fd1a7b908d271a6683e8ef19a2c602604a9fac16001600160a01b0316146105b95760405162461bcd60e51b81526004016105b090611e1f565b60405180910390fd5b305f9081526001602052604090205480156106115761061161060c8260646105e36009600a611f6c565b6105f29064174876e800611f7a565b6105fd906001611f7a565b6106079190611f91565b6111d2565b6111e9565b4780156106215761062181611359565b5050565b60646106336009600a611f6c565b6106429064174876e800611f7a565b61064d906001611f7a565b6106579190611f91565b81565b5f6106676009600a611f6c565b6106769064174876e800611f7a565b905090565b5f610687848484611409565b6106d884336106d385604051806060016040528060288152602001612124602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611a59565b6110af565b5060019392505050565b5f546001600160a01b0316331461070b5760405162461bcd60e51b81526004016105b090611fb0565b5f5b8151811015610621575f60045f84848151811061072c5761072c611fe5565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161070d565b5f337f0000000000000000000000001fd1a7b908d271a6683e8ef19a2c602604a9fac16001600160a01b0316146107ae5760405162461bcd60e51b81526004016105b090611e1f565b6040516370a0823160e01b81523060048201527fcc64f4b58700d508cbef022437a263aa8492b515d3b21b026f9449727df3fe149083906001600160a01b038216906370a0823190602401602060405180830381865afa158015610814573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108389190611ff9565b604080516001600160a01b03909316835260208301919091520160405180910390a16005546040516370a0823160e01b81523060048201526001600160a01b038481169263a9059cbb9291169083906370a0823190602401602060405180830381865afa1580156108ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cf9190611ff9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610917573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093b9190612010565b90505b919050565b5f546001600160a01b0316331461096c5760405162461bcd60e51b81526004016105b090611fb0565b6109786009600a611f6c565b6109879064174876e800611f7a565b6008556109966009600a611f6c565b6109a59064174876e800611f7a565b60099081557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf906109d790600a611f6c565b6109e69064174876e800611f7a565b60405190815260200160405180910390a1565b5f546001600160a01b03163314610a225760405162461bcd60e51b81526004016105b090611fb0565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f61055e338484611409565b337f0000000000000000000000001fd1a7b908d271a6683e8ef19a2c602604a9fac16001600160a01b031614610abe5760405162461bcd60e51b81526004016105b090611e1f565b5f4711610b065760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b60448201526064016105b0565b47610b1081611359565b50565b5f546001600160a01b03163314610b3c5760405162461bcd60e51b81526004016105b090611fb0565b6001600160a01b038116610b895760405162461bcd60e51b8152602060048201526014602482015273115b9d195c8818481d985b1a59081dd85b1b195d60621b60448201526064016105b0565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6103e86106336009600a611f6c565b5f546001600160a01b03163314610be35760405162461bcd60e51b81526004016105b090611fb0565b600b54600160a01b900460ff1615610c3d5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105b0565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081178255610c8791309190610c7890600990611f6c565b6106d39064174876e800611f7a565b600a5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfb919061202f565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d5a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7e919061202f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610dc8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dec919061202f565b600b80546001600160a01b039283166001600160a01b0319909116179055600a541663f305d7194730610e33816001600160a01b03165f9081526001602052604090205490565b5f5f610e465f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610eac573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ed1919061204a565b5050600b54600a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a9190612010565b50600b805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610f8d5760405162461bcd60e51b81526004016105b090611fb0565b5f5b815181101561062157600160045f848481518110610faf57610faf611fe5565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610f8f565b337f0000000000000000000000001fd1a7b908d271a6683e8ef19a2c602604a9fac16001600160a01b0316146110305760405162461bcd60e51b81526004016105b090611e1f565b6006548111156110aa576040805162461bcd60e51b81526020600482015260248101919091527f496e76616c6964206665653a204e657720666565206d757374206265206c6f7760448201527f6572206f7220657175616c20746f2063757272656e742073656c6c207461782e60648201526084016105b0565b600655565b6001600160a01b0383166111115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b0565b6001600160a01b0382166111725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b0565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8183116111e057826111e2565b815b9392505050565b600b805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061122f5761122f611fe5565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611286573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112aa919061202f565b816001815181106112bd576112bd611fe5565b6001600160a01b039283166020918202929092010152600a546112e391309116846110af565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061131b9085905f90869030904290600401612075565b5f604051808303815f87803b158015611332575f5ffd5b505af1158015611344573d5f5f3e3d5ffd5b5050600b805460ff60a81b1916905550505050565b6005546040515f916001600160a01b03169083908381818185875af1925050503d805f81146113a3576040519150601f19603f3d011682016040523d82523d5f602084013e6113a8565b606091505b5050905080610621576040516001600160a01b037f0000000000000000000000001fd1a7b908d271a6683e8ef19a2c602604a9fac1169083156108fc029084905f818181858888f19350505050158015611404573d5f5f3e3d5ffd5b505050565b6001600160a01b03831661146d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b0565b6001600160a01b0382166114cf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b0565b5f81116115305760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105b0565b5f80546001600160a01b0385811691161480159061155b57505f546001600160a01b03848116911614155b801561157557506005546001600160a01b03858116911614155b801561158f57506005546001600160a01b03848116911614155b1561191c576001600160a01b0384165f9081526004602052604090205460ff161580156115d457506001600160a01b0383165f9081526004602052604090205460ff16155b61163a5760405162461bcd60e51b815260206004820152603160248201527f5472616e73616374696f6e20626c6f636b65643a204164647265737320697320604482015270333630b3b3b2b21030b99030903137ba1760791b60648201526084016105b0565b6007545f0361166e5761166b606461166560286007541161165c57601661165e565b5f5b8590611a91565b90611b0f565b90505b600b546001600160a01b0385811691161480156116995750600a546001600160a01b03848116911614155b80156116bd57506001600160a01b0383165f9081526003602052604090205460ff16155b156117d1576008548211156117145760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016105b0565b60095482611736856001600160a01b03165f9081526001602052604090205490565b61174091906120e5565b111561178e5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016105b0565b6117a7606461166560286007541161165c57601661165e565b90506117b46028806120e5565b600754116117d15760078054905f6117cb836120f8565b91905055505b600b546001600160a01b0384811691161480156117f757506001600160a01b0384163014155b156118225761181f606461166560286007541161181557601661165e565b6006548590611a91565b90505b305f90815260016020526040902054600b54600160a81b900460ff161580156118585750600b546001600160a01b038581169116145b801561186d5750600b54600160b01b900460ff165b80156118aa57506103e86118836009600a611f6c565b6118929064174876e800611f7a565b61189d906001611f7a565b6118a79190611f91565b81115b80156118b857506028600754115b1561191a57600d544311156118cc575f600c555b6003600c54101561191a576118f061060c846106078460646105e36009600a611f6c565b4780156119005761190047611359565b600c8054905f61190f836120f8565b909155505043600d55505b505b801561199457305f9081526001602052604090205461193b9082611b50565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061198b9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546119b69083611bae565b6001600160a01b0385165f908152600160205260409020556119f96119db8383611bae565b6001600160a01b0385165f9081526001602052604090205490611b50565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611a428585611bae565b60405190815260200160405180910390a350505050565b5f8184841115611a7c5760405162461bcd60e51b81526004016105b09190611c1b565b505f611a888486612110565b95945050505050565b5f825f03611aa057505f610562565b5f611aab8385611f7a565b905082611ab88583611f91565b146111e25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105b0565b5f6111e283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bef565b5f80611b5c83856120e5565b9050838110156111e25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105b0565b5f6111e283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a59565b5f8183611c0f5760405162461bcd60e51b81526004016105b09190611c1b565b505f611a888486611f91565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610b10575f5ffd5b803561093e81611c50565b5f5f60408385031215611c80575f5ffd5b8235611c8b81611c50565b946020939093013593505050565b5f5f5f60608486031215611cab575f5ffd5b8335611cb681611c50565b92506020840135611cc681611c50565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611cfb575f5ffd5b813567ffffffffffffffff811115611d11575f5ffd5b8201601f81018413611d21575f5ffd5b803567ffffffffffffffff811115611d3b57611d3b611cd7565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611d6857611d68611cd7565b604052918252602081840181019290810187841115611d85575f5ffd5b6020850194505b83851015611dab57611d9d85611c64565b815260209485019401611d8c565b509695505050505050565b5f60208284031215611dc6575f5ffd5b81356111e281611c50565b5f5f60408385031215611de2575f5ffd5b8235611ded81611c50565b91506020830135611dfd81611c50565b809150509250929050565b5f60208284031215611e18575f5ffd5b5035919050565b60208082526036908201527f556e617574686f72697a6564206163636573733a2043616c6c6572206973206e60408201527537ba103a34329029b832b1ba3932903bb0b63632ba1760511b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611ec457808504811115611ea857611ea8611e75565b6001841615611eb657908102905b60019390931c928002611e8d565b935093915050565b5f82611eda57506001610562565b81611ee657505f610562565b8160018114611efc5760028114611f0657611f22565b6001915050610562565b60ff841115611f1757611f17611e75565b50506001821b610562565b5060208310610133831016604e8410600b8410161715611f45575081810a610562565b611f515f198484611e89565b805f1904821115611f6457611f64611e75565b029392505050565b5f6111e260ff841683611ecc565b808202811582820484141761056257610562611e75565b5f82611fab57634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612009575f5ffd5b5051919050565b5f60208284031215612020575f5ffd5b815180151581146111e2575f5ffd5b5f6020828403121561203f575f5ffd5b81516111e281611c50565b5f5f5f6060848603121561205c575f5ffd5b5050815160208301516040909301519094929350919050565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156120c55783516001600160a01b031683526020938401939092019160010161209e565b50506001600160a01b039590951660608401525050608001529392505050565b8082018082111561056257610562611e75565b5f6001820161210957612109611e75565b5060010190565b8181038181111561056257610562611e7556fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bc7b07ac82e098a00481f41c78126613ddc04e0c2921656b4b34c380e7b05cdd64736f6c634300081b0033

Deployed Bytecode Sourcemap

3970:12286:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6746:83;;;;;;;;;;-1:-1:-1;6816:5:0;;;;;;;;;;;;-1:-1:-1;;;6816:5:0;;;;6746:83;;;;;;;:::i;:::-;;;;;;;;7652:193;;;;;;;;;;-1:-1:-1;7652:193:0;;;;;:::i;:::-;;:::i;:::-;;;1249:14:1;;1242:22;1224:41;;1212:2;1197:18;7652:193:0;1084:187:1;15271:363:0;;;;;;;;;;;;;:::i;:::-;;5118:57;;;;;;;;;;;;;:::i;:::-;;;1422:25:1;;;1410:2;1395:18;5118:57:0;1276:177:1;7023:95:0;;;;;;;;;;;;;:::i;7853:446::-;;;;;;;;;;-1:-1:-1;7853:446:0;;;;;:::i;:::-;;:::i;6932:83::-;;;;;;;;;;-1:-1:-1;6932:83:0;;4816:1;2113:36:1;;2101:2;2086:18;6932:83:0;1971:184:1;13364:171:0;;;;;;;;;;-1:-1:-1;13364:171:0;;;;;:::i;:::-;;:::i;14809:454::-;;;;;;;;;;-1:-1:-1;14809:454:0;;;;;:::i;:::-;;:::i;13543:86::-;;;;;;;;;;-1:-1:-1;13543:86:0;;;;;:::i;:::-;-1:-1:-1;;;;;13614:7:0;13590:4;13614:7;;;:4;:7;;;;;;;;;13543:86;4544:32;;;;;;;;;;;;;;;;12787:169;;;;;;;;;;;;;:::i;4340:45::-;;;;;;;;;;-1:-1:-1;4340:45:0;;;;-1:-1:-1;;;;;4340:45:0;;;;;;-1:-1:-1;;;;;3856:32:1;;;3838:51;;3826:2;3811:18;4340:45:0;3676:219:1;7126:119:0;;;;;;;;;;-1:-1:-1;7126:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7219:18:0;7192:7;7219:18;;;:9;:18;;;;;;;7126:119;2922:148;;;;;;;;;;;;;:::i;5004:49::-;;;;;;;;;;;;;;;;2708:79;;;;;;;;;;-1:-1:-1;2746:7:0;2773:6;-1:-1:-1;;;;;2773:6:0;2708:79;;5060:51;;;;;;;;;;;;;;;;6837:87;;;;;;;;;;-1:-1:-1;6909:7:0;;;;;;;;;;;;-1:-1:-1;;;6909:7:0;;;;6837:87;;7253:199;;;;;;;;;;-1:-1:-1;7253:199:0;;;;;:::i;:::-;;:::i;15642:251::-;;;;;;;;;;;;;:::i;15901:315::-;;;;;;;;;;-1:-1:-1;15901:315:0;;;;;:::i;:::-;;:::i;4497:40::-;;;;;;;;;;;;4536:1;4497:40;;5182:64;;;;;;;;;;;;;:::i;13637:865::-;;;;;;;;;;;;;:::i;13189:167::-;;;;;;;;;;-1:-1:-1;13189:167:0;;;;;:::i;:::-;;:::i;7460:184::-;;;;;;;;;;-1:-1:-1;7460:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7609:18:0;;;7577:7;7609:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7460:184;14510:291;;;;;;;;;;-1:-1:-1;14510:291:0;;;;;:::i;:::-;;:::i;7652:193::-;7754:4;7776:39;328:10;7799:7;7808:6;7776:8;:39::i;:::-;-1:-1:-1;7833:4:0;7652:193;;;;;:::o;15271:363::-;328:10;6622:14;-1:-1:-1;;;;;6606:30:0;;6584:134;;;;-1:-1:-1;;;6584:134:0;;;;;;;:::i;:::-;;;;;;;;;15374:4:::1;15333:20;7219:18:::0;;;:9;:18;;;;;;15395:16;;15391:97:::1;;15428:48;15445:30;15449:12:::0;5172:3:::1;4874:13;4816:1;4874:2;:13;:::i;:::-;4859:28;::::0;:12:::1;:28;:::i;:::-;5157:11;::::0;5167:1:::1;5157:11;:::i;:::-;5156:19;;;;:::i;:::-;15445:3;:30::i;:::-;15428:16;:48::i;:::-;15519:21;15555:14:::0;;15551:76:::1;;15586:29;15604:10;15586:17;:29::i;:::-;15322:312;;15271:363::o:0;5118:57::-;5172:3;4874:13;4816:1;4874:2;:13;:::i;:::-;4859:28;;:12;:28;:::i;:::-;5157:11;;5167:1;5157:11;:::i;:::-;5156:19;;;;:::i;:::-;5118:57;:::o;7023:95::-;7076:7;4874:13;4816:1;4874:2;:13;:::i;:::-;4859:28;;:12;:28;:::i;:::-;7096:14;;7023:95;:::o;7853:446::-;7985:4;8002:36;8012:6;8020:9;8031:6;8002:9;:36::i;:::-;8049:220;8072:6;328:10;8120:138;8176:6;8120:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8120:19:0;;;;;;:11;:19;;;;;;;;328:10;8120:33;;;;;;;;;;:37;:138::i;:::-;8049:8;:220::i;:::-;-1:-1:-1;8287:4:0;7853:446;;;;;:::o;13364:171::-;2835:6;;-1:-1:-1;;;;;2835:6:0;328:10;2835:22;2827:67;;;;-1:-1:-1;;;2827:67:0;;;;;;;:::i;:::-;13439:9:::1;13434:94;13458:6;:13;13454:1;:17;13434:94;;;13511:5;13493:4;:15;13498:6;13505:1;13498:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13493:15:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13493:15:0;:23;;-1:-1:-1;;13493:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;13473:3:0::1;13434:94;;14809:454:::0;14931:12;328:10;6622:14;-1:-1:-1;;;;;6606:30:0;;6584:134;;;;-1:-1:-1;;;6584:134:0;;;;;;;:::i;:::-;15019:45:::1;::::0;-1:-1:-1;;;15019:45:0;;15058:4:::1;15019:45;::::0;::::1;3838:51:1::0;14966:109:0::1;::::0;14992:12;;-1:-1:-1;;;;;15019:30:0;::::1;::::0;::::1;::::0;3811:18:1;;15019:45:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14966:109;::::0;;-1:-1:-1;;;;;8294:32:1;;;8276:51;;8358:2;8343:18;;8336:34;;;;8249:18;14966:109:0::1;;;;;;;15154:22;::::0;15195:45:::1;::::0;-1:-1:-1;;;15195:45:0;;15234:4:::1;15195:45;::::0;::::1;3838:51:1::0;-1:-1:-1;;;;;15106:29:0;;::::1;::::0;::::1;::::0;15154:22;::::1;::::0;15106:29;;15195:30:::1;::::0;3811:18:1;;15195:45:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15106:149;::::0;-1:-1:-1;;;;;;15106:149:0::1;::::0;;;;;;-1:-1:-1;;;;;8294:32:1;;;15106:149:0::1;::::0;::::1;8276:51:1::0;8343:18;;;8336:34;8249:18;;15106:149:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15086:169;;6729:1;14809:454:::0;;;:::o;12787:169::-;2835:6;;-1:-1:-1;;;;;2835:6:0;328:10;2835:22;2827:67;;;;-1:-1:-1;;;2827:67:0;;;;;;;:::i;:::-;4874:13:::1;4816:1;4874:2;:13;:::i;:::-;4859:28;::::0;:12:::1;:28;:::i;:::-;12848:12;:22:::0;4874:13:::1;4816:1;4874:2;:13;:::i;:::-;4859:28;::::0;:12:::1;:28;:::i;:::-;12881:14;:24:::0;;;12921:27:::1;::::0;4874:13:::1;::::0;:2:::1;:13;:::i;:::-;4859:28;::::0;:12:::1;:28;:::i;:::-;12921:27;::::0;1422:25:1;;;1410:2;1395:18;12921:27:0::1;;;;;;;12787:169::o:0;2922:148::-;2835:6;;-1:-1:-1;;;;;2835:6:0;328:10;2835:22;2827:67;;;;-1:-1:-1;;;2827:67:0;;;;;;;:::i;:::-;3029:1:::1;3013:6:::0;;2992:40:::1;::::0;-1:-1:-1;;;;;3013:6:0;;::::1;::::0;2992:40:::1;::::0;3029:1;;2992:40:::1;3060:1;3043:19:::0;;-1:-1:-1;;;;;;3043:19:0::1;::::0;;2922:148::o;7253:199::-;7358:4;7380:42;328:10;7404:9;7415:6;7380:9;:42::i;15642:251::-;328:10;6622:14;-1:-1:-1;;;;;6606:30:0;;6584:134;;;;-1:-1:-1;;;6584:134:0;;;;;;;:::i;:::-;15748:1:::1;15724:21;:25;15716:60;;;::::0;-1:-1:-1;;;15716:60:0;;9152:2:1;15716:60:0::1;::::0;::::1;9134:21:1::0;9191:2;9171:18;;;9164:30;-1:-1:-1;;;9210:18:1;;;9203:52;9272:18;;15716:60:0::1;8950:346:1::0;15716:60:0::1;15816:21;15848:37;15816:21:::0;15848:17:::1;:37::i;:::-;15705:188;15642:251::o:0;15901:315::-;2835:6;;-1:-1:-1;;;;;2835:6:0;328:10;2835:22;2827:67;;;;-1:-1:-1;;;2827:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16051:39:0;::::1;16029:109;;;::::0;-1:-1:-1;;;16029:109:0;;9503:2:1;16029:109:0::1;::::0;::::1;9485:21:1::0;9542:2;9522:18;;;9515:30;-1:-1:-1;;;9561:18:1;;;9554:50;9621:18;;16029:109:0::1;9301:344:1::0;16029:109:0::1;16149:22;:59:::0;;-1:-1:-1;;;;;;16149:59:0::1;-1:-1:-1::0;;;;;16149:59:0;;;::::1;::::0;;;::::1;::::0;;15901:315::o;5182:64::-;5242:4;4874:13;4816:1;4874:2;:13;:::i;13637:865::-;2835:6;;-1:-1:-1;;;;;2835:6:0;328:10;2835:22;2827:67;;;;-1:-1:-1;;;2827:67:0;;;;;;;:::i;:::-;13699:11:::1;::::0;-1:-1:-1;;;13699:11:0;::::1;;;13698:12;13690:48;;;::::0;-1:-1:-1;;;13690:48:0;;9852:2:1;13690:48:0::1;::::0;::::1;9834:21:1::0;9891:2;9871:18;;;9864:30;9930:25;9910:18;;;9903:53;9973:18;;13690:48:0::1;9650:347:1::0;13690:48:0::1;13749:15;:104:::0;;-1:-1:-1;;;;;;13749:104:0::1;13800:42;13749:104:::0;;::::1;::::0;;13864:58:::1;::::0;13881:4:::1;::::0;13800:42;4874:13:::1;::::0;4816:1:::1;::::0;4874:13:::1;:::i;:::-;4859:28;::::0;:12:::1;:28;:::i;13864:58::-;13967:15;;;;;;;;;-1:-1:-1::0;;;;;13967:15:0::1;-1:-1:-1::0;;;;;13967:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13949:55:0::1;;14027:4;14047:15;;;;;;;;;-1:-1:-1::0;;;;;14047:15:0::1;-1:-1:-1::0;;;;;14047:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13949:131;::::0;-1:-1:-1;;;;;;13949:131:0::1;::::0;;;;;;-1:-1:-1;;;;;10450:32:1;;;13949:131:0::1;::::0;::::1;10432:51:1::0;10519:32;;10499:18;;;10492:60;10405:18;;13949:131:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13933:13;:147:::0;;-1:-1:-1;;;;;13933:147:0;;::::1;-1:-1:-1::0;;;;;;13933:147:0;;::::1;;::::0;;14091:15:::1;::::0;::::1;:31;14130:21;14175:4;14195:24;14175:4:::0;-1:-1:-1;;;;;7219:18:0;7192:7;7219:18;;;:9;:18;;;;;;;7126:119;14195:24:::1;14234:1;14250;14266:7;2746::::0;2773:6;-1:-1:-1;;;;;2773:6:0;;2708:79;14266:7:::1;14091:223;::::0;::::1;::::0;;;-1:-1:-1;;;;;;14091:223:0;;;-1:-1:-1;;;;;10884:32:1;;;14091:223:0::1;::::0;::::1;10866:51:1::0;10933:18;;;10926:34;;;;10976:18;;;10969:34;;;;11019:18;;;11012:34;11083:32;;;11062:19;;;11055:61;14288:15:0::1;11132:19:1::0;;;11125:35;10838:19;;14091:223:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14332:13:0::1;::::0;14377:15:::1;::::0;14325:111:::1;::::0;-1:-1:-1;;;14325:111:0;;-1:-1:-1;;;;;14377:15:0;;::::1;14325:111;::::0;::::1;8276:51:1::0;-1:-1:-1;;8343:18:1;;;8336:34;14332:13:0;::::1;::::0;-1:-1:-1;14325:29:0::1;::::0;8249:18:1;;14325:111:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14447:11:0::1;:18:::0;;-1:-1:-1;;;;14476:18:0;-1:-1:-1;;;14476:18:0;;;13637:865::o;13189:167::-;2835:6;;-1:-1:-1;;;;;2835:6:0;328:10;2835:22;2827:67;;;;-1:-1:-1;;;2827:67:0;;;;;;;:::i;:::-;13263:9:::1;13258:91;13282:5;:12;13278:1;:16;13258:91;;;13333:4;13316;:14;13321:5;13327:1;13321:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13316:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13316:14:0;:21;;-1:-1:-1;;13316:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;13296:3:0::1;13258:91;;14510:291:::0;328:10;6622:14;-1:-1:-1;;;;;6606:30:0;;6584:134;;;;-1:-1:-1;;;6584:134:0;;;;;;;:::i;:::-;14654:13:::1;;14643:7;:24;;14621:138;;;::::0;;-1:-1:-1;;;14621:138:0;;11834:2:1;14621:138:0::1;::::0;::::1;11816:21:1::0;11853:18;;;11846:30;;;;11912:34;11892:18;;;11885:62;11983:34;11963:18;;;11956:62;12035:19;;14621:138:0::1;11632:428:1::0;14621:138:0::1;14770:13;:23:::0;14510:291::o;8307:369::-;-1:-1:-1;;;;;8434:19:0;;8426:68;;;;-1:-1:-1;;;8426:68:0;;12267:2:1;8426:68:0;;;12249:21:1;12306:2;12286:18;;;12279:30;12345:34;12325:18;;;12318:62;-1:-1:-1;;;12396:18:1;;;12389:34;12440:19;;8426:68:0;12065:400:1;8426:68:0;-1:-1:-1;;;;;8513:21:0;;8505:68;;;;-1:-1:-1;;;8505:68:0;;12672:2:1;8505:68:0;;;12654:21:1;12711:2;12691:18;;;12684:30;12750:34;12730:18;;;12723:62;-1:-1:-1;;;12801:18:1;;;12794:32;12843:19;;8505:68:0;12470:398:1;8505:68:0;-1:-1:-1;;;;;8584:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8636:32;;1422:25:1;;;8636:32:0;;1395:18:1;8636:32:0;;;;;;;8307:369;;;:::o;12181:107::-;12238:7;12270:1;12266;:5;12265:15;;12279:1;12265:15;;;12275:1;12265:15;12258:22;12181:107;-1:-1:-1;;;12181:107:0:o;12296:483::-;5682:6;:13;;-1:-1:-1;;;;5682:13:0;-1:-1:-1;;;5682:13:0;;;12398:16:::1;::::0;;12412:1:::1;12398:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12398:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12398:16:0::1;12374:40;;12443:4;12425;12430:1;12425:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12425:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12469:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12469:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12425:7;;12469:22;;;;;:15;:22:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12459:4;12464:1;12459:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12459:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12534:15:::1;::::0;12502:62:::1;::::0;12519:4:::1;::::0;12534:15:::1;12552:11:::0;12502:8:::1;:62::i;:::-;12575:15;::::0;:196:::1;::::0;-1:-1:-1;;;12575:196:0;;-1:-1:-1;;;;;12575:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12656:11;;12575:15:::1;::::0;12698:4;;12725::::1;::::0;12745:15:::1;::::0;12575:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;5718:6:0;:14;;-1:-1:-1;;;;5718:14:0;;;-1:-1:-1;;;;12296:483:0:o;12964:217::-;13045:22;;:46;;13027:12;;-1:-1:-1;;;;;13045:22:0;;13080:6;;13027:12;13045:46;13027:12;13045:46;13080:6;13045:22;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13026:65;;;13107:7;13102:72;;13131:31;;-1:-1:-1;;;;;13131:14:0;:23;;:31;;;;;13155:6;;13131:31;;;;13155:6;13131:23;:31;;;;;;;;;;;;;;;;;;;;;13015:166;12964:217;:::o;8684:3489::-;-1:-1:-1;;;;;8806:18:0;;8798:68;;;;-1:-1:-1;;;8798:68:0;;14249:2:1;8798:68:0;;;14231:21:1;14288:2;14268:18;;;14261:30;14327:34;14307:18;;;14300:62;-1:-1:-1;;;14378:18:1;;;14371:35;14423:19;;8798:68:0;14047:401:1;8798:68:0;-1:-1:-1;;;;;8885:16:0;;8877:64;;;;-1:-1:-1;;;8877:64:0;;14655:2:1;8877:64:0;;;14637:21:1;14694:2;14674:18;;;14667:30;14733:34;14713:18;;;14706:62;-1:-1:-1;;;14784:18:1;;;14777:33;14827:19;;8877:64:0;14453:399:1;8877:64:0;8969:1;8960:6;:10;8952:64;;;;-1:-1:-1;;;8952:64:0;;15059:2:1;8952:64:0;;;15041:21:1;15098:2;15078:18;;;15071:30;15137:34;15117:18;;;15110:62;-1:-1:-1;;;15188:18:1;;;15181:39;15237:19;;8952:64:0;14857:405:1;8952:64:0;9027:17;2773:6;;-1:-1:-1;;;;;9077:15:0;;;2773:6;;9077:15;;;;:45;;-1:-1:-1;2746:7:0;2773:6;-1:-1:-1;;;;;9109:13:0;;;2773:6;;9109:13;;9077:45;:92;;;;-1:-1:-1;9147:22:0;;-1:-1:-1;;;;;9139:30:0;;;9147:22;;9139:30;;9077:92;:137;;;;-1:-1:-1;9192:22:0;;-1:-1:-1;;;;;9186:28:0;;;9192:22;;9186:28;;9077:137;9059:2743;;;-1:-1:-1;;;;;9268:10:0;;;;;;:4;:10;;;;;;;;9267:11;:24;;;;-1:-1:-1;;;;;;9283:8:0;;;;;;:4;:8;;;;;;;;9282:9;9267:24;9241:135;;;;-1:-1:-1;;;9241:135:0;;15469:2:1;9241:135:0;;;15451:21:1;15508:2;15488:18;;;15481:30;15547:34;15527:18;;;15520:62;-1:-1:-1;;;15598:18:1;;;15591:47;15655:19;;9241:135:0;15267:413:1;9241:135:0;9397:9;;9410:1;9397:14;9393:299;;9444:232;9672:3;9444:201;4626:2;9504:9;;:27;9503:119;;4436:2;9503:119;;;4536:1;9503:119;9444:6;;:32;:201::i;:::-;:227;;:232::i;:::-;9432:244;;9393:299;9738:13;;-1:-1:-1;;;;;9730:21:0;;;9738:13;;9730:21;:72;;;;-1:-1:-1;9786:15:0;;-1:-1:-1;;;;;9772:30:0;;;9786:15;;9772:30;;9730:72;:116;;;;-1:-1:-1;;;;;;9824:22:0;;;;;;:18;:22;;;;;;;;9823:23;9730:116;9708:800;;;9899:12;;9889:6;:22;;9881:60;;;;-1:-1:-1;;;9881:60:0;;15887:2:1;9881:60:0;;;15869:21:1;15926:2;15906:18;;;15899:30;15965:27;15945:18;;;15938:55;16010:18;;9881:60:0;15685:349:1;9881:60:0;10016:14;;10006:6;9990:13;10000:2;-1:-1:-1;;;;;7219:18:0;7192:7;7219:18;;;:9;:18;;;;;;;7126:119;9990:13;:22;;;;:::i;:::-;:40;;9960:140;;;;-1:-1:-1;;;9960:140:0;;16371:2:1;9960:140:0;;;16353:21:1;16410:2;16390:18;;;16383:30;16449:28;16429:18;;;16422:56;16495:18;;9960:140:0;16169:350:1;9960:140:0;10131:232;10359:3;10131:201;4626:2;10191:9;;:27;10190:119;;4436:2;10190:119;;10131:232;10119:244;-1:-1:-1;10402:34:0;4679:2;;10402:34;:::i;:::-;10388:9;;:49;10384:109;;10462:9;:11;;;:9;:11;;;:::i;:::-;;;;;;10384:109;10534:13;;-1:-1:-1;;;;;10528:19:0;;;10534:13;;10528:19;:44;;;;-1:-1:-1;;;;;;10551:21:0;;10567:4;10551:21;;10528:44;10524:332;;;10605:235;10836:3;10605:204;4679:2;10665:9;;:28;10664:122;;4488:2;10664:122;;;10726:13;;10605:6;;:32;:204::i;:235::-;10593:247;;10524:332;10921:4;10872:28;7219:18;;;:9;:18;;;;;;10965:6;;-1:-1:-1;;;10965:6:0;;;;10964:7;:47;;;;-1:-1:-1;10998:13:0;;-1:-1:-1;;;;;10992:19:0;;;10998:13;;10992:19;10964:47;:79;;;;-1:-1:-1;11032:11:0;;-1:-1:-1;;;11032:11:0;;;;10964:79;:140;;;;-1:-1:-1;5242:4:0;4874:13;4816:1;4874:2;:13;:::i;:::-;4859:28;;:12;:28;:::i;:::-;5227:11;;5237:1;5227:11;:::i;:::-;5226:20;;;;:::i;:::-;11064;:40;10964:140;:191;;;;;4734:2;11125:9;;:30;10964:191;10942:849;;;11209:13;;11194:12;:28;11190:90;;;11259:1;11247:9;:13;11190:90;11314:1;11302:9;;:13;11298:478;;;11340:117;11383:51;11387:6;11395:38;11399:20;5172:3;4874:13;4816:1;4874:2;:13;:::i;11340:117::-;11509:21;11557:22;;11553:119;;11608:40;11626:21;11608:17;:40::i;:::-;11694:9;:11;;;:9;:11;;;:::i;:::-;;;;-1:-1:-1;;11744:12:0;11728:13;:28;-1:-1:-1;11298:478:0;9226:2576;9059:2743;11818:13;;11814:172;;11893:4;11875:24;;;;:9;:24;;;;;;:39;;11904:9;11875:28;:39::i;:::-;11866:4;11848:24;;;;:9;:24;;;;;;;:66;;;;11934:40;;-1:-1:-1;;;;;11934:40:0;;;;;;;11964:9;1422:25:1;;1410:2;1395:18;;1276:177;11934:40:0;;;;;;;;11814:172;-1:-1:-1;;;;;12014:15:0;;;;;;:9;:15;;;;;;:27;;12034:6;12014:19;:27::i;:::-;-1:-1:-1;;;;;11996:15:0;;;;;;:9;:15;;;;;:45;12068:40;12086:21;:6;12097:9;12086:10;:21::i;:::-;-1:-1:-1;;;;;12068:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;12052:13:0;;;;;;;:9;:13;;;;;:56;;;;12124:41;;;12143:21;:6;12154:9;12143:10;:21::i;:::-;12124:41;;1422:25:1;;;1410:2;1395:18;12124:41:0;;;;;;;8787:3386;8684:3489;;;:::o;1510:224::-;1630:7;1666:12;1658:6;;;;1650:29;;;;-1:-1:-1;;;1650:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1690:9:0;1702:5;1706:1;1702;:5;:::i;:::-;1690:17;1510:224;-1:-1:-1;;;;;1510:224:0:o;1742:246::-;1800:7;1824:1;1829;1824:6;1820:47;;-1:-1:-1;1854:1:0;1847:8;;1820:47;1877:9;1889:5;1893:1;1889;:5;:::i;:::-;1877:17;-1:-1:-1;1922:1:0;1913:5;1917:1;1877:17;1913:5;:::i;:::-;:10;1905:56;;;;-1:-1:-1;;;1905:56:0;;16999:2:1;1905:56:0;;;16981:21:1;17038:2;17018:18;;;17011:30;17077:34;17057:18;;;17050:62;-1:-1:-1;;;17128:18:1;;;17121:31;17169:19;;1905:56:0;16797:397:1;1996:132:0;2054:7;2081:39;2085:1;2088;2081:39;;;;;;;;;;;;;;;;;:3;:39::i;1179:179::-;1237:7;;1269:5;1273:1;1269;:5;:::i;:::-;1257:17;;1298:1;1293;:6;;1285:46;;;;-1:-1:-1;;;1285:46:0;;17401:2:1;1285:46:0;;;17383:21:1;17440:2;17420:18;;;17413:30;17479:29;17459:18;;;17452:57;17526:18;;1285:46:0;17199:351:1;1366:136:0;1424:7;1451:43;1455:1;1458;1451:43;;;;;;;;;;;;;;;;;:3;:43::i;2136:223::-;2256:7;2291:12;2284:5;2276:28;;;;-1:-1:-1;;;2276:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2315:9:0;2327:5;2331:1;2327;:5;:::i;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:134;641:20;;670:31;641:20;670:31;:::i;712:367::-;780:6;788;841:2;829:9;820:7;816:23;812:32;809:52;;;857:1;854;847:12;809:52;896:9;883:23;915:31;940:5;915:31;:::i;:::-;965:5;1043:2;1028:18;;;;1015:32;;-1:-1:-1;;;712:367:1:o;1458:508::-;1535:6;1543;1551;1604:2;1592:9;1583:7;1579:23;1575:32;1572:52;;;1620:1;1617;1610:12;1572:52;1659:9;1646:23;1678:31;1703:5;1678:31;:::i;:::-;1728:5;-1:-1:-1;1785:2:1;1770:18;;1757:32;1798:33;1757:32;1798:33;:::i;:::-;1458:508;;1850:7;;-1:-1:-1;;;1930:2:1;1915:18;;;;1902:32;;1458:508::o;2160:127::-;2221:10;2216:3;2212:20;2209:1;2202:31;2252:4;2249:1;2242:15;2276:4;2273:1;2266:15;2292:1127;2376:6;2429:2;2417:9;2408:7;2404:23;2400:32;2397:52;;;2445:1;2442;2435:12;2397:52;2485:9;2472:23;2518:18;2510:6;2507:30;2504:50;;;2550:1;2547;2540:12;2504:50;2573:22;;2626:4;2618:13;;2614:27;-1:-1:-1;2604:55:1;;2655:1;2652;2645:12;2604:55;2695:2;2682:16;2721:18;2713:6;2710:30;2707:56;;;2743:18;;:::i;:::-;2789:6;2786:1;2782:14;2825:2;2819:9;2888:2;2884:7;2879:2;2875;2871:11;2867:25;2859:6;2855:38;2959:6;2947:10;2944:22;2923:18;2911:10;2908:34;2905:62;2902:88;;;2970:18;;:::i;:::-;3006:2;2999:22;3056;;;3106:2;3136:11;;;3132:20;;;3056:22;3094:15;;3164:19;;;3161:39;;;3196:1;3193;3186:12;3161:39;3228:2;3224;3220:11;3209:22;;3240:148;3256:6;3251:3;3248:15;3240:148;;;3322:23;3341:3;3322:23;:::i;:::-;3310:36;;3375:2;3273:12;;;;3366;3240:148;;;-1:-1:-1;3407:6:1;2292:1127;-1:-1:-1;;;;;;2292:1127:1:o;3424:247::-;3483:6;3536:2;3524:9;3515:7;3511:23;3507:32;3504:52;;;3552:1;3549;3542:12;3504:52;3591:9;3578:23;3610:31;3635:5;3610:31;:::i;4368:388::-;4436:6;4444;4497:2;4485:9;4476:7;4472:23;4468:32;4465:52;;;4513:1;4510;4503:12;4465:52;4552:9;4539:23;4571:31;4596:5;4571:31;:::i;:::-;4621:5;-1:-1:-1;4678:2:1;4663:18;;4650:32;4691:33;4650:32;4691:33;:::i;:::-;4743:7;4733:17;;;4368:388;;;;;:::o;4761:226::-;4820:6;4873:2;4861:9;4852:7;4848:23;4844:32;4841:52;;;4889:1;4886;4879:12;4841:52;-1:-1:-1;4934:23:1;;4761:226;-1:-1:-1;4761:226:1:o;4992:418::-;5194:2;5176:21;;;5233:2;5213:18;;;5206:30;5272:34;5267:2;5252:18;;5245:62;-1:-1:-1;;;5338:2:1;5323:18;;5316:52;5400:3;5385:19;;4992:418::o;5415:127::-;5476:10;5471:3;5467:20;5464:1;5457:31;5507:4;5504:1;5497:15;5531:4;5528:1;5521:15;5547:375;5635:1;5653:5;5667:249;5688:1;5678:8;5675:15;5667:249;;;5738:4;5733:3;5729:14;5723:4;5720:24;5717:50;;;5747:18;;:::i;:::-;5797:1;5787:8;5783:16;5780:49;;;5811:16;;;;5780:49;5894:1;5890:16;;;;;5850:15;;5667:249;;;5547:375;;;;;;:::o;5927:902::-;5976:5;6006:8;5996:80;;-1:-1:-1;6047:1:1;6061:5;;5996:80;6095:4;6085:76;;-1:-1:-1;6132:1:1;6146:5;;6085:76;6177:4;6195:1;6190:59;;;;6263:1;6258:174;;;;6170:262;;6190:59;6220:1;6211:10;;6234:5;;;6258:174;6295:3;6285:8;6282:17;6279:43;;;6302:18;;:::i;:::-;-1:-1:-1;;6358:1:1;6344:16;;6417:5;;6170:262;;6516:2;6506:8;6503:16;6497:3;6491:4;6488:13;6484:36;6478:2;6468:8;6465:16;6460:2;6454:4;6451:12;6447:35;6444:77;6441:203;;;-1:-1:-1;6553:19:1;;;6629:5;;6441:203;6676:42;-1:-1:-1;;6701:8:1;6695:4;6676:42;:::i;:::-;6754:6;6750:1;6746:6;6742:19;6733:7;6730:32;6727:58;;;6765:18;;:::i;:::-;6803:20;;5927:902;-1:-1:-1;;;5927:902:1:o;6834:140::-;6892:5;6921:47;6962:4;6952:8;6948:19;6942:4;6921:47;:::i;6979:168::-;7052:9;;;7083;;7100:15;;;7094:22;;7080:37;7070:71;;7121:18;;:::i;7152:217::-;7192:1;7218;7208:132;;7262:10;7257:3;7253:20;7250:1;7243:31;7297:4;7294:1;7287:15;7325:4;7322:1;7315:15;7208:132;-1:-1:-1;7354:9:1;;7152:217::o;7374:356::-;7576:2;7558:21;;;7595:18;;;7588:30;7654:34;7649:2;7634:18;;7627:62;7721:2;7706:18;;7374:356::o;7735:127::-;7796:10;7791:3;7787:20;7784:1;7777:31;7827:4;7824:1;7817:15;7851:4;7848:1;7841:15;7867:230;7937:6;7990:2;7978:9;7969:7;7965:23;7961:32;7958:52;;;8006:1;8003;7996:12;7958:52;-1:-1:-1;8051:16:1;;7867:230;-1:-1:-1;7867:230:1:o;8668:277::-;8735:6;8788:2;8776:9;8767:7;8763:23;8759:32;8756:52;;;8804:1;8801;8794:12;8756:52;8836:9;8830:16;8889:5;8882:13;8875:21;8868:5;8865:32;8855:60;;8911:1;8908;8901:12;10002:251;10072:6;10125:2;10113:9;10104:7;10100:23;10096:32;10093:52;;;10141:1;10138;10131:12;10093:52;10173:9;10167:16;10192:31;10217:5;10192:31;:::i;11171:456::-;11259:6;11267;11275;11328:2;11316:9;11307:7;11303:23;11299:32;11296:52;;;11344:1;11341;11334:12;11296:52;-1:-1:-1;;11389:16:1;;11495:2;11480:18;;11474:25;11591:2;11576:18;;;11570:25;11389:16;;11474:25;;-1:-1:-1;11570:25:1;11171:456;-1:-1:-1;11171:456:1:o;12873:959::-;13135:4;13183:3;13172:9;13168:19;13214:6;13203:9;13196:25;13257:6;13252:2;13241:9;13237:18;13230:34;13300:3;13295:2;13284:9;13280:18;13273:31;13324:6;13359;13353:13;13390:6;13382;13375:22;13428:3;13417:9;13413:19;13406:26;;13467:2;13459:6;13455:15;13441:29;;13488:1;13498:195;13512:6;13509:1;13506:13;13498:195;;;13577:13;;-1:-1:-1;;;;;13573:39:1;13561:52;;13642:2;13668:15;;;;13633:12;;;;13609:1;13527:9;13498:195;;;-1:-1:-1;;;;;;;13749:32:1;;;;13744:2;13729:18;;13722:60;-1:-1:-1;;13813:3:1;13798:19;13791:35;13710:3;12873:959;-1:-1:-1;;;12873:959:1:o;16039:125::-;16104:9;;;16125:10;;;16122:36;;;16138:18;;:::i;16524:135::-;16563:3;16584:17;;;16581:43;;16604:18;;:::i;:::-;-1:-1:-1;16651:1:1;16640:13;;16524:135::o;16664:128::-;16731:9;;;16752:11;;;16749:37;;;16766:18;;:::i

Swarm Source

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