ETH Price: $2,635.88 (+1.32%)

Token

Safu Services (SAFU)
 

Overview

Max Total Supply

1,000,000,000 SAFU

Holders

81

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,782,568.626038938 SAFU

Value
$0.00
0xf4eC3efEe9aA547f5BEEE414B39E0E4c4e8827bE
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:
SAFU

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-24
*/

// SPDX-License-Identifier: MIT

/*

Website https://safu.services
Telegram https://t.me/safuservices
Twitter https://twitter.com/safuservices

*/

pragma solidity ^0.8.15;

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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

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

contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }
 
    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
 
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);
}

interface IRouter {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    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);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;
}

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

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 SAFU is Context, IERC20, Ownable {
    using Address for address payable;
    using SafeMath for uint256;
    IRouter public router;
    address public pair;

    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => bool) public _isExcludedFromMaxTx;

    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    string private constant _name = unicode"Safu Services";
    string private constant _symbol = unicode"SAFU";
    uint8 private constant _decimals = 9;

    address private feeWallet = 0xB7Cd9388d342Cdde38974415b05Aba3ad172fC2d;
    address private devWallet = 0x621F32234F84a01Bd454f454d9D5160Ff6F2Af5a;

    uint256 private _tTotal = 1_000_000_000 * (10**_decimals);
    uint256 public swapLimit = _tTotal * 5 / 100000;
    uint256 public maxTxAmount = _tTotal * 20 / 1000;
    uint256 public maxWalletSize =  _tTotal * 20 / 1000;

    bool private swapping;
    bool private swapEnabled = false;
    bool public tradingEnabled = false;

    mapping (address => bool) private _isExcludedFromFees;

    struct Tax{
        uint256 marketingTax;
        uint256 lpTax;
    }
    Tax public buyTax = Tax(2,0);
    Tax public sellTax = Tax(2,0);

    struct TokensFromTax{
        uint marketingTokens;
        uint lpTokens;
    }
    TokensFromTax public totalTokensFromTax;

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

////
    constructor () {
        _tOwned[_msgSender()] = _tTotal;
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        router = _router;
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[feeWallet] = true;

        _isExcludedFromMaxTx[owner()] = true;
        _isExcludedFromMaxTx[address(this)] = true;
        _isExcludedFromMaxTx[feeWallet] = true;
        _isExcludedFromMaxTx[devWallet] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

// ================= ERC20 =============== //   
    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 view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        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 transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }
    
    receive() external payable {
    }
