ETH Price: $2,440.33 (-1.18%)

Token

Elon Tusk (TUSK)
 

Overview

Max Total Supply

1,000,000,000 TUSK

Holders

33

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
7,500,000 TUSK

Value
$0.00
0x7d2eb411834e92ff521366d9bc9d2d3a74c65686
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:
TUSK

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-13
*/

// SPDX-License-Identifier: MIT     

/*
Elon Tusk - Elon Musk's Evil Twin Brother

https://t.me/ElonTusk_ERC
https://twitter.com/ElonTusk_ERC
https://medium.com/@ElonTusk_ERC
https://www.el-on-tusk.meme/
*/

pragma solidity 0.8.23;

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(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract TUSK is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private addrrExcIude;
    mapping (address => bool) public aMakerV2sPair;
    mapping(address => uint256) private _prevTnxTimestamps;
    mapping (address => bool) public _isSus;
    address payable private _taxAddress;
    uint256 initialBlock;

    uint256 private _iBuyT=250;
    uint256 private _mBuyT=100;
    uint256 private _iSellT=250;
    uint256 private _mSellT=100;
    uint256 private _fBuyT=5;
    uint256 private _fSellT=5;

    uint256 private _mBuyTAt=20;
    uint256 private _rBuyTAt=30;

    uint256 private _mSellTAt=20;
    uint256 private _rSellTAt=30;
    uint256 private _noSwapingBefore=30;
    uint256 private _cBuysCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotaI = 1000000000 * 10**_decimals;
    string private constant _name = unicode"Elon Tusk";
    string private constant _symbol = unicode"TUSK";
    uint256 public _perTnxLimit =   10000000 * 10**_decimals;
    uint256 public _perWalletsLimit = 10000000 * 10**_decimals;
    uint256 public _taxSwapThresLimit= 10000 * 10**_decimals;
    uint256 public _taxSwapLimit= 60000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool public _rescueSwitch = false;
    bool public _startTrade;
    bool private _delayPerTnx = true;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxLimitUpdated(uint _perTnxLimit);
    modifier lockTheSwap {
        inSwap = true;  
        _;
        inSwap = false;
    }

    constructor () {

        _taxAddress = payable(_msgSender());
        _balances[_msgSender()] = _tTotaI;
        addrrExcIude[owner()] = true;
        addrrExcIude[address(this)] = true;
        addrrExcIude[address(uniswapV2Pair)] = true;
        addrrExcIude[_taxAddress] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotaI);
    }

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

    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 aMMakerV2sPair(address addr) public onlyOwner {
        aMakerV2sPair[addr] = true;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require (!_isSus[from] && !_isSus[to], "To/from address is blacklisted");
        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 _feeAmount=0;
        if (aMakerV2sPair[from] && to != address(this)){ 
            require(tx.origin == to);
            }
        if (from != owner() && to != owner()) {
            _feeAmount = amount.mul((_cBuysCount> _rBuyTAt)? _fBuyT: ((_cBuysCount> _mBuyTAt)? _mBuyT: _iBuyT)).div(1000);
            
            if (_delayPerTnx) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                  require(_prevTnxTimestamps[tx.origin] < block.number,"Only one transfer per block allowed.");
                  _prevTnxTimestamps[tx.origin] = block.number;
                }
            }
            if (aMakerV2sPair[from] && to != address(uniswapV2Router) && ! addrrExcIude[to] ) {
                require(amount <= _perTnxLimit, "Exceeds the _perTnxLimit.");
                require(balanceOf(to) + amount <= _perWalletsLimit, "Exceeds the maxWalletSize.");

                if (initialBlock + 3  > block.number) {
                    require(!isContract(to));
                }
                _cBuysCount++;
            }

            if (!aMakerV2sPair[to] && ! addrrExcIude[to]) {
                require(balanceOf(to) + amount <= _perWalletsLimit, "Exceeds the maxWalletSize.");
            }

            if(aMakerV2sPair[to] && from!= address(this) ){
                _feeAmount = amount.mul((_cBuysCount> _rSellTAt)? _fSellT: ((_cBuysCount> _mSellTAt)? _mSellT: _iSellT)).div(1000);
            }

            if (!aMakerV2sPair[from] && !aMakerV2sPair[to] && from!= address(this) ) {
                _feeAmount = 0;
            }

            uint256 tokenContractBalance = balanceOf(address(this));
            if (!inSwap && aMakerV2sPair[to] && swapEnabled && tokenContractBalance>_taxSwapThresLimit && _cBuysCount>_noSwapingBefore) {
                swapTokensForEth(min(amount,min(tokenContractBalance,_taxSwapLimit)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

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


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

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    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 addToSus(address[] calldata addresses) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
        _isSus[addresses[i]] = true;
        }
    }

    function isRescueEnable(bool _status) external onlyOwner {
        _rescueSwitch = _status;
    }

    function addressExclude(address addr, bool exempt) external onlyOwner {
        addrrExcIude[addr] = exempt;
    }   

    function _delayPerTnxM(bool _status) external onlyOwner {
        _delayPerTnx = _status;
    }

    function _isDustETH() public {
        require(_rescueSwitch || _startTrade);
        payable(_taxAddress).transfer(address(this).balance);
    }

    function _isDustERC20(address _tokenAddr, uint _amount) public {
        require(_rescueSwitch || _startTrade);
        IERC20(_tokenAddr).transfer(_taxAddress, _amount);
    }

    function _setFsOnBS(uint256 __fBuyT, uint256 __fSellT) external onlyOwner {
        _fBuyT = __fBuyT;
        _fSellT = __fSellT; 
    }

    function removeFromSus(address account) external onlyOwner {
    _isSus[account] = false;
    }

    function removeFromSuswallets(address[] calldata addresses) public onlyOwner(){
        for (uint256 i; i < addresses.length; ++i) {
            _isSus[addresses[i]] = false;
        }
    }

    function _islimitless() external onlyOwner{
        _perTnxLimit=_tTotaI;
        _perWalletsLimit=_tTotaI;
        _delayPerTnx=false;
        emit MaxTxLimitUpdated(_tTotaI);
    }

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

    function startLiveTrade() external onlyOwner() {
        require(!_startTrade,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotaI);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        aMakerV2sPair[address(uniswapV2Pair)] = true;
        addrrExcIude[address(uniswapV2Pair)] = true;
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        _startTrade = true;
        initialBlock = block.number;
    }

    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":"_perTnxLimit","type":"uint256"}],"name":"MaxTxLimitUpdated","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":"bool","name":"_status","type":"bool"}],"name":"_delayPerTnxM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"_isDustERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_isDustETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isSus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_islimitless","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_perTnxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_perWalletsLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rescueSwitch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"__fBuyT","type":"uint256"},{"internalType":"uint256","name":"__fSellT","type":"uint256"}],"name":"_setFsOnBS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_startTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThresLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"aMMakerV2sPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"aMakerV2sPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToSus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"addressExclude","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":"bool","name":"_status","type":"bool"}],"name":"isRescueEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromSus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeFromSuswallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startLiveTrade","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260fa6009556064600a5560fa600b556064600c556005600d556005600e556014600f55601e6010556014601155601e601255601e6013555f6014556009600a6200004f91906200035d565b6200005e906298968062000374565b6015556200006f6009600a6200035d565b6200007e906298968062000374565b6016556200008f6009600a6200035d565b6200009d9061271062000374565b601755620000ae6009600a6200035d565b620000be90630393870062000374565b601855601a805464ffffff00ff60a01b1916600160b01b179055348015620000e4575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600780546001600160a01b03191633179055620001456009600a6200035d565b6200015590633b9aca0062000374565b335f9081526001602081905260408220929092556003906200017e5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155601a54821684528284208054861682179055600754909116835291208054909216179055620001ee3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002276009600a6200035d565b6200023790633b9aca0062000374565b60405190815260200160405180910390a36200038e565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002a257815f19048211156200028657620002866200024e565b808516156200029457918102915b93841c939080029062000267565b509250929050565b5f82620002ba5750600162000357565b81620002c857505f62000357565b8160018114620002e15760028114620002ec576200030c565b600191505062000357565b60ff8411156200030057620003006200024e565b50506001821b62000357565b5060208310610133831016604e8410600b841016171562000331575081810a62000357565b6200033d838362000262565b805f19048211156200035357620003536200024e565b0290505b92915050565b5f6200036d60ff841683620002aa565b9392505050565b80820281158282048414176200035757620003576200024e565b61214a806200039c5f395ff3fe6080604052600436106101de575f3560e01c806384494de5116100fd578063a9e938fc11610092578063cc5c888711610062578063cc5c888714610599578063dd62ed3e146105b8578063f1523795146105fc578063f3200c9114610611575f80fd5b8063a9e938fc14610528578063b1b75d2214610547578063c11bdea31461055b578063c62eb6e01461057a575f80fd5b806395d89b41116100cd57806395d89b41146104905780639fccb44c146104bc578063a7bcda26146104ea578063a9059cbb14610509575f80fd5b806384494de5146104215780638c7ef2bd146104405780638ce8944d1461045f5780638da5cb5b14610474575f80fd5b806349bd5a5e1161017357806363fb36df1161014357806363fb36df146103b05780636d8730ac146103c457806370a08231146103d9578063715018a61461040d575f80fd5b806349bd5a5e1461031a57806355c524ec146103515780635658e708146103705780635e3fce9d14610390575f80fd5b806329551af8116101ae57806329551af81461029c578063313ce567146102b25780633891ca53146102cd5780633bafffac146102fb575f80fd5b806306fdde03146101e9578063095ea7b31461022c57806318160ddd1461025b57806323b872dd1461027d575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b50604080518082019091526009815268456c6f6e205475736b60b81b60208201525b6040516102239190611c5e565b60405180910390f35b348015610237575f80fd5b5061024b610246366004611cbe565b610626565b6040519015158152602001610223565b348015610266575f80fd5b5061026f61063c565b604051908152602001610223565b348015610288575f80fd5b5061024b610297366004611ce8565b61065c565b3480156102a7575f80fd5b506102b06106c3565b005b3480156102bd575f80fd5b5060405160098152602001610223565b3480156102d8575f80fd5b5061024b6102e7366004611d26565b60046020525f908152604090205460ff1681565b348015610306575f80fd5b506102b0610315366004611d26565b610725565b348015610325575f80fd5b50601a54610339906001600160a01b031681565b6040516001600160a01b039091168152602001610223565b34801561035c575f80fd5b506102b061036b366004611d4e565b61077a565b34801561037b575f80fd5b50601a5461024b90600160a81b900460ff1681565b34801561039b575f80fd5b50601a5461024b90600160a01b900460ff1681565b3480156103bb575f80fd5b506102b06107cd565b3480156103cf575f80fd5b5061026f60155481565b3480156103e4575f80fd5b5061026f6103f3366004611d26565b6001600160a01b03165f9081526001602052604090205490565b348015610418575f80fd5b506102b0610bb3565b34801561042c575f80fd5b506102b061043b366004611d85565b610c24565b34801561044b575f80fd5b506102b061045a366004611df4565b610cb6565b34801561046a575f80fd5b5061026f60165481565b34801561047f575f80fd5b505f546001600160a01b0316610339565b34801561049b575f80fd5b506040805180820190915260048152635455534b60e01b6020820152610216565b3480156104c7575f80fd5b5061024b6104d6366004611d26565b60066020525f908152604090205460ff1681565b3480156104f5575f80fd5b506102b0610504366004611e14565b610cea565b348015610514575f80fd5b5061024b610523366004611cbe565b610d31565b348015610533575f80fd5b506102b0610542366004611cbe565b610d3d565b348015610552575f80fd5b506102b0610dda565b348015610566575f80fd5b506102b0610575366004611e14565b610e98565b348015610585575f80fd5b506102b0610594366004611d85565b610edf565b3480156105a4575f80fd5b506102b06105b3366004611d26565b610f6d565b3480156105c3575f80fd5b5061026f6105d2366004611e2f565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610607575f80fd5b5061026f60175481565b34801561061c575f80fd5b5061026f60185481565b5f610632338484610fb6565b5060015b92915050565b5f6106496009600a611f4f565b61065790633b9aca00611f5d565b905090565b5f6106688484846110d9565b6106b984336106b4856040518060600160405280602881526020016120ed602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906118d6565b610fb6565b5060019392505050565b601a54600160a01b900460ff16806106e45750601a54600160a81b900460ff165b6106ec575f80fd5b6007546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610722573d5f803e3d5ffd5b50565b5f546001600160a01b031633146107575760405162461bcd60e51b815260040161074e90611f74565b60405180910390fd5b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f546001600160a01b031633146107a35760405162461bcd60e51b815260040161074e90611f74565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146107f65760405162461bcd60e51b815260040161074e90611f74565b601a54600160a81b900460ff16156108505760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161074e565b601980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561089990309061088b6009600a611f4f565b6106b490633b9aca00611f5d565b60195f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090d9190611fa9565b6001600160a01b031663c9c653963060195f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561096c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109909190611fa9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109fe9190611fa9565b601a80546001600160a01b039283166001600160a01b0319909116811782555f908152600460209081526040808320805460ff199081166001908117909255945486168452600390925290912080549092161790556019541663f305d7194730610a7c816001600160a01b03165f9081526001602052604090205490565b5f80610a8f5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610af5573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b1a9190611fc4565b5050601a5460195460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610b6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b939190611fef565b50601a805463ff0000ff60a81b1916630100000160a81b17905543600855565b5f546001600160a01b03163314610bdc5760405162461bcd60e51b815260040161074e90611f74565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610c4d5760405162461bcd60e51b815260040161074e90611f74565b5f5b81811015610cb1575f60065f858585818110610c6d57610c6d61200a565b9050602002016020810190610c829190611d26565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610c4f565b505050565b5f546001600160a01b03163314610cdf5760405162461bcd60e51b815260040161074e90611f74565b600d91909155600e55565b5f546001600160a01b03163314610d135760405162461bcd60e51b815260040161074e90611f74565b601a8054911515600160b01b0260ff60b01b19909216919091179055565b5f6106323384846110d9565b601a54600160a01b900460ff1680610d5e5750601a54600160a81b900460ff165b610d66575f80fd5b60075460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015610db6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb19190611fef565b5f546001600160a01b03163314610e035760405162461bcd60e51b815260040161074e90611f74565b610e0f6009600a611f4f565b610e1d90633b9aca00611f5d565b601555610e2c6009600a611f4f565b610e3a90633b9aca00611f5d565b601655601a805460ff60b01b191690557f7cd96ba5448bfec9f649d205609b7ef3d00507914d52d7fe748da5811659406a610e776009600a611f4f565b610e8590633b9aca00611f5d565b60405190815260200160405180910390a1565b5f546001600160a01b03163314610ec15760405162461bcd60e51b815260040161074e90611f74565b601a8054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b03163314610f085760405162461bcd60e51b815260040161074e90611f74565b5f5b81811015610cb157600160065f858585818110610f2957610f2961200a565b9050602002016020810190610f3e9190611d26565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610f0a565b5f546001600160a01b03163314610f965760405162461bcd60e51b815260040161074e90611f74565b6001600160a01b03165f908152600660205260409020805460ff19169055565b6001600160a01b0383166110185760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161074e565b6001600160a01b0382166110795760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161074e565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f9081526006602052604090205460ff1615801561111957506001600160a01b0382165f9081526006602052604090205460ff16155b6111655760405162461bcd60e51b815260206004820152601e60248201527f546f2f66726f6d206164647265737320697320626c61636b6c69737465640000604482015260640161074e565b6001600160a01b0383166111c95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161074e565b6001600160a01b03821661122b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161074e565b5f811161128c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161074e565b6001600160a01b0383165f9081526004602052604081205460ff1680156112bc57506001600160a01b0383163014155b156112d557326001600160a01b038416146112d5575f80fd5b5f546001600160a01b038581169116148015906112ff57505f546001600160a01b03848116911614155b15611799576113446103e861133e6010546014541161133357600f546014541161132b57600954611337565b600a54611337565b600d545b859061190e565b90611993565b601a54909150600160b01b900460ff1615611405576019546001600160a01b038481169116148015906113855750601a546001600160a01b03848116911614155b1561140557325f9081526005602052604090205443116113f35760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b606482015260840161074e565b325f9081526005602052604090204390555b6001600160a01b0384165f9081526004602052604090205460ff16801561143a57506019546001600160a01b03848116911614155b801561145e57506001600160a01b0383165f9081526003602052604090205460ff16155b15611565576015548211156114b55760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f706572546e784c696d69742e00000000000000604482015260640161074e565b601654826114d7856001600160a01b03165f9081526001602052604090205490565b6114e1919061201e565b111561152f5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161074e565b43600854600361153f919061201e565b111561155057823b15611550575f80fd5b60148054905f61155f83612031565b91905055505b6001600160a01b0383165f9081526004602052604090205460ff161580156115a557506001600160a01b0383165f9081526003602052604090205460ff16155b1561162457601654826115cc856001600160a01b03165f9081526001602052604090205490565b6115d6919061201e565b11156116245760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161074e565b6001600160a01b0383165f9081526004602052604090205460ff16801561165457506001600160a01b0384163014155b15611695576116926103e861133e60125460145411611688576011546014541161168057600b54611337565b600c54611337565b600e54859061190e565b90505b6001600160a01b0384165f9081526004602052604090205460ff161580156116d557506001600160a01b0383165f9081526004602052604090205460ff16155b80156116ea57506001600160a01b0384163014155b156116f257505f5b305f90815260016020526040902054601a54600160b81b900460ff1615801561173257506001600160a01b0384165f9081526004602052604090205460ff165b80156117475750601a54600160c01b900460ff165b8015611754575060175481115b80156117635750601354601454115b15611797576117856117808461177b846018546119d4565b6119d4565b6119e8565b4780156117955761179547611b58565b505b505b801561181157305f908152600160205260409020546117b89082611b93565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118089085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546118339083611bf1565b6001600160a01b0385165f908152600160205260409020556118766118588383611bf1565b6001600160a01b0385165f9081526001602052604090205490611b93565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6118bf8585611bf1565b60405190815260200160405180910390a350505050565b5f81848411156118f95760405162461bcd60e51b815260040161074e9190611c5e565b505f6119058486612049565b95945050505050565b5f825f0361191d57505f610636565b5f6119288385611f5d565b905082611935858361205c565b1461198c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161074e565b9392505050565b5f61198c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c32565b5f8183116119e2578261198c565b50919050565b601a805460ff60b81b1916600160b81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611a2e57611a2e61200a565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa99190611fa9565b81600181518110611abc57611abc61200a565b6001600160a01b039283166020918202929092010152601954611ae29130911684610fb6565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b1a9085905f9086903090429060040161207b565b5f604051808303815f87803b158015611b31575f80fd5b505af1158015611b43573d5f803e3d5ffd5b5050601a805460ff60b81b1916905550505050565b6007546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611b8f573d5f803e3d5ffd5b5050565b5f80611b9f838561201e565b90508381101561198c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161074e565b5f61198c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118d6565b5f8183611c525760405162461bcd60e51b815260040161074e9190611c5e565b505f611905848661205c565b5f602080835283518060208501525f5b81811015611c8a57858101830151858201604001528201611c6e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610722575f80fd5b5f8060408385031215611ccf575f80fd5b8235611cda81611caa565b946020939093013593505050565b5f805f60608486031215611cfa575f80fd5b8335611d0581611caa565b92506020840135611d1581611caa565b929592945050506040919091013590565b5f60208284031215611d36575f80fd5b813561198c81611caa565b8015158114610722575f80fd5b5f8060408385031215611d5f575f80fd5b8235611d6a81611caa565b91506020830135611d7a81611d41565b809150509250929050565b5f8060208385031215611d96575f80fd5b823567ffffffffffffffff80821115611dad575f80fd5b818501915085601f830112611dc0575f80fd5b813581811115611dce575f80fd5b8660208260051b8501011115611de2575f80fd5b60209290920196919550909350505050565b5f8060408385031215611e05575f80fd5b50508035926020909101359150565b5f60208284031215611e24575f80fd5b813561198c81611d41565b5f8060408385031215611e40575f80fd5b8235611e4b81611caa565b91506020830135611d7a81611caa565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611ea957815f1904821115611e8f57611e8f611e5b565b80851615611e9c57918102915b93841c9390800290611e74565b509250929050565b5f82611ebf57506001610636565b81611ecb57505f610636565b8160018114611ee15760028114611eeb57611f07565b6001915050610636565b60ff841115611efc57611efc611e5b565b50506001821b610636565b5060208310610133831016604e8410600b8410161715611f2a575081810a610636565b611f348383611e6f565b805f1904821115611f4757611f47611e5b565b029392505050565b5f61198c60ff841683611eb1565b808202811582820484141761063657610636611e5b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611fb9575f80fd5b815161198c81611caa565b5f805f60608486031215611fd6575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611fff575f80fd5b815161198c81611d41565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561063657610636611e5b565b5f6001820161204257612042611e5b565b5060010190565b8181038181111561063657610636611e5b565b5f8261207657634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156120cb5784516001600160a01b0316835293830193918301916001016120a6565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122074991a441c528fb8934f66cc2d9af02604de230adefc49f919f8afc3ff15370c64736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101de575f3560e01c806384494de5116100fd578063a9e938fc11610092578063cc5c888711610062578063cc5c888714610599578063dd62ed3e146105b8578063f1523795146105fc578063f3200c9114610611575f80fd5b8063a9e938fc14610528578063b1b75d2214610547578063c11bdea31461055b578063c62eb6e01461057a575f80fd5b806395d89b41116100cd57806395d89b41146104905780639fccb44c146104bc578063a7bcda26146104ea578063a9059cbb14610509575f80fd5b806384494de5146104215780638c7ef2bd146104405780638ce8944d1461045f5780638da5cb5b14610474575f80fd5b806349bd5a5e1161017357806363fb36df1161014357806363fb36df146103b05780636d8730ac146103c457806370a08231146103d9578063715018a61461040d575f80fd5b806349bd5a5e1461031a57806355c524ec146103515780635658e708146103705780635e3fce9d14610390575f80fd5b806329551af8116101ae57806329551af81461029c578063313ce567146102b25780633891ca53146102cd5780633bafffac146102fb575f80fd5b806306fdde03146101e9578063095ea7b31461022c57806318160ddd1461025b57806323b872dd1461027d575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b50604080518082019091526009815268456c6f6e205475736b60b81b60208201525b6040516102239190611c5e565b60405180910390f35b348015610237575f80fd5b5061024b610246366004611cbe565b610626565b6040519015158152602001610223565b348015610266575f80fd5b5061026f61063c565b604051908152602001610223565b348015610288575f80fd5b5061024b610297366004611ce8565b61065c565b3480156102a7575f80fd5b506102b06106c3565b005b3480156102bd575f80fd5b5060405160098152602001610223565b3480156102d8575f80fd5b5061024b6102e7366004611d26565b60046020525f908152604090205460ff1681565b348015610306575f80fd5b506102b0610315366004611d26565b610725565b348015610325575f80fd5b50601a54610339906001600160a01b031681565b6040516001600160a01b039091168152602001610223565b34801561035c575f80fd5b506102b061036b366004611d4e565b61077a565b34801561037b575f80fd5b50601a5461024b90600160a81b900460ff1681565b34801561039b575f80fd5b50601a5461024b90600160a01b900460ff1681565b3480156103bb575f80fd5b506102b06107cd565b3480156103cf575f80fd5b5061026f60155481565b3480156103e4575f80fd5b5061026f6103f3366004611d26565b6001600160a01b03165f9081526001602052604090205490565b348015610418575f80fd5b506102b0610bb3565b34801561042c575f80fd5b506102b061043b366004611d85565b610c24565b34801561044b575f80fd5b506102b061045a366004611df4565b610cb6565b34801561046a575f80fd5b5061026f60165481565b34801561047f575f80fd5b505f546001600160a01b0316610339565b34801561049b575f80fd5b506040805180820190915260048152635455534b60e01b6020820152610216565b3480156104c7575f80fd5b5061024b6104d6366004611d26565b60066020525f908152604090205460ff1681565b3480156104f5575f80fd5b506102b0610504366004611e14565b610cea565b348015610514575f80fd5b5061024b610523366004611cbe565b610d31565b348015610533575f80fd5b506102b0610542366004611cbe565b610d3d565b348015610552575f80fd5b506102b0610dda565b348015610566575f80fd5b506102b0610575366004611e14565b610e98565b348015610585575f80fd5b506102b0610594366004611d85565b610edf565b3480156105a4575f80fd5b506102b06105b3366004611d26565b610f6d565b3480156105c3575f80fd5b5061026f6105d2366004611e2f565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610607575f80fd5b5061026f60175481565b34801561061c575f80fd5b5061026f60185481565b5f610632338484610fb6565b5060015b92915050565b5f6106496009600a611f4f565b61065790633b9aca00611f5d565b905090565b5f6106688484846110d9565b6106b984336106b4856040518060600160405280602881526020016120ed602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906118d6565b610fb6565b5060019392505050565b601a54600160a01b900460ff16806106e45750601a54600160a81b900460ff165b6106ec575f80fd5b6007546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610722573d5f803e3d5ffd5b50565b5f546001600160a01b031633146107575760405162461bcd60e51b815260040161074e90611f74565b60405180910390fd5b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f546001600160a01b031633146107a35760405162461bcd60e51b815260040161074e90611f74565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146107f65760405162461bcd60e51b815260040161074e90611f74565b601a54600160a81b900460ff16156108505760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161074e565b601980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561089990309061088b6009600a611f4f565b6106b490633b9aca00611f5d565b60195f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090d9190611fa9565b6001600160a01b031663c9c653963060195f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561096c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109909190611fa9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109fe9190611fa9565b601a80546001600160a01b039283166001600160a01b0319909116811782555f908152600460209081526040808320805460ff199081166001908117909255945486168452600390925290912080549092161790556019541663f305d7194730610a7c816001600160a01b03165f9081526001602052604090205490565b5f80610a8f5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610af5573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b1a9190611fc4565b5050601a5460195460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610b6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b939190611fef565b50601a805463ff0000ff60a81b1916630100000160a81b17905543600855565b5f546001600160a01b03163314610bdc5760405162461bcd60e51b815260040161074e90611f74565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610c4d5760405162461bcd60e51b815260040161074e90611f74565b5f5b81811015610cb1575f60065f858585818110610c6d57610c6d61200a565b9050602002016020810190610c829190611d26565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610c4f565b505050565b5f546001600160a01b03163314610cdf5760405162461bcd60e51b815260040161074e90611f74565b600d91909155600e55565b5f546001600160a01b03163314610d135760405162461bcd60e51b815260040161074e90611f74565b601a8054911515600160b01b0260ff60b01b19909216919091179055565b5f6106323384846110d9565b601a54600160a01b900460ff1680610d5e5750601a54600160a81b900460ff165b610d66575f80fd5b60075460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015610db6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb19190611fef565b5f546001600160a01b03163314610e035760405162461bcd60e51b815260040161074e90611f74565b610e0f6009600a611f4f565b610e1d90633b9aca00611f5d565b601555610e2c6009600a611f4f565b610e3a90633b9aca00611f5d565b601655601a805460ff60b01b191690557f7cd96ba5448bfec9f649d205609b7ef3d00507914d52d7fe748da5811659406a610e776009600a611f4f565b610e8590633b9aca00611f5d565b60405190815260200160405180910390a1565b5f546001600160a01b03163314610ec15760405162461bcd60e51b815260040161074e90611f74565b601a8054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b03163314610f085760405162461bcd60e51b815260040161074e90611f74565b5f5b81811015610cb157600160065f858585818110610f2957610f2961200a565b9050602002016020810190610f3e9190611d26565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610f0a565b5f546001600160a01b03163314610f965760405162461bcd60e51b815260040161074e90611f74565b6001600160a01b03165f908152600660205260409020805460ff19169055565b6001600160a01b0383166110185760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161074e565b6001600160a01b0382166110795760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161074e565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f9081526006602052604090205460ff1615801561111957506001600160a01b0382165f9081526006602052604090205460ff16155b6111655760405162461bcd60e51b815260206004820152601e60248201527f546f2f66726f6d206164647265737320697320626c61636b6c69737465640000604482015260640161074e565b6001600160a01b0383166111c95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161074e565b6001600160a01b03821661122b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161074e565b5f811161128c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161074e565b6001600160a01b0383165f9081526004602052604081205460ff1680156112bc57506001600160a01b0383163014155b156112d557326001600160a01b038416146112d5575f80fd5b5f546001600160a01b038581169116148015906112ff57505f546001600160a01b03848116911614155b15611799576113446103e861133e6010546014541161133357600f546014541161132b57600954611337565b600a54611337565b600d545b859061190e565b90611993565b601a54909150600160b01b900460ff1615611405576019546001600160a01b038481169116148015906113855750601a546001600160a01b03848116911614155b1561140557325f9081526005602052604090205443116113f35760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b606482015260840161074e565b325f9081526005602052604090204390555b6001600160a01b0384165f9081526004602052604090205460ff16801561143a57506019546001600160a01b03848116911614155b801561145e57506001600160a01b0383165f9081526003602052604090205460ff16155b15611565576015548211156114b55760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f706572546e784c696d69742e00000000000000604482015260640161074e565b601654826114d7856001600160a01b03165f9081526001602052604090205490565b6114e1919061201e565b111561152f5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161074e565b43600854600361153f919061201e565b111561155057823b15611550575f80fd5b60148054905f61155f83612031565b91905055505b6001600160a01b0383165f9081526004602052604090205460ff161580156115a557506001600160a01b0383165f9081526003602052604090205460ff16155b1561162457601654826115cc856001600160a01b03165f9081526001602052604090205490565b6115d6919061201e565b11156116245760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161074e565b6001600160a01b0383165f9081526004602052604090205460ff16801561165457506001600160a01b0384163014155b15611695576116926103e861133e60125460145411611688576011546014541161168057600b54611337565b600c54611337565b600e54859061190e565b90505b6001600160a01b0384165f9081526004602052604090205460ff161580156116d557506001600160a01b0383165f9081526004602052604090205460ff16155b80156116ea57506001600160a01b0384163014155b156116f257505f5b305f90815260016020526040902054601a54600160b81b900460ff1615801561173257506001600160a01b0384165f9081526004602052604090205460ff165b80156117475750601a54600160c01b900460ff165b8015611754575060175481115b80156117635750601354601454115b15611797576117856117808461177b846018546119d4565b6119d4565b6119e8565b4780156117955761179547611b58565b505b505b801561181157305f908152600160205260409020546117b89082611b93565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118089085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546118339083611bf1565b6001600160a01b0385165f908152600160205260409020556118766118588383611bf1565b6001600160a01b0385165f9081526001602052604090205490611b93565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6118bf8585611bf1565b60405190815260200160405180910390a350505050565b5f81848411156118f95760405162461bcd60e51b815260040161074e9190611c5e565b505f6119058486612049565b95945050505050565b5f825f0361191d57505f610636565b5f6119288385611f5d565b905082611935858361205c565b1461198c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161074e565b9392505050565b5f61198c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c32565b5f8183116119e2578261198c565b50919050565b601a805460ff60b81b1916600160b81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611a2e57611a2e61200a565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa99190611fa9565b81600181518110611abc57611abc61200a565b6001600160a01b039283166020918202929092010152601954611ae29130911684610fb6565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b1a9085905f9086903090429060040161207b565b5f604051808303815f87803b158015611b31575f80fd5b505af1158015611b43573d5f803e3d5ffd5b5050601a805460ff60b81b1916905550505050565b6007546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611b8f573d5f803e3d5ffd5b5050565b5f80611b9f838561201e565b90508381101561198c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161074e565b5f61198c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118d6565b5f8183611c525760405162461bcd60e51b815260040161074e9190611c5e565b505f611905848661205c565b5f602080835283518060208501525f5b81811015611c8a57858101830151858201604001528201611c6e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610722575f80fd5b5f8060408385031215611ccf575f80fd5b8235611cda81611caa565b946020939093013593505050565b5f805f60608486031215611cfa575f80fd5b8335611d0581611caa565b92506020840135611d1581611caa565b929592945050506040919091013590565b5f60208284031215611d36575f80fd5b813561198c81611caa565b8015158114610722575f80fd5b5f8060408385031215611d5f575f80fd5b8235611d6a81611caa565b91506020830135611d7a81611d41565b809150509250929050565b5f8060208385031215611d96575f80fd5b823567ffffffffffffffff80821115611dad575f80fd5b818501915085601f830112611dc0575f80fd5b813581811115611dce575f80fd5b8660208260051b8501011115611de2575f80fd5b60209290920196919550909350505050565b5f8060408385031215611e05575f80fd5b50508035926020909101359150565b5f60208284031215611e24575f80fd5b813561198c81611d41565b5f8060408385031215611e40575f80fd5b8235611e4b81611caa565b91506020830135611d7a81611caa565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611ea957815f1904821115611e8f57611e8f611e5b565b80851615611e9c57918102915b93841c9390800290611e74565b509250929050565b5f82611ebf57506001610636565b81611ecb57505f610636565b8160018114611ee15760028114611eeb57611f07565b6001915050610636565b60ff841115611efc57611efc611e5b565b50506001821b610636565b5060208310610133831016604e8410600b8410161715611f2a575081810a610636565b611f348383611e6f565b805f1904821115611f4757611f47611e5b565b029392505050565b5f61198c60ff841683611eb1565b808202811582820484141761063657610636611e5b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611fb9575f80fd5b815161198c81611caa565b5f805f60608486031215611fd6575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611fff575f80fd5b815161198c81611d41565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561063657610636611e5b565b5f6001820161204257612042611e5b565b5060010190565b8181038181111561063657610636611e5b565b5f8261207657634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156120cb5784516001600160a01b0316835293830193918301916001016120a6565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122074991a441c528fb8934f66cc2d9af02604de230adefc49f919f8afc3ff15370c64736f6c63430008170033

