ETH Price: $2,293.34 (-5.30%)

Token

AUTODOGGIE ROBOTIC FRIEND (A.R.F.)
 

Overview

Max Total Supply

1,000,000 A.R.F.

Holders

72

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
896.025256379203316023 A.R.F.

Value
$0.00
0x8b52f8f9977a5cde682976750740f3771203b5d2
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:
autodoggie

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-30
*/

/*

Web: autodoggieroboticfriend.vip
TG: https://t.me/autodoggie

*/

// SPDX-License-Identifier: NONE

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);
}

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

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

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

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

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

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

}

contract 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);
    }
}  

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);
}

contract autodoggie is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    
    uint256 private _buyMarketingFee = 20;
    uint256 private _previousBuyMarketingFee = _buyMarketingFee;
    
    uint256 private _sellMarketingFee = 30;
    uint256 private _previousSellMarketingFee = _sellMarketingFee;
    
    address payable private _marketingWallet;
    
    string public constant name = "AUTODOGGIE ROBOTIC FRIEND";
    string public constant symbol = "A.R.F.";
    uint8 public constant decimals = 18;
    uint256 public constant totalSupply = 1000000 * 10**decimals;
    
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool public tradingOpen = false;
    bool private swapping;
    bool private inSwap = false;
    bool private swapEnabled = false;
    
    uint256 private _maxBuyAmount = totalSupply / 50;
    uint256 private _maxSellAmount = totalSupply / 50;
    uint256 private _maxWalletAmount = totalSupply / 50;
    uint256 private swapTokensAtAmount = totalSupply / 500;
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _marketingWallet = payable(0x9477D15CD992B0a32d8F5e55517FF668D6364528);

        _rOwned[_msgSender()] = totalSupply;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        emit Transfer(address(0), _msgSender(), totalSupply);

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _approve(address(this), address(uniswapV2Router), totalSupply);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _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 setSwapEnabled(bool onoff) external onlyOwner(){
        swapEnabled = onoff;
    }

    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");
        bool takeFee = false;
        bool shouldSwap = false;

        if(from != owner() && to != owner()){
            require(tradingOpen,"Trading not open yet");
        }

        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {

            takeFee = true;
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(amount <= _maxBuyAmount, "Transfer amount exceeds the maxBuyAmount.");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Exceeds maximum wallet token amount.");
            }
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && !_isExcludedFromFee[from]) {
                require(amount <= _maxSellAmount, "Transfer amount exceeds the maxSellAmount.");
                shouldSwap = true;
            }
        }

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = (contractTokenBalance > swapTokensAtAmount) && shouldSwap;

        if (canSwap && swapEnabled && !swapping && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;
        
        if(contractBalance == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 5) {
            contractBalance = swapTokensAtAmount * 2;
        }
        swapTokensForEth(contractBalance); 
        (success,) = address(_marketingWallet).call{value: address(this).balance}("");
    }

    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");
        swapEnabled = true;
        tradingOpen = true;        
    }

    function removeLimits() external onlyOwner {
        _maxBuyAmount = totalSupply;
        _maxSellAmount = totalSupply;
        _maxWalletAmount = totalSupply;
    }
    
    function setSwapTokensAtAmount(uint256 newAmount, bool _enabled) external onlyOwner {
        swapEnabled = _enabled;
        swapTokensAtAmount = newAmount;
    }

    function setMarketingWallet(address MarketingWallet) external onlyOwner() {
        _marketingWallet = payable(MarketingWallet);
    }

    function excludeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setBuyFee(uint256 buyMarketingFee) external onlyOwner {
        require(buyMarketingFee <= 10, "Must keep buy taxes below 10%");
        _buyMarketingFee = buyMarketingFee;
    }

    function setSellFee(uint256 sellMarketingFee) external onlyOwner {
        require(sellMarketingFee <= 10, "Must keep sell taxes below 10%");
        _sellMarketingFee = sellMarketingFee;
    }

    function removeAllFee() private {
        if(_buyMarketingFee == 0 && _sellMarketingFee == 0) return;
        
        _previousBuyMarketingFee = _buyMarketingFee;
        _previousSellMarketingFee = _sellMarketingFee;
        
        _buyMarketingFee = 0;
        _sellMarketingFee = 0;
    }
    
    function restoreAllFee() private {
        _buyMarketingFee = _previousBuyMarketingFee;
        _sellMarketingFee = _previousSellMarketingFee;
    }

        
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee, bool isSell) private {
        if(!takeFee) {
            removeAllFee();
        } else {
            amount = _takeFees(sender, amount, isSell);
        }

        _transferStandard(sender, recipient, amount);
        
        if(!takeFee) {
            restoreAllFee();
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(tAmount);
        _rOwned[recipient] = _rOwned[recipient].add(tAmount);
        emit Transfer(sender, recipient, tAmount);
    }

    function _takeFees(address sender, uint256 amount, bool isSell) private returns (uint256) {
        uint256 _totalFees;
        
        _totalFees = _getTotalFees(isSell);

        uint256 fees = amount.mul(_totalFees).div(100);
            
        if(fees > 0) {
            _transferStandard(sender, address(this), fees);
        }
            
        return amount -= fees;
    }

    receive() external payable {}
    
    function manualswap() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualSend() external onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        _marketingWallet.transfer(contractETHBalance);
    }

    function _getTotalFees(bool isSell) private view returns(uint256) {
        if (isSell) {
            return _sellMarketingFee;
        }
        return _buyMarketingFee;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","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":"view","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":[{"internalType":"uint256","name":"buyMarketingFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"MarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellMarketingFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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"}]

