ETH Price: $2,475.57 (-1.80%)

Token

GoldDex (GD)
 

Overview

Max Total Supply

1,000,000 GD

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
imnotplaying.eth
Balance
41,386.524045138 GD

Value
$0.00
0x44e86542090b74c445e6cb5f9473b76acadf3747
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:
GoldDex

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-22
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.20;

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

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

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract GoldDex is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "GoldDex";
    string private constant _symbol = "GD";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable private _marketingwallet = payable(owner());

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = _tTotal.div(20);
    uint256 public _maxWalletSize = _tTotal.div(20);
    uint256 public _swapTokensAtAmount = _tTotal.div(100);

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingwallet] = 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 tokenFromReflection(_rOwned[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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    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 sendETHToFee(uint256 amount) private {
        _marketingwallet.transfer(amount);
    }

    function manualswap() external {
        require(_msgSender() == _marketingwallet);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require( _msgSender() == _marketingwallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }
    //Set maximum wallet
    function setMaxWallet(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

}

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":"_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":"_swapTokensAtAmount","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":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001866038d7ea4c680005f196200041b565b62000025905f1962000431565b6006555f6008555f6009555f600a555f600b55600a54600c55600b54600d55600c54600e55600d54600f55620000606200036460201b60201c565b601080546001600160a01b0319166001600160a01b03929092169190911790556012805462ffffff60a01b19166201000160a01b179055620000ab66038d7ea4c68000601462000372565b601355620000c266038d7ea4c68000601462000372565b601455620000d966038d7ea4c68000606462000372565b601555348015620000e8575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526002602090815260409182902092909255601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001a2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001c8919062000451565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000214573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200023a919062000451565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000285573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000451565b601280546001600160a01b0319166001600160a01b039283161790555f80548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601054909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c680006040516200035591815260200190565b60405180910390a350620004e3565b5f546001600160a01b031690565b5f620003bb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620003c460201b60201c565b90505b92915050565b5f8183620003f05760405162461bcd60e51b8152600401620003e7919062000480565b60405180910390fd5b505f620003fe8486620004cd565b95945050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826200042c576200042c62000407565b500690565b81810381811115620003be57634e487b7160e01b5f52601160045260245ffd5b5f6020828403121562000462575f80fd5b81516001600160a01b038116811462000479575f80fd5b9392505050565b5f6020808352835180828501525f5b81811015620004ad578581018301518582016040015282016200048f565b505f604082860101526040601f19601f8301168501019250505092915050565b5f82620004de57620004de62000407565b500490565b6117c680620004f15f395ff3fe60806040526004361061014a575f3560e01c8063715018a6116100b357806398a5c3151161006d57806398a5c315146103a3578063a2a957bb146103c2578063a9059cbb146103e1578063c3c8cd8014610400578063dd62ed3e14610414578063f2fde38b14610458575f80fd5b8063715018a61461030057806374010ece146103145780637d1db4a5146103335780638da5cb5b146103485780638f9a55c01461036457806395d89b4114610379575f80fd5b8063313ce56711610104578063313ce5671461025357806349bd5a5e1461026e5780635d0044ca1461028d5780636d8aa8f8146102ae5780636fc3eaec146102cd57806370a08231146102e1575f80fd5b806306fdde0314610155578063095ea7b3146101965780631694505e146101c557806318160ddd146101fc57806323b872dd1461021f5780632fd689e31461023e575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600781526608eded8c888caf60cb1b60208201525b60405161018d91906114a7565b60405180910390f35b3480156101a1575f80fd5b506101b56101b0366004611506565b610477565b604051901515815260200161018d565b3480156101d0575f80fd5b506011546101e4906001600160a01b031681565b6040516001600160a01b03909116815260200161018d565b348015610207575f80fd5b5066038d7ea4c680005b60405190815260200161018d565b34801561022a575f80fd5b506101b5610239366004611530565b61048d565b348015610249575f80fd5b5061021160155481565b34801561025e575f80fd5b506040516009815260200161018d565b348015610279575f80fd5b506012546101e4906001600160a01b031681565b348015610298575f80fd5b506102ac6102a736600461156e565b6104f4565b005b3480156102b9575f80fd5b506102ac6102c8366004611585565b61052b565b3480156102d8575f80fd5b506102ac610572565b3480156102ec575f80fd5b506102116102fb3660046115a4565b61059e565b34801561030b575f80fd5b506102ac6105bf565b34801561031f575f80fd5b506102ac61032e36600461156e565b610630565b34801561033e575f80fd5b5061021160135481565b348015610353575f80fd5b505f546001600160a01b03166101e4565b34801561036f575f80fd5b5061021160145481565b348015610384575f80fd5b5060408051808201909152600281526111d160f21b6020820152610180565b3480156103ae575f80fd5b506102ac6103bd36600461156e565b61065e565b3480156103cd575f80fd5b506102ac6103dc3660046115bf565b61068c565b3480156103ec575f80fd5b506101b56103fb366004611506565b6106c9565b34801561040b575f80fd5b506102ac6106d5565b34801561041f575f80fd5b5061021161042e3660046115ee565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610463575f80fd5b506102ac6104723660046115a4565b610709565b5f6104833384846107f0565b5060015b92915050565b5f610499848484610913565b6104ea84336104e585604051806060016040528060288152602001611769602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190610db1565b6107f0565b5060019392505050565b5f546001600160a01b031633146105265760405162461bcd60e51b815260040161051d90611625565b60405180910390fd5b601455565b5f546001600160a01b031633146105545760405162461bcd60e51b815260040161051d90611625565b60128054911515600160b01b0260ff60b01b19909216919091179055565b6010546001600160a01b0316336001600160a01b031614610591575f80fd5b4761059b81610de9565b50565b6001600160a01b0381165f9081526002602052604081205461048790610e24565b5f546001600160a01b031633146105e85760405162461bcd60e51b815260040161051d90611625565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106595760405162461bcd60e51b815260040161051d90611625565b601355565b5f546001600160a01b031633146106875760405162461bcd60e51b815260040161051d90611625565b601555565b5f546001600160a01b031633146106b55760405162461bcd60e51b815260040161051d90611625565b600893909355600a91909155600955600b55565b5f610483338484610913565b6010546001600160a01b0316336001600160a01b0316146106f4575f80fd5b5f6106fe3061059e565b905061059b81610ea6565b5f546001600160a01b031633146107325760405162461bcd60e51b815260040161051d90611625565b6001600160a01b0381166107975760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161051d565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051d565b6001600160a01b0382166108b35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051d565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109775760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051d565b6001600160a01b0382166109d95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051d565b5f8111610a3a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161051d565b5f546001600160a01b03848116911614801590610a6457505f546001600160a01b03838116911614155b15610ca757601254600160a01b900460ff16610afc575f546001600160a01b03848116911614610afc5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161051d565b601354811115610b4e5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161051d565b6012546001600160a01b03838116911614610bd35760145481610b708461059e565b610b7a919061166e565b10610bd35760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161051d565b5f610bdd3061059e565b601554601354919250821015908210610bf65760135491505b808015610c0d5750601254600160a81b900460ff16155b8015610c2757506012546001600160a01b03868116911614155b8015610c3c5750601254600160b01b900460ff165b8015610c6057506001600160a01b0385165f9081526005602052604090205460ff16155b8015610c8457506001600160a01b0384165f9081526005602052604090205460ff16155b15610ca457610c9282610ea6565b478015610ca257610ca247610de9565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610ce757506001600160a01b0383165f9081526005602052604090205460ff165b80610d1957506012546001600160a01b03858116911614801590610d1957506012546001600160a01b03848116911614155b15610d2557505f610d9f565b6012546001600160a01b038581169116148015610d5057506011546001600160a01b03848116911614155b15610d6257600854600c55600954600d555b6012546001600160a01b038481169116148015610d8d57506011546001600160a01b03858116911614155b15610d9f57600a54600c55600b54600d555b610dab84848484611016565b50505050565b5f8184841115610dd45760405162461bcd60e51b815260040161051d91906114a7565b505f610de08486611681565b95945050505050565b6010546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610e20573d5f803e3d5ffd5b5050565b5f600654821115610e8a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161051d565b5f610e93611044565b9050610e9f8382611065565b9392505050565b6012805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610eec57610eec611694565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6791906116a8565b81600181518110610f7a57610f7a611694565b6001600160a01b039283166020918202929092010152601154610fa091309116846107f0565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fd89085905f908690309042906004016116c3565b5f604051808303815f87803b158015610fef575f80fd5b505af1158015611001573d5f803e3d5ffd5b50506012805460ff60a81b1916905550505050565b80611023576110236110a6565b61102e8484846110d3565b80610dab57610dab600e54600c55600f54600d55565b5f805f61104f6111c4565b909250905061105e8282611065565b9250505090565b5f610e9f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611201565b600c541580156110b65750600d54155b156110bd57565b600c8054600e55600d8054600f555f9182905555565b5f805f805f806110e28761122d565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506111139087611282565b6001600160a01b03808b165f9081526002602052604080822093909355908a168152205461114190866112c3565b6001600160a01b0389165f9081526002602052604090205561116281611321565b61116c8483611367565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516111b191815260200190565b60405180910390a3505050505050505050565b6006545f90819066038d7ea4c680006111dd8282611065565b8210156111f85750506006549266038d7ea4c6800092509050565b90939092509050565b5f81836112215760405162461bcd60e51b815260040161051d91906114a7565b505f610de08486611732565b5f805f805f805f805f6112458a600c54600d5461138b565b9250925092505f611254611044565b90505f805f6112658e8787876113dd565b919e509c509a509598509396509194505050505091939550919395565b5f610e9f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610db1565b5f806112cf838561166e565b905083811015610e9f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161051d565b5f61132a611044565b90505f6113378383611429565b305f9081526002602052604090205490915061135390826112c3565b305f90815260026020526040902055505050565b6006546113749083611282565b60065560075461138490826112c3565b6007555050565b5f8080806113a4606461139e8989611429565b90611065565b90505f6113b6606461139e8a89611429565b90505f6113cd826113c78b86611282565b90611282565b9992985090965090945050505050565b5f8080806113eb8886611429565b90505f6113f88887611429565b90505f6114058888611429565b90505f611416826113c78686611282565b939b939a50919850919650505050505050565b5f825f0361143857505f610487565b5f6114438385611751565b9050826114508583611732565b14610e9f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161051d565b5f6020808352835180828501525f5b818110156114d2578581018301518582016040015282016114b6565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461059b575f80fd5b5f8060408385031215611517575f80fd5b8235611522816114f2565b946020939093013593505050565b5f805f60608486031215611542575f80fd5b833561154d816114f2565b9250602084013561155d816114f2565b929592945050506040919091013590565b5f6020828403121561157e575f80fd5b5035919050565b5f60208284031215611595575f80fd5b81358015158114610e9f575f80fd5b5f602082840312156115b4575f80fd5b8135610e9f816114f2565b5f805f80608085870312156115d2575f80fd5b5050823594602084013594506040840135936060013592509050565b5f80604083850312156115ff575f80fd5b823561160a816114f2565b9150602083013561161a816114f2565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104875761048761165a565b818103818111156104875761048761165a565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156116b8575f80fd5b8151610e9f816114f2565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117115784516001600160a01b0316835293830193918301916001016116ec565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261174c57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176104875761048761165a56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c9f281ed27d5e9846ff12ecefe8274b39c63e34051b7121d2b61822f834306e464736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c8063715018a6116100b357806398a5c3151161006d57806398a5c315146103a3578063a2a957bb146103c2578063a9059cbb146103e1578063c3c8cd8014610400578063dd62ed3e14610414578063f2fde38b14610458575f80fd5b8063715018a61461030057806374010ece146103145780637d1db4a5146103335780638da5cb5b146103485780638f9a55c01461036457806395d89b4114610379575f80fd5b8063313ce56711610104578063313ce5671461025357806349bd5a5e1461026e5780635d0044ca1461028d5780636d8aa8f8146102ae5780636fc3eaec146102cd57806370a08231146102e1575f80fd5b806306fdde0314610155578063095ea7b3146101965780631694505e146101c557806318160ddd146101fc57806323b872dd1461021f5780632fd689e31461023e575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600781526608eded8c888caf60cb1b60208201525b60405161018d91906114a7565b60405180910390f35b3480156101a1575f80fd5b506101b56101b0366004611506565b610477565b604051901515815260200161018d565b3480156101d0575f80fd5b506011546101e4906001600160a01b031681565b6040516001600160a01b03909116815260200161018d565b348015610207575f80fd5b5066038d7ea4c680005b60405190815260200161018d565b34801561022a575f80fd5b506101b5610239366004611530565b61048d565b348015610249575f80fd5b5061021160155481565b34801561025e575f80fd5b506040516009815260200161018d565b348015610279575f80fd5b506012546101e4906001600160a01b031681565b348015610298575f80fd5b506102ac6102a736600461156e565b6104f4565b005b3480156102b9575f80fd5b506102ac6102c8366004611585565b61052b565b3480156102d8575f80fd5b506102ac610572565b3480156102ec575f80fd5b506102116102fb3660046115a4565b61059e565b34801561030b575f80fd5b506102ac6105bf565b34801561031f575f80fd5b506102ac61032e36600461156e565b610630565b34801561033e575f80fd5b5061021160135481565b348015610353575f80fd5b505f546001600160a01b03166101e4565b34801561036f575f80fd5b5061021160145481565b348015610384575f80fd5b5060408051808201909152600281526111d160f21b6020820152610180565b3480156103ae575f80fd5b506102ac6103bd36600461156e565b61065e565b3480156103cd575f80fd5b506102ac6103dc3660046115bf565b61068c565b3480156103ec575f80fd5b506101b56103fb366004611506565b6106c9565b34801561040b575f80fd5b506102ac6106d5565b34801561041f575f80fd5b5061021161042e3660046115ee565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610463575f80fd5b506102ac6104723660046115a4565b610709565b5f6104833384846107f0565b5060015b92915050565b5f610499848484610913565b6104ea84336104e585604051806060016040528060288152602001611769602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190610db1565b6107f0565b5060019392505050565b5f546001600160a01b031633146105265760405162461bcd60e51b815260040161051d90611625565b60405180910390fd5b601455565b5f546001600160a01b031633146105545760405162461bcd60e51b815260040161051d90611625565b60128054911515600160b01b0260ff60b01b19909216919091179055565b6010546001600160a01b0316336001600160a01b031614610591575f80fd5b4761059b81610de9565b50565b6001600160a01b0381165f9081526002602052604081205461048790610e24565b5f546001600160a01b031633146105e85760405162461bcd60e51b815260040161051d90611625565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106595760405162461bcd60e51b815260040161051d90611625565b601355565b5f546001600160a01b031633146106875760405162461bcd60e51b815260040161051d90611625565b601555565b5f546001600160a01b031633146106b55760405162461bcd60e51b815260040161051d90611625565b600893909355600a91909155600955600b55565b5f610483338484610913565b6010546001600160a01b0316336001600160a01b0316146106f4575f80fd5b5f6106fe3061059e565b905061059b81610ea6565b5f546001600160a01b031633146107325760405162461bcd60e51b815260040161051d90611625565b6001600160a01b0381166107975760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161051d565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051d565b6001600160a01b0382166108b35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051d565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109775760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051d565b6001600160a01b0382166109d95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051d565b5f8111610a3a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161051d565b5f546001600160a01b03848116911614801590610a6457505f546001600160a01b03838116911614155b15610ca757601254600160a01b900460ff16610afc575f546001600160a01b03848116911614610afc5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161051d565b601354811115610b4e5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161051d565b6012546001600160a01b03838116911614610bd35760145481610b708461059e565b610b7a919061166e565b10610bd35760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161051d565b5f610bdd3061059e565b601554601354919250821015908210610bf65760135491505b808015610c0d5750601254600160a81b900460ff16155b8015610c2757506012546001600160a01b03868116911614155b8015610c3c5750601254600160b01b900460ff165b8015610c6057506001600160a01b0385165f9081526005602052604090205460ff16155b8015610c8457506001600160a01b0384165f9081526005602052604090205460ff16155b15610ca457610c9282610ea6565b478015610ca257610ca247610de9565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610ce757506001600160a01b0383165f9081526005602052604090205460ff165b80610d1957506012546001600160a01b03858116911614801590610d1957506012546001600160a01b03848116911614155b15610d2557505f610d9f565b6012546001600160a01b038581169116148015610d5057506011546001600160a01b03848116911614155b15610d6257600854600c55600954600d555b6012546001600160a01b038481169116148015610d8d57506011546001600160a01b03858116911614155b15610d9f57600a54600c55600b54600d555b610dab84848484611016565b50505050565b5f8184841115610dd45760405162461bcd60e51b815260040161051d91906114a7565b505f610de08486611681565b95945050505050565b6010546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610e20573d5f803e3d5ffd5b5050565b5f600654821115610e8a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161051d565b5f610e93611044565b9050610e9f8382611065565b9392505050565b6012805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610eec57610eec611694565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6791906116a8565b81600181518110610f7a57610f7a611694565b6001600160a01b039283166020918202929092010152601154610fa091309116846107f0565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fd89085905f908690309042906004016116c3565b5f604051808303815f87803b158015610fef575f80fd5b505af1158015611001573d5f803e3d5ffd5b50506012805460ff60a81b1916905550505050565b80611023576110236110a6565b61102e8484846110d3565b80610dab57610dab600e54600c55600f54600d55565b5f805f61104f6111c4565b909250905061105e8282611065565b9250505090565b5f610e9f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611201565b600c541580156110b65750600d54155b156110bd57565b600c8054600e55600d8054600f555f9182905555565b5f805f805f806110e28761122d565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506111139087611282565b6001600160a01b03808b165f9081526002602052604080822093909355908a168152205461114190866112c3565b6001600160a01b0389165f9081526002602052604090205561116281611321565b61116c8483611367565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516111b191815260200190565b60405180910390a3505050505050505050565b6006545f90819066038d7ea4c680006111dd8282611065565b8210156111f85750506006549266038d7ea4c6800092509050565b90939092509050565b5f81836112215760405162461bcd60e51b815260040161051d91906114a7565b505f610de08486611732565b5f805f805f805f805f6112458a600c54600d5461138b565b9250925092505f611254611044565b90505f805f6112658e8787876113dd565b919e509c509a509598509396509194505050505091939550919395565b5f610e9f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610db1565b5f806112cf838561166e565b905083811015610e9f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161051d565b5f61132a611044565b90505f6113378383611429565b305f9081526002602052604090205490915061135390826112c3565b305f90815260026020526040902055505050565b6006546113749083611282565b60065560075461138490826112c3565b6007555050565b5f8080806113a4606461139e8989611429565b90611065565b90505f6113b6606461139e8a89611429565b90505f6113cd826113c78b86611282565b90611282565b9992985090965090945050505050565b5f8080806113eb8886611429565b90505f6113f88887611429565b90505f6114058888611429565b90505f611416826113c78686611282565b939b939a50919850919650505050505050565b5f825f0361143857505f610487565b5f6114438385611751565b9050826114508583611732565b14610e9f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161051d565b5f6020808352835180828501525f5b818110156114d2578581018301518582016040015282016114b6565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461059b575f80fd5b5f8060408385031215611517575f80fd5b8235611522816114f2565b946020939093013593505050565b5f805f60608486031215611542575f80fd5b833561154d816114f2565b9250602084013561155d816114f2565b929592945050506040919091013590565b5f6020828403121561157e575f80fd5b5035919050565b5f60208284031215611595575f80fd5b81358015158114610e9f575f80fd5b5f602082840312156115b4575f80fd5b8135610e9f816114f2565b5f805f80608085870312156115d2575f80fd5b5050823594602084013594506040840135936060013592509050565b5f80604083850312156115ff575f80fd5b823561160a816114f2565b9150602083013561161a816114f2565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104875761048761165a565b818103818111156104875761048761165a565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156116b8575f80fd5b8151610e9f816114f2565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117115784516001600160a01b0316835293830193918301916001016116ec565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261174c57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176104875761048761165a56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c9f281ed27d5e9846ff12ecefe8274b39c63e34051b7121d2b61822f834306e464736f6c63430008140033

Deployed Bytecode Sourcemap

4070:12428:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6276:83;;;;;;;;;;-1:-1:-1;6346:5:0;;;;;;;;;;;;-1:-1:-1;;;6346:5:0;;;;6276:83;;;;;;;:::i;:::-;;;;;;;;7201:193;;;;;;;;;;-1:-1:-1;7201:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7201:193:0;1023:187:1;5176:41:0;;;;;;;;;;-1:-1:-1;5176:41:0;;;;-1:-1:-1;;;;;5176:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5176:41:0;1215:229:1;6553:95:0;;;;;;;;;;-1:-1:-1;4613:15:0;6553:95;;;1595:25:1;;;1583:2;1568:18;6553:95:0;1449:177:1;7402:446:0;;;;;;;;;;-1:-1:-1;7402:446:0;;;;;:::i;:::-;;:::i;5479:53::-;;;;;;;;;;;;;;;;6462:83;;;;;;;;;;-1:-1:-1;6462:83:0;;4287:1;2234:36:1;;2222:2;2207:18;6462:83:0;2092:184:1;5224:28:0;;;;;;;;;;-1:-1:-1;5224:28:0;;;;-1:-1:-1;;;;;5224:28:0;;;16382:111;;;;;;;;;;-1:-1:-1;16382:111:0;;;;;:::i;:::-;;:::i;:::-;;16102:101;;;;;;;;;;-1:-1:-1;16102:101:0;;;;;:::i;:::-;;:::i;11968:196::-;;;;;;;;;;;;;:::i;6656:138::-;;;;;;;;;;-1:-1:-1;6656:138:0;;;;;:::i;:::-;;:::i;1557:148::-;;;;;;;;;;;;;:::i;16242:108::-;;;;;;;;;;-1:-1:-1;16242:108:0;;;;;:::i;:::-;;:::i;5373:45::-;;;;;;;;;;;;;;;;1343:79;;;;;;;;;;-1:-1:-1;1381:7:0;1408:6;-1:-1:-1;;;;;1408:6:0;1343:79;;5425:47;;;;;;;;;;;;;;;;6367:87;;;;;;;;;;-1:-1:-1;6439:7:0;;;;;;;;;;;;-1:-1:-1;;;6439:7:0;;;;6367:87;;15911:139;;;;;;;;;;-1:-1:-1;15911:139:0;;;;;:::i;:::-;;:::i;15568:291::-;;;;;;;;;;-1:-1:-1;15568:291:0;;;;;:::i;:::-;;:::i;6802:199::-;;;;;;;;;;-1:-1:-1;6802:199:0;;;;;:::i;:::-;;:::i;11764:196::-;;;;;;;;;;;;;:::i;7009:184::-;;;;;;;;;;-1:-1:-1;7009:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7158:18:0;;;7126:7;7158:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7009:184;1713:244;;;;;;;;;;-1:-1:-1;1713:244:0;;;;;:::i;:::-;;:::i;7201:193::-;7303:4;7325:39;182:10;7348:7;7357:6;7325:8;:39::i;:::-;-1:-1:-1;7382:4:0;7201:193;;;;;:::o;7402:446::-;7534:4;7551:36;7561:6;7569:9;7580:6;7551:9;:36::i;:::-;7598:220;7621:6;182:10;7669:138;7725:6;7669:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7669:19:0;;;;;;:11;:19;;;;;;;;182:10;7669:33;;;;;;;;;;:37;:138::i;:::-;7598:8;:220::i;:::-;-1:-1:-1;7836:4:0;7402:446;;;;;:::o;16382:111::-;1470:6;;-1:-1:-1;;;;;1470:6:0;182:10;1470:22;1462:67;;;;-1:-1:-1;;;1462:67:0;;;;;;;:::i;:::-;;;;;;;;;16455:14:::1;:30:::0;16382:111::o;16102:101::-;1470:6;;-1:-1:-1;;;;;1470:6:0;182:10;1470:22;1462:67;;;;-1:-1:-1;;;1462:67:0;;;;;;;:::i;:::-;16169:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16169:26:0::1;-1:-1:-1::0;;;;16169:26:0;;::::1;::::0;;;::::1;::::0;;16102:101::o;11968:196::-;12035:16;;-1:-1:-1;;;;;12035:16:0;182:10;-1:-1:-1;;;;;12019:32:0;;12010:42;;;;;;12092:21;12124:32;12092:21;12124:12;:32::i;:::-;11999:165;11968:196::o;6656:138::-;-1:-1:-1;;;;;6769:16:0;;6722:7;6769:16;;;:7;:16;;;;;;6749:37;;:19;:37::i;1557:148::-;1470:6;;-1:-1:-1;;;;;1470:6:0;182:10;1470:22;1462:67;;;;-1:-1:-1;;;1462:67:0;;;;;;;:::i;:::-;1664:1:::1;1648:6:::0;;1627:40:::1;::::0;-1:-1:-1;;;;;1648:6:0;;::::1;::::0;1627:40:::1;::::0;1664:1;;1627:40:::1;1695:1;1678:19:::0;;-1:-1:-1;;;;;;1678:19:0::1;::::0;;1557:148::o;16242:108::-;1470:6;;-1:-1:-1;;;;;1470:6:0;182:10;1470:22;1462:67;;;;-1:-1:-1;;;1462:67:0;;;;;;;:::i;:::-;16316:12:::1;:26:::0;16242:108::o;15911:139::-;1470:6;;-1:-1:-1;;;;;1470:6:0;182:10;1470:22;1462:67;;;;-1:-1:-1;;;1462:67:0;;;;;;;:::i;:::-;16002:19:::1;:40:::0;15911:139::o;15568:291::-;1470:6;;-1:-1:-1;;;;;1470:6:0;182:10;1470:22;1462:67;;;;-1:-1:-1;;;1462:67:0;;;;;;;:::i;:::-;15702:14:::1;:30:::0;;;;15743:15:::1;:32:::0;;;;15786:12:::1;:26:::0;15823:13:::1;:28:::0;15568:291::o;6802:199::-;6907:4;6929:42;182:10;6953:9;6964:6;6929:9;:42::i;11764:196::-;11830:16;;-1:-1:-1;;;;;11830:16:0;182:10;-1:-1:-1;;;;;11814:32:0;;11806:41;;;;;;11858:23;11884:24;11902:4;11884:9;:24::i;:::-;11858:50;;11919:33;11936:15;11919:16;:33::i;1713:244::-;1470:6;;-1:-1:-1;;;;;1470:6:0;182:10;1470:22;1462:67;;;;-1:-1:-1;;;1462:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1802:22:0;::::1;1794:73;;;::::0;-1:-1:-1;;;1794:73:0;;4550:2:1;1794:73:0::1;::::0;::::1;4532:21:1::0;4589:2;4569:18;;;4562:30;4628:34;4608:18;;;4601:62;-1:-1:-1;;;4679:18:1;;;4672:36;4725:19;;1794:73:0::1;4348:402:1::0;1794:73:0::1;1904:6;::::0;;1883:38:::1;::::0;-1:-1:-1;;;;;1883:38:0;;::::1;::::0;1904:6;::::1;::::0;1883:38:::1;::::0;::::1;1932:6;:17:::0;;-1:-1:-1;;;;;;1932:17:0::1;-1:-1:-1::0;;;;;1932:17:0;;;::::1;::::0;;;::::1;::::0;;1713:244::o;8539:369::-;-1:-1:-1;;;;;8666:19:0;;8658:68;;;;-1:-1:-1;;;8658:68:0;;4957:2:1;8658:68:0;;;4939:21:1;4996:2;4976:18;;;4969:30;5035:34;5015:18;;;5008:62;-1:-1:-1;;;5086:18:1;;;5079:34;5130:19;;8658:68:0;4755:400:1;8658:68:0;-1:-1:-1;;;;;8745:21:0;;8737:68;;;;-1:-1:-1;;;8737:68:0;;5362:2:1;8737:68:0;;;5344:21:1;5401:2;5381:18;;;5374:30;5440:34;5420:18;;;5413:62;-1:-1:-1;;;5491:18:1;;;5484:32;5533:19;;8737:68:0;5160:398:1;8737:68:0;-1:-1:-1;;;;;8816:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8868:32;;1595:25:1;;;8868:32:0;;1568:18:1;8868:32:0;;;;;;;8539:369;;;:::o;8916:2243::-;-1:-1:-1;;;;;9038:18:0;;9030:68;;;;-1:-1:-1;;;9030:68:0;;5765:2:1;9030:68:0;;;5747:21:1;5804:2;5784:18;;;5777:30;5843:34;5823:18;;;5816:62;-1:-1:-1;;;5894:18:1;;;5887:35;5939:19;;9030:68:0;5563:401:1;9030:68:0;-1:-1:-1;;;;;9117:16:0;;9109:64;;;;-1:-1:-1;;;9109:64:0;;6171:2:1;9109:64:0;;;6153:21:1;6210:2;6190:18;;;6183:30;6249:34;6229:18;;;6222:62;-1:-1:-1;;;6300:18:1;;;6293:33;6343:19;;9109:64:0;5969:399:1;9109:64:0;9201:1;9192:6;:10;9184:64;;;;-1:-1:-1;;;9184:64:0;;6575:2:1;9184:64:0;;;6557:21:1;6614:2;6594:18;;;6587:30;6653:34;6633:18;;;6626:62;-1:-1:-1;;;6704:18:1;;;6697:39;6753:19;;9184:64:0;6373:405:1;9184:64:0;1381:7;1408:6;-1:-1:-1;;;;;9265:15:0;;;1408:6;;9265:15;;;;:32;;-1:-1:-1;1381:7:0;1408:6;-1:-1:-1;;;;;9284:13:0;;;1408:6;;9284:13;;9265:32;9261:1172;;;9354:11;;-1:-1:-1;;;9354:11:0;;;;9349:144;;1381:7;1408:6;-1:-1:-1;;;;;9394:15:0;;;1408:6;;9394:15;9386:91;;;;-1:-1:-1;;;9386:91:0;;6985:2:1;9386:91:0;;;6967:21:1;7024:2;7004:18;;;6997:30;7063:34;7043:18;;;7036:62;7134:33;7114:18;;;7107:61;7185:19;;9386:91:0;6783:427:1;9386:91:0;9527:12;;9517:6;:22;;9509:63;;;;-1:-1:-1;;;9509:63:0;;7417:2:1;9509:63:0;;;7399:21:1;7456:2;7436:18;;;7429:30;7495;7475:18;;;7468:58;7543:18;;9509:63:0;7215:352:1;9509:63:0;9598:13;;-1:-1:-1;;;;;9592:19:0;;;9598:13;;9592:19;9589:146;;9665:14;;9656:6;9640:13;9650:2;9640:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9632:87;;;;-1:-1:-1;;;9632:87:0;;8036:2:1;9632:87:0;;;8018:21:1;8075:2;8055:18;;;8048:30;8114:34;8094:18;;;8087:62;-1:-1:-1;;;8165:18:1;;;8158:33;8208:19;;9632:87:0;7834:399:1;9632:87:0;9751:28;9782:24;9800:4;9782:9;:24::i;:::-;9860:19;;9923:12;;9751:55;;-1:-1:-1;9836:43:0;;;;9899:36;;9896:124;;9992:12;;9969:35;;9896:124;10040:7;:18;;;;-1:-1:-1;10052:6:0;;-1:-1:-1;;;10052:6:0;;;;10051:7;10040:18;:43;;;;-1:-1:-1;10070:13:0;;-1:-1:-1;;;;;10062:21:0;;;10070:13;;10062:21;;10040:43;:58;;;;-1:-1:-1;10087:11:0;;-1:-1:-1;;;10087:11:0;;;;10040:58;:87;;;;-1:-1:-1;;;;;;10103:24:0;;;;;;:18;:24;;;;;;;;10102:25;10040:87;:114;;;;-1:-1:-1;;;;;;10132:22:0;;;;;;:18;:22;;;;;;;;10131:23;10040:114;10036:386;;;10175:38;10192:20;10175:16;:38::i;:::-;10261:21;10305:22;;10301:106;;10352:35;10365:21;10352:12;:35::i;:::-;10156:266;10036:386;9299:1134;;9261:1172;-1:-1:-1;;;;;10509:24:0;;10445:12;10509:24;;;:18;:24;;;;;;10460:4;;10509:24;;;:50;;-1:-1:-1;;;;;;10537:22:0;;;;;;:18;:22;;;;;;;;10509:50;10508:102;;;-1:-1:-1;10573:13:0;;-1:-1:-1;;;;;10565:21:0;;;10573:13;;10565:21;;;;:44;;-1:-1:-1;10596:13:0;;-1:-1:-1;;;;;10590:19:0;;;10596:13;;10590:19;;10565:44;10504:594;;;-1:-1:-1;10637:5:0;10504:594;;;10720:13;;-1:-1:-1;;;;;10712:21:0;;;10720:13;;10712:21;:55;;;;-1:-1:-1;10751:15:0;;-1:-1:-1;;;;;10737:30:0;;;10751:15;;10737:30;;10712:55;10709:162;;;10800:14;;10788:9;:26;10843:12;;10833:7;:22;10709:162;10930:13;;-1:-1:-1;;;;;10924:19:0;;;10930:13;;10924:19;:55;;;;-1:-1:-1;10963:15:0;;-1:-1:-1;;;;;10947:32:0;;;10963:15;;10947:32;;10924:55;10920:165;;;11012:15;;11000:9;:27;11056:13;;11046:7;:23;10920:165;11110:41;11125:4;11131:2;11135:6;11143:7;11110:14;:41::i;:::-;9019:2140;8916:2243;;;:::o;2321:224::-;2441:7;2477:12;2469:6;;;;2461:29;;;;-1:-1:-1;;;2461:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2501:9:0;2513:5;2517:1;2513;:5;:::i;:::-;2501:17;2321:224;-1:-1:-1;;;;;2321:224:0:o;11658:98::-;11715:16;;:33;;-1:-1:-1;;;;;11715:16:0;;;;:33;;;;;11741:6;;11715:16;:33;:16;:33;11741:6;11715:16;:33;;;;;;;;;;;;;;;;;;;;;11658:98;:::o;7856:323::-;7951:7;8009;;7998;:18;;7976:110;;;;-1:-1:-1;;;7976:110:0;;8573:2:1;7976:110:0;;;8555:21:1;8612:2;8592:18;;;8585:30;8651:34;8631:18;;;8624:62;-1:-1:-1;;;8702:18:1;;;8695:40;8752:19;;7976:110:0;8371:406:1;7976:110:0;8097:19;8119:10;:8;:10::i;:::-;8097:32;-1:-1:-1;8147:24:0;:7;8097:32;8147:11;:24::i;:::-;8140:31;7856:323;-1:-1:-1;;;7856:323:0:o;11167:483::-;5626:6;:13;;-1:-1:-1;;;;5626:13:0;-1:-1:-1;;;5626:13:0;;;11269:16:::1;::::0;;11283:1:::1;11269:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11269:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11269:16:0::1;11245:40;;11314:4;11296;11301:1;11296:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11296:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11340:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11340:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11296:7;;11340:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11330:4;11335:1;11330:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11330:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11405:15:::1;::::0;11373:62:::1;::::0;11390:4:::1;::::0;11405:15:::1;11423:11:::0;11373:8:::1;:62::i;:::-;11446:15;::::0;:196:::1;::::0;-1:-1:-1;;;11446:196:0;;-1:-1:-1;;;;;11446:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11527:11;;11446:15:::1;::::0;11569:4;;11596::::1;::::0;11616:15:::1;::::0;11446:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5662:6:0;:14;;-1:-1:-1;;;;5662:14:0;;;-1:-1:-1;;;;11167:483:0:o;12170:282::-;12326:7;12321:28;;12335:14;:12;:14::i;:::-;12360:44;12378:6;12386:9;12397:6;12360:17;:44::i;:::-;12420:7;12415:29;;12429:15;8470:17;;8458:9;:29;8508:15;;8498:7;:25;8414:117;15131:164;15173:7;15194:15;15211;15230:19;:17;:19::i;:::-;15193:56;;-1:-1:-1;15193:56:0;-1:-1:-1;15267:20:0;15193:56;;15267:11;:20::i;:::-;15260:27;;;;15131:164;:::o;2807:132::-;2865:7;2892:39;2896:1;2899;2892:39;;;;;;;;;;;;;;;;;:3;:39::i;8187:219::-;8234:9;;:14;:30;;;;-1:-1:-1;8252:7:0;;:12;8234:30;8230:43;;;8187:219::o;8230:43::-;8305:9;;;8285:17;:29;8343:7;;;8325:15;:25;-1:-1:-1;8363:13:0;;;;8387:11;8187:219::o;12460:610::-;12607:15;12637:23;12675:12;12702:23;12740:12;12767:13;12794:19;12805:7;12794:10;:19::i;:::-;-1:-1:-1;;;;;12842:15:0;;;;;;:7;:15;;;;;;12592:221;;-1:-1:-1;12592:221:0;;-1:-1:-1;12592:221:0;;-1:-1:-1;12592:221:0;-1:-1:-1;12592:221:0;-1:-1:-1;12592:221:0;-1:-1:-1;12842:28:0;;12592:221;12842:19;:28::i;:::-;-1:-1:-1;;;;;12824:15:0;;;;;;;:7;:15;;;;;;:46;;;;12902:18;;;;;;;:39;;12925:15;12902:22;:39::i;:::-;-1:-1:-1;;;;;12881:18:0;;;;;;:7;:18;;;;;:60;12952:16;12962:5;12952:9;:16::i;:::-;12979:23;12991:4;12997;12979:11;:23::i;:::-;13035:9;-1:-1:-1;;;;;13018:44:0;13027:6;-1:-1:-1;;;;;13018:44:0;;13046:15;13018:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;13018:44:0;;;;;;;;12581:489;;;;;;12460:610;;;:::o;15303:257::-;15401:7;;15354;;;;4613:15;15469:20;15401:7;4613:15;15469:11;:20::i;:::-;15459:7;:30;15455:61;;;-1:-1:-1;;15499:7:0;;;4613:15;;-1:-1:-1;15303:257:0;-1:-1:-1;15303:257:0:o;15455:61::-;15535:7;;15544;;-1:-1:-1;15303:257:0;-1:-1:-1;15303:257:0:o;2947:223::-;3067:7;3102:12;3095:5;3087:28;;;;-1:-1:-1;;;3087:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3126:9:0;3138:5;3142:1;3138;:5;:::i;13489:615::-;13589:7;13611;13633;13655;13677;13699;13735:23;13760:12;13774:13;13804:40;13816:7;13825:9;;13836:7;;13804:11;:40::i;:::-;13734:110;;;;;;13855:19;13877:10;:8;:10::i;:::-;13855:32;;13899:15;13916:23;13941:12;13970:46;13982:7;13991:4;13997:5;14004:11;13970;:46::i;:::-;13898:118;;-1:-1:-1;13898:118:0;-1:-1:-1;13898:118:0;-1:-1:-1;14067:15:0;;-1:-1:-1;14084:4:0;;-1:-1:-1;14090:5:0;;-1:-1:-1;;;;;13489:615:0;;;;;;;:::o;2177:136::-;2235:7;2262:43;2266:1;2269;2262:43;;;;;;;;;;;;;;;;;:3;:43::i;1990:179::-;2048:7;;2080:5;2084:1;2080;:5;:::i;:::-;2068:17;;2109:1;2104;:6;;2096:46;;;;-1:-1:-1;;;2096:46:0;;10711:2:1;2096:46:0;;;10693:21:1;10750:2;10730:18;;;10723:30;10789:29;10769:18;;;10762:57;10836:18;;2096:46:0;10509:351:1;13078:211:0;13131:19;13153:10;:8;:10::i;:::-;13131:32;-1:-1:-1;13174:13:0;13190:22;:5;13131:32;13190:9;:22::i;:::-;13264:4;13248:22;;;;:7;:22;;;;;;13174:38;;-1:-1:-1;13248:33:0;;13174:38;13248:26;:33::i;:::-;13239:4;13223:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13078:211:0:o;13297:147::-;13375:7;;:17;;13387:4;13375:11;:17::i;:::-;13365:7;:27;13416:10;;:20;;13431:4;13416:14;:20::i;:::-;13403:10;:33;-1:-1:-1;;13297:147:0:o;14112:469::-;14281:7;;;;14375:30;14401:3;14375:21;:7;14387:8;14375:11;:21::i;:::-;:25;;:30::i;:::-;14360:45;-1:-1:-1;14416:13:0;14432:28;14456:3;14432:19;:7;14444:6;14432:11;:19::i;:28::-;14416:44;-1:-1:-1;14471:23:0;14497:28;14416:44;14497:17;:7;14509:4;14497:11;:17::i;:::-;:21;;:28::i;:::-;14471:54;14561:4;;-1:-1:-1;14567:5:0;;-1:-1:-1;14112:469:0;;-1:-1:-1;;;;;14112:469:0:o;14589:534::-;14783:7;;;;14880:24;:7;14892:11;14880;:24::i;:::-;14862:42;-1:-1:-1;14915:12:0;14930:21;:4;14939:11;14930:8;:21::i;:::-;14915:36;-1:-1:-1;14962:13:0;14978:22;:5;14988:11;14978:9;:22::i;:::-;14962:38;-1:-1:-1;15011:23:0;15037:28;14962:38;15037:17;:7;15049:4;15037:11;:17::i;:28::-;15084:7;;;;-1:-1:-1;15110:4:0;;-1:-1:-1;14589:534:0;;-1:-1:-1;;;;;;;14589:534:0:o;2553:246::-;2611:7;2635:1;2640;2635:6;2631:47;;-1:-1:-1;2665:1:0;2658:8;;2631:47;2688:9;2700:5;2704:1;2700;:5;:::i;:::-;2688:17;-1:-1:-1;2733:1:0;2724:5;2728:1;2688:17;2724:5;:::i;:::-;:10;2716:56;;;;-1:-1:-1;;;2716:56:0;;11240:2:1;2716:56:0;;;11222:21:1;11279:2;11259:18;;;11252:30;11318:34;11298:18;;;11291:62;-1:-1:-1;;;11369:18:1;;;11362:31;11410:19;;2716:56:0;11038:397:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;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;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:180::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;-1:-1:-1;2640:23:1;;2489:180;-1:-1:-1;2489:180:1:o;2674:273::-;2730:6;2783:2;2771:9;2762:7;2758:23;2754:32;2751:52;;;2799:1;2796;2789:12;2751:52;2838:9;2825:23;2891:5;2884:13;2877:21;2870:5;2867:32;2857:60;;2913:1;2910;2903:12;2952:247;3011:6;3064:2;3052:9;3043:7;3039:23;3035:32;3032:52;;;3080:1;3077;3070:12;3032:52;3119:9;3106:23;3138:31;3163:5;3138:31;:::i;3204:385::-;3290:6;3298;3306;3314;3367:3;3355:9;3346:7;3342:23;3338:33;3335:53;;;3384:1;3381;3374:12;3335:53;-1:-1:-1;;3407:23:1;;;3477:2;3462:18;;3449:32;;-1:-1:-1;3528:2:1;3513:18;;3500:32;;3579:2;3564:18;3551:32;;-1:-1:-1;3204:385:1;-1:-1:-1;3204:385:1:o;3594:388::-;3662:6;3670;3723:2;3711:9;3702:7;3698:23;3694:32;3691:52;;;3739:1;3736;3729:12;3691:52;3778:9;3765:23;3797:31;3822:5;3797:31;:::i;:::-;3847:5;-1:-1:-1;3904:2:1;3889:18;;3876:32;3917:33;3876:32;3917:33;:::i;:::-;3969:7;3959:17;;;3594:388;;;;;:::o;3987:356::-;4189:2;4171:21;;;4208:18;;;4201:30;4267:34;4262:2;4247:18;;4240:62;4334:2;4319:18;;3987:356::o;7572:127::-;7633:10;7628:3;7624:20;7621:1;7614:31;7664:4;7661:1;7654:15;7688:4;7685:1;7678:15;7704:125;7769:9;;;7790:10;;;7787:36;;;7803:18;;:::i;8238:128::-;8305:9;;;8326:11;;;8323:37;;;8340:18;;:::i;8914:127::-;8975:10;8970:3;8966:20;8963:1;8956:31;9006:4;9003:1;8996:15;9030:4;9027:1;9020:15;9046:251;9116:6;9169:2;9157:9;9148:7;9144:23;9140:32;9137:52;;;9185:1;9182;9175:12;9137:52;9217:9;9211:16;9236:31;9261:5;9236:31;:::i;9302:980::-;9564:4;9612:3;9601:9;9597:19;9643:6;9632:9;9625:25;9669:2;9707:6;9702:2;9691:9;9687:18;9680:34;9750:3;9745:2;9734:9;9730:18;9723:31;9774:6;9809;9803:13;9840:6;9832;9825:22;9878:3;9867:9;9863:19;9856:26;;9917:2;9909:6;9905:15;9891:29;;9938:1;9948:195;9962:6;9959:1;9956:13;9948:195;;;10027:13;;-1:-1:-1;;;;;10023:39:1;10011:52;;10118:15;;;;10083:12;;;;10059:1;9977:9;9948:195;;;-1:-1:-1;;;;;;;10199:32:1;;;;10194:2;10179:18;;10172:60;-1:-1:-1;;;10263:3:1;10248:19;10241:35;10160:3;9302:980;-1:-1:-1;;;9302:980:1:o;10287:217::-;10327:1;10353;10343:132;;10397:10;10392:3;10388:20;10385:1;10378:31;10432:4;10429:1;10422:15;10460:4;10457:1;10450:15;10343:132;-1:-1:-1;10489:9:1;;10287:217::o;10865:168::-;10938:9;;;10969;;10986:15;;;10980:22;;10966:37;10956:71;;11007:18;;:::i

Swarm Source

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