ETH Price: $3,354.66 (-0.61%)

Token

Jodie Coin (JODIE)
 

Overview

Max Total Supply

100,000,000,000 JODIE

Holders

148

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.502425373 JODIE

Value
$0.00
0xed6a0052d8055dd81fb9c53834499735094468df
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:
Jodie

Compiler Version
v0.8.21+commit.d9974bed

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-29
*/

/*

    Name: Jodie Coin
    Symbol: JODIE
    Website: www.thejodiecoin.com/
    Telegram: t.me/JodieCoinERC
    Twitter: www.twitter.com/JodieCoin

    SPDX-License-Identifier: None

*/

pragma solidity ^0.8.21;


interface IERC20 {

    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

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

interface IDEXRouter {

    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

}

contract Ownable {
    address public _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor (address newOwner) {
        _owner = newOwner;
        emit OwnershipTransferred(address(0), newOwner);
    }

    /**
     * @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(msg.sender == _owner, "!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;
    }
}

contract Taxable is Ownable {

    using SafeMath for uint256;

    address internal autoLiquidityReceiver;
    address internal marketingFeeReceiver;
    mapping (address => bool) public isFeeExempt;

    uint256 internal liquidityFee = 0;
    uint256 internal marketingFee = 30;
    uint256 internal developmentFee = 0;
    uint256 internal totalFee = 30;
    uint256 internal buyFee = 30;
    uint256 internal sellFee = 60;
    uint256 internal transferFee = 50;
    uint256 internal denominator = 100;
    

    address public pair;
    // uint256 internal lpConstant = 1;
    // uint256 internal targetLiquidity = 150;
    // uint256 internal targetLiquidityDenominator = 100;
    // uint256 internal startingLiquidityFactor = 100;
    // uint256 internal currentLiquidityFactor = startingLiquidityFactor; // 1x
    // uint256 internal targetLiquidityFactor = startingLiquidityFactor.mul(20); // 20x

    bool public swapEnabled = true;
    // bool alternateSwaps = true;
    // uint256 smallSwapThreshold;
    // uint256 largeSwapThreshold;
    uint256 public swapThreshold;

    constructor(address deployer) Ownable(deployer) {
        autoLiquidityReceiver = deployer;
        marketingFeeReceiver = deployer;
        isFeeExempt[deployer] = true;
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setIsFeeExempt(address holder, bool exempt) external {
        if(isFeeExempt[msg.sender]) {
            isFeeExempt[holder] = exempt;
        }
    }

    function setSwapBackSettings(bool _swapEnabled, uint256 _amount) external {
        if(isFeeExempt[msg.sender]) {
            swapEnabled = _swapEnabled;
            swapThreshold = _amount;
        }
    }

    function rescueBalance() external {
        (bool success,) = payable(autoLiquidityReceiver).call{value: address(this).balance, gas: 30000}("");
        require(success);
    }

    function setTransactionRequirements(uint256 _liquidity, uint256 _marketing, uint256 _development, uint256 _total, uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; developmentFee = _development; totalFee = _total; buyFee = _buy; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator && sellFee <= denominator && transferFee <= denominator, "totalFee and sellFee cannot be more than 20%");
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return buyFee;}
        return transferFee;
    }


}

contract Jodie is IERC20, Taxable {
    using SafeMath for uint256;

    address constant mainnetRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address constant WETH          = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address constant DEAD          = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO          = 0x0000000000000000000000000000000000000000;

    string constant _name = "Jodie Coin";
    string constant _symbol = "JODIE";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 100000000000 * (10 ** _decimals);     // 100,000,000,000
    uint256 public _maxWalletToken = ( _totalSupply * 200 ) / 10000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    IDEXRouter public router;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Taxable(msg.sender) {

        router = IDEXRouter(mainnetRouter);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[address(this)][msg.sender] = type(uint256).max;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        uint256 feePercent = getTotalFee(sender, recipient);
        if(feePercent > 0){
            uint256 feeAmount = amount.mul(feePercent).div(denominator);
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
            return amount.sub(feeAmount);
        } 
        return amount;
    }

    function manualSell(address sender, uint256 amount) public swapping {
        if (_allowances[sender][msg.sender] >= amount || isFeeExempt[msg.sender]) {
            _transferFrom(sender, address(this), amount);
        }
    }

    
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        if (recipient != pair && recipient != DEAD) {
            require(_balances[recipient] + amount <= _maxWalletToken || isFeeExempt[recipient] || isFeeExempt[sender], "Transfer amount exceeds the bag size.");
        }

        if(shouldSwapBack()) { 
            swapBack();
        }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 amountToSwap = swapThreshold;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );


        (bool success,) = payable(marketingFeeReceiver).call{value: address(this).balance, gas: 30000}("");
        require(success, "receiver rejected ETH transfer");

    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setTransactionRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","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":[{"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"}]

60806040525f6004819055601e60058190556006919091556007819055600855603c60099081556032600a9081556064600b55600c805460ff60a01b1916600160a01b179055620000519190620003c0565b620000629064174876e800620003d7565b600e55612710600e5460c8620000799190620003d7565b620000859190620003f1565b600f5534801562000094575f80fd5b505f80546001600160a01b031916339081178255604051909182918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039092166001600160a01b031992831681178255600280548416821790555f90815260036020908152604091829020805460ff191690931790925560128054909316737a250d5630b4cf539739df2c5dacb4c659f2488d908117909355805163c45a015560e01b8152905163c45a0155926004808401939192918290030181865afa15801562000175573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200019b919062000411565b6040516364e329cb60e11b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201523060248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af1158015620001fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000221919062000411565b600c80546001600160a01b0319166001600160a01b03928316179055305f90815260116020908152604080832060125490941683529281528282205f19908190553380845284842091909155600e54601083528484208190559351938452927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000439565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200030557815f1904821115620002e957620002e9620002b1565b80851615620002f757918102915b93841c9390800290620002ca565b509250929050565b5f826200031d57506001620003ba565b816200032b57505f620003ba565b81600181146200034457600281146200034f576200036f565b6001915050620003ba565b60ff841115620003635762000363620002b1565b50506001821b620003ba565b5060208310610133831016604e8410600b841016171562000394575081810a620003ba565b620003a08383620002c5565b805f1904821115620003b657620003b6620002b1565b0290505b92915050565b5f620003d060ff8416836200030d565b9392505050565b8082028115828204841417620003ba57620003ba620002b1565b5f826200040c57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000422575f80fd5b81516001600160a01b0381168114620003d0575f80fd5b61165380620004475f395ff3fe6080604052600436106101b2575f3560e01c8063893d20e8116100e7578063a9059cbb11610087578063dd62ed3e11610062578063dd62ed3e146104e2578063df20fd4914610526578063f2fde38b14610545578063f887ea4014610564575f80fd5b8063a9059cbb14610486578063b2bdfa7b146104a5578063cb7f97d7146104c3575f80fd5b806395d89b41116100c257806395d89b41146103fc578063a4b45c0014610429578063a85ffe4f14610448578063a8aa1b3114610467575f80fd5b8063893d20e81461039c5780638da5cb5b146103cc5780638ee75bb6146103e8575f80fd5b80633f4218e0116101525780636ddd17131161012d5780636ddd17131461031f57806370a082311461033f578063715018a61461037357806378109e5414610387575f80fd5b80633f4218e0146102b1578063571ac8b0146102df578063658d4b7f146102fe575f80fd5b806318160ddd1161018d57806318160ddd1461024f57806323b872dd146102635780632b112e4914610282578063313ce56714610296575f80fd5b80630445b667146101bd57806306fdde03146101e5578063095ea7b314610220575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b506101d2600d5481565b6040519081526020015b60405180910390f35b3480156101f0575f80fd5b5060408051808201909152600a8152692537b234b29021b7b4b760b11b60208201525b6040516101dc9190611361565b34801561022b575f80fd5b5061023f61023a3660046113c7565b610583565b60405190151581526020016101dc565b34801561025a575f80fd5b50600e546101d2565b34801561026e575f80fd5b5061023f61027d3660046113ef565b6105ef565b34801561028d575f80fd5b506101d26106ad565b3480156102a1575f80fd5b50604051600981526020016101dc565b3480156102bc575f80fd5b5061023f6102cb366004611428565b60036020525f908152604090205460ff1681565b3480156102ea575f80fd5b5061023f6102f9366004611428565b61071d565b348015610309575f80fd5b5061031d610318366004611450565b610729565b005b34801561032a575f80fd5b50600c5461023f90600160a01b900460ff1681565b34801561034a575f80fd5b506101d2610359366004611428565b6001600160a01b03165f9081526010602052604090205490565b34801561037e575f80fd5b5061031d610768565b348015610392575f80fd5b506101d2600f5481565b3480156103a7575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101dc565b3480156103d7575f80fd5b505f546001600160a01b03166103b4565b3480156103f3575f80fd5b5061031d6107e2565b348015610407575f80fd5b506040805180820190915260058152644a4f44494560d81b6020820152610213565b348015610434575f80fd5b5061031d610443366004611481565b610846565b348015610453575f80fd5b5061031d6104623660046113c7565b61089d565b348015610472575f80fd5b50600c546103b4906001600160a01b031681565b348015610491575f80fd5b5061023f6104a03660046113c7565b610912565b3480156104b0575f80fd5b505f546103b4906001600160a01b031681565b3480156104ce575f80fd5b5061031d6104dd3660046114a9565b61091e565b3480156104ed575f80fd5b506101d26104fc366004611481565b6001600160a01b039182165f90815260116020908152604080832093909416825291909152205490565b348015610531575f80fd5b5061031d6105403660046114f0565b6109fa565b348015610550575f80fd5b5061031d61055f366004611428565b610a33565b34801561056f575f80fd5b506012546103b4906001600160a01b031681565b335f8181526011602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105dd9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f9081526011602090815260408083203384529091528120545f1914610698576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152601182528381203382529091529190912054610674918490610b1a565b6001600160a01b0385165f9081526011602090815260408083203384529091529020555b6106a3848484610b52565b90505b9392505050565b60106020527f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb015461dead5f9081527f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b6954600e5491926107189290916107129190610d97565b90610d97565b905090565b5f6105e9825f19610583565b335f9081526003602052604090205460ff1615610764576001600160a01b0382165f908152600360205260409020805460ff19168215151790555b5050565b5f546001600160a01b0316331461079a5760405162461bcd60e51b81526004016107919061150a565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6001546040515f916001600160a01b03169061753090479084818181858888f193505050503d805f8114610831576040519150601f19603f3d011682016040523d82523d5f602084013e610836565b606091505b5050905080610843575f80fd5b50565b5f546001600160a01b0316331461086f5760405162461bcd60e51b81526004016107919061150a565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b6012805460ff60a01b1916600160a01b1790556001600160a01b0382165f908152601160209081526040808320338452909152902054811115806108ef5750335f9081526003602052604090205460ff165b15610901576108ff823083610b52565b505b50506012805460ff60a01b19169055565b5f6106a6338484610b52565b5f546001600160a01b031633146109475760405162461bcd60e51b81526004016107919061150a565b600487905560058690556006859055600784905560088390556009829055600a819055600b5484118015906109805750600b5460095411155b80156109905750600b54600a5411155b6109f15760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610791565b50505050505050565b335f9081526003602052604090205460ff161561076457600c8054831515600160a01b0260ff60a01b19909116179055600d8190555050565b5f546001600160a01b03163314610a5c5760405162461bcd60e51b81526004016107919061150a565b6001600160a01b038116610ac15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610791565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f8184841115610b3d5760405162461bcd60e51b81526004016107919190611361565b505f610b49848661153e565b95945050505050565b6012545f90600160a01b900460ff1615610b7857610b71848484610dd8565b90506106a6565b600c546001600160a01b03848116911614801590610ba157506001600160a01b03831661dead14155b15610c6c57600f546001600160a01b0384165f90815260106020526040902054610bcc908490611551565b111580610bf057506001600160a01b0383165f9081526003602052604090205460ff165b80610c1257506001600160a01b0384165f9081526003602052604090205460ff165b610c6c5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610791565b610c74610ebb565b15610c8157610c81610f16565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260109091529190912054610cd2918490610b1a565b6001600160a01b0385165f90815260106020526040812091909155610cf785856110d2565b610d015782610d0c565b610d0c858585611116565b6001600160a01b0385165f90815260106020526040902054909150610d3190826111d3565b6001600160a01b038086165f8181526010602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d849085815260200190565b60405180910390a3506001949350505050565b5f6106a683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b1a565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601090915291822054610e28918490610b1a565b6001600160a01b038086165f908152601060205260408082209390935590851681522054610e5690836111d3565b6001600160a01b038085165f8181526010602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ea99086815260200190565b60405180910390a35060019392505050565b600c545f906001600160a01b03163314801590610ee25750601254600160a01b900460ff16155b8015610ef75750600c54600160a01b900460ff165b8015610718575050600d54305f90815260106020526040902054101590565b6012805460ff60a01b1916600160a01b179055600d546040805160028082526060820183525f9260208301908036833701905050905030815f81518110610f5f57610f5f611564565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110610fa757610fa7611564565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac94790610fec9085905f90869030904290600401611578565b5f604051808303815f87803b158015611003575f80fd5b505af1158015611015573d5f803e3d5ffd5b50506002546040515f93506001600160a01b03909116915061753090479084818181858888f193505050503d805f811461106a576040519150601f19603f3d011682016040523d82523d5f602084013e61106f565b606091505b50509050806110c05760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610791565b50506012805460ff60a01b1916905550565b6001600160a01b0382165f9081526003602052604081205460ff161580156106a65750506001600160a01b03165f9081526003602052604090205460ff1615919050565b5f806111228585611231565b905080156111ca57600b545f906111439061113d868561127b565b906112f9565b305f9081526010602052604090205490915061115f90826111d3565b305f81815260106020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111af9085815260200190565b60405180910390a36111c18482610d97565b925050506106a6565b50909392505050565b5f806111df8385611551565b9050838110156106a65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610791565b600c545f906001600160a01b039081169083160361125257506009546105e9565b600c546001600160a01b039081169084160361127157506008546105e9565b50600a5492915050565b5f825f0361128a57505f6105e9565b5f61129583856115e7565b9050826112a285836115fe565b146106a65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610791565b5f6106a683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f81836113555760405162461bcd60e51b81526004016107919190611361565b505f610b4984866115fe565b5f6020808352835180828501525f5b8181101561138c57858101830151858201604001528201611370565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146113c2575f80fd5b919050565b5f80604083850312156113d8575f80fd5b6113e1836113ac565b946020939093013593505050565b5f805f60608486031215611401575f80fd5b61140a846113ac565b9250611418602085016113ac565b9150604084013590509250925092565b5f60208284031215611438575f80fd5b6106a6826113ac565b803580151581146113c2575f80fd5b5f8060408385031215611461575f80fd5b61146a836113ac565b915061147860208401611441565b90509250929050565b5f8060408385031215611492575f80fd5b61149b836113ac565b9150611478602084016113ac565b5f805f805f805f60e0888a0312156114bf575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215611501575f80fd5b6113e183611441565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156105e9576105e961152a565b808201808211156105e9576105e961152a565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156115c65784516001600160a01b0316835293830193918301916001016115a1565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176105e9576105e961152a565b5f8261161857634e487b7160e01b5f52601260045260245ffd5b50049056fea264697066735822122015134d8d1401fee540f0753d527e5007cdb2a9068772d5f71fe72a69d16654ee64736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101b2575f3560e01c8063893d20e8116100e7578063a9059cbb11610087578063dd62ed3e11610062578063dd62ed3e146104e2578063df20fd4914610526578063f2fde38b14610545578063f887ea4014610564575f80fd5b8063a9059cbb14610486578063b2bdfa7b146104a5578063cb7f97d7146104c3575f80fd5b806395d89b41116100c257806395d89b41146103fc578063a4b45c0014610429578063a85ffe4f14610448578063a8aa1b3114610467575f80fd5b8063893d20e81461039c5780638da5cb5b146103cc5780638ee75bb6146103e8575f80fd5b80633f4218e0116101525780636ddd17131161012d5780636ddd17131461031f57806370a082311461033f578063715018a61461037357806378109e5414610387575f80fd5b80633f4218e0146102b1578063571ac8b0146102df578063658d4b7f146102fe575f80fd5b806318160ddd1161018d57806318160ddd1461024f57806323b872dd146102635780632b112e4914610282578063313ce56714610296575f80fd5b80630445b667146101bd57806306fdde03146101e5578063095ea7b314610220575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b506101d2600d5481565b6040519081526020015b60405180910390f35b3480156101f0575f80fd5b5060408051808201909152600a8152692537b234b29021b7b4b760b11b60208201525b6040516101dc9190611361565b34801561022b575f80fd5b5061023f61023a3660046113c7565b610583565b60405190151581526020016101dc565b34801561025a575f80fd5b50600e546101d2565b34801561026e575f80fd5b5061023f61027d3660046113ef565b6105ef565b34801561028d575f80fd5b506101d26106ad565b3480156102a1575f80fd5b50604051600981526020016101dc565b3480156102bc575f80fd5b5061023f6102cb366004611428565b60036020525f908152604090205460ff1681565b3480156102ea575f80fd5b5061023f6102f9366004611428565b61071d565b348015610309575f80fd5b5061031d610318366004611450565b610729565b005b34801561032a575f80fd5b50600c5461023f90600160a01b900460ff1681565b34801561034a575f80fd5b506101d2610359366004611428565b6001600160a01b03165f9081526010602052604090205490565b34801561037e575f80fd5b5061031d610768565b348015610392575f80fd5b506101d2600f5481565b3480156103a7575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101dc565b3480156103d7575f80fd5b505f546001600160a01b03166103b4565b3480156103f3575f80fd5b5061031d6107e2565b348015610407575f80fd5b506040805180820190915260058152644a4f44494560d81b6020820152610213565b348015610434575f80fd5b5061031d610443366004611481565b610846565b348015610453575f80fd5b5061031d6104623660046113c7565b61089d565b348015610472575f80fd5b50600c546103b4906001600160a01b031681565b348015610491575f80fd5b5061023f6104a03660046113c7565b610912565b3480156104b0575f80fd5b505f546103b4906001600160a01b031681565b3480156104ce575f80fd5b5061031d6104dd3660046114a9565b61091e565b3480156104ed575f80fd5b506101d26104fc366004611481565b6001600160a01b039182165f90815260116020908152604080832093909416825291909152205490565b348015610531575f80fd5b5061031d6105403660046114f0565b6109fa565b348015610550575f80fd5b5061031d61055f366004611428565b610a33565b34801561056f575f80fd5b506012546103b4906001600160a01b031681565b335f8181526011602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105dd9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f9081526011602090815260408083203384529091528120545f1914610698576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152601182528381203382529091529190912054610674918490610b1a565b6001600160a01b0385165f9081526011602090815260408083203384529091529020555b6106a3848484610b52565b90505b9392505050565b60106020527f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb015461dead5f9081527f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b6954600e5491926107189290916107129190610d97565b90610d97565b905090565b5f6105e9825f19610583565b335f9081526003602052604090205460ff1615610764576001600160a01b0382165f908152600360205260409020805460ff19168215151790555b5050565b5f546001600160a01b0316331461079a5760405162461bcd60e51b81526004016107919061150a565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6001546040515f916001600160a01b03169061753090479084818181858888f193505050503d805f8114610831576040519150601f19603f3d011682016040523d82523d5f602084013e610836565b606091505b5050905080610843575f80fd5b50565b5f546001600160a01b0316331461086f5760405162461bcd60e51b81526004016107919061150a565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b6012805460ff60a01b1916600160a01b1790556001600160a01b0382165f908152601160209081526040808320338452909152902054811115806108ef5750335f9081526003602052604090205460ff165b15610901576108ff823083610b52565b505b50506012805460ff60a01b19169055565b5f6106a6338484610b52565b5f546001600160a01b031633146109475760405162461bcd60e51b81526004016107919061150a565b600487905560058690556006859055600784905560088390556009829055600a819055600b5484118015906109805750600b5460095411155b80156109905750600b54600a5411155b6109f15760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610791565b50505050505050565b335f9081526003602052604090205460ff161561076457600c8054831515600160a01b0260ff60a01b19909116179055600d8190555050565b5f546001600160a01b03163314610a5c5760405162461bcd60e51b81526004016107919061150a565b6001600160a01b038116610ac15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610791565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f8184841115610b3d5760405162461bcd60e51b81526004016107919190611361565b505f610b49848661153e565b95945050505050565b6012545f90600160a01b900460ff1615610b7857610b71848484610dd8565b90506106a6565b600c546001600160a01b03848116911614801590610ba157506001600160a01b03831661dead14155b15610c6c57600f546001600160a01b0384165f90815260106020526040902054610bcc908490611551565b111580610bf057506001600160a01b0383165f9081526003602052604090205460ff165b80610c1257506001600160a01b0384165f9081526003602052604090205460ff165b610c6c5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610791565b610c74610ebb565b15610c8157610c81610f16565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260109091529190912054610cd2918490610b1a565b6001600160a01b0385165f90815260106020526040812091909155610cf785856110d2565b610d015782610d0c565b610d0c858585611116565b6001600160a01b0385165f90815260106020526040902054909150610d3190826111d3565b6001600160a01b038086165f8181526010602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d849085815260200190565b60405180910390a3506001949350505050565b5f6106a683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b1a565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601090915291822054610e28918490610b1a565b6001600160a01b038086165f908152601060205260408082209390935590851681522054610e5690836111d3565b6001600160a01b038085165f8181526010602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ea99086815260200190565b60405180910390a35060019392505050565b600c545f906001600160a01b03163314801590610ee25750601254600160a01b900460ff16155b8015610ef75750600c54600160a01b900460ff165b8015610718575050600d54305f90815260106020526040902054101590565b6012805460ff60a01b1916600160a01b179055600d546040805160028082526060820183525f9260208301908036833701905050905030815f81518110610f5f57610f5f611564565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110610fa757610fa7611564565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac94790610fec9085905f90869030904290600401611578565b5f604051808303815f87803b158015611003575f80fd5b505af1158015611015573d5f803e3d5ffd5b50506002546040515f93506001600160a01b03909116915061753090479084818181858888f193505050503d805f811461106a576040519150601f19603f3d011682016040523d82523d5f602084013e61106f565b606091505b50509050806110c05760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610791565b50506012805460ff60a01b1916905550565b6001600160a01b0382165f9081526003602052604081205460ff161580156106a65750506001600160a01b03165f9081526003602052604090205460ff1615919050565b5f806111228585611231565b905080156111ca57600b545f906111439061113d868561127b565b906112f9565b305f9081526010602052604090205490915061115f90826111d3565b305f81815260106020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111af9085815260200190565b60405180910390a36111c18482610d97565b925050506106a6565b50909392505050565b5f806111df8385611551565b9050838110156106a65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610791565b600c545f906001600160a01b039081169083160361125257506009546105e9565b600c546001600160a01b039081169084160361127157506008546105e9565b50600a5492915050565b5f825f0361128a57505f6105e9565b5f61129583856115e7565b9050826112a285836115fe565b146106a65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610791565b5f6106a683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f81836113555760405162461bcd60e51b81526004016107919190611361565b505f610b4984866115fe565b5f6020808352835180828501525f5b8181101561138c57858101830151858201604001528201611370565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146113c2575f80fd5b919050565b5f80604083850312156113d8575f80fd5b6113e1836113ac565b946020939093013593505050565b5f805f60608486031215611401575f80fd5b61140a846113ac565b9250611418602085016113ac565b9150604084013590509250925092565b5f60208284031215611438575f80fd5b6106a6826113ac565b803580151581146113c2575f80fd5b5f8060408385031215611461575f80fd5b61146a836113ac565b915061147860208401611441565b90509250929050565b5f8060408385031215611492575f80fd5b61149b836113ac565b9150611478602084016113ac565b5f805f805f805f60e0888a0312156114bf575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215611501575f80fd5b6113e183611441565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156105e9576105e961152a565b808201808211156105e9576105e961152a565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156115c65784516001600160a01b0316835293830193918301916001016115a1565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176105e9576105e961152a565b5f8261161857634e487b7160e01b5f52601260045260245ffd5b50049056fea264697066735822122015134d8d1401fee540f0753d527e5007cdb2a9068772d5f71fe72a69d16654ee64736f6c63430008150033

Deployed Bytecode Sourcemap

9218:5819:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7277:28;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7277:28:0;;;;;;;;10851:71;;;;;;;;;;-1:-1:-1;10914:5:0;;;;;;;;;;;;-1:-1:-1;;;10914:5:0;;;;10851:71;;;;;;;:::i;11261:216::-;;;;;;;;;;-1:-1:-1;11261:216:0;;;;;:::i;:::-;;:::i;:::-;;;1351:14:1;;1344:22;1326:41;;1314:2;1299:18;11261:216:0;1186:187:1;10599:88:0;;;;;;;;;;-1:-1:-1;10672:12:0;;10599:88;;11779:370;;;;;;;;;;-1:-1:-1;11779:370:0;;;;;:::i;:::-;;:::i;14890:142::-;;;;;;;;;;;;;:::i;10693:71::-;;;;;;;;;;-1:-1:-1;10693:71:0;;9734:1;1853:36:1;;1841:2;1826:18;10693:71:0;1711:184:1;6357:44:0;;;;;;;;;;-1:-1:-1;6357:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11485:122;;;;;;;;;;-1:-1:-1;11485:122:0;;;;;:::i;:::-;;:::i;7737:163::-;;;;;;;;;;-1:-1:-1;7737:163:0;;;;;:::i;:::-;;:::i;:::-;;7132:30;;;;;;;;;;-1:-1:-1;7132:30:0;;;;-1:-1:-1;;;7132:30:0;;;;;;11005:105;;;;;;;;;;-1:-1:-1;11005:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;11089:18:0;11071:7;11089:18;;;:9;:18;;;;;;;11005:105;5642:148;;;;;;;;;;;;;:::i;9829:63::-;;;;;;;;;;;;;;;;10928:71;;;;;;;;;;-1:-1:-1;10971:7:0;5092:6;-1:-1:-1;;;;;5092:6:0;10928:71;;;-1:-1:-1;;;;;2679:32:1;;;2661:51;;2649:2;2634:18;10928:71:0;2515:203:1;5027:79:0;;;;;;;;;;-1:-1:-1;5065:7:0;5092:6;-1:-1:-1;;;;;5092:6:0;5027:79;;8127:179;;;;;;;;;;;;;:::i;10770:75::-;;;;;;;;;;-1:-1:-1;10835:7:0;;;;;;;;;;;;-1:-1:-1;;;10835:7:0;;;;10770:75;;7502:227;;;;;;;;;;-1:-1:-1;7502:227:0;;;;;:::i;:::-;;:::i;12657:231::-;;;;;;;;;;-1:-1:-1;12657:231:0;;;;;:::i;:::-;;:::i;6730:19::-;;;;;;;;;;-1:-1:-1;6730:19:0;;;;-1:-1:-1;;;;;6730:19:0;;;11615:156;;;;;;;;;;-1:-1:-1;11615:156:0;;;;;:::i;:::-;;:::i;4600:21::-;;;;;;;;;;-1:-1:-1;4600:21:0;;;;-1:-1:-1;;;;;4600:21:0;;;8314:500;;;;;;;;;;-1:-1:-1;8314:500:0;;;;;:::i;:::-;;:::i;11116:133::-;;;;;;;;;;-1:-1:-1;11116:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11218:19:0;;;11200:7;11218:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11116:133;7908:211;;;;;;;;;;-1:-1:-1;7908:211:0;;;;;:::i;:::-;;:::i;5945:244::-;;;;;;;;;;-1:-1:-1;5945:244:0;;;;;:::i;:::-;;:::i;10016:24::-;;;;;;;;;;-1:-1:-1;10016:24:0;;;;-1:-1:-1;;;;;10016:24:0;;;11261:216;11365:10;11336:4;11353:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11353:32:0;;;;;;;;;;:41;;;11410:37;11336:4;;11353:32;;11410:37;;;;11388:6;160:25:1;;148:2;133:18;;14:177;11410:37:0;;;;;;;;-1:-1:-1;11465:4:0;11261:216;;;;;:::o;11779:370::-;-1:-1:-1;;;;;11899:19:0;;11879:4;11899:19;;;:11;:19;;;;;;;;11919:10;11899:31;;;;;;;;-1:-1:-1;;11899:52:0;11896:186;;12001:69;;;;;;;;;;;-1:-1:-1;;;12001:69:0;;;;;;;;-1:-1:-1;;;;;12001:19:0;;-1:-1:-1;12001:19:0;;;:11;:19;;;;;12021:10;12001:31;;;;;;;;;;:69;;12037:6;;12001:35;:69::i;:::-;-1:-1:-1;;;;;11967:19:0;;;;;;:11;:19;;;;;;;;11987:10;11967:31;;;;;;;:103;11896:186;12101:40;12115:6;12123:9;12134:6;12101:13;:40::i;:::-;12094:47;;11779:370;;;;;;:::o;14890:142::-;11089:9;:18;;;;9491:42;14943:7;11089:18;;;;;14970:12;;14943:7;;14970:54;;11089:18;;14970:33;;:12;:16;:33::i;:::-;:37;;:54::i;:::-;14963:61;;14890:142;:::o;11485:122::-;11540:4;11564:35;11572:7;-1:-1:-1;;11564:7:0;:35::i;7737:163::-;7825:10;7813:23;;;;:11;:23;;;;;;;;7810:83;;;-1:-1:-1;;;;;7853:19:0;;;;;;:11;:19;;;;;:28;;-1:-1:-1;;7853:28:0;;;;;;;7810:83;7737:163;;:::o;5642:148::-;5253:6;;-1:-1:-1;;;;;5253:6:0;5239:10;:20;5231:39;;;;-1:-1:-1;;;5231:39:0;;;;;;;:::i;:::-;;;;;;;;;5749:1:::1;5733:6:::0;;5712:40:::1;::::0;-1:-1:-1;;;;;5733:6:0;;::::1;::::0;5712:40:::1;::::0;5749:1;;5712:40:::1;5780:1;5763:19:::0;;-1:-1:-1;;;;;;5763:19:0::1;::::0;;5642:148::o;8127:179::-;8198:21;;8190:81;;8173:12;;-1:-1:-1;;;;;8198:21:0;;8261:5;;8233:21;;8173:12;8190:81;8173:12;8190:81;8233:21;8198;8261:5;8190:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8172:99;;;8290:7;8282:16;;;;;;8161:145;8127:179::o;7502:227::-;5253:6;;-1:-1:-1;;;;;5253:6:0;5239:10;:20;5231:39;;;;-1:-1:-1;;;5231:39:0;;;;;;;:::i;:::-;7620:21:::1;:46:::0;;-1:-1:-1;;;;;7620:46:0;;::::1;-1:-1:-1::0;;;;;;7620:46:0;;::::1;;::::0;;;7677:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;7502:227::o;12657:231::-;10087:6;:13;;-1:-1:-1;;;;10087:13:0;-1:-1:-1;;;10087:13:0;;;-1:-1:-1;;;;;12740:19:0;::::1;10087:13:::0;12740:19;;;:11:::1;:19;::::0;;;;;;;12760:10:::1;12740:31:::0;;;;;;;;:41;-1:-1:-1;12740:41:0::1;::::0;:68:::1;;-1:-1:-1::0;12797:10:0::1;12785:23;::::0;;;:11:::1;:23;::::0;;;;;::::1;;12740:68;12736:145;;;12825:44;12839:6;12855:4;12862:6;12825:13;:44::i;:::-;;12736:145;-1:-1:-1::0;;10105:6:0;:14;;-1:-1:-1;;;;10105:14:0;;;12657:231::o;11615:156::-;11695:4;11719:44;11733:10;11745:9;11756:6;11719:13;:44::i;8314:500::-;5253:6;;-1:-1:-1;;;;;5253:6:0;5239:10;:20;5231:39;;;;-1:-1:-1;;;5231:39:0;;;;;;;:::i;:::-;8503:12:::1;:25:::0;;;8530:12:::1;:25:::0;;;8557:14:::1;:29:::0;;;8588:8:::1;:17:::0;;;8607:6:::1;:13:::0;;;8622:7:::1;:15:::0;;;8639:11:::1;:20:::0;;;8690:11:::1;::::0;8678:23;::::1;::::0;::::1;::::0;:49:::1;;;8716:11;;8705:7;;:22;;8678:49;:79;;;;;8746:11;;8731;;:26;;8678:79;8670:136;;;::::0;-1:-1:-1;;;8670:136:0;;4810:2:1;8670:136:0::1;::::0;::::1;4792:21:1::0;4849:2;4829:18;;;4822:30;4888:34;4868:18;;;4861:62;-1:-1:-1;;;4939:18:1;;;4932:42;4991:19;;8670:136:0::1;4608:408:1::0;8670:136:0::1;8314:500:::0;;;;;;;:::o;7908:211::-;8008:10;7996:23;;;;:11;:23;;;;;;;;7993:119;;;8036:11;:26;;;;;-1:-1:-1;;;8036:26:0;-1:-1:-1;;;;8036:26:0;;;;;;8077:13;:23;;;7908:211;;:::o;5945:244::-;5253:6;;-1:-1:-1;;;;;5253:6:0;5239:10;:20;5231:39;;;;-1:-1:-1;;;5231:39:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6034:22:0;::::1;6026:73;;;::::0;-1:-1:-1;;;6026:73:0;;5223:2:1;6026:73:0::1;::::0;::::1;5205:21:1::0;5262:2;5242:18;;;5235:30;5301:34;5281:18;;;5274:62;-1:-1:-1;;;5352:18:1;;;5345:36;5398:19;;6026:73:0::1;5021:402:1::0;6026:73:0::1;6136:6;::::0;;6115:38:::1;::::0;-1:-1:-1;;;;;6115:38:0;;::::1;::::0;6136:6;::::1;::::0;6115:38:::1;::::0;::::1;6164:6;:17:::0;;-1:-1:-1;;;;;;6164:17:0::1;-1:-1:-1::0;;;;;6164:17:0;;;::::1;::::0;;;::::1;::::0;;5945:244::o;3153:192::-;3239:7;3275:12;3267:6;;;;3259:29;;;;-1:-1:-1;;;3259:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3299:9:0;3311:5;3315:1;3311;:5;:::i;:::-;3299:17;3153:192;-1:-1:-1;;;;;3153:192:0:o;12902:847::-;13014:6;;12994:4;;-1:-1:-1;;;13014:6:0;;;;13011:63;;;13030:41;13045:6;13053:9;13064:6;13030:14;:41::i;:::-;13023:48;;;;13011:63;13111:4;;-1:-1:-1;;;;;13098:17:0;;;13111:4;;13098:17;;;;:38;;-1:-1:-1;;;;;;13119:17:0;;9491:42;13119:17;;13098:38;13094:218;;;13194:15;;-1:-1:-1;;;;;13161:20:0;;;;;;:9;:20;;;;;;:29;;13184:6;;13161:29;:::i;:::-;:48;;:74;;;-1:-1:-1;;;;;;13213:22:0;;;;;;:11;:22;;;;;;;;13161:74;:97;;;-1:-1:-1;;;;;;13239:19:0;;;;;;:11;:19;;;;;;;;13161:97;13153:147;;;;-1:-1:-1;;;13153:147:0;;6025:2:1;13153:147:0;;;6007:21:1;6064:2;6044:18;;;6037:30;6103:34;6083:18;;;6076:62;-1:-1:-1;;;6154:18:1;;;6147:35;6199:19;;13153:147:0;5823:401:1;13153:147:0;13327:16;:14;:16::i;:::-;13324:59;;;13361:10;:8;:10::i;:::-;13415:53;;;;;;;;;;;-1:-1:-1;;;13415:53:0;;;;;;;;-1:-1:-1;;;;;13415:17:0;;-1:-1:-1;13415:17:0;;;:9;:17;;;;;;;;:53;;13437:6;;13415:21;:53::i;:::-;-1:-1:-1;;;;;13395:17:0;;;;;;:9;:17;;;;;:73;;;;13506:32;13405:6;13528:9;13506:13;:32::i;:::-;:78;;13578:6;13506:78;;;13541:34;13549:6;13557:9;13568:6;13541:7;:34::i;:::-;-1:-1:-1;;;;;13618:20:0;;;;;;:9;:20;;;;;;13481:103;;-1:-1:-1;13618:40:0;;13481:103;13618:24;:40::i;:::-;-1:-1:-1;;;;;13595:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13676:43;;;;;;;;;;13704:14;160:25:1;;148:2;133:18;;14:177;13676:43:0;;;;;;;;-1:-1:-1;13737:4:0;;12902:847;-1:-1:-1;;;;12902:847:0:o;3011:136::-;3069:7;3096:43;3100:1;3103;3096:43;;;;;;;;;;;;;;;;;:3;:43::i;13757:330::-;13887:53;;;;;;;;;;;-1:-1:-1;;;13887:53:0;;;;;;;;-1:-1:-1;;;;;13887:17:0;;13850:4;13887:17;;;:9;:17;;;;;;;:53;;13909:6;;13887:21;:53::i;:::-;-1:-1:-1;;;;;13867:17:0;;;;;;;:9;:17;;;;;;:73;;;;13974:20;;;;;;;:32;;13999:6;13974:24;:32::i;:::-;-1:-1:-1;;;;;13951:20:0;;;;;;;:9;:20;;;;;;;:55;;;;14022:35;;;;;;;;;;14050:6;160:25:1;;148:2;133:18;;14:177;14022:35:0;;;;;;;;-1:-1:-1;14075:4:0;13757:330;;;;;:::o;14095:197::-;14182:4;;14144;;-1:-1:-1;;;;;14182:4:0;14168:10;:18;;;;:38;;-1:-1:-1;14200:6:0;;-1:-1:-1;;;14200:6:0;;;;14199:7;14168:38;:62;;;;-1:-1:-1;14219:11:0;;-1:-1:-1;;;14219:11:0;;;;14168:62;:116;;;;-1:-1:-1;;14271:13:0;;14261:4;14243:24;;;;:9;:24;;;;;;:41;;;14095:197::o;14300:582::-;10087:6;:13;;-1:-1:-1;;;;10087:13:0;-1:-1:-1;;;10087:13:0;;;14372::::1;::::0;14422:16:::1;::::0;;14436:1:::1;14422:16:::0;;;;;::::1;::::0;;-1:-1:-1;;14422:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14422:16:0::1;14398:40;;14467:4;14449;14454:1;14449:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;14449:23:0::1;;;-1:-1:-1::0;;;;;14449:23:0::1;;;::::0;::::1;9409:42;14483:4;14488:1;14483:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14483:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;14510:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;14510:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14582:12;;14510:6:::1;::::0;14625:4;;14652::::1;::::0;14672:15:::1;::::0;14510:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;14739:20:0::1;::::0;14731:80:::1;::::0;14714:12:::1;::::0;-1:-1:-1;;;;;;14739:20:0;;::::1;::::0;-1:-1:-1;14801:5:0::1;::::0;14773:21:::1;::::0;14714:12;14731:80;14714:12;14731:80;14773:21;14739:20;14801:5;14731:80:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14713:98;;;14830:7;14822:50;;;::::0;-1:-1:-1;;;14822:50:0;;7680:2:1;14822:50:0::1;::::0;::::1;7662:21:1::0;7719:2;7699:18;;;7692:30;7758:32;7738:18;;;7731:60;7808:18;;14822:50:0::1;7478:354:1::0;14822:50:0::1;-1:-1:-1::0;;10105:6:0;:14;;-1:-1:-1;;;;10105:14:0;;;-1:-1:-1;14300:582:0:o;8822:160::-;-1:-1:-1;;;;;8928:19:0;;8903:4;8928:19;;;:11;:19;;;;;;;;8927:20;:47;;;;-1:-1:-1;;;;;;;8952:22:0;;;;;:11;:22;;;;;;;;8951:23;;8822:160;-1:-1:-1;8822:160:0:o;12157:492::-;12243:7;12265:18;12286:30;12298:6;12306:9;12286:11;:30::i;:::-;12265:51;-1:-1:-1;12330:14:0;;12327:290;;12407:11;;12360:17;;12380:39;;:22;:6;12391:10;12380;:22::i;:::-;:26;;:39::i;:::-;12479:4;12461:24;;;;:9;:24;;;;;;12360:59;;-1:-1:-1;12461:39:0;;12360:59;12461:28;:39::i;:::-;12452:4;12434:24;;;;:9;:24;;;;;;;:66;;;;12520:42;;-1:-1:-1;;;;;12520:42:0;;;;;;;12552:9;160:25:1;;148:2;133:18;;14:177;12520:42:0;;;;;;;;12584:21;:6;12595:9;12584:10;:21::i;:::-;12577:28;;;;;;12327:290;-1:-1:-1;12635:6:0;;12157:492;-1:-1:-1;;;12157:492:0:o;2824:181::-;2882:7;;2914:5;2918:1;2914;:5;:::i;:::-;2902:17;;2943:1;2938;:6;;2930:46;;;;-1:-1:-1;;;2930:46:0;;8039:2:1;2930:46:0;;;8021:21:1;8078:2;8058:18;;;8051:30;8117:29;8097:18;;;8090:57;8164:18;;2930:46:0;7837:351:1;8990:217:0;9105:4;;9069:7;;-1:-1:-1;;;;;9105:4:0;;;9092:17;;;;9089:38;;-1:-1:-1;9118:7:0;;9111:14;;9089:38;9150:4;;-1:-1:-1;;;;;9150:4:0;;;9140:14;;;;9137:34;;-1:-1:-1;9163:6:0;;9156:13;;9137:34;-1:-1:-1;9188:11:0;;8990:217;;;;:::o;3351:250::-;3409:7;3433:1;3438;3433:6;3429:47;;-1:-1:-1;3463:1:0;3456:8;;3429:47;3488:9;3500:5;3504:1;3500;:5;:::i;:::-;3488:17;-1:-1:-1;3533:1:0;3524:5;3528:1;3488:17;3524:5;:::i;:::-;:10;3516:56;;;;-1:-1:-1;;;3516:56:0;;8790:2:1;3516:56:0;;;8772:21:1;8829:2;8809:18;;;8802:30;8868:34;8848:18;;;8841:62;-1:-1:-1;;;8919:18:1;;;8912:31;8960:19;;3516:56:0;8588:397:1;3607:132:0;3665:7;3692:39;3696:1;3699;3692:39;;;;;;;;;;;;;;;;;3831:7;3933:12;3926:5;3918:28;;;;-1:-1:-1;;;3918:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3957:9:0;3969:5;3973:1;3969;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:173::-;817:20;;-1:-1:-1;;;;;866:31:1;;856:42;;846:70;;912:1;909;902:12;846:70;749:173;;;:::o;927:254::-;995:6;1003;1056:2;1044:9;1035:7;1031:23;1027:32;1024:52;;;1072:1;1069;1062:12;1024:52;1095:29;1114:9;1095:29;:::i;:::-;1085:39;1171:2;1156:18;;;;1143:32;;-1:-1:-1;;;927:254:1:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:186::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;2051:29;2070:9;2051:29;:::i;2091:160::-;2156:20;;2212:13;;2205:21;2195:32;;2185:60;;2241:1;2238;2231:12;2256:254;2321:6;2329;2382:2;2370:9;2361:7;2357:23;2353:32;2350:52;;;2398:1;2395;2388:12;2350:52;2421:29;2440:9;2421:29;:::i;:::-;2411:39;;2469:35;2500:2;2489:9;2485:18;2469:35;:::i;:::-;2459:45;;2256:254;;;;;:::o;2723:260::-;2791:6;2799;2852:2;2840:9;2831:7;2827:23;2823:32;2820:52;;;2868:1;2865;2858:12;2820:52;2891:29;2910:9;2891:29;:::i;:::-;2881:39;;2939:38;2973:2;2962:9;2958:18;2939:38;:::i;2988:592::-;3101:6;3109;3117;3125;3133;3141;3149;3202:3;3190:9;3181:7;3177:23;3173:33;3170:53;;;3219:1;3216;3209:12;3170:53;-1:-1:-1;;3242:23:1;;;3312:2;3297:18;;3284:32;;-1:-1:-1;3363:2:1;3348:18;;3335:32;;3414:2;3399:18;;3386:32;;-1:-1:-1;3465:3:1;3450:19;;3437:33;;-1:-1:-1;3517:3:1;3502:19;;3489:33;;-1:-1:-1;3569:3:1;3554:19;3541:33;;-1:-1:-1;2988:592:1;-1:-1:-1;2988:592:1:o;3585:248::-;3650:6;3658;3711:2;3699:9;3690:7;3686:23;3682:32;3679:52;;;3727:1;3724;3717:12;3679:52;3750:26;3766:9;3750:26;:::i;4064:329::-;4266:2;4248:21;;;4305:1;4285:18;;;4278:29;-1:-1:-1;;;4338:2:1;4323:18;;4316:36;4384:2;4369:18;;4064:329::o;5428:127::-;5489:10;5484:3;5480:20;5477:1;5470:31;5520:4;5517:1;5510:15;5544:4;5541:1;5534:15;5560:128;5627:9;;;5648:11;;;5645:37;;;5662:18;;:::i;5693:125::-;5758:9;;;5779:10;;;5776:36;;;5792:18;;:::i;6361:127::-;6422:10;6417:3;6413:20;6410:1;6403:31;6453:4;6450:1;6443:15;6477:4;6474:1;6467:15;6493:980;6755:4;6803:3;6792:9;6788:19;6834:6;6823:9;6816:25;6860:2;6898:6;6893:2;6882:9;6878:18;6871:34;6941:3;6936:2;6925:9;6921:18;6914:31;6965:6;7000;6994:13;7031:6;7023;7016:22;7069:3;7058:9;7054:19;7047:26;;7108:2;7100:6;7096:15;7082:29;;7129:1;7139:195;7153:6;7150:1;7147:13;7139:195;;;7218:13;;-1:-1:-1;;;;;7214:39:1;7202:52;;7309:15;;;;7274:12;;;;7250:1;7168:9;7139:195;;;-1:-1:-1;;;;;;;7390:32:1;;;;7385:2;7370:18;;7363:60;-1:-1:-1;;;7454:3:1;7439:19;7432:35;7351:3;6493:980;-1:-1:-1;;;6493:980:1:o;8193:168::-;8266:9;;;8297;;8314:15;;;8308:22;;8294:37;8284:71;;8335:18;;:::i;8366:217::-;8406:1;8432;8422:132;;8476:10;8471:3;8467:20;8464:1;8457:31;8511:4;8508:1;8501:15;8539:4;8536:1;8529:15;8422:132;-1:-1:-1;8568:9:1;;8366:217::o

Swarm Source

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