60c060405260146005819055600655601e60078190556008556009805463ffff00ff60a01b191690556032620000386012600a62000668565b6200004790620f42406200067f565b62000053919062000699565b600a5560326012600a62000068919062000668565b6200007790620f42406200067f565b62000083919062000699565b600b556032620000966012600a62000668565b620000a590620f42406200067f565b620000b1919062000699565b600c556101f4620000c56012600a62000668565b620000d490620f42406200067f565b620000e0919062000699565b600d55348015620000ef575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600980546001600160a01b031916739477d15cd992b0a32d8f5e55517ff668d6364528179055620001646012600a62000668565b6200017390620f42406200067f565b335f8181526002602090815260408083209490945581546001600160a01b03908116835260049091528382208054600160ff199182168117909255308452858420805482168317905560095490921683529382208054909116909317909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002026012600a62000668565b6200021190620f42406200067f565b60405190815260200160405180910390a3737a250d5630b4cf539739df2c5dacb4c659f2488d6080819052620002653082620002506012600a62000668565b6200025f90620f42406200067f565b6200042e565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002c89190620006b9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000314573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200033a9190620006b9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000385573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ab9190620006b9565b6001600160a01b0390811660a081905260805160405163095ea7b360e01b8152921660048301525f1960248301529063095ea7b3906044016020604051808303815f875af115801562000400573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004269190620006e1565b505062000702565b6001600160a01b038316620004965760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620004f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200048d565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005ad57815f190482111562000591576200059162000559565b808516156200059f57918102915b93841c939080029062000572565b509250929050565b5f82620005c55750600162000662565b81620005d357505f62000662565b8160018114620005ec5760028114620005f75762000617565b600191505062000662565b60ff8411156200060b576200060b62000559565b50506001821b62000662565b5060208310610133831016604e8410600b84101617156200063c575081810a62000662565b6200064883836200056d565b805f19048211156200065e576200065e62000559565b0290505b92915050565b5f6200067860ff841683620005b5565b9392505050565b808202811582820484141762000662576200066262000559565b5f82620006b457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620006ca575f80fd5b81516001600160a01b038116811462000678575f80fd5b5f60208284031215620006f2575f80fd5b8151801515811462000678575f80fd5b60805160a051611b40620007555f395f81816102ff01528181610dd00152610f5601525f818161022e01528181610e0c01528181610f9201528181611219015281816112d0015261130c0152611b405ff3fe608060405260043610610164575f3560e01c8063751039fc116100cd578063c3c8cd8011610087578063e01af92c11610062578063e01af92c146104b2578063ea2f0b37146104d1578063f4293890146104f0578063ffb54a9914610504575f80fd5b8063c3c8cd8014610446578063c9567bf91461045a578063dd62ed3e1461046e575f80fd5b8063751039fc146103885780638b4cee081461039c5780638da5cb5b146103bb57806395d89b41146103d7578063a9059cbb14610408578063b1fde9f814610427575f80fd5b8063313ce5671161011e578063313ce567146102a9578063437823ec146102cf57806349bd5a5e146102ee5780635d098b381461032157806370a0823114610340578063715018a614610374575f80fd5b806306fdde031461016f578063095ea7b3146101cd5780630cc835a3146101fc5780631694505e1461021d57806318160ddd1461026857806323b872dd1461028a575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b506101b76040518060400160405280601981526020017f4155544f444f4747494520524f424f54494320465249454e440000000000000081525081565b6040516101c4919061172a565b60405180910390f35b3480156101d8575f80fd5b506101ec6101e7366004611789565b610524565b60405190151581526020016101c4565b348015610207575f80fd5b5061021b6102163660046117b3565b61053a565b005b348015610228575f80fd5b506102507f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101c4565b348015610273575f80fd5b5061027c6105c2565b6040519081526020016101c4565b348015610295575f80fd5b506101ec6102a43660046117ca565b6105de565b3480156102b4575f80fd5b506102bd601281565b60405160ff90911681526020016101c4565b3480156102da575f80fd5b5061021b6102e9366004611808565b610645565b3480156102f9575f80fd5b506102507f000000000000000000000000000000000000000000000000000000000000000081565b34801561032c575f80fd5b5061021b61033b366004611808565b610691565b34801561034b575f80fd5b5061027c61035a366004611808565b6001600160a01b03165f9081526002602052604090205490565b34801561037f575f80fd5b5061021b6106dc565b348015610393575f80fd5b5061021b61074d565b3480156103a7575f80fd5b5061021b6103b63660046117b3565b6107ce565b3480156103c6575f80fd5b505f546001600160a01b0316610250565b3480156103e2575f80fd5b506101b76040518060400160405280600681526020016520972917231760d11b81525081565b348015610413575f80fd5b506101ec610422366004611789565b61084d565b348015610432575f80fd5b5061021b610441366004611837565b610859565b348015610451575f80fd5b5061021b6108a3565b348015610465575f80fd5b5061021b6108e7565b348015610479575f80fd5b5061027c610488366004611861565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156104bd575f80fd5b5061021b6104cc366004611898565b610985565b3480156104dc575f80fd5b5061021b6104eb366004611808565b6109cc565b3480156104fb575f80fd5b5061021b610a15565b34801561050f575f80fd5b506009546101ec90600160a01b900460ff1681565b5f610530338484610a79565b5060015b92915050565b5f546001600160a01b0316331461056c5760405162461bcd60e51b8152600401610563906118b1565b60405180910390fd5b600a8111156105bd5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203130250000006044820152606401610563565b600555565b6105ce6012600a6119da565b6105db90620f42406119e8565b81565b5f6105ea848484610b9d565b61063b843361063685604051806060016040528060288152602001611ae3602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190611179565b610a79565b5060019392505050565b5f546001600160a01b0316331461066e5760405162461bcd60e51b8152600401610563906118b1565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f546001600160a01b031633146106ba5760405162461bcd60e51b8152600401610563906118b1565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146107055760405162461bcd60e51b8152600401610563906118b1565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107765760405162461bcd60e51b8152600401610563906118b1565b6107826012600a6119da565b61078f90620f42406119e8565b600a9081556107a0906012906119da565b6107ad90620f42406119e8565b600b556107bc6012600a6119da565b6107c990620f42406119e8565b600c55565b5f546001600160a01b031633146107f75760405162461bcd60e51b8152600401610563906118b1565b600a8111156108485760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b6565702073656c6c2074617865732062656c6f772031302500006044820152606401610563565b600755565b5f610530338484610b9d565b5f546001600160a01b031633146108825760405162461bcd60e51b8152600401610563906118b1565b60098054911515600160b81b0260ff60b81b19909216919091179055600d55565b5f546001600160a01b031633146108cc5760405162461bcd60e51b8152600401610563906118b1565b305f908152600260205260409020546108e4816111b1565b50565b5f546001600160a01b031633146109105760405162461bcd60e51b8152600401610563906118b1565b600954600160a01b900460ff161561096a5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610563565b6009805463ff0000ff60a01b1916630100000160a01b179055565b5f546001600160a01b031633146109ae5760405162461bcd60e51b8152600401610563906118b1565b60098054911515600160b81b0260ff60b81b19909216919091179055565b5f546001600160a01b031633146109f55760405162461bcd60e51b8152600401610563906118b1565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b03163314610a3e5760405162461bcd60e51b8152600401610563906118b1565b60095460405147916001600160a01b03169082156108fc029083905f818181858888f19350505050158015610a75573d5f803e3d5ffd5b5050565b6001600160a01b038316610adb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610563565b6001600160a01b038216610b3c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610563565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610c015760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610563565b6001600160a01b038216610c635760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610563565b5f8111610cc45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610563565b5f80610cd75f546001600160a01b031690565b6001600160a01b0316856001600160a01b031614158015610d0557505f546001600160a01b03858116911614155b15610d5a57600954600160a01b900460ff16610d5a5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610563565b5f546001600160a01b03868116911614801590610d8457505f546001600160a01b03858116911614155b8015610d9857506001600160a01b03841615155b8015610daf57506001600160a01b03841661dead14155b8015610dc55750600954600160a81b900460ff16155b1561105957600191507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316148015610e4157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b8015610e6557506001600160a01b0384165f9081526004602052604090205460ff16155b15610f5457600a54831115610ece5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610563565b600c5483610ef0866001600160a01b03165f9081526002602052604090205490565b610efa91906119ff565b1115610f545760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610563565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148015610fc757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015610feb57506001600160a01b0385165f9081526004602052604090205460ff16155b1561105957600b548311156110555760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610563565b5060015b6001600160a01b0385165f9081526004602052604090205460ff168061109657506001600160a01b0384165f9081526004602052604090205460ff165b1561109f575f91505b305f9081526002602052604081205490505f600d54821180156110bf5750825b90508080156110d75750600954600160b81b900460ff165b80156110ed5750600954600160a81b900460ff16155b801561111157506001600160a01b0387165f9081526004602052604090205460ff16155b801561113557506001600160a01b0386165f9081526004602052604090205460ff16155b15611163576009805460ff60a81b1916600160a81b179055611155611387565b6009805460ff60a81b191690555b6111708787878787611427565b50505050505050565b5f818484111561119c5760405162461bcd60e51b8152600401610563919061172a565b505f6111a88486611a12565b95945050505050565b6009805460ff60b01b1916600160b01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106111f7576111f7611a25565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611273573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112979190611a39565b816001815181106112aa576112aa611a25565b60200260200101906001600160a01b031690816001600160a01b0316815250506112f5307f000000000000000000000000000000000000000000000000000000000000000084610a79565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906113499085905f90869030904290600401611a54565b5f604051808303815f87803b158015611360575f80fd5b505af1158015611372573d5f803e3d5ffd5b50506009805460ff60b01b1916905550505050565b305f90815260026020526040812054908181036113a2575050565b600d546113b09060056119e8565b8211156113c857600d546113c59060026119e8565b91505b6113d1826111b1565b6009546040516001600160a01b039091169047905f81818185875af1925050503d805f811461141b576040519150601f19603f3d011682016040523d82523d5f602084013e611420565b606091505b5050505050565b8161143957611434611468565b611447565b611444858483611495565b92505b6114528585856114df565b8161142057611420600654600555600854600755565b6005541580156114785750600754155b1561147f57565b60058054600655600780546008555f9182905555565b5f806114a083611582565b90505f6114b860646114b28785611599565b9061161e565b905080156114cb576114cb8630836114df565b6114d58186611a12565b9695505050505050565b6001600160a01b0383165f90815260026020526040902054611501908261165f565b6001600160a01b038085165f90815260026020526040808220939093559084168152205461152f90826116a0565b6001600160a01b038084165f8181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b909085815260200190565b5f811561159157505060075490565b505060055490565b5f825f036115a857505f610534565b5f6115b383856119e8565b9050826115c08583611ac3565b146116175760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610563565b9392505050565b5f61161783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116fe565b5f61161783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611179565b5f806116ac83856119ff565b9050838110156116175760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610563565b5f818361171e5760405162461bcd60e51b8152600401610563919061172a565b505f6111a88486611ac3565b5f6020808352835180828501525f5b8181101561175557858101830151858201604001528201611739565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146108e4575f80fd5b5f806040838503121561179a575f80fd5b82356117a581611775565b946020939093013593505050565b5f602082840312156117c3575f80fd5b5035919050565b5f805f606084860312156117dc575f80fd5b83356117e781611775565b925060208401356117f781611775565b929592945050506040919091013590565b5f60208284031215611818575f80fd5b813561161781611775565b80358015158114611832575f80fd5b919050565b5f8060408385031215611848575f80fd5b8235915061185860208401611823565b90509250929050565b5f8060408385031215611872575f80fd5b823561187d81611775565b9150602083013561188d81611775565b809150509250929050565b5f602082840312156118a8575f80fd5b61161782611823565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561193457815f190482111561191a5761191a6118e6565b8085161561192757918102915b93841c93908002906118ff565b509250929050565b5f8261194a57506001610534565b8161195657505f610534565b816001811461196c576002811461197657611992565b6001915050610534565b60ff841115611987576119876118e6565b50506001821b610534565b5060208310610133831016604e8410600b84101617156119b5575081810a610534565b6119bf83836118fa565b805f19048211156119d2576119d26118e6565b029392505050565b5f61161760ff84168361193c565b8082028115828204841417610534576105346118e6565b80820180821115610534576105346118e6565b81810381811115610534576105346118e6565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611a49575f80fd5b815161161781611775565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611aa25784516001600160a01b031683529383019391830191600101611a7d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611add57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122054e3b369f4c4df503e9830dc859d100039fd6f38835a287b7aeacc69646e13fc64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610164575f3560e01c8063751039fc116100cd578063c3c8cd8011610087578063e01af92c11610062578063e01af92c146104b2578063ea2f0b37146104d1578063f4293890146104f0578063ffb54a9914610504575f80fd5b8063c3c8cd8014610446578063c9567bf91461045a578063dd62ed3e1461046e575f80fd5b8063751039fc146103885780638b4cee081461039c5780638da5cb5b146103bb57806395d89b41146103d7578063a9059cbb14610408578063b1fde9f814610427575f80fd5b8063313ce5671161011e578063313ce567146102a9578063437823ec146102cf57806349bd5a5e146102ee5780635d098b381461032157806370a0823114610340578063715018a614610374575f80fd5b806306fdde031461016f578063095ea7b3146101cd5780630cc835a3146101fc5780631694505e1461021d57806318160ddd1461026857806323b872dd1461028a575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b506101b76040518060400160405280601981526020017f4155544f444f4747494520524f424f54494320465249454e440000000000000081525081565b6040516101c4919061172a565b60405180910390f35b3480156101d8575f80fd5b506101ec6101e7366004611789565b610524565b60405190151581526020016101c4565b348015610207575f80fd5b5061021b6102163660046117b3565b61053a565b005b348015610228575f80fd5b506102507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016101c4565b348015610273575f80fd5b5061027c6105c2565b6040519081526020016101c4565b348015610295575f80fd5b506101ec6102a43660046117ca565b6105de565b3480156102b4575f80fd5b506102bd601281565b60405160ff90911681526020016101c4565b3480156102da575f80fd5b5061021b6102e9366004611808565b610645565b3480156102f9575f80fd5b506102507f00000000000000000000000014281c157b9ee3c0d4e869c915e28af3683d3a1381565b34801561032c575f80fd5b5061021b61033b366004611808565b610691565b34801561034b575f80fd5b5061027c61035a366004611808565b6001600160a01b03165f9081526002602052604090205490565b34801561037f575f80fd5b5061021b6106dc565b348015610393575f80fd5b5061021b61074d565b3480156103a7575f80fd5b5061021b6103b63660046117b3565b6107ce565b3480156103c6575f80fd5b505f546001600160a01b0316610250565b3480156103e2575f80fd5b506101b76040518060400160405280600681526020016520972917231760d11b81525081565b348015610413575f80fd5b506101ec610422366004611789565b61084d565b348015610432575f80fd5b5061021b610441366004611837565b610859565b348015610451575f80fd5b5061021b6108a3565b348015610465575f80fd5b5061021b6108e7565b348015610479575f80fd5b5061027c610488366004611861565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156104bd575f80fd5b5061021b6104cc366004611898565b610985565b3480156104dc575f80fd5b5061021b6104eb366004611808565b6109cc565b3480156104fb575f80fd5b5061021b610a15565b34801561050f575f80fd5b506009546101ec90600160a01b900460ff1681565b5f610530338484610a79565b5060015b92915050565b5f546001600160a01b0316331461056c5760405162461bcd60e51b8152600401610563906118b1565b60405180910390fd5b600a8111156105bd5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203130250000006044820152606401610563565b600555565b6105ce6012600a6119da565b6105db90620f42406119e8565b81565b5f6105ea848484610b9d565b61063b843361063685604051806060016040528060288152602001611ae3602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190611179565b610a79565b5060019392505050565b5f546001600160a01b0316331461066e5760405162461bcd60e51b8152600401610563906118b1565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f546001600160a01b031633146106ba5760405162461bcd60e51b8152600401610563906118b1565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146107055760405162461bcd60e51b8152600401610563906118b1565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107765760405162461bcd60e51b8152600401610563906118b1565b6107826012600a6119da565b61078f90620f42406119e8565b600a9081556107a0906012906119da565b6107ad90620f42406119e8565b600b556107bc6012600a6119da565b6107c990620f42406119e8565b600c55565b5f546001600160a01b031633146107f75760405162461bcd60e51b8152600401610563906118b1565b600a8111156108485760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b6565702073656c6c2074617865732062656c6f772031302500006044820152606401610563565b600755565b5f610530338484610b9d565b5f546001600160a01b031633146108825760405162461bcd60e51b8152600401610563906118b1565b60098054911515600160b81b0260ff60b81b19909216919091179055600d55565b5f546001600160a01b031633146108cc5760405162461bcd60e51b8152600401610563906118b1565b305f908152600260205260409020546108e4816111b1565b50565b5f546001600160a01b031633146109105760405162461bcd60e51b8152600401610563906118b1565b600954600160a01b900460ff161561096a5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610563565b6009805463ff0000ff60a01b1916630100000160a01b179055565b5f546001600160a01b031633146109ae5760405162461bcd60e51b8152600401610563906118b1565b60098054911515600160b81b0260ff60b81b19909216919091179055565b5f546001600160a01b031633146109f55760405162461bcd60e51b8152600401610563906118b1565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b03163314610a3e5760405162461bcd60e51b8152600401610563906118b1565b60095460405147916001600160a01b03169082156108fc029083905f818181858888f19350505050158015610a75573d5f803e3d5ffd5b5050565b6001600160a01b038316610adb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610563565b6001600160a01b038216610b3c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610563565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610c015760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610563565b6001600160a01b038216610c635760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610563565b5f8111610cc45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610563565b5f80610cd75f546001600160a01b031690565b6001600160a01b0316856001600160a01b031614158015610d0557505f546001600160a01b03858116911614155b15610d5a57600954600160a01b900460ff16610d5a5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610563565b5f546001600160a01b03868116911614801590610d8457505f546001600160a01b03858116911614155b8015610d9857506001600160a01b03841615155b8015610daf57506001600160a01b03841661dead14155b8015610dc55750600954600160a81b900460ff16155b1561105957600191507f00000000000000000000000014281c157b9ee3c0d4e869c915e28af3683d3a136001600160a01b0316856001600160a01b0316148015610e4157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316846001600160a01b031614155b8015610e6557506001600160a01b0384165f9081526004602052604090205460ff16155b15610f5457600a54831115610ece5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610563565b600c5483610ef0866001600160a01b03165f9081526002602052604090205490565b610efa91906119ff565b1115610f545760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610563565b7f00000000000000000000000014281c157b9ee3c0d4e869c915e28af3683d3a136001600160a01b0316846001600160a01b0316148015610fc757507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316856001600160a01b031614155b8015610feb57506001600160a01b0385165f9081526004602052604090205460ff16155b1561105957600b548311156110555760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610563565b5060015b6001600160a01b0385165f9081526004602052604090205460ff168061109657506001600160a01b0384165f9081526004602052604090205460ff165b1561109f575f91505b305f9081526002602052604081205490505f600d54821180156110bf5750825b90508080156110d75750600954600160b81b900460ff165b80156110ed5750600954600160a81b900460ff16155b801561111157506001600160a01b0387165f9081526004602052604090205460ff16155b801561113557506001600160a01b0386165f9081526004602052604090205460ff16155b15611163576009805460ff60a81b1916600160a81b179055611155611387565b6009805460ff60a81b191690555b6111708787878787611427565b50505050505050565b5f818484111561119c5760405162461bcd60e51b8152600401610563919061172a565b505f6111a88486611a12565b95945050505050565b6009805460ff60b01b1916600160b01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106111f7576111f7611a25565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611273573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112979190611a39565b816001815181106112aa576112aa611a25565b60200260200101906001600160a01b031690816001600160a01b0316815250506112f5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610a79565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906113499085905f90869030904290600401611a54565b5f604051808303815f87803b158015611360575f80fd5b505af1158015611372573d5f803e3d5ffd5b50506009805460ff60b01b1916905550505050565b305f90815260026020526040812054908181036113a2575050565b600d546113b09060056119e8565b8211156113c857600d546113c59060026119e8565b91505b6113d1826111b1565b6009546040516001600160a01b039091169047905f81818185875af1925050503d805f811461141b576040519150601f19603f3d011682016040523d82523d5f602084013e611420565b606091505b5050505050565b8161143957611434611468565b611447565b611444858483611495565b92505b6114528585856114df565b8161142057611420600654600555600854600755565b6005541580156114785750600754155b1561147f57565b60058054600655600780546008555f9182905555565b5f806114a083611582565b90505f6114b860646114b28785611599565b9061161e565b905080156114cb576114cb8630836114df565b6114d58186611a12565b9695505050505050565b6001600160a01b0383165f90815260026020526040902054611501908261165f565b6001600160a01b038085165f90815260026020526040808220939093559084168152205461152f90826116a0565b6001600160a01b038084165f8181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b909085815260200190565b5f811561159157505060075490565b505060055490565b5f825f036115a857505f610534565b5f6115b383856119e8565b9050826115c08583611ac3565b146116175760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610563565b9392505050565b5f61161783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116fe565b5f61161783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611179565b5f806116ac83856119ff565b9050838110156116175760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610563565b5f818361171e5760405162461bcd60e51b8152600401610563919061172a565b505f6111a88486611ac3565b5f6020808352835180828501525f5b8181101561175557858101830151858201604001528201611739565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146108e4575f80fd5b5f806040838503121561179a575f80fd5b82356117a581611775565b946020939093013593505050565b5f602082840312156117c3575f80fd5b5035919050565b5f805f606084860312156117dc575f80fd5b83356117e781611775565b925060208401356117f781611775565b929592945050506040919091013590565b5f60208284031215611818575f80fd5b813561161781611775565b80358015158114611832575f80fd5b919050565b5f8060408385031215611848575f80fd5b8235915061185860208401611823565b90509250929050565b5f8060408385031215611872575f80fd5b823561187d81611775565b9150602083013561188d81611775565b809150509250929050565b5f602082840312156118a8575f80fd5b61161782611823565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561193457815f190482111561191a5761191a6118e6565b8085161561192757918102915b93841c93908002906118ff565b509250929050565b5f8261194a57506001610534565b8161195657505f610534565b816001811461196c576002811461197657611992565b6001915050610534565b60ff841115611987576119876118e6565b50506001821b610534565b5060208310610133831016604e8410600b84101617156119b5575081810a610534565b6119bf83836118fa565b805f19048211156119d2576119d26118e6565b029392505050565b5f61161760ff84168361193c565b8082028115828204841417610534576105346118e6565b80820180821115610534576105346118e6565b81810381811115610534576105346118e6565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611a49575f80fd5b815161161781611775565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611aa25784516001600160a01b031683529383019391830191600101611a7d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611add57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122054e3b369f4c4df503e9830dc859d100039fd6f38835a287b7aeacc69646e13fc64736f6c63430008140033