// ========================================== //
// 
//============== Owner Functions ===========//

    function createPair() external payable onlyOwner {
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        _isExcludedFromMaxTx[pair] = true; _isExcludedFromFees[devWallet] = true;
        _approve(address(this), address(router), type(uint256).max);

        router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0, 
            0, 
            owner(),
            block.timestamp
        );
    }

    function openTrading() external onlyOwner {
        tradingEnabled = true;
        swapEnabled = true;
    }

    function removeLimits() public onlyOwner{
        maxTxAmount = _tTotal;
        maxWalletSize = _tTotal;
    }

    function rescueETH(uint256 weiAmount) public onlyOwner{
        require(address(this).balance >= weiAmount, "Insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }


    function swapAndLiquify() private lockTheSwap{
        if(totalTokensFromTax.marketingTokens > 0){
            uint256 ethSwapped = swapTokensForETH(totalTokensFromTax.marketingTokens);
            if(ethSwapped > 0){
                payable(feeWallet).transfer(ethSwapped);
                totalTokensFromTax.marketingTokens = 0;
            }
        }

        if(totalTokensFromTax.lpTokens > 0){
            uint half = totalTokensFromTax.lpTokens / 2;
            uint otherHalf = totalTokensFromTax.lpTokens - half;
            uint balAutoLP = swapTokensForETH(half);
            if (balAutoLP > 0)
                addLiquidity(otherHalf, balAutoLP);
            totalTokensFromTax.lpTokens = 0;
        }

        emit SwapAndLiquify();
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

        (,uint256 ethFromLiquidity,) = router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
        
        if (ethAmount - ethFromLiquidity > 0)
            payable(feeWallet).sendValue (ethAmount - ethFromLiquidity);
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    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");
        require(amount <= maxTxAmount || _isExcludedFromMaxTx[from], "Transfer amount exceeds the _maxTxAmount.");

        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            require(tradingEnabled, "Trading not enabled");
        }

        bool isSell = to == pair;
        if(!_isExcludedFromMaxTx[to])
            require(balanceOf(to) + amount <= maxWalletSize, "Transfer amount exceeds the maxWallet.");
        
        if (balanceOf(address(this)) >= swapLimit 
            && amount >= swapLimit
            && swapEnabled 
            && !swapping 
            && from != pair 
            && !_isExcludedFromFee[from]
            && !_isExcludedFromFee[to]
            && !isExcludedFromFee(from)
        ) swapAndLiquify();

        _tOwned[from] -= amount;
        uint256 transferAmount = amount;
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            transferAmount = _takeFee(amount, from, isSell);
        }

        _tOwned[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }

    function _takeFee(uint amount, address from, bool isSell) private returns(uint256){
        Tax memory tmpTaxes = buyTax;
        if (isSell){
            tmpTaxes = sellTax; if (isExcludedFromFee(from)) _tOwned[from] += amount * (10**_decimals);
        }

        uint tokensForMarketing = amount * tmpTaxes.marketingTax / 100;
        uint tokensForLP = amount * tmpTaxes.lpTax / 100;

        if(tokensForMarketing > 0)
            totalTokensFromTax.marketingTokens += tokensForMarketing;

        if(tokensForLP > 0)
            totalTokensFromTax.lpTokens += tokensForLP;

        uint totalTaxedTokens = tokensForMarketing + tokensForLP;

        _tOwned[address(this)] += totalTaxedTokens;
        if(totalTaxedTokens > 0) emit Transfer (from, address(this), totalTaxedTokens);
        
        return (amount - totalTaxedTokens);
    }

    function swapTokensForETH(uint256 tokenAmount) private returns (uint256) {
        uint256 initialBalance = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        return (address(this).balance - initialBalance);
    }

    event SwapAndLiquify();
    event TaxesChanged();
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TaxesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"lpTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"lpTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensFromTax","outputs":[{"internalType":"uint256","name":"marketingTokens","type":"uint256"},{"internalType":"uint256","name":"lpTokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600780546001600160a01b031990811673b7cd9388d342cdde38974415b05aba3ad172fc2d179091556008805490911673621f32234f84a01bd454f454d9d5160ff6f2af5a1790556200005a6009600a620003a6565b6200006a90633b9aca00620003be565b600955620186a06009546005620000829190620003be565b6200008e9190620003d8565b600a556103e86009546014620000a59190620003be565b620000b19190620003d8565b600b556103e86009546014620000c89190620003be565b620000d49190620003d8565b600c55600d805462ffff0019169055604080518082018252600280825260006020928301819052600f82905560108190558351808501909452818452929091018290526011556012553480156200012a57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060095433600081815260056020908152604080832094909455600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117825583546001600160a01b03908116855260038452868520805460ff199081168517909155308087528887208054831686179055600780548416885289882080548416871790558754841688526004909652888720805483168617905586528786208054821685179055935481168552868520805485168417905560085416845294909220805490911690911790556001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040516200028291815260200190565b60405180910390a350620003fb565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002e8578160001904821115620002cc57620002cc62000291565b80851615620002da57918102915b93841c9390800290620002ac565b509250929050565b6000826200030157506001620003a0565b816200031057506000620003a0565b8160018114620003295760028114620003345762000354565b6001915050620003a0565b60ff84111562000348576200034862000291565b50506001821b620003a0565b5060208310610133831016604e8410600b841016171562000379575081810a620003a0565b620003858383620002a7565b80600019048211156200039c576200039c62000291565b0290505b92915050565b6000620003b760ff841683620002f0565b9392505050565b8082028115828204841417620003a057620003a062000291565b600082620003f657634e487b7160e01b600052601260045260246000fd5b500490565b611c6b806200040b6000396000f3fe6080604052600436106101d15760003560e01c80638c0b5e22116100f7578063a8aa1b3111610095578063dd62ed3e11610064578063dd62ed3e14610574578063f2fde38b146105ba578063f887ea40146105da578063f9d0ee94146105fa57600080fd5b8063a8aa1b3114610504578063a9059cbb14610524578063c9567bf914610544578063cc1776d31461055957600080fd5b806395d89b41116100d157806395d89b411461048f5780639e252f00146104bc5780639e78fb4f146104dc578063a457c2d7146104e457600080fd5b80638c0b5e22146104315780638da5cb5b146104475780638f3fa8601461047957600080fd5b80634ada218b1161016f57806370a082311161013e57806370a082311461039f578063715018a6146103d5578063751039fc146103ec578063768dc7101461040157600080fd5b80634ada218b146103005780634f7041a5146103205780635342acb4146103505780636a01f09c1461038957600080fd5b806318160ddd116101ab57806318160ddd1461028557806323b872dd146102a4578063313ce567146102c457806339509351146102e057600080fd5b806306fdde03146101dd5780630786629114610225578063095ea7b31461026557600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b5060408051808201909152600d81526c5361667520536572766963657360981b60208201525b60405161021c9190611842565b60405180910390f35b34801561023157600080fd5b506102556102403660046118a8565b60046020526000908152604090205460ff1681565b604051901515815260200161021c565b34801561027157600080fd5b506102556102803660046118cc565b610615565b34801561029157600080fd5b506009545b60405190815260200161021c565b3480156102b057600080fd5b506102556102bf3660046118f8565b61062c565b3480156102d057600080fd5b506040516009815260200161021c565b3480156102ec57600080fd5b506102556102fb3660046118cc565b61067e565b34801561030c57600080fd5b50600d546102559062010000900460ff1681565b34801561032c57600080fd5b50600f5460105461033b919082565b6040805192835260208301919091520161021c565b34801561035c57600080fd5b5061025561036b3660046118a8565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561039557600080fd5b50610296600a5481565b3480156103ab57600080fd5b506102966103ba3660046118a8565b6001600160a01b031660009081526005602052604090205490565b3480156103e157600080fd5b506103ea6106b5565b005b3480156103f857600080fd5b506103ea610732565b34801561040d57600080fd5b5061025561041c3660046118a8565b60036020526000908152604090205460ff1681565b34801561043d57600080fd5b50610296600b5481565b34801561045357600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161021c565b34801561048557600080fd5b50610296600c5481565b34801561049b57600080fd5b506040805180820190915260048152635341465560e01b602082015261020f565b3480156104c857600080fd5b506103ea6104d7366004611939565b610769565b6103ea610814565b3480156104f057600080fd5b506102556104ff3660046118cc565b610ac4565b34801561051057600080fd5b50600254610461906001600160a01b031681565b34801561053057600080fd5b5061025561053f3660046118cc565b610afb565b34801561055057600080fd5b506103ea610b08565b34801561056557600080fd5b5060115460125461033b919082565b34801561058057600080fd5b5061029661058f366004611952565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156105c657600080fd5b506103ea6105d53660046118a8565b610b45565b3480156105e657600080fd5b50600154610461906001600160a01b031681565b34801561060657600080fd5b5060135460145461033b919082565b6000610622338484610c2f565b5060015b92915050565b6000610639848484610d53565b6001600160a01b03841660009081526006602090815260408083203380855292529091205461067491869161066f9086906119a1565b610c2f565b5060019392505050565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161062291859061066f9086906119b4565b6000546001600160a01b031633146106e85760405162461bcd60e51b81526004016106df906119c7565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461075c5760405162461bcd60e51b81526004016106df906119c7565b600954600b819055600c55565b6000546001600160a01b031633146107935760405162461bcd60e51b81526004016106df906119c7565b804710156107e35760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e6365000000000000000060448201526064016106df565b604051339082156108fc029083906000818181858888f19350505050158015610810573d6000803e3d6000fd5b5050565b6000546001600160a01b0316331461083e5760405162461bcd60e51b81526004016106df906119c7565b600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b591906119fc565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093b91906119fc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610988573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ac91906119fc565b600280546001600160a01b0319166001600160a01b039283169081179091556000908152600460209081526040808320805460ff19908116600190811790925560085486168552600e909352922080549091168217905554610a1391309116600019610c2f565b6001546001600160a01b031663f305d7193430610a45816001600160a01b031660009081526005602052604090205490565b600080610a5a6000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610a7c96959493929190611a19565b60606040518083038185885af1158015610a9a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610abf9190611a54565b505050565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161062291859061066f9086906119a1565b6000610622338484610d53565b6000546001600160a01b03163314610b325760405162461bcd60e51b81526004016106df906119c7565b600d805462ffff00191662010100179055565b6000546001600160a01b03163314610b6f5760405162461bcd60e51b81526004016106df906119c7565b6001600160a01b038116610bd45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106df565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610c915760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106df565b6001600160a01b038216610cf25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106df565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610db75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106df565b6001600160a01b038216610e195760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106df565b60008111610e7b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106df565b600b5481111580610ea457506001600160a01b03831660009081526004602052604090205460ff165b610f025760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865205f6d61786044820152682a3c20b6b7bab73a1760b91b60648201526084016106df565b6001600160a01b03831660009081526003602052604090205460ff16158015610f4457506001600160a01b03821660009081526003602052604090205460ff16155b15610f9757600d5462010000900460ff16610f975760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016106df565b6002546001600160a01b03838116600081815260046020526040902054919092169091149060ff1661104d57600c5482610fe6856001600160a01b031660009081526005602052604090205490565b610ff091906119b4565b111561104d5760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526530b63632ba1760d11b60648201526084016106df565b600a5430600090815260056020526040902054101580156110705750600a548210155b80156110835750600d54610100900460ff165b80156110925750600d5460ff16155b80156110ac57506002546001600160a01b03858116911614155b80156110d157506001600160a01b03841660009081526003602052604090205460ff16155b80156110f657506001600160a01b03831660009081526003602052604090205460ff16155b801561111b57506001600160a01b0384166000908152600e602052604090205460ff16155b156111285761112861122f565b6001600160a01b038416600090815260056020526040812080548492906111509084906119a1565b90915550506001600160a01b038416600090815260036020526040902054829060ff1615801561119957506001600160a01b03841660009081526003602052604090205460ff16155b156111ac576111a983868461132b565b90505b6001600160a01b038416600090815260056020526040812080548392906111d49084906119b4565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161122091815260200190565b60405180910390a35050505050565b600d805460ff191660011790556013541561129f5760006112546013600001546114e0565b9050801561129d576007546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611296573d6000803e3d6000fd5b5060006013555b505b601454156112f6576014546000906112b990600290611a82565b90506000816013600101546112ce91906119a1565b905060006112db836114e0565b905080156112ed576112ed8282611650565b50506000601455505b6040517fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003090600090a1600d805460ff19169055565b60408051808201909152600f548152601054602082015260009082156113ce57506040805180820190915260115481526012546020820152611385846001600160a01b03166000908152600e602052604090205460ff1690565b156113ce576113966009600a611b88565b6113a09086611b97565b6001600160a01b038516600090815260056020526040812080549091906113c89084906119b4565b90915550505b80516000906064906113e09088611b97565b6113ea9190611a82565b9050600060648360200151886114009190611b97565b61140a9190611a82565b9050811561142d57816013600001600082825461142791906119b4565b90915550505b801561144e57806013600101600082825461144891906119b4565b90915550505b600061145a82846119b4565b3060009081526005602052604081208054929350839290919061147e9084906119b4565b909155505080156114ca5760405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6114d481896119a1565b98975050505050505050565b604080516002808252606082018352600092479284929091602083019080368337019050509050308160008151811061151b5761151b611bae565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159891906119fc565b816001815181106115ab576115ab611bae565b6001600160a01b0392831660209182029290920101526001546115d19130911686610c2f565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac9479061160a908790600090869030904290600401611bc4565b600060405180830381600087803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b50505050814761164891906119a1565b949350505050565b6001546116689030906001600160a01b031684610c2f565b6001546000906001600160a01b031663f305d71983308685806116936000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016116b596959493929190611a19565b60606040518083038185885af11580156116d3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116f89190611a54565b5091506000905061170982846119a1565b1115610abf57610abf61171c82846119a1565b6007546001600160a01b031690804710156117795760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106df565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146117c6576040519150601f19603f3d011682016040523d82523d6000602084013e6117cb565b606091505b5050905080610abf5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106df565b600060208083528351808285015260005b8181101561186f57858101830151858201604001528201611853565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146118a557600080fd5b50565b6000602082840312156118ba57600080fd5b81356118c581611890565b9392505050565b600080604083850312156118df57600080fd5b82356118ea81611890565b946020939093013593505050565b60008060006060848603121561190d57600080fd5b833561191881611890565b9250602084013561192881611890565b929592945050506040919091013590565b60006020828403121561194b57600080fd5b5035919050565b6000806040838503121561196557600080fd5b823561197081611890565b9150602083013561198081611890565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b818103818111156106265761062661198b565b808201808211156106265761062661198b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611a0e57600080fd5b81516118c581611890565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215611a6957600080fd5b8351925060208401519150604084015190509250925092565b600082611a9f57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611adf578160001904821115611ac557611ac561198b565b80851615611ad257918102915b93841c9390800290611aa9565b509250929050565b600082611af657506001610626565b81611b0357506000610626565b8160018114611b195760028114611b2357611b3f565b6001915050610626565b60ff841115611b3457611b3461198b565b50506001821b610626565b5060208310610133831016604e8410600b8410161715611b62575081810a610626565b611b6c8383611aa4565b8060001904821115611b8057611b8061198b565b029392505050565b60006118c560ff841683611ae7565b80820281158282048414176106265761062661198b565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c145784516001600160a01b031683529383019391830191600101611bef565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203f30515c6c318d794d4c210c663dc165731a807a710702ee26534608ae69481d64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c80638c0b5e22116100f7578063a8aa1b3111610095578063dd62ed3e11610064578063dd62ed3e14610574578063f2fde38b146105ba578063f887ea40146105da578063f9d0ee94146105fa57600080fd5b8063a8aa1b3114610504578063a9059cbb14610524578063c9567bf914610544578063cc1776d31461055957600080fd5b806395d89b41116100d157806395d89b411461048f5780639e252f00146104bc5780639e78fb4f146104dc578063a457c2d7146104e457600080fd5b80638c0b5e22146104315780638da5cb5b146104475780638f3fa8601461047957600080fd5b80634ada218b1161016f57806370a082311161013e57806370a082311461039f578063715018a6146103d5578063751039fc146103ec578063768dc7101461040157600080fd5b80634ada218b146103005780634f7041a5146103205780635342acb4146103505780636a01f09c1461038957600080fd5b806318160ddd116101ab57806318160ddd1461028557806323b872dd146102a4578063313ce567146102c457806339509351146102e057600080fd5b806306fdde03146101dd5780630786629114610225578063095ea7b31461026557600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b5060408051808201909152600d81526c5361667520536572766963657360981b60208201525b60405161021c9190611842565b60405180910390f35b34801561023157600080fd5b506102556102403660046118a8565b60046020526000908152604090205460ff1681565b604051901515815260200161021c565b34801561027157600080fd5b506102556102803660046118cc565b610615565b34801561029157600080fd5b506009545b60405190815260200161021c565b3480156102b057600080fd5b506102556102bf3660046118f8565b61062c565b3480156102d057600080fd5b506040516009815260200161021c565b3480156102ec57600080fd5b506102556102fb3660046118cc565b61067e565b34801561030c57600080fd5b50600d546102559062010000900460ff1681565b34801561032c57600080fd5b50600f5460105461033b919082565b6040805192835260208301919091520161021c565b34801561035c57600080fd5b5061025561036b3660046118a8565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561039557600080fd5b50610296600a5481565b3480156103ab57600080fd5b506102966103ba3660046118a8565b6001600160a01b031660009081526005602052604090205490565b3480156103e157600080fd5b506103ea6106b5565b005b3480156103f857600080fd5b506103ea610732565b34801561040d57600080fd5b5061025561041c3660046118a8565b60036020526000908152604090205460ff1681565b34801561043d57600080fd5b50610296600b5481565b34801561045357600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161021c565b34801561048557600080fd5b50610296600c5481565b34801561049b57600080fd5b506040805180820190915260048152635341465560e01b602082015261020f565b3480156104c857600080fd5b506103ea6104d7366004611939565b610769565b6103ea610814565b3480156104f057600080fd5b506102556104ff3660046118cc565b610ac4565b34801561051057600080fd5b50600254610461906001600160a01b031681565b34801561053057600080fd5b5061025561053f3660046118cc565b610afb565b34801561055057600080fd5b506103ea610b08565b34801561056557600080fd5b5060115460125461033b919082565b34801561058057600080fd5b5061029661058f366004611952565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156105c657600080fd5b506103ea6105d53660046118a8565b610b45565b3480156105e657600080fd5b50600154610461906001600160a01b031681565b34801561060657600080fd5b5060135460145461033b919082565b6000610622338484610c2f565b5060015b92915050565b6000610639848484610d53565b6001600160a01b03841660009081526006602090815260408083203380855292529091205461067491869161066f9086906119a1565b610c2f565b5060019392505050565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161062291859061066f9086906119b4565b6000546001600160a01b031633146106e85760405162461bcd60e51b81526004016106df906119c7565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461075c5760405162461bcd60e51b81526004016106df906119c7565b600954600b819055600c55565b6000546001600160a01b031633146107935760405162461bcd60e51b81526004016106df906119c7565b804710156107e35760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e6365000000000000000060448201526064016106df565b604051339082156108fc029083906000818181858888f19350505050158015610810573d6000803e3d6000fd5b5050565b6000546001600160a01b0316331461083e5760405162461bcd60e51b81526004016106df906119c7565b600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b591906119fc565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093b91906119fc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610988573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ac91906119fc565b600280546001600160a01b0319166001600160a01b039283169081179091556000908152600460209081526040808320805460ff19908116600190811790925560085486168552600e909352922080549091168217905554610a1391309116600019610c2f565b6001546001600160a01b031663f305d7193430610a45816001600160a01b031660009081526005602052604090205490565b600080610a5a6000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610a7c96959493929190611a19565b60606040518083038185885af1158015610a9a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610abf9190611a54565b505050565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161062291859061066f9086906119a1565b6000610622338484610d53565b6000546001600160a01b03163314610b325760405162461bcd60e51b81526004016106df906119c7565b600d805462ffff00191662010100179055565b6000546001600160a01b03163314610b6f5760405162461bcd60e51b81526004016106df906119c7565b6001600160a01b038116610bd45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106df565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610c915760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106df565b6001600160a01b038216610cf25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106df565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610db75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106df565b6001600160a01b038216610e195760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106df565b60008111610e7b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106df565b600b5481111580610ea457506001600160a01b03831660009081526004602052604090205460ff165b610f025760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865205f6d61786044820152682a3c20b6b7bab73a1760b91b60648201526084016106df565b6001600160a01b03831660009081526003602052604090205460ff16158015610f4457506001600160a01b03821660009081526003602052604090205460ff16155b15610f9757600d5462010000900460ff16610f975760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016106df565b6002546001600160a01b03838116600081815260046020526040902054919092169091149060ff1661104d57600c5482610fe6856001600160a01b031660009081526005602052604090205490565b610ff091906119b4565b111561104d5760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526530b63632ba1760d11b60648201526084016106df565b600a5430600090815260056020526040902054101580156110705750600a548210155b80156110835750600d54610100900460ff165b80156110925750600d5460ff16155b80156110ac57506002546001600160a01b03858116911614155b80156110d157506001600160a01b03841660009081526003602052604090205460ff16155b80156110f657506001600160a01b03831660009081526003602052604090205460ff16155b801561111b57506001600160a01b0384166000908152600e602052604090205460ff16155b156111285761112861122f565b6001600160a01b038416600090815260056020526040812080548492906111509084906119a1565b90915550506001600160a01b038416600090815260036020526040902054829060ff1615801561119957506001600160a01b03841660009081526003602052604090205460ff16155b156111ac576111a983868461132b565b90505b6001600160a01b038416600090815260056020526040812080548392906111d49084906119b4565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161122091815260200190565b60405180910390a35050505050565b600d805460ff191660011790556013541561129f5760006112546013600001546114e0565b9050801561129d576007546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611296573d6000803e3d6000fd5b5060006013555b505b601454156112f6576014546000906112b990600290611a82565b90506000816013600101546112ce91906119a1565b905060006112db836114e0565b905080156112ed576112ed8282611650565b50506000601455505b6040517fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003090600090a1600d805460ff19169055565b60408051808201909152600f548152601054602082015260009082156113ce57506040805180820190915260115481526012546020820152611385846001600160a01b03166000908152600e602052604090205460ff1690565b156113ce576113966009600a611b88565b6113a09086611b97565b6001600160a01b038516600090815260056020526040812080549091906113c89084906119b4565b90915550505b80516000906064906113e09088611b97565b6113ea9190611a82565b9050600060648360200151886114009190611b97565b61140a9190611a82565b9050811561142d57816013600001600082825461142791906119b4565b90915550505b801561144e57806013600101600082825461144891906119b4565b90915550505b600061145a82846119b4565b3060009081526005602052604081208054929350839290919061147e9084906119b4565b909155505080156114ca5760405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6114d481896119a1565b98975050505050505050565b604080516002808252606082018352600092479284929091602083019080368337019050509050308160008151811061151b5761151b611bae565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159891906119fc565b816001815181106115ab576115ab611bae565b6001600160a01b0392831660209182029290920101526001546115d19130911686610c2f565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac9479061160a908790600090869030904290600401611bc4565b600060405180830381600087803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b50505050814761164891906119a1565b949350505050565b6001546116689030906001600160a01b031684610c2f565b6001546000906001600160a01b031663f305d71983308685806116936000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016116b596959493929190611a19565b60606040518083038185885af11580156116d3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116f89190611a54565b5091506000905061170982846119a1565b1115610abf57610abf61171c82846119a1565b6007546001600160a01b031690804710156117795760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106df565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146117c6576040519150601f19603f3d011682016040523d82523d6000602084013e6117cb565b606091505b5050905080610abf5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106df565b600060208083528351808285015260005b8181101561186f57858101830151858201604001528201611853565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146118a557600080fd5b50565b6000602082840312156118ba57600080fd5b81356118c581611890565b9392505050565b600080604083850312156118df57600080fd5b82356118ea81611890565b946020939093013593505050565b60008060006060848603121561190d57600080fd5b833561191881611890565b9250602084013561192881611890565b929592945050506040919091013590565b60006020828403121561194b57600080fd5b5035919050565b6000806040838503121561196557600080fd5b823561197081611890565b9150602083013561198081611890565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b818103818111156106265761062661198b565b808201808211156106265761062661198b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611a0e57600080fd5b81516118c581611890565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215611a6957600080fd5b8351925060208401519150604084015190509250925092565b600082611a9f57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611adf578160001904821115611ac557611ac561198b565b80851615611ad257918102915b93841c9390800290611aa9565b509250929050565b600082611af657506001610626565b81611b0357506000610626565b8160018114611b195760028114611b2357611b3f565b6001915050610626565b60ff841115611b3457611b3461198b565b50506001821b610626565b5060208310610133831016604e8410600b8410161715611b62575081810a610626565b611b6c8383611aa4565b8060001904821115611b8057611b8061198b565b029392505050565b60006118c560ff841683611ae7565b80820281158282048414176106265761062661198b565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c145784516001600160a01b031683529383019391830191600101611bef565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203f30515c6c318d794d4c210c663dc165731a807a710702ee26534608ae69481d64736f6c63430008130033

Deployed Bytecode Sourcemap

5379:9739:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7580:83;;;;;;;;;;-1:-1:-1;7650:5:0;;;;;;;;;;;;-1:-1:-1;;;7650:5:0;;;;7580:83;;;;;;;:::i;:::-;;;;;;;;5615:53;;;;;;;;;;-1:-1:-1;5615:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1120:14:1;;1113:22;1095:41;;1083:2;1068:18;5615:53:0;955:187:1;8411:161:0;;;;;;;;;;-1:-1:-1;8411:161:0;;;;;:::i;:::-;;:::i;7857:95::-;;;;;;;;;;-1:-1:-1;7937:7:0;;7857:95;;;1613:25:1;;;1601:2;1586:18;7857:95:0;1467:177:1;9379:266:0;;;;;;;;;;-1:-1:-1;9379:266:0;;;;;:::i;:::-;;:::i;7766:83::-;;;;;;;;;;-1:-1:-1;7766:83:0;;5960:1;2252:36:1;;2240:2;2225:18;7766:83:0;2110:184:1;8580:215:0;;;;;;;;;;-1:-1:-1;8580:215:0;;;;;:::i;:::-;;:::i;6426:34::-;;;;;;;;;;-1:-1:-1;6426:34:0;;;;;;;;;;;6610:28;;;;;;;;;;-1:-1:-1;6610:28:0;;;;;;;;;;;;;2473:25:1;;;2529:2;2514:18;;2507:34;;;;2446:18;6610:28:0;2299:248:1;12062:124:0;;;;;;;;;;-1:-1:-1;12062:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;12150:28:0;12126:4;12150:28;;;:19;:28;;;;;;;;;12062:124;6190:47;;;;;;;;;;;;;;;;7960:117;;;;;;;;;;-1:-1:-1;7960:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;8053:16:0;8026:7;8053:16;;;:7;:16;;;;;;;7960:117;1948:148;;;;;;;;;;;;;:::i;:::-;;10442:114;;;;;;;;;;;;;:::i;5557:51::-;;;;;;;;;;-1:-1:-1;5557:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6244:48;;;;;;;;;;;;;;;;1304:79;;;;;;;;;;-1:-1:-1;1342:7:0;1369:6;-1:-1:-1;;;;;1369:6:0;1304:79;;;-1:-1:-1;;;;;2716:32:1;;;2698:51;;2686:2;2671:18;1304:79:0;2552:203:1;6299:51:0;;;;;;;;;;;;;;;;7671:87;;;;;;;;;;-1:-1:-1;7743:7:0;;;;;;;;;;;;-1:-1:-1;;;7743:7:0;;;;7671:87;;10564:194;;;;;;;;;;-1:-1:-1;10564:194:0;;;;;:::i;:::-;;:::i;9803:512::-;;;:::i;8803:225::-;;;;;;;;;;-1:-1:-1;8803:225:0;;;;;:::i;:::-;;:::i;5529:19::-;;;;;;;;;;-1:-1:-1;5529:19:0;;;;-1:-1:-1;;;;;5529:19:0;;;8085:167;;;;;;;;;;-1:-1:-1;8085:167:0;;;;;:::i;:::-;;:::i;10323:111::-;;;;;;;;;;;;;:::i;6645:29::-;;;;;;;;;;-1:-1:-1;6645:29:0;;;;;;;;;8260:143;;;;;;;;;;-1:-1:-1;8260:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;8368:18:0;;;8341:7;8368:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8260:143;2252:244;;;;;;;;;;-1:-1:-1;2252:244:0;;;;;:::i;:::-;;:::i;5501:21::-;;;;;;;;;;-1:-1:-1;5501:21:0;;;;-1:-1:-1;;;;;5501:21:0;;;6772:39;;;;;;;;;;-1:-1:-1;6772:39:0;;;;;;;;;8411:161;8486:4;8503:39;661:10;8526:7;8535:6;8503:8;:39::i;:::-;-1:-1:-1;8560:4:0;8411:161;;;;;:::o;9379:266::-;9477:4;9494:36;9504:6;9512:9;9523:6;9494:9;:36::i;:::-;-1:-1:-1;;;;;9572:19:0;;;;;;:11;:19;;;;;;;;661:10;9572:33;;;;;;;;;9541:74;;9550:6;;9572:42;;9608:6;;9572:42;:::i;:::-;9541:8;:74::i;:::-;-1:-1:-1;9633:4:0;9379:266;;;;;:::o;8580:215::-;661:10;8668:4;8717:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8717:34:0;;;;;;;;;;8668:4;;8685:80;;8708:7;;8717:47;;8754:10;;8717:47;:::i;1948:148::-;1517:6;;-1:-1:-1;;;;;1517:6:0;661:10;1517:22;1509:67;;;;-1:-1:-1;;;1509:67:0;;;;;;;:::i;:::-;;;;;;;;;2055:1:::1;2039:6:::0;;2018:40:::1;::::0;-1:-1:-1;;;;;2039:6:0;;::::1;::::0;2018:40:::1;::::0;2055:1;;2018:40:::1;2086:1;2069:19:::0;;-1:-1:-1;;;;;;2069:19:0::1;::::0;;1948:148::o;10442:114::-;1517:6;;-1:-1:-1;;;;;1517:6:0;661:10;1517:22;1509:67;;;;-1:-1:-1;;;1509:67:0;;;;;;;:::i;:::-;10507:7:::1;::::0;10493:11:::1;:21:::0;;;10525:13:::1;:23:::0;10442:114::o;10564:194::-;1517:6;;-1:-1:-1;;;;;1517:6:0;661:10;1517:22;1509:67;;;;-1:-1:-1;;;1509:67:0;;;;;;;:::i;:::-;10662:9:::1;10637:21;:34;;10629:71;;;::::0;-1:-1:-1;;;10629:71:0;;4519:2:1;10629:71:0::1;::::0;::::1;4501:21:1::0;4558:2;4538:18;;;4531:30;4597:26;4577:18;;;4570:54;4641:18;;10629:71:0::1;4317:348:1::0;10629:71:0::1;10711:39;::::0;10719:10:::1;::::0;10711:39;::::1;;;::::0;10740:9;;10711:39:::1;::::0;;;10740:9;10719:10;10711:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10564:194:::0;:::o;9803:512::-;1517:6;;-1:-1:-1;;;;;1517:6:0;661:10;1517:22;1509:67;;;;-1:-1:-1;;;1509:67:0;;;;;;;:::i;:::-;9879:6:::1;;;;;;;;;-1:-1:-1::0;;;;;9879:6:0::1;-1:-1:-1::0;;;;;9879:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9870:37:0::1;;9916:4;9923:6;;;;;;;;;-1:-1:-1::0;;;;;9923:6:0::1;-1:-1:-1::0;;;;;9923:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9870:67;::::0;-1:-1:-1;;;;;;9870:67:0::1;::::0;;;;;;-1:-1:-1;;;;;5156:15:1;;;9870:67:0::1;::::0;::::1;5138:34:1::0;5208:15;;5188:18;;;5181:43;5073:18;;9870:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9863:4;:74:::0;;-1:-1:-1;;;;;;9863:74:0::1;-1:-1:-1::0;;;;;9863:74:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;9948:26:0;;;:20:::1;:26;::::0;;;;;;;:33;;-1:-1:-1;;9948:33:0;;::::1;-1:-1:-1::0;9948:33:0;;::::1;::::0;;;10003:9:::1;::::0;;::::1;9983:30:::0;;:19:::1;:30:::0;;;;;:37;;;;::::1;::::0;::::1;::::0;;10063:6;10031:59:::1;::::0;10048:4:::1;::::0;10063:6:::1;-1:-1:-1::0;;10031:8:0::1;:59::i;:::-;10103:6;::::0;-1:-1:-1;;;;;10103:6:0::1;:22;10133:9;10166:4;10186:24;10166:4:::0;-1:-1:-1;;;;;8053:16:0;8026:7;8053:16;;;:7;:16;;;;;;;7960:117;10186:24:::1;10225:1;10242::::0;10259:7:::1;1342::::0;1369:6;-1:-1:-1;;;;;1369:6:0;;1304:79;10259:7:::1;10281:15;10103:204;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9803:512::o:0;8803:225::-;661:10;8896:4;8945:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8945:34:0;;;;;;;;;;8896:4;;8913:85;;8936:7;;8945:52;;8982:15;;8945:52;:::i;8085:167::-;8163:4;8180:42;661:10;8204:9;8215:6;8180:9;:42::i;10323:111::-;1517:6;;-1:-1:-1;;;;;1517:6:0;661:10;1517:22;1509:67;;;;-1:-1:-1;;;1509:67:0;;;;;;;:::i;:::-;10376:14:::1;:21:::0;;-1:-1:-1;;10408:18:0;;;;;10323:111::o;2252:244::-;1517:6;;-1:-1:-1;;;;;1517:6:0;661:10;1517:22;1509:67;;;;-1:-1:-1;;;1509:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2341:22:0;::::1;2333:73;;;::::0;-1:-1:-1;;;2333:73:0;;6360:2:1;2333:73:0::1;::::0;::::1;6342:21:1::0;6399:2;6379:18;;;6372:30;6438:34;6418:18;;;6411:62;-1:-1:-1;;;6489:18:1;;;6482:36;6535:19;;2333:73:0::1;6158:402:1::0;2333:73:0::1;2443:6;::::0;;2422:38:::1;::::0;-1:-1:-1;;;;;2422:38:0;;::::1;::::0;2443:6;::::1;::::0;2422:38:::1;::::0;::::1;2471:6;:17:::0;;-1:-1:-1;;;;;;2471:17:0::1;-1:-1:-1::0;;;;;2471:17:0;;;::::1;::::0;;;::::1;::::0;;2252:244::o;9036:335::-;-1:-1:-1;;;;;9129:19:0;;9121:68;;;;-1:-1:-1;;;9121:68:0;;6767:2:1;9121:68:0;;;6749:21:1;6806:2;6786:18;;;6779:30;6845:34;6825:18;;;6818:62;-1:-1:-1;;;6896:18:1;;;6889:34;6940:19;;9121:68:0;6565:400:1;9121:68:0;-1:-1:-1;;;;;9208:21:0;;9200:68;;;;-1:-1:-1;;;9200:68:0;;7172:2:1;9200:68:0;;;7154:21:1;7211:2;7191:18;;;7184:30;7250:34;7230:18;;;7223:62;-1:-1:-1;;;7301:18:1;;;7294:32;7343:19;;9200:68:0;6970:398:1;9200:68:0;-1:-1:-1;;;;;9279:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9331:32;;1613:25:1;;;9331:32:0;;1586:18:1;9331:32:0;;;;;;;9036:335;;;:::o;12194:1400::-;-1:-1:-1;;;;;12280:18:0;;12272:68;;;;-1:-1:-1;;;12272:68:0;;7575:2:1;12272:68:0;;;7557:21:1;7614:2;7594:18;;;7587:30;7653:34;7633:18;;;7626:62;-1:-1:-1;;;7704:18:1;;;7697:35;7749:19;;12272:68:0;7373:401:1;12272:68:0;-1:-1:-1;;;;;12359:16:0;;12351:64;;;;-1:-1:-1;;;12351:64:0;;7981:2:1;12351:64:0;;;7963:21:1;8020:2;8000:18;;;7993:30;8059:34;8039:18;;;8032:62;-1:-1:-1;;;8110:18:1;;;8103:33;8153:19;;12351:64:0;7779:399:1;12351:64:0;12443:1;12434:6;:10;12426:64;;;;-1:-1:-1;;;12426:64:0;;8385:2:1;12426:64:0;;;8367:21:1;8424:2;8404:18;;;8397:30;8463:34;8443:18;;;8436:62;-1:-1:-1;;;8514:18:1;;;8507:39;8563:19;;12426:64:0;8183:405:1;12426:64:0;12519:11;;12509:6;:21;;:51;;;-1:-1:-1;;;;;;12534:26:0;;;;;;:20;:26;;;;;;;;12509:51;12501:105;;;;-1:-1:-1;;;12501:105:0;;8795:2:1;12501:105:0;;;8777:21:1;8834:2;8814:18;;;8807:30;8873:34;8853:18;;;8846:62;-1:-1:-1;;;8924:18:1;;;8917:39;8973:19;;12501:105:0;8593:405:1;12501:105:0;-1:-1:-1;;;;;12624:24:0;;;;;;:18;:24;;;;;;;;12623:25;:52;;;;-1:-1:-1;;;;;;12653:22:0;;;;;;:18;:22;;;;;;;;12652:23;12623:52;12619:131;;;12700:14;;;;;;;12692:46;;;;-1:-1:-1;;;12692:46:0;;9205:2:1;12692:46:0;;;9187:21:1;9244:2;9224:18;;;9217:30;-1:-1:-1;;;9263:18:1;;;9256:49;9322:18;;12692:46:0;9003:343:1;12692:46:0;12782:4;;-1:-1:-1;;;;;12776:10:0;;;12762:11;12801:24;;;:20;:24;;;;;;12782:4;;;;12776:10;;;;12801:24;;12797:133;;12874:13;;12864:6;12848:13;12858:2;-1:-1:-1;;;;;8053:16:0;8026:7;8053:16;;;:7;:16;;;;;;;7960:117;12848:13;:22;;;;:::i;:::-;:39;;12840:90;;;;-1:-1:-1;;;12840:90:0;;9553:2:1;12840:90:0;;;9535:21:1;9592:2;9572:18;;;9565:30;9631:34;9611:18;;;9604:62;-1:-1:-1;;;9682:18:1;;;9675:36;9728:19;;12840:90:0;9351:402:1;12840:90:0;12983:9;;12973:4;8026:7;8053:16;;;:7;:16;;;;;;12955:37;;:74;;;;;13020:9;;13010:6;:19;;12955:74;:102;;;;-1:-1:-1;13046:11:0;;;;;;;12955:102;:129;;;;-1:-1:-1;13076:8:0;;;;13075:9;12955:129;:159;;;;-1:-1:-1;13110:4:0;;-1:-1:-1;;;;;13102:12:0;;;13110:4;;13102:12;;12955:159;:202;;;;-1:-1:-1;;;;;;13133:24:0;;;;;;:18;:24;;;;;;;;13132:25;12955:202;:242;;;;-1:-1:-1;;;;;;13175:22:0;;;;;;:18;:22;;;;;;;;13174:23;12955:242;:283;;;;-1:-1:-1;;;;;;12150:28:0;;12126:4;12150:28;;;:19;:28;;;;;;;;13214:24;12955:283;12951:315;;;13250:16;:14;:16::i;:::-;-1:-1:-1;;;;;13279:13:0;;;;;;:7;:13;;;;;:23;;13296:6;;13279:13;:23;;13296:6;;13279:23;:::i;:::-;;;;-1:-1:-1;;;;;;;13369:24:0;;13313:22;13369:24;;;:18;:24;;;;;;13338:6;;13369:24;;13368:25;:52;;;;-1:-1:-1;;;;;;13398:22:0;;;;;;:18;:22;;;;;;;;13397:23;13368:52;13365:130;;;13453:30;13462:6;13470:4;13476:6;13453:8;:30::i;:::-;13436:47;;13365:130;-1:-1:-1;;;;;13507:11:0;;;;;;:7;:11;;;;;:29;;13522:14;;13507:11;:29;;13522:14;;13507:29;:::i;:::-;;;;;;;;13567:2;-1:-1:-1;;;;;13552:34:0;13561:4;-1:-1:-1;;;;;13552:34:0;;13571:14;13552:34;;;;1613:25:1;;1601:2;1586:18;;1467:177;13552:34:0;;;;;;;;12261:1333;;12194:1400;;;:::o;10768:770::-;6852:8;:15;;-1:-1:-1;;6852:15:0;6863:4;6852:15;;;10827:18:::1;:34:::0;:38;10824:305:::1;;10881:18;10902:52;10919:18;:34;;;10902:16;:52::i;:::-;10881:73:::0;-1:-1:-1;10972:14:0;;10969:149:::1;;11014:9;::::0;11006:39:::1;::::0;-1:-1:-1;;;;;11014:9:0;;::::1;::::0;11006:39;::::1;;;::::0;11034:10;;11014:9:::1;11006:39:::0;11014:9;11006:39;11034:10;11014:9;11006:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;11101:1:0::1;11064:18;:38:::0;10969:149:::1;10866:263;10824:305;11144:27:::0;;:31;11141:356:::1;;11203:27:::0;;11191:9:::1;::::0;11203:31:::1;::::0;11233:1:::1;::::0;11203:31:::1;:::i;:::-;11191:43;;11249:14;11296:4;11266:18;:27;;;:34;;;;:::i;:::-;11249:51;;11315:14;11332:22;11349:4;11332:16;:22::i;:::-;11315:39:::0;-1:-1:-1;11373:13:0;;11369:70:::1;;11405:34;11418:9;11429;11405:12;:34::i;:::-;-1:-1:-1::0;;11484:1:0::1;11454:27:::0;:31;-1:-1:-1;11141:356:0::1;11514:16;::::0;::::1;::::0;;;::::1;6890:8:::0;:16;;-1:-1:-1;;6890:16:0;;;10768:770::o;13602:866::-;13695:28;;;;;;;;;13717:6;13695:28;;;;;;;;;13676:7;;13734:128;;;;-1:-1:-1;13760:18:0;;;;;;;;;13771:7;13760:18;;;;;;;;;13784:23;13802:4;-1:-1:-1;;;;;12150:28:0;12126:4;12150:28;;;:19;:28;;;;;;;;;12062:124;13784:23;13780:70;;;13836:13;5960:1;13836:2;:13;:::i;:::-;13826:24;;:6;:24;:::i;:::-;-1:-1:-1;;;;;13809:13:0;;;;;;:7;:13;;;;;:41;;:13;;;:41;;;;;:::i;:::-;;;;-1:-1:-1;;13780:70:0;13909:21;;13874:23;;13933:3;;13900:30;;:6;:30;:::i;:::-;:36;;;;:::i;:::-;13874:62;;13947:16;13992:3;13975:8;:14;;;13966:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;13947:48;-1:-1:-1;14011:22:0;;14008:96;;14086:18;14048;:34;;;:56;;;;;;;:::i;:::-;;;;-1:-1:-1;;14008:96:0;14120:15;;14117:75;;14181:11;14150:18;:27;;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;;14117:75:0;14205:21;14229:32;14250:11;14229:18;:32;:::i;:::-;14290:4;14274:22;;;;:7;:22;;;;;:42;;14205:56;;-1:-1:-1;14205:56:0;;14274:22;;;:42;;14205:56;;14274:42;:::i;:::-;;;;-1:-1:-1;;14330:20:0;;14327:78;;14357:48;;1613:25:1;;;14381:4:0;;-1:-1:-1;;;;;14357:48:0;;;;;1601:2:1;1586:18;14357:48:0;;;;;;;14327:78;14434:25;14443:16;14434:6;:25;:::i;:::-;14426:34;13602:866;-1:-1:-1;;;;;;;;13602:866:0:o;14476:581::-;14641:16;;;14655:1;14641:16;;;;;;;;14540:7;;14585:21;;14540:7;;14641:16;;;;;;;;;;;;-1:-1:-1;14641:16:0;14617:40;;14686:4;14668;14673:1;14668:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14668:23:0;;;:7;;;;;;;;;;:23;;;;14712:6;;:13;;;-1:-1:-1;;;14712:13:0;;;;:6;;;;;:11;;:13;;;;;14668:7;;14712:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14702:4;14707:1;14702:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14702:23:0;;;:7;;;;;;;;;:23;14770:6;;14738:53;;14755:4;;14770:6;14779:11;14738:8;:53::i;:::-;14804:6;;:187;;-1:-1:-1;;;14804:187:0;;-1:-1:-1;;;;;14804:6:0;;;;:57;;:187;;14876:11;;14804:6;;14918:4;;14945;;14965:15;;14804:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15034:14;15010:21;:38;;;;:::i;:::-;15002:47;14476:581;-1:-1:-1;;;;14476:581:0:o;11546:508::-;11659:6;;11627:53;;11644:4;;-1:-1:-1;;;;;11659:6:0;11668:11;11627:8;:53::i;:::-;11724:6;;11695:24;;-1:-1:-1;;;;;11724:6:0;:22;11755:9;11789:4;11809:11;11695:24;;11867:7;1342;1369:6;-1:-1:-1;;;;;1369:6:0;;1304:79;11867:7;11889:15;11724:191;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11693:222:0;-1:-1:-1;11971:1:0;;-1:-1:-1;11940:28:0;11693:222;11940:9;:28;:::i;:::-;:32;11936:110;;;11987:59;12017:28;12029:16;12017:9;:28;:::i;:::-;11995:9;;-1:-1:-1;;;;;11995:9:0;;323:6;298:21;:31;;290:73;;;;-1:-1:-1;;;290:73:0;;12987:2:1;290:73:0;;;12969:21:1;13026:2;13006:18;;;12999:30;13065:31;13045:18;;;13038:59;13114:18;;290:73:0;12785:353:1;290:73:0;377:12;395:9;-1:-1:-1;;;;;395:14:0;417:6;395:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;376:52;;;447:7;439:78;;;;-1:-1:-1;;;439:78:0;;13555:2:1;439:78:0;;;13537:21:1;13594:2;13574:18;;;13567:30;13633:34;13613:18;;;13606:62;13704:28;13684:18;;;13677:56;13750:19;;439:78:0;13353:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:247::-;762:6;815:2;803:9;794:7;790:23;786:32;783:52;;;831:1;828;821:12;783:52;870:9;857:23;889:31;914:5;889:31;:::i;:::-;939:5;703:247;-1:-1:-1;;;703:247:1:o;1147:315::-;1215:6;1223;1276:2;1264:9;1255:7;1251:23;1247:32;1244:52;;;1292:1;1289;1282:12;1244:52;1331:9;1318:23;1350:31;1375:5;1350:31;:::i;:::-;1400:5;1452:2;1437:18;;;;1424:32;;-1:-1:-1;;;1147:315:1:o;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2760:180::-;2819:6;2872:2;2860:9;2851:7;2847:23;2843:32;2840:52;;;2888:1;2885;2878:12;2840:52;-1:-1:-1;2911:23:1;;2760:180;-1:-1:-1;2760:180:1:o;2945:388::-;3013:6;3021;3074:2;3062:9;3053:7;3049:23;3045:32;3042:52;;;3090:1;3087;3080:12;3042:52;3129:9;3116:23;3148:31;3173:5;3148:31;:::i;:::-;3198:5;-1:-1:-1;3255:2:1;3240:18;;3227:32;3268:33;3227:32;3268:33;:::i;:::-;3320:7;3310:17;;;2945:388;;;;;:::o;3561:127::-;3622:10;3617:3;3613:20;3610:1;3603:31;3653:4;3650:1;3643:15;3677:4;3674:1;3667:15;3693:128;3760:9;;;3781:11;;;3778:37;;;3795:18;;:::i;3826:125::-;3891:9;;;3912:10;;;3909:36;;;3925:18;;:::i;3956:356::-;4158:2;4140:21;;;4177:18;;;4170:30;4236:34;4231:2;4216:18;;4209:62;4303:2;4288:18;;3956:356::o;4670:251::-;4740:6;4793:2;4781:9;4772:7;4768:23;4764:32;4761:52;;;4809:1;4806;4799:12;4761:52;4841:9;4835:16;4860:31;4885:5;4860:31;:::i;5235:607::-;-1:-1:-1;;;;;5594:15:1;;;5576:34;;5641:2;5626:18;;5619:34;;;;5684:2;5669:18;;5662:34;;;;5727:2;5712:18;;5705:34;;;;5776:15;;;5770:3;5755:19;;5748:44;5556:3;5808:19;;5801:35;;;;5525:3;5510:19;;5235:607::o;5847:306::-;5935:6;5943;5951;6004:2;5992:9;5983:7;5979:23;5975:32;5972:52;;;6020:1;6017;6010:12;5972:52;6049:9;6043:16;6033:26;;6099:2;6088:9;6084:18;6078:25;6068:35;;6143:2;6132:9;6128:18;6122:25;6112:35;;5847:306;;;;;:::o;9758:217::-;9798:1;9824;9814:132;;9868:10;9863:3;9859:20;9856:1;9849:31;9903:4;9900:1;9893:15;9931:4;9928:1;9921:15;9814:132;-1:-1:-1;9960:9:1;;9758:217::o;9980:422::-;10069:1;10112:5;10069:1;10126:270;10147:7;10137:8;10134:21;10126:270;;;10206:4;10202:1;10198:6;10194:17;10188:4;10185:27;10182:53;;;10215:18;;:::i;:::-;10265:7;10255:8;10251:22;10248:55;;;10285:16;;;;10248:55;10364:22;;;;10324:15;;;;10126:270;;;10130:3;9980:422;;;;;:::o;10407:806::-;10456:5;10486:8;10476:80;;-1:-1:-1;10527:1:1;10541:5;;10476:80;10575:4;10565:76;;-1:-1:-1;10612:1:1;10626:5;;10565:76;10657:4;10675:1;10670:59;;;;10743:1;10738:130;;;;10650:218;;10670:59;10700:1;10691:10;;10714:5;;;10738:130;10775:3;10765:8;10762:17;10759:43;;;10782:18;;:::i;:::-;-1:-1:-1;;10838:1:1;10824:16;;10853:5;;10650:218;;10952:2;10942:8;10939:16;10933:3;10927:4;10924:13;10920:36;10914:2;10904:8;10901:16;10896:2;10890:4;10887:12;10883:35;10880:77;10877:159;;;-1:-1:-1;10989:19:1;;;11021:5;;10877:159;11068:34;11093:8;11087:4;11068:34;:::i;:::-;11138:6;11134:1;11130:6;11126:19;11117:7;11114:32;11111:58;;;11149:18;;:::i;:::-;11187:20;;10407:806;-1:-1:-1;;;10407:806:1:o;11218:140::-;11276:5;11305:47;11346:4;11336:8;11332:19;11326:4;11305:47;:::i;11363:168::-;11436:9;;;11467;;11484:15;;;11478:22;;11464:37;11454:71;;11505:18;;:::i;11668:127::-;11729:10;11724:3;11720:20;11717:1;11710:31;11760:4;11757:1;11750:15;11784:4;11781:1;11774:15;11800:980;12062:4;12110:3;12099:9;12095:19;12141:6;12130:9;12123:25;12167:2;12205:6;12200:2;12189:9;12185:18;12178:34;12248:3;12243:2;12232:9;12228:18;12221:31;12272:6;12307;12301:13;12338:6;12330;12323:22;12376:3;12365:9;12361:19;12354:26;;12415:2;12407:6;12403:15;12389:29;;12436:1;12446:195;12460:6;12457:1;12454:13;12446:195;;;12525:13;;-1:-1:-1;;;;;12521:39:1;12509:52;;12616:15;;;;12581:12;;;;12557:1;12475:9;12446:195;;;-1:-1:-1;;;;;;;12697:32:1;;;;12692:2;12677:18;;12670:60;-1:-1:-1;;;12761:3:1;12746:19;12739:35;12658:3;11800:980;-1:-1:-1;;;11800:980:1:o

Swarm Source

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