Deployed Bytecode Sourcemap

3658:10141:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5838:83;;;;;;;;;;-1:-1:-1;5908:5:0;;;;;;;;;;;;-1:-1:-1;;;5908:5:0;;;;5838:83;;;;;;;:::i;:::-;;;;;;;;6671:161;;;;;;;;;;-1:-1:-1;6671:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6671:161:0;1023:187:1;6115:95:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6115:95:0;1215:177:1;6840:313:0;;;;;;;;;;-1:-1:-1;6840:313:0;;;;;:::i;:::-;;:::i;11845:148::-;;;;;;;;;;;;;:::i;:::-;;6024:83;;;;;;;;;;-1:-1:-1;6024:83:0;;4607:1;2000:36:1;;1988:2;1973:18;6024:83:0;1858:184:1;3922:46:0;;;;;;;;;;-1:-1:-1;3922:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7504:100;;;;;;;;;;-1:-1:-1;7504:100:0;;;;;:::i;:::-;;:::i;5097:28::-;;;;;;;;;;-1:-1:-1;5097:28:0;;;;-1:-1:-1;;;;;5097:28:0;;;;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;5097:28:0;2299:203:1;11613:116:0;;;;;;;;;;-1:-1:-1;11613:116:0;;;;;:::i;:::-;;:::i;5172:23::-;;;;;;;;;;-1:-1:-1;5172:23:0;;;;-1:-1:-1;;;5172:23:0;;;;;;5132:33;;;;;;;;;;-1:-1:-1;5132:33:0;;;;-1:-1:-1;;;5132:33:0;;;;;;12938:821;;;;;;;;;;;;;:::i;4794:56::-;;;;;;;;;;;;;;;;6218:119;;;;;;;;;;-1:-1:-1;6218:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6311:18:0;6284:7;6311:18;;;:9;:18;;;;;;;6218:119;2739:148;;;;;;;;;;;;;:::i;12440:194::-;;;;;;;;;;-1:-1:-1;12440:194:0;;;;;:::i;:::-;;:::i;12188:139::-;;;;;;;;;;-1:-1:-1;12188:139:0;;;;;:::i;:::-;;:::i;4857:58::-;;;;;;;;;;;;;;;;2525:79;;;;;;;;;;-1:-1:-1;2563:7:0;2590:6;-1:-1:-1;;;;;2590:6:0;2525:79;;5929:87;;;;;;;;;;-1:-1:-1;6001:7:0;;;;;;;;;;;;-1:-1:-1;;;6001:7:0;;;;5929:87;;4036:39;;;;;;;;;;-1:-1:-1;4036:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11740:97;;;;;;;;;;-1:-1:-1;11740:97:0;;;;;:::i;:::-;;:::i;6345:167::-;;;;;;;;;;-1:-1:-1;6345:167:0;;;;;:::i;:::-;;:::i;12001:179::-;;;;;;;;;;-1:-1:-1;12001:179:0;;;;;:::i;:::-;;:::i;12642:187::-;;;;;;;;;;;;;:::i;11506:99::-;;;;;;;;;;-1:-1:-1;11506:99:0;;;;;:::i;:::-;;:::i;11320:178::-;;;;;;;;;;-1:-1:-1;11320:178:0;;;;;:::i;:::-;;:::i;12335:97::-;;;;;;;;;;-1:-1:-1;12335:97:0;;;;;:::i;:::-;;:::i;6520:143::-;;;;;;;;;;-1:-1:-1;6520:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6628:18:0;;;6601:7;6628:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6520:143;4922:56;;;;;;;;;;;;;;;;4985:54;;;;;;;;;;;;;;;;6671:161;6746:4;6763:39;360:10;6786:7;6795:6;6763:8;:39::i;:::-;-1:-1:-1;6820:4:0;6671:161;;;;;:::o;6115:95::-;6168:7;4663:13;4607:1;4663:2;:13;:::i;:::-;4650:26;;:10;:26;:::i;:::-;6188:14;;6115:95;:::o;6840:313::-;6938:4;6955:36;6965:6;6973:9;6984:6;6955:9;:36::i;:::-;7002:121;7011:6;360:10;7033:89;7071:6;7033:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7033:19:0;;;;;;:11;:19;;;;;;;;360:10;7033:33;;;;;;;;;;:37;:89::i;:::-;7002:8;:121::i;:::-;-1:-1:-1;7141:4:0;6840:313;;;;;:::o;11845:148::-;11893:13;;-1:-1:-1;;;11893:13:0;;;;;:28;;-1:-1:-1;11910:11:0;;-1:-1:-1;;;11910:11:0;;;;11893:28;11885:37;;;;;;11941:11;;11933:52;;-1:-1:-1;;;;;11941:11:0;;;;11963:21;11933:52;;;;;11941:11;11933:52;11941:11;11933:52;11963:21;11941:11;11933:52;;;;;;;;;;;;;;;;;;;;;11845:148::o;7504:100::-;2652:6;;-1:-1:-1;;;;;2652:6:0;360:10;2652:22;2644:67;;;;-1:-1:-1;;;2644:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;7570:19:0::1;;::::0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;7570:26:0::1;7592:4;7570:26;::::0;;7504:100::o;11613:116::-;2652:6;;-1:-1:-1;;;;;2652:6:0;360:10;2652:22;2644:67;;;;-1:-1:-1;;;2644:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11694:18:0;;;::::1;;::::0;;;:12:::1;:18;::::0;;;;:27;;-1:-1:-1;;11694:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11613:116::o;12938:821::-;2652:6;;-1:-1:-1;;;;;2652:6:0;360:10;2652:22;2644:67;;;;-1:-1:-1;;;2644:67:0;;;;;;;:::i;:::-;13005:11:::1;::::0;-1:-1:-1;;;13005:11:0;::::1;;;13004:12;12996:47;;;::::0;-1:-1:-1;;;12996:47:0;;6774:2:1;12996:47:0::1;::::0;::::1;6756:21:1::0;6813:2;6793:18;;;6786:30;6852:25;6832:18;;;6825:53;6895:18;;12996:47:0::1;6572:347:1::0;12996:47:0::1;13054:15;:80:::0;;-1:-1:-1;;;;;;13054:80:0::1;13091:42;13054:80:::0;;::::1;::::0;;;13145:58:::1;::::0;13162:4:::1;::::0;4663:13:::1;4607:1;4663:2;:13;:::i;:::-;4650:26;::::0;:10:::1;:26;:::i;13145:58::-;13248:15;;;;;;;;;-1:-1:-1::0;;;;;13248:15:0::1;-1:-1:-1::0;;;;;13248:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13230:55:0::1;;13294:4;13301:15;;;;;;;;;-1:-1:-1::0;;;;;13301:15:0::1;-1:-1:-1::0;;;;;13301:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13230:94;::::0;-1:-1:-1;;;;;;13230:94:0::1;::::0;;;;;;-1:-1:-1;;;;;7410:15:1;;;13230:94:0::1;::::0;::::1;7392:34:1::0;7462:15;;7442:18;;;7435:43;7327:18;;13230:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13214:13;:110:::0;;-1:-1:-1;;;;;13214:110:0;;::::1;-1:-1:-1::0;;;;;;13214:110:0;;::::1;::::0;::::1;::::0;;:13:::1;13335:37:::0;;;:13:::1;:37;::::0;;;;;;;:44;;-1:-1:-1;;13335:44:0;;::::1;13214:110:::0;13335:44;;::::1;::::0;;;13411:13;;;::::1;13390:36:::0;;:12:::1;:36:::0;;;;;;:43;;;;::::1;;::::0;;13444:15:::1;::::0;::::1;:31;13483:21;13514:4;13520:24;13514:4:::0;-1:-1:-1;;;;;6311:18:0;6284:7;6311:18;;;:9;:18;;;;;;;6218:119;13520:24:::1;13545:1;13547::::0;13549:7:::1;2563::::0;2590:6;-1:-1:-1;;;;;2590:6:0;;2525:79;13549:7:::1;13444:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13444:129:0;;;-1:-1:-1;;;;;7848:15:1;;;13444:129:0::1;::::0;::::1;7830:34:1::0;7880:18;;;7873:34;;;;7923:18;;;7916:34;;;;7966:18;;;7959:34;8030:15;;;8009:19;;;8002:44;13557:15:0::1;8062:19:1::0;;;8055:35;7764:19;;13444:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13591:13:0::1;::::0;13622:15:::1;::::0;13584:71:::1;::::0;-1:-1:-1;;;13584:71:0;;-1:-1:-1;;;;;13622:15:0;;::::1;13584:71;::::0;::::1;8586:51:1::0;-1:-1:-1;;8653:18:1;;;8646:34;13591:13:0;::::1;::::0;-1:-1:-1;13584:29:0::1;::::0;8559:18:1;;13584:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13666:11:0::1;:18:::0;;-1:-1:-1;;;;13695:18:0;-1:-1:-1;;;13695:18:0;;;13739:12:::1;13724;:27:::0;12938:821::o;2739:148::-;2652:6;;-1:-1:-1;;;;;2652:6:0;360:10;2652:22;2644:67;;;;-1:-1:-1;;;2644:67:0;;;;;;;:::i;:::-;2846:1:::1;2830:6:::0;;2809:40:::1;::::0;-1:-1:-1;;;;;2830:6:0;;::::1;::::0;2809:40:::1;::::0;2846:1;;2809:40:::1;2877:1;2860:19:::0;;-1:-1:-1;;;;;;2860:19:0::1;::::0;;2739:148::o;12440:194::-;2652:6;;-1:-1:-1;;;;;2652:6:0;360:10;2652:22;2644:67;;;;-1:-1:-1;;;2644:67:0;;;;;;;:::i;:::-;12534:9:::1;12529:98;12545:20:::0;;::::1;12529:98;;;12610:5;12587:6;:20;12594:9;;12604:1;12594:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12587:20:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12587:20:0;:28;;-1:-1:-1;;12587:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;12567:3:0::1;12529:98;;;;12440:194:::0;;:::o;12188:139::-;2652:6;;-1:-1:-1;;;;;2652:6:0;360:10;2652:22;2644:67;;;;-1:-1:-1;;;2644:67:0;;;;;;;:::i;:::-;12273:6:::1;:16:::0;;;;12300:7:::1;:18:::0;12188:139::o;11740:97::-;2652:6;;-1:-1:-1;;;;;2652:6:0;360:10;2652:22;2644:67;;;;-1:-1:-1;;;2644:67:0;;;;;;;:::i;:::-;11807:12:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;11807:22:0::1;-1:-1:-1::0;;;;11807:22:0;;::::1;::::0;;;::::1;::::0;;11740:97::o;6345:167::-;6423:4;6440:42;360:10;6464:9;6475:6;6440:9;:42::i;12001:179::-;12083:13;;-1:-1:-1;;;12083:13:0;;;;;:28;;-1:-1:-1;12100:11:0;;-1:-1:-1;;;12100:11:0;;;;12083:28;12075:37;;;;;;12151:11;;12123:49;;-1:-1:-1;;;12123:49:0;;-1:-1:-1;;;;;12151:11:0;;;12123:49;;;8586:51:1;8653:18;;;8646:34;;;12123:27:0;;;;;;8559:18:1;;12123:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12642:187::-;2652:6;;-1:-1:-1;;;;;2652:6:0;360:10;2652:22;2644:67;;;;-1:-1:-1;;;2644:67:0;;;;;;;:::i;:::-;4663:13:::1;4607:1;4663:2;:13;:::i;:::-;4650:26;::::0;:10:::1;:26;:::i;:::-;12695:12;:20:::0;4663:13:::1;4607:1;4663:2;:13;:::i;:::-;4650:26;::::0;:10:::1;:26;:::i;:::-;12726:16;:24:::0;12761:12:::1;:18:::0;;-1:-1:-1;;;;12761:18:0::1;::::0;;12795:26:::1;4663:13;4607:1;4663:2;:13;:::i;:::-;4650:26;::::0;:10:::1;:26;:::i;:::-;12795;::::0;1361:25:1;;;1349:2;1334:18;12795:26:0::1;;;;;;;12642:187::o:0;11506:99::-;2652:6;;-1:-1:-1;;;;;2652:6:0;360:10;2652:22;2644:67;;;;-1:-1:-1;;;2644:67:0;;;;;;;:::i;:::-;11574:13:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;11574:23:0::1;-1:-1:-1::0;;;;11574:23:0;;::::1;::::0;;;::::1;::::0;;11506:99::o;11320:178::-;2652:6;;-1:-1:-1;;;;;2652:6:0;360:10;2652:22;2644:67;;;;-1:-1:-1;;;2644:67:0;;;;;;;:::i;:::-;11403:9:::1;11398:93;11414:20:::0;;::::1;11398:93;;;11475:4;11452:6;:20;11459:9;;11469:1;11459:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11452:20:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11452:20:0;:27;;-1:-1:-1;;11452:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;11436:3:0::1;11398:93;;12335:97:::0;2652:6;;-1:-1:-1;;;;;2652:6:0;360:10;2652:22;2644:67;;;;-1:-1:-1;;;2644:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12401:15:0::1;12419:5;12401:15:::0;;;:6:::1;:15;::::0;;;;:23;;-1:-1:-1;;12401:23:0::1;::::0;;12335:97::o;7161:335::-;-1:-1:-1;;;;;7254:19:0;;7246:68;;;;-1:-1:-1;;;7246:68:0;;9562:2:1;7246:68:0;;;9544:21:1;9601:2;9581:18;;;9574:30;9640:34;9620:18;;;9613:62;-1:-1:-1;;;9691:18:1;;;9684:34;9735:19;;7246:68:0;9360:400:1;7246:68:0;-1:-1:-1;;;;;7333:21:0;;7325:68;;;;-1:-1:-1;;;7325:68:0;;9967:2:1;7325:68:0;;;9949:21:1;10006:2;9986:18;;;9979:30;10045:34;10025:18;;;10018:62;-1:-1:-1;;;10096:18:1;;;10089:32;10138:19;;7325:68:0;9765:398:1;7325:68:0;-1:-1:-1;;;;;7404:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7456:32;;1361:25:1;;;7456:32:0;;1334:18:1;7456:32:0;;;;;;;7161:335;;;:::o;7612:2898::-;-1:-1:-1;;;;;7702:12:0;;;;;;:6;:12;;;;;;;;7701:13;:28;;;;-1:-1:-1;;;;;;7719:10:0;;;;;;:6;:10;;;;;;;;7718:11;7701:28;7692:72;;;;-1:-1:-1;;;7692:72:0;;10370:2:1;7692:72:0;;;10352:21:1;10409:2;10389:18;;;10382:30;10448:32;10428:18;;;10421:60;10498:18;;7692:72:0;10168:354:1;7692:72:0;-1:-1:-1;;;;;7783:18:0;;7775:68;;;;-1:-1:-1;;;7775:68:0;;10729:2:1;7775:68:0;;;10711:21:1;10768:2;10748:18;;;10741:30;10807:34;10787:18;;;10780:62;-1:-1:-1;;;10858:18:1;;;10851:35;10903:19;;7775:68:0;10527:401:1;7775:68:0;-1:-1:-1;;;;;7862:16:0;;7854:64;;;;-1:-1:-1;;;7854:64:0;;11135:2:1;7854:64:0;;;11117:21:1;11174:2;11154:18;;;11147:30;11213:34;11193:18;;;11186:62;-1:-1:-1;;;11264:18:1;;;11257:33;11307:19;;7854:64:0;10933:399:1;7854:64:0;7946:1;7937:6;:10;7929:64;;;;-1:-1:-1;;;7929:64:0;;11539:2:1;7929:64:0;;;11521:21:1;11578:2;11558:18;;;11551:30;11617:34;11597:18;;;11590:62;-1:-1:-1;;;11668:18:1;;;11661:39;11717:19;;7929:64:0;11337:405:1;7929:64:0;-1:-1:-1;;;;;8039:19:0;;8004:18;8039:19;;;:13;:19;;;;;;;;:42;;;;-1:-1:-1;;;;;;8062:19:0;;8076:4;8062:19;;8039:42;8035:103;;;8106:9;-1:-1:-1;;;;;8106:15:0;;;8098:24;;;;;;2563:7;2590:6;-1:-1:-1;;;;;8152:15:0;;;2590:6;;8152:15;;;;:32;;-1:-1:-1;2563:7:0;2590:6;-1:-1:-1;;;;;8171:13:0;;;2590:6;;8171:13;;8152:32;8148:2001;;;8214:96;8305:4;8214:86;8239:8;;8226:11;;:21;8225:74;;8273:8;;8260:11;;:21;8259:39;;8292:6;;8225:74;;8259:39;8284:6;;8225:74;;;8250:6;;8225:74;8214:6;;:10;:86::i;:::-;:90;;:96::i;:::-;8343:12;;8201:109;;-1:-1:-1;;;;8343:12:0;;;;8339:318;;;8394:15;;-1:-1:-1;;;;;8380:30:0;;;8394:15;;8380:30;;;;:62;;-1:-1:-1;8428:13:0;;-1:-1:-1;;;;;8414:28:0;;;8428:13;;8414:28;;8380:62;8376:266;;;8492:9;8473:29;;;;:18;:29;;;;;;8505:12;-1:-1:-1;8465:92:0;;;;-1:-1:-1;;;8465:92:0;;11949:2:1;8465:92:0;;;11931:21:1;11988:2;11968:18;;;11961:30;12027:34;12007:18;;;12000:62;-1:-1:-1;;;12078:18:1;;;12071:34;12122:19;;8465:92:0;11747:400:1;8465:92:0;8597:9;8578:29;;;;:18;:29;;;;;8610:12;8578:44;;8376:266;-1:-1:-1;;;;;8675:19:0;;;;;;:13;:19;;;;;;;;:53;;;;-1:-1:-1;8712:15:0;;-1:-1:-1;;;;;8698:30:0;;;8712:15;;8698:30;;8675:53;:75;;;;-1:-1:-1;;;;;;8734:16:0;;;;;;:12;:16;;;;;;;;8732:18;8675:75;8671:434;;;8790:12;;8780:6;:22;;8772:60;;;;-1:-1:-1;;;8772:60:0;;12354:2:1;8772:60:0;;;12336:21:1;12393:2;12373:18;;;12366:30;12432:27;12412:18;;;12405:55;12477:18;;8772:60:0;12152:349:1;8772:60:0;8885:16;;8875:6;8859:13;8869:2;-1:-1:-1;;;;;6311:18:0;6284:7;6311:18;;;:9;:18;;;;;;;6218:119;8859:13;:22;;;;:::i;:::-;:42;;8851:81;;;;-1:-1:-1;;;8851:81:0;;12838:2:1;8851:81:0;;;12820:21:1;12877:2;12857:18;;;12850:30;12916:28;12896:18;;;12889:56;12962:18;;8851:81:0;12636:350:1;8851:81:0;8977:12;8957;;8972:1;8957:16;;;;:::i;:::-;:32;8953:105;;;10757:20;;10805:8;9014:24;;;;;;9076:11;:13;;;:11;:13;;;:::i;:::-;;;;;;8671:434;-1:-1:-1;;;;;9126:17:0;;;;;;:13;:17;;;;;;;;9125:18;:40;;;;-1:-1:-1;;;;;;9149:16:0;;;;;;:12;:16;;;;;;;;9147:18;9125:40;9121:162;;;9220:16;;9210:6;9194:13;9204:2;-1:-1:-1;;;;;6311:18:0;6284:7;6311:18;;;:9;:18;;;;;;;6218:119;9194:13;:22;;;;:::i;:::-;:42;;9186:81;;;;-1:-1:-1;;;9186:81:0;;12838:2:1;9186:81:0;;;12820:21:1;12877:2;12857:18;;;12850:30;12916:28;12896:18;;;12889:56;12962:18;;9186:81:0;12636:350:1;9186:81:0;-1:-1:-1;;;;;9302:17:0;;;;;;:13;:17;;;;;;;;:41;;;;-1:-1:-1;;;;;;9323:20:0;;9338:4;9323:20;;9302:41;9299:195;;;9377:101;9473:4;9377:91;9402:9;;9389:11;;:22;9388:79;;9438:9;;9425:11;;:22;9424:42;;9459:7;;9388:79;;9424:42;9450:7;;9388:79;;;9414:7;;9377:6;;:10;:91::i;:101::-;9364:114;;9299:195;-1:-1:-1;;;;;9515:19:0;;;;;;:13;:19;;;;;;;;9514:20;:42;;;;-1:-1:-1;;;;;;9539:17:0;;;;;;:13;:17;;;;;;;;9538:18;9514:42;:66;;;;-1:-1:-1;;;;;;9560:20:0;;9575:4;9560:20;;9514:66;9510:122;;;-1:-1:-1;9615:1:0;9510:122;9697:4;9648:28;6311:18;;;:9;:18;;;;;;9723:6;;-1:-1:-1;;;9723:6:0;;;;9722:7;:28;;;;-1:-1:-1;;;;;;9733:17:0;;;;;;:13;:17;;;;;;;;9722:28;:43;;;;-1:-1:-1;9754:11:0;;-1:-1:-1;;;9754:11:0;;;;9722:43;:86;;;;;9790:18;;9769:20;:39;9722:86;:118;;;;;9824:16;;9812:11;;:28;9722:118;9718:420;;;9861:69;9878:51;9882:6;9889:39;9893:20;9914:13;;9889:3;:39::i;:::-;9878:3;:51::i;:::-;9861:16;:69::i;:::-;9978:21;10021:22;;10018:105;;10068:35;10081:21;10068:12;:35::i;:::-;9842:296;9718:420;8186:1963;8148:2001;10164:12;;10161:164;;10233:4;10215:24;;;;:9;:24;;;;;;:40;;10244:10;10215:28;:40::i;:::-;10208:4;10190:24;;;;:9;:24;;;;;;;:65;;;;10273:40;;-1:-1:-1;;;;;10273:40:0;;;;;;;10302:10;1361:25:1;;1349:2;1334:18;;1215:177;10273:40:0;;;;;;;;10161:164;-1:-1:-1;;;;;10351:15:0;;;;;;:9;:15;;;;;;:27;;10371:6;10351:19;:27::i;:::-;-1:-1:-1;;;;;10335:15:0;;;;;;:9;:15;;;;;:43;10403:41;10421:22;:6;10432:10;10421;:22::i;:::-;-1:-1:-1;;;;;10403:13:0;;;;;;:9;:13;;;;;;;:17;:41::i;:::-;-1:-1:-1;;;;;10389:13:0;;;;;;;:9;:13;;;;;:55;;;;10460:42;;;10479:22;:6;10490:10;10479;:22::i;:::-;10460:42;;1361:25:1;;;1349:2;1334:18;10460:42:0;;;;;;;7681:2829;7612:2898;;;:::o;1417:190::-;1503:7;1539:12;1531:6;;;;1523:29;;;;-1:-1:-1;;;1523:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1563:9:0;1575:5;1579:1;1575;:5;:::i;:::-;1563:17;1417:190;-1:-1:-1;;;;;1417:190:0:o;1615:246::-;1673:7;1697:1;1702;1697:6;1693:47;;-1:-1:-1;1727:1:0;1720:8;;1693:47;1750:9;1762:5;1766:1;1762;:5;:::i;:::-;1750:17;-1:-1:-1;1795:1:0;1786:5;1790:1;1750:17;1786:5;:::i;:::-;:10;1778:56;;;;-1:-1:-1;;;1778:56:0;;13688:2:1;1778:56:0;;;13670:21:1;13727:2;13707:18;;;13700:30;13766:34;13746:18;;;13739:62;-1:-1:-1;;;13817:18:1;;;13810:31;13858:19;;1778:56:0;13486:397:1;1778:56:0;1852:1;1615:246;-1:-1:-1;;;1615:246:0:o;1869:132::-;1927:7;1954:39;1958:1;1961;1954:39;;;;;;;;;;;;;;;;;:3;:39::i;10520:98::-;10577:7;10604:1;10602;:3;10601:9;;10609:1;10601:9;;;-1:-1:-1;10607:1:0;10520:98;-1:-1:-1;10520:98:0:o;10829:483::-;5397:6;:13;;-1:-1:-1;;;;5397:13:0;-1:-1:-1;;;5397:13:0;;;10931:16:::1;::::0;;10945:1:::1;10931:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10931:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10931:16:0::1;10907:40;;10976:4;10958;10963:1;10958:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10958:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11002:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11002:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10958:7;;11002:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10992:4;10997:1;10992:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10992:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11067:15:::1;::::0;11035:62:::1;::::0;11052:4:::1;::::0;11067:15:::1;11085:11:::0;11035:8:::1;:62::i;:::-;11108:15;::::0;:196:::1;::::0;-1:-1:-1;;;11108:196:0;;-1:-1:-1;;;;;11108:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11189:11;;11108:15:::1;::::0;11231:4;;11258::::1;::::0;11278:15:::1;::::0;11108:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5435:6:0;:14;;-1:-1:-1;;;;5435:14:0;;;-1:-1:-1;;;;10829:483:0:o;12837:93::-;12894:11;;:28;;-1:-1:-1;;;;;12894:11:0;;;;:28;;;;;12915:6;;12894:11;:28;:11;:28;12915:6;12894:11;:28;;;;;;;;;;;;;;;;;;;;;12837:93;:::o;1086:179::-;1144:7;;1176:5;1180:1;1176;:5;:::i;:::-;1164:17;;1205:1;1200;:6;;1192:46;;;;-1:-1:-1;;;1192:46:0;;15207:2:1;1192:46:0;;;15189:21:1;15246:2;15226:18;;;15219:30;15285:29;15265:18;;;15258:57;15332:18;;1192:46:0;15005:351:1;1273:136:0;1331:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;2009:189::-;2095:7;2130:12;2123:5;2115:28;;;;-1:-1:-1;;;2115:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2154:9:0;2166:5;2170:1;2166;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:118::-;2593:5;2586:13;2579:21;2572:5;2569:32;2559:60;;2615:1;2612;2605:12;2630:382;2695:6;2703;2756:2;2744:9;2735:7;2731:23;2727:32;2724:52;;;2772:1;2769;2762:12;2724:52;2811:9;2798:23;2830:31;2855:5;2830:31;:::i;:::-;2880:5;-1:-1:-1;2937:2:1;2922:18;;2909:32;2950:30;2909:32;2950:30;:::i;:::-;2999:7;2989:17;;;2630:382;;;;;:::o;3017:615::-;3103:6;3111;3164:2;3152:9;3143:7;3139:23;3135:32;3132:52;;;3180:1;3177;3170:12;3132:52;3220:9;3207:23;3249:18;3290:2;3282:6;3279:14;3276:34;;;3306:1;3303;3296:12;3276:34;3344:6;3333:9;3329:22;3319:32;;3389:7;3382:4;3378:2;3374:13;3370:27;3360:55;;3411:1;3408;3401:12;3360:55;3451:2;3438:16;3477:2;3469:6;3466:14;3463:34;;;3493:1;3490;3483:12;3463:34;3546:7;3541:2;3531:6;3528:1;3524:14;3520:2;3516:23;3512:32;3509:45;3506:65;;;3567:1;3564;3557:12;3506:65;3598:2;3590:11;;;;;3620:6;;-1:-1:-1;3017:615:1;;-1:-1:-1;;;;3017:615:1:o;3637:248::-;3705:6;3713;3766:2;3754:9;3745:7;3741:23;3737:32;3734:52;;;3782:1;3779;3772:12;3734:52;-1:-1:-1;;3805:23:1;;;3875:2;3860:18;;;3847:32;;-1:-1:-1;3637:248:1:o;3890:241::-;3946:6;3999:2;3987:9;3978:7;3974:23;3970:32;3967:52;;;4015:1;4012;4005:12;3967:52;4054:9;4041:23;4073:28;4095:5;4073:28;:::i;4136:388::-;4204:6;4212;4265:2;4253:9;4244:7;4240:23;4236:32;4233:52;;;4281:1;4278;4271:12;4233:52;4320:9;4307:23;4339:31;4364:5;4339:31;:::i;:::-;4389:5;-1:-1:-1;4446:2:1;4431:18;;4418:32;4459:33;4418:32;4459:33;:::i;4529:127::-;4590:10;4585:3;4581:20;4578:1;4571:31;4621:4;4618:1;4611:15;4645:4;4642:1;4635:15;4661:416;4750:1;4787:5;4750:1;4801:270;4822:7;4812:8;4809:21;4801:270;;;4881:4;4877:1;4873:6;4869:17;4863:4;4860:27;4857:53;;;4890:18;;:::i;:::-;4940:7;4930:8;4926:22;4923:55;;;4960:16;;;;4923:55;5039:22;;;;4999:15;;;;4801:270;;;4805:3;4661:416;;;;;:::o;5082:806::-;5131:5;5161:8;5151:80;;-1:-1:-1;5202:1:1;5216:5;;5151:80;5250:4;5240:76;;-1:-1:-1;5287:1:1;5301:5;;5240:76;5332:4;5350:1;5345:59;;;;5418:1;5413:130;;;;5325:218;;5345:59;5375:1;5366:10;;5389:5;;;5413:130;5450:3;5440:8;5437:17;5434:43;;;5457:18;;:::i;:::-;-1:-1:-1;;5513:1:1;5499:16;;5528:5;;5325:218;;5627:2;5617:8;5614:16;5608:3;5602:4;5599:13;5595:36;5589:2;5579:8;5576:16;5571:2;5565:4;5562:12;5558:35;5555:77;5552:159;;;-1:-1:-1;5664:19:1;;;5696:5;;5552:159;5743:34;5768:8;5762:4;5743:34;:::i;:::-;5813:6;5809:1;5805:6;5801:19;5792:7;5789:32;5786:58;;;5824:18;;:::i;:::-;5862:20;;5082:806;-1:-1:-1;;;5082:806:1:o;5893:140::-;5951:5;5980:47;6021:4;6011:8;6007:19;6001:4;5980:47;:::i;6038:168::-;6111:9;;;6142;;6159:15;;;6153:22;;6139:37;6129:71;;6180:18;;:::i;6211:356::-;6413:2;6395:21;;;6432:18;;;6425:30;6491:34;6486:2;6471:18;;6464:62;6558:2;6543:18;;6211:356::o;6924:251::-;6994:6;7047:2;7035:9;7026:7;7022:23;7018:32;7015:52;;;7063:1;7060;7053:12;7015:52;7095:9;7089:16;7114:31;7139:5;7114:31;:::i;8101:306::-;8189:6;8197;8205;8258:2;8246:9;8237:7;8233:23;8229:32;8226:52;;;8274:1;8271;8264:12;8226:52;8303:9;8297:16;8287:26;;8353:2;8342:9;8338:18;8332:25;8322:35;;8397:2;8386:9;8382:18;8376:25;8366:35;;8101:306;;;;;:::o;8691:245::-;8758:6;8811:2;8799:9;8790:7;8786:23;8782:32;8779:52;;;8827:1;8824;8817:12;8779:52;8859:9;8853:16;8878:28;8900:5;8878:28;:::i;8941:127::-;9002:10;8997:3;8993:20;8990:1;8983:31;9033:4;9030:1;9023:15;9057:4;9054:1;9047:15;12506:125;12571:9;;;12592:10;;;12589:36;;;12605:18;;:::i;12991:135::-;13030:3;13051:17;;;13048:43;;13071:18;;:::i;:::-;-1:-1:-1;13118:1:1;13107:13;;12991:135::o;13131:128::-;13198:9;;;13219:11;;;13216:37;;;13233:18;;:::i;13264:217::-;13304:1;13330;13320:132;;13374:10;13369:3;13365:20;13362:1;13355:31;13409:4;13406:1;13399:15;13437:4;13434:1;13427:15;13320:132;-1:-1:-1;13466:9:1;;13264:217::o;14020:980::-;14282:4;14330:3;14319:9;14315:19;14361:6;14350:9;14343:25;14387:2;14425:6;14420:2;14409:9;14405:18;14398:34;14468:3;14463:2;14452:9;14448:18;14441:31;14492:6;14527;14521:13;14558:6;14550;14543:22;14596:3;14585:9;14581:19;14574:26;;14635:2;14627:6;14623:15;14609:29;;14656:1;14666:195;14680:6;14677:1;14674:13;14666:195;;;14745:13;;-1:-1:-1;;;;;14741:39:1;14729:52;;14836:15;;;;14801:12;;;;14777:1;14695:9;14666:195;;;-1:-1:-1;;;;;;;14917:32:1;;;;14912:2;14897:18;;14890:60;-1:-1:-1;;;14981:3:1;14966:19;14959:35;14878:3;14020:980;-1:-1:-1;;;14020:980:1:o

Swarm Source

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