Deployed Bytecode Sourcemap

3313:9733:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3881:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;5951:161;;;;;;;;;;-1:-1:-1;5951:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5951:161:0;1023:187:1;10515:190:0;;;;;;;;;;-1:-1:-1;10515:190:0;;;;;:::i;:::-;;:::i;:::-;;4107:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1590:32:1;;;1572:51;;1560:2;1545:18;4107:51:0;1400:229:1;4034:60:0;;;;;;;;;;;;;:::i;:::-;;;1780:25:1;;;1768:2;1753:18;4034:60:0;1634:177:1;6120:313:0;;;;;;;;;;-1:-1:-1;6120:313:0;;;;;:::i;:::-;;:::i;3992:35::-;;;;;;;;;;;;4025:2;3992:35;;;;;2449:4:1;2437:17;;;2419:36;;2407:2;2392:18;3992:35:0;2277:184:1;10270:113:0;;;;;;;;;;-1:-1:-1;10270:113:0;;;;;:::i;:::-;;:::i;4165:38::-;;;;;;;;;;;;;;;10126:136;;;;;;;;;;-1:-1:-1;10126:136:0;;;;;:::i;:::-;;:::i;5500:117::-;;;;;;;;;;-1:-1:-1;5500:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;5593:16:0;5566:7;5593:16;;;:7;:16;;;;;;;5500:117;2669:148;;;;;;;;;;;;;:::i;9771:169::-;;;;;;;;;;;;;:::i;10713:196::-;;;;;;;;;;-1:-1:-1;10713:196:0;;;;;:::i;:::-;;:::i;2455:79::-;;;;;;;;;;-1:-1:-1;2493:7:0;2520:6;-1:-1:-1;;;;;2520:6:0;2455:79;;3945:40;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3945:40:0;;;;;5625:167;;;;;;;;;;-1:-1:-1;5625:167:0;;;;;:::i;:::-;;:::i;9952:166::-;;;;;;;;;;-1:-1:-1;9952:166:0;;;;;:::i;:::-;;:::i;12518:156::-;;;;;;;;;;;;;:::i;9587:176::-;;;;;;;;;;;;;:::i;5800:143::-;;;;;;;;;;-1:-1:-1;5800:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;5908:18:0;;;5881:7;5908:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5800:143;6441:94;;;;;;;;;;-1:-1:-1;6441:94:0;;;;;:::i;:::-;;:::i;10395:112::-;;;;;;;;;;-1:-1:-1;10395:112:0;;;;;:::i;:::-;;:::i;12686:168::-;;;;;;;;;;;;;:::i;4212:31::-;;;;;;;;;;-1:-1:-1;4212:31:0;;;;-1:-1:-1;;;4212:31:0;;;;;;5951:161;6026:4;6043:39;253:10;6066:7;6075:6;6043:8;:39::i;:::-;-1:-1:-1;6100:4:0;5951:161;;;;;:::o;10515:190::-;2582:6;;-1:-1:-1;;;;;2582:6:0;253:10;2582:22;2574:67;;;;-1:-1:-1;;;2574:67:0;;;;;;;:::i;:::-;;;;;;;;;10616:2:::1;10597:15;:21;;10589:63;;;::::0;-1:-1:-1;;;10589:63:0;;4485:2:1;10589:63:0::1;::::0;::::1;4467:21:1::0;4524:2;4504:18;;;4497:30;4563:31;4543:18;;;4536:59;4612:18;;10589:63:0::1;4283:353:1::0;10589:63:0::1;10663:16;:34:::0;10515:190::o;4034:60::-;4082:12;4025:2;4082;:12;:::i;:::-;4072:22;;:7;:22;:::i;:::-;4034:60;:::o;6120:313::-;6218:4;6235:36;6245:6;6253:9;6264:6;6235:9;:36::i;:::-;6282:121;6291:6;253:10;6313:89;6351:6;6313:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6313:19:0;;;;;;:11;:19;;;;;;;;253:10;6313:33;;;;;;;;;;:37;:89::i;:::-;6282:8;:121::i;:::-;-1:-1:-1;6421:4:0;6120:313;;;;;:::o;10270:113::-;2582:6;;-1:-1:-1;;;;;2582:6:0;253:10;2582:22;2574:67;;;;-1:-1:-1;;;2574:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10341:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;10341:34:0::1;10371:4;10341:34;::::0;;10270:113::o;10126:136::-;2582:6;;-1:-1:-1;;;;;2582:6:0;253:10;2582:22;2574:67;;;;-1:-1:-1;;;2574:67:0;;;;;;;:::i;:::-;10211:16:::1;:43:::0;;-1:-1:-1;;;;;;10211:43:0::1;-1:-1:-1::0;;;;;10211:43:0;;;::::1;::::0;;;::::1;::::0;;10126:136::o;2669:148::-;2582:6;;-1:-1:-1;;;;;2582:6:0;253:10;2582:22;2574:67;;;;-1:-1:-1;;;2574:67:0;;;;;;;:::i;:::-;2776:1:::1;2760:6:::0;;2739:40:::1;::::0;-1:-1:-1;;;;;2760:6:0;;::::1;::::0;2739:40:::1;::::0;2776:1;;2739:40:::1;2807:1;2790:19:::0;;-1:-1:-1;;;;;;2790:19:0::1;::::0;;2669:148::o;9771:169::-;2582:6;;-1:-1:-1;;;;;2582:6:0;253:10;2582:22;2574:67;;;;-1:-1:-1;;;2574:67:0;;;;;;;:::i;:::-;4082:12:::1;4025:2;4082;:12;:::i;:::-;4072:22;::::0;:7:::1;:22;:::i;:::-;9825:13;:27:::0;;;4082:12:::1;::::0;4025:2:::1;::::0;4082:12:::1;:::i;:::-;4072:22;::::0;:7:::1;:22;:::i;:::-;9863:14;:28:::0;4082:12:::1;4025:2;4082;:12;:::i;:::-;4072:22;::::0;:7:::1;:22;:::i;:::-;9902:16;:30:::0;9771:169::o;10713:196::-;2582:6;;-1:-1:-1;;;;;2582:6:0;253:10;2582:22;2574:67;;;;-1:-1:-1;;;2574:67:0;;;;;;;:::i;:::-;10817:2:::1;10797:16;:22;;10789:65;;;::::0;-1:-1:-1;;;10789:65:0;;6531:2:1;10789:65:0::1;::::0;::::1;6513:21:1::0;6570:2;6550:18;;;6543:30;6609:32;6589:18;;;6582:60;6659:18;;10789:65:0::1;6329:354:1::0;10789:65:0::1;10865:17;:36:::0;10713:196::o;5625:167::-;5703:4;5720:42;253:10;5744:9;5755:6;5720:9;:42::i;9952:166::-;2582:6;;-1:-1:-1;;;;;2582:6:0;253:10;2582:22;2574:67;;;;-1:-1:-1;;;2574:67:0;;;;;;;:::i;:::-;10047:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;10047:22:0::1;-1:-1:-1::0;;;;10047:22:0;;::::1;::::0;;;::::1;::::0;;10080:18:::1;:30:::0;9952:166::o;12518:156::-;2582:6;;-1:-1:-1;;;;;2582:6:0;253:10;2582:22;2574:67;;;;-1:-1:-1;;;2574:67:0;;;;;;;:::i;:::-;12616:4:::1;12572:23;5593:16:::0;;;:7;:16;;;;;;12633:33:::1;5593:16:::0;12633::::1;:33::i;:::-;12561:113;12518:156::o:0;9587:176::-;2582:6;;-1:-1:-1;;;;;2582:6:0;253:10;2582:22;2574:67;;;;-1:-1:-1;;;2574:67:0;;;;;;;:::i;:::-;9651:11:::1;::::0;-1:-1:-1;;;9651:11:0;::::1;;;9650:12;9642:47;;;::::0;-1:-1:-1;;;9642:47:0;;6890:2:1;9642:47:0::1;::::0;::::1;6872:21:1::0;6929:2;6909:18;;;6902:30;6968:25;6948:18;;;6941:53;7011:18;;9642:47:0::1;6688:347:1::0;9642:47:0::1;9700:11;:18:::0;;-1:-1:-1;;;;9729:18:0;-1:-1:-1;;;9729:18:0;;;9587:176::o;6441:94::-;2582:6;;-1:-1:-1;;;;;2582:6:0;253:10;2582:22;2574:67;;;;-1:-1:-1;;;2574:67:0;;;;;;;:::i;:::-;6508:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;6508:19:0::1;-1:-1:-1::0;;;;6508:19:0;;::::1;::::0;;;::::1;::::0;;6441:94::o;10395:112::-;2582:6;;-1:-1:-1;;;;;2582:6:0;253:10;2582:22;2574:67;;;;-1:-1:-1;;;2574:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10464:27:0::1;10494:5;10464:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;10464:35:0::1;::::0;;10395:112::o;12686:168::-;2582:6;;-1:-1:-1;;;;;2582:6:0;253:10;2582:22;2574:67;;;;-1:-1:-1;;;2574:67:0;;;;;;;:::i;:::-;12801:16:::1;::::0;:45:::1;::::0;12769:21:::1;::::0;-1:-1:-1;;;;;12801:16:0::1;::::0;:45;::::1;;;::::0;12769:21;;12740:26:::1;12801:45:::0;12740:26;12801:45;12769:21;12801:16;:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12729:125;12686:168::o:0;6543:335::-;-1:-1:-1;;;;;6636:19:0;;6628:68;;;;-1:-1:-1;;;6628:68:0;;7242:2:1;6628:68:0;;;7224:21:1;7281:2;7261:18;;;7254:30;7320:34;7300:18;;;7293:62;-1:-1:-1;;;7371:18:1;;;7364:34;7415:19;;6628:68:0;7040:400:1;6628:68:0;-1:-1:-1;;;;;6715:21:0;;6707:68;;;;-1:-1:-1;;;6707:68:0;;7647:2:1;6707:68:0;;;7629:21:1;7686:2;7666:18;;;7659:30;7725:34;7705:18;;;7698:62;-1:-1:-1;;;7776:18:1;;;7769:32;7818:19;;6707:68:0;7445:398:1;6707:68:0;-1:-1:-1;;;;;6786:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6838:32;;1780:25:1;;;6838:32:0;;1753:18:1;6838:32:0;;;;;;;;6543:335;;;:::o;6886:1762::-;-1:-1:-1;;;;;6974:18:0;;6966:68;;;;-1:-1:-1;;;6966:68:0;;8050:2:1;6966:68:0;;;8032:21:1;8089:2;8069:18;;;8062:30;8128:34;8108:18;;;8101:62;-1:-1:-1;;;8179:18:1;;;8172:35;8224:19;;6966:68:0;7848:401:1;6966:68:0;-1:-1:-1;;;;;7053:16:0;;7045:64;;;;-1:-1:-1;;;7045:64:0;;8456:2:1;7045:64:0;;;8438:21:1;8495:2;8475:18;;;8468:30;8534:34;8514:18;;;8507:62;-1:-1:-1;;;8585:18:1;;;8578:33;8628:19;;7045:64:0;8254:399:1;7045:64:0;7137:1;7128:6;:10;7120:64;;;;-1:-1:-1;;;7120:64:0;;8860:2:1;7120:64:0;;;8842:21:1;8899:2;8879:18;;;8872:30;8938:34;8918:18;;;8911:62;-1:-1:-1;;;8989:18:1;;;8982:39;9038:19;;7120:64:0;8658:405:1;7120:64:0;7195:12;7226:15;7273:7;2493;2520:6;-1:-1:-1;;;;;2520:6:0;;2455:79;7273:7;-1:-1:-1;;;;;7265:15:0;:4;-1:-1:-1;;;;;7265:15:0;;;:32;;;;-1:-1:-1;2493:7:0;2520:6;-1:-1:-1;;;;;7284:13:0;;;2520:6;;7284:13;;7265:32;7262:106;;;7321:11;;-1:-1:-1;;;7321:11:0;;;;7313:43;;;;-1:-1:-1;;;7313:43:0;;9270:2:1;7313:43:0;;;9252:21:1;9309:2;9289:18;;;9282:30;-1:-1:-1;;;9328:18:1;;;9321:50;9388:18;;7313:43:0;9068:344:1;7313:43:0;2493:7;2520:6;-1:-1:-1;;;;;7384:15:0;;;2520:6;;7384:15;;;;:32;;-1:-1:-1;2493:7:0;2520:6;-1:-1:-1;;;;;7403:13:0;;;2520:6;;7403:13;;7384:32;:52;;;;-1:-1:-1;;;;;;7420:16:0;;;;7384:52;:77;;;;-1:-1:-1;;;;;;7440:21:0;;7454:6;7440:21;;7384:77;:90;;;;-1:-1:-1;7466:8:0;;-1:-1:-1;;;7466:8:0;;;;7465:9;7384:90;7380:731;;;7503:4;7493:14;;7534:13;-1:-1:-1;;;;;7526:21:0;:4;-1:-1:-1;;;;;7526:21:0;;:55;;;;;7565:15;-1:-1:-1;;;;;7551:30:0;:2;-1:-1:-1;;;;;7551:30:0;;;7526:55;:82;;;;-1:-1:-1;;;;;;7586:22:0;;;;;;:18;:22;;;;;;;;7585:23;7526:82;7522:310;;;7647:13;;7637:6;:23;;7629:77;;;;-1:-1:-1;;;7629:77:0;;9619:2:1;7629:77:0;;;9601:21:1;9658:2;9638:18;;;9631:30;9697:34;9677:18;;;9670:62;-1:-1:-1;;;9748:18:1;;;9741:39;9797:19;;7629:77:0;9417:405:1;7629:77:0;7759:16;;7749:6;7733:13;7743:2;-1:-1:-1;;;;;5593:16:0;5566:7;5593:16;;;:7;:16;;;;;;;5500:117;7733:13;:22;;;;:::i;:::-;:42;;7725:91;;;;-1:-1:-1;;;7725:91:0;;10159:2:1;7725:91:0;;;10141:21:1;10198:2;10178:18;;;10171:30;10237:34;10217:18;;;10210:62;-1:-1:-1;;;10288:18:1;;;10281:34;10332:19;;7725:91:0;9957:400:1;7725:91:0;7870:13;-1:-1:-1;;;;;7864:19:0;:2;-1:-1:-1;;;;;7864:19:0;;:55;;;;;7903:15;-1:-1:-1;;;;;7887:32:0;:4;-1:-1:-1;;;;;7887:32:0;;;7864:55;:84;;;;-1:-1:-1;;;;;;7924:24:0;;;;;;:18;:24;;;;;;;;7923:25;7864:84;7860:240;;;7987:14;;7977:6;:24;;7969:79;;;;-1:-1:-1;;;7969:79:0;;10564:2:1;7969:79:0;;;10546:21:1;10603:2;10583:18;;;10576:30;10642:34;10622:18;;;10615:62;-1:-1:-1;;;10693:18:1;;;10686:40;10743:19;;7969:79:0;10362:406:1;7969:79:0;-1:-1:-1;8080:4:0;7860:240;-1:-1:-1;;;;;8126:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;8154:22:0;;;;;;:18;:22;;;;;;;;8126:50;8123:97;;;8203:5;8193:15;;8123:97;8281:4;8232:28;5593:16;;;:7;:16;;;;;;8232:55;;8298:12;8337:18;;8314:20;:41;8313:57;;;;;8360:10;8313:57;8298:72;;8387:7;:22;;;;-1:-1:-1;8398:11:0;;-1:-1:-1;;;8398:11:0;;;;8387:22;:35;;;;-1:-1:-1;8414:8:0;;-1:-1:-1;;;8414:8:0;;;;8413:9;8387:35;:64;;;;-1:-1:-1;;;;;;8427:24:0;;;;;;:18;:24;;;;;;;;8426:25;8387:64;:91;;;;-1:-1:-1;;;;;;8456:22:0;;;;;;:18;:22;;;;;;;;8455:23;8387:91;8383:195;;;8495:8;:15;;-1:-1:-1;;;;8495:15:0;-1:-1:-1;;;8495:15:0;;;8525:10;:8;:10::i;:::-;8550:8;:16;;-1:-1:-1;;;;8550:16:0;;;8383:195;8590:50;8605:4;8610:2;8613:6;8620:7;8629:10;8590:14;:50::i;:::-;6955:1693;;;;6886:1762;;;:::o;1310:190::-;1396:7;1432:12;1424:6;;;;1416:29;;;;-1:-1:-1;;;1416:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1456:9:0;1468:5;1472:1;1468;:5;:::i;:::-;1456:17;1310:190;-1:-1:-1;;;;;1310:190:0:o;9095:483::-;4625:6;:13;;-1:-1:-1;;;;4625:13:0;-1:-1:-1;;;4625:13:0;;;9197:16:::1;::::0;;9211:1:::1;9197:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9197:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9197:16:0::1;9173:40;;9242:4;9224;9229:1;9224:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;9224:23:0::1;;;-1:-1:-1::0;;;;;9224:23:0::1;;;::::0;::::1;9268:15;-1:-1:-1::0;;;;;9268:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9258:4;9263:1;9258:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1::0;;;;;9258:32:0::1;;;-1:-1:-1::0;;;;;9258:32:0::1;;;::::0;::::1;9301:62;9318:4;9333:15;9351:11;9301:8;:62::i;:::-;9374:196;::::0;-1:-1:-1;;;9374:196:0;;-1:-1:-1;;;;;9374:15:0::1;:66;::::0;::::1;::::0;:196:::1;::::0;9455:11;;9481:1:::1;::::0;9497:4;;9524::::1;::::0;9544:15:::1;::::0;9374:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4661:6:0;:14;;-1:-1:-1;;;;4661:14:0;;;-1:-1:-1;;;;9095:483:0:o;8656:431::-;8739:4;8695:23;5593:16;;;:7;:16;;;;;;;8792:20;;;8789:34;;8815:7;;8656:431::o;8789:34::-;8856:18;;:22;;8877:1;8856:22;:::i;:::-;8838:15;:40;8835:112;;;8913:18;;:22;;8934:1;8913:22;:::i;:::-;8895:40;;8835:112;8957:33;8974:15;8957:16;:33::i;:::-;9023:16;;9015:64;;-1:-1:-1;;;;;9023:16:0;;;;9053:21;;9015:64;;;;9053:21;9023:16;9015:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8656:431:0:o;11400:389::-;11525:7;11521:129;;11549:14;:12;:14::i;:::-;11521:129;;;11605:33;11615:6;11623;11631;11605:9;:33::i;:::-;11596:42;;11521:129;11662:44;11680:6;11688:9;11699:6;11662:17;:44::i;:::-;11731:7;11727:55;;11755:15;11294:24;;11275:16;:43;11349:25;;11329:17;:45;11231:151;10917:302;10963:16;;:21;:47;;;;-1:-1:-1;10988:17:0;;:22;10963:47;10960:59;;;10917:302::o;10960:59::-;11066:16;;;11039:24;:43;11121:17;;;11093:25;:45;-1:-1:-1;11159:20:0;;;;11190:21;10917:302::o;12072:397::-;12153:7;12173:18;12225:21;12239:6;12225:13;:21::i;:::-;12212:34;-1:-1:-1;12259:12:0;12274:31;12301:3;12274:22;:6;12212:34;12274:10;:22::i;:::-;:26;;:31::i;:::-;12259:46;-1:-1:-1;12333:8:0;;12330:86;;12358:46;12376:6;12392:4;12399;12358:17;:46::i;:::-;12447:14;12457:4;12447:14;;:::i;:::-;;12072:397;-1:-1:-1;;;;;;12072:397:0:o;11797:267::-;-1:-1:-1;;;;;11913:15:0;;;;;;:7;:15;;;;;;:28;;11933:7;11913:19;:28::i;:::-;-1:-1:-1;;;;;11895:15:0;;;;;;;:7;:15;;;;;;:46;;;;11973:18;;;;;;;:31;;11996:7;11973:22;:31::i;:::-;-1:-1:-1;;;;;11952:18:0;;;;;;;:7;:18;;;;;;;:52;;;;12020:36;;;;;;;;;;12048:7;1780:25:1;;1768:2;1753:18;;1634:177;12862:181:0;12919:7;12943:6;12939:63;;;-1:-1:-1;;12973:17:0;;;12862:181::o;12939:63::-;-1:-1:-1;;13019:16:0;;;12862:181::o;1508:246::-;1566:7;1590:1;1595;1590:6;1586:47;;-1:-1:-1;1620:1:0;1613:8;;1586:47;1643:9;1655:5;1659:1;1655;:5;:::i;:::-;1643:17;-1:-1:-1;1688:1:0;1679:5;1683:1;1643:17;1679:5;:::i;:::-;:10;1671:56;;;;-1:-1:-1;;;1671:56:0;;13045:2:1;1671:56:0;;;13027:21:1;13084:2;13064:18;;;13057:30;13123:34;13103:18;;;13096:62;-1:-1:-1;;;13174:18:1;;;13167:31;13215:19;;1671:56:0;12843:397:1;1671:56:0;1745:1;1508:246;-1:-1:-1;;;1508:246:0:o;1762:132::-;1820:7;1847:39;1851:1;1854;1847:39;;;;;;;;;;;;;;;;;:3;:39::i;1166:136::-;1224:7;1251:43;1255:1;1258;1251:43;;;;;;;;;;;;;;;;;:3;:43::i;979:179::-;1037:7;;1069:5;1073:1;1069;:5;:::i;:::-;1057:17;;1098:1;1093;:6;;1085:46;;;;-1:-1:-1;;;1085:46:0;;13447:2:1;1085:46:0;;;13429:21:1;13486:2;13466:18;;;13459:30;13525:29;13505:18;;;13498:57;13572:18;;1085:46:0;13245:351:1;1902:189:0;1988:7;2023:12;2016:5;2008:28;;;;-1:-1:-1;;;2008:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2047:9:0;2059:5;2063:1;2059;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:180::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;-1:-1:-1;1366:23:1;;1215:180;-1:-1:-1;1215:180:1:o;1816:456::-;1893:6;1901;1909;1962:2;1950:9;1941:7;1937:23;1933:32;1930:52;;;1978:1;1975;1968:12;1930:52;2017:9;2004:23;2036:31;2061:5;2036:31;:::i;:::-;2086:5;-1:-1:-1;2143:2:1;2128:18;;2115:32;2156:33;2115:32;2156:33;:::i;:::-;1816:456;;2208:7;;-1:-1:-1;;;2262:2:1;2247:18;;;;2234:32;;1816:456::o;2466:247::-;2525:6;2578:2;2566:9;2557:7;2553:23;2549:32;2546:52;;;2594:1;2591;2584:12;2546:52;2633:9;2620:23;2652:31;2677:5;2652:31;:::i;2926:160::-;2991:20;;3047:13;;3040:21;3030:32;;3020:60;;3076:1;3073;3066:12;3020:60;2926:160;;;:::o;3091:248::-;3156:6;3164;3217:2;3205:9;3196:7;3192:23;3188:32;3185:52;;;3233:1;3230;3223:12;3185:52;3269:9;3256:23;3246:33;;3298:35;3329:2;3318:9;3314:18;3298:35;:::i;:::-;3288:45;;3091:248;;;;;:::o;3344:388::-;3412:6;3420;3473:2;3461:9;3452:7;3448:23;3444:32;3441:52;;;3489:1;3486;3479:12;3441:52;3528:9;3515:23;3547:31;3572:5;3547:31;:::i;:::-;3597:5;-1:-1:-1;3654:2:1;3639:18;;3626:32;3667:33;3626:32;3667:33;:::i;:::-;3719:7;3709:17;;;3344:388;;;;;:::o;3737:180::-;3793:6;3846:2;3834:9;3825:7;3821:23;3817:32;3814:52;;;3862:1;3859;3852:12;3814:52;3885:26;3901:9;3885:26;:::i;3922:356::-;4124:2;4106:21;;;4143:18;;;4136:30;4202:34;4197:2;4182:18;;4175:62;4269:2;4254:18;;3922:356::o;4641:127::-;4702:10;4697:3;4693:20;4690:1;4683:31;4733:4;4730:1;4723:15;4757:4;4754:1;4747:15;4773:422;4862:1;4905:5;4862:1;4919:270;4940:7;4930:8;4927:21;4919:270;;;4999:4;4995:1;4991:6;4987:17;4981:4;4978:27;4975:53;;;5008:18;;:::i;:::-;5058:7;5048:8;5044:22;5041:55;;;5078:16;;;;5041:55;5157:22;;;;5117:15;;;;4919:270;;;4923:3;4773:422;;;;;:::o;5200:806::-;5249:5;5279:8;5269:80;;-1:-1:-1;5320:1:1;5334:5;;5269:80;5368:4;5358:76;;-1:-1:-1;5405:1:1;5419:5;;5358:76;5450:4;5468:1;5463:59;;;;5536:1;5531:130;;;;5443:218;;5463:59;5493:1;5484:10;;5507:5;;;5531:130;5568:3;5558:8;5555:17;5552:43;;;5575:18;;:::i;:::-;-1:-1:-1;;5631:1:1;5617:16;;5646:5;;5443:218;;5745:2;5735:8;5732:16;5726:3;5720:4;5717:13;5713:36;5707:2;5697:8;5694:16;5689:2;5683:4;5680:12;5676:35;5673:77;5670:159;;;-1:-1:-1;5782:19:1;;;5814:5;;5670:159;5861:34;5886:8;5880:4;5861:34;:::i;:::-;5931:6;5927:1;5923:6;5919:19;5910:7;5907:32;5904:58;;;5942:18;;:::i;:::-;5980:20;;5200:806;-1:-1:-1;;;5200:806:1:o;6011:140::-;6069:5;6098:47;6139:4;6129:8;6125:19;6119:4;6098:47;:::i;6156:168::-;6229:9;;;6260;;6277:15;;;6271:22;;6257:37;6247:71;;6298:18;;:::i;9827:125::-;9892:9;;;9913:10;;;9910:36;;;9926:18;;:::i;10773:128::-;10840:9;;;10861:11;;;10858:37;;;10875:18;;:::i;11038:127::-;11099:10;11094:3;11090:20;11087:1;11080:31;11130:4;11127:1;11120:15;11154:4;11151:1;11144:15;11170:251;11240:6;11293:2;11281:9;11272:7;11268:23;11264:32;11261:52;;;11309:1;11306;11299:12;11261:52;11341:9;11335:16;11360:31;11385:5;11360:31;:::i;11426:980::-;11688:4;11736:3;11725:9;11721:19;11767:6;11756:9;11749:25;11793:2;11831:6;11826:2;11815:9;11811:18;11804:34;11874:3;11869:2;11858:9;11854:18;11847:31;11898:6;11933;11927:13;11964:6;11956;11949:22;12002:3;11991:9;11987:19;11980:26;;12041:2;12033:6;12029:15;12015:29;;12062:1;12072:195;12086:6;12083:1;12080:13;12072:195;;;12151:13;;-1:-1:-1;;;;;12147:39:1;12135:52;;12242:15;;;;12207:12;;;;12183:1;12101:9;12072:195;;;-1:-1:-1;;;;;;;12323:32:1;;;;12318:2;12303:18;;12296:60;-1:-1:-1;;;12387:3:1;12372:19;12365:35;12284:3;11426:980;-1:-1:-1;;;11426:980:1:o;12621:217::-;12661:1;12687;12677:132;;12731:10;12726:3;12722:20;12719:1;12712:31;12766:4;12763:1;12756:15;12794:4;12791:1;12784:15;12677:132;-1:-1:-1;12823:9:1;;12621:217::o

Swarm Source

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