ETH Price: $3,388.99 (+1.62%)

Contract

0x36862fF1F4f2Cc859a13A45d4921f8AB3664e22B
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve214009392024-12-14 13:05:3514 days ago1734181535IN
0x36862fF1...B3664e22B
0 ETH0.0005076510.9027823
Approve213660812024-12-09 16:16:4719 days ago1733761007IN
0x36862fF1...B3664e22B
0 ETH0.0015277132.81869553
Approve213165532024-12-02 18:16:1126 days ago1733163371IN
0x36862fF1...B3664e22B
0 ETH0.0014319130.75294664
Approve212895072024-11-28 23:34:2329 days ago1732836863IN
0x36862fF1...B3664e22B
0 ETH0.00041828.9815939
Approve211583302024-11-10 16:00:5948 days ago1731254459IN
0x36862fF1...B3664e22B
0 ETH0.0012002725.74471588
Transfer211581192024-11-10 15:18:4748 days ago1731251927IN
0x36862fF1...B3664e22B
0 ETH0.0018732425.56813439
Approve210743572024-10-29 22:43:3559 days ago1730241815IN
0x36862fF1...B3664e22B
0 ETH0.000352937.57997066
Approve208552732024-09-29 9:03:1190 days ago1727600591IN
0x36862fF1...B3664e22B
0 ETH0.000396738.50957306
Approve207375852024-09-12 22:42:59106 days ago1726180979IN
0x36862fF1...B3664e22B
0 ETH0.000050492.07997837
Approve207058402024-09-08 12:18:11111 days ago1725797891IN
0x36862fF1...B3664e22B
0 ETH0.000035721.47168046
Approve206570442024-09-01 16:53:59118 days ago1725209639IN
0x36862fF1...B3664e22B
0 ETH0.000082641.77503807
Transfer205924052024-08-23 16:10:23127 days ago1724429423IN
0x36862fF1...B3664e22B
0 ETH0.000155712.12543488
Approve205684242024-08-20 7:44:23130 days ago1724139863IN
0x36862fF1...B3664e22B
0 ETH0.000098732.12047859
Approve205250452024-08-14 6:21:47136 days ago1723616507IN
0x36862fF1...B3664e22B
0 ETH0.000147573.18338162
Transfer205053342024-08-11 12:21:11139 days ago1723378871IN
0x36862fF1...B3664e22B
0 ETH0.00017032.32457366
Approve204192472024-07-30 12:03:11151 days ago1722340991IN
0x36862fF1...B3664e22B
0 ETH0.000358777.70522842
Approve203490532024-07-20 16:51:35161 days ago1721494295IN
0x36862fF1...B3664e22B
0 ETH0.000242285.20339208
Approve203490452024-07-20 16:49:59161 days ago1721494199IN
0x36862fF1...B3664e22B
0 ETH0.000158233.39834849
Approve203459352024-07-20 6:24:47161 days ago1721456687IN
0x36862fF1...B3664e22B
0 ETH0.000146223.1404319
Approve203343922024-07-18 15:46:35163 days ago1721317595IN
0x36862fF1...B3664e22B
0 ETH0.0006296413.50536662
Approve202736882024-07-10 4:24:23171 days ago1720585463IN
0x36862fF1...B3664e22B
0 ETH0.000266815.73029567
Approve202588002024-07-08 2:26:11173 days ago1720405571IN
0x36862fF1...B3664e22B
0 ETH0.000126312.70934793
Approve202531702024-07-07 7:33:35174 days ago1720337615IN
0x36862fF1...B3664e22B
0 ETH0.00008821.89425824
Approve202514572024-07-07 1:48:47174 days ago1720316927IN
0x36862fF1...B3664e22B
0 ETH0.000151893.2621675
Approve202356222024-07-04 20:46:35176 days ago1720125995IN
0x36862fF1...B3664e22B
0 ETH0.000272565.85379149
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
213658512024-12-09 15:30:2319 days ago1733758223
0x36862fF1...B3664e22B
0.00226108 ETH
213658512024-12-09 15:30:2319 days ago1733758223
0x36862fF1...B3664e22B
0.00075369 ETH
213658512024-12-09 15:30:2319 days ago1733758223
0x36862fF1...B3664e22B
0.00301478 ETH
208023252024-09-21 23:47:1197 days ago1726962431
0x36862fF1...B3664e22B
0.00211413 ETH
208023252024-09-21 23:47:1197 days ago1726962431
0x36862fF1...B3664e22B
0.00070471 ETH
208023252024-09-21 23:47:1197 days ago1726962431
0x36862fF1...B3664e22B
0.00281884 ETH
204192512024-07-30 12:03:59151 days ago1722341039
0x36862fF1...B3664e22B
0.00248668 ETH
204192512024-07-30 12:03:59151 days ago1722341039
0x36862fF1...B3664e22B
0.00082889 ETH
204192512024-07-30 12:03:59151 days ago1722341039
0x36862fF1...B3664e22B
0.00331557 ETH
203679232024-07-23 8:06:11158 days ago1721721971
0x36862fF1...B3664e22B
0.00224433 ETH
203679232024-07-23 8:06:11158 days ago1721721971
0x36862fF1...B3664e22B
0.00074811 ETH
203679232024-07-23 8:06:11158 days ago1721721971
0x36862fF1...B3664e22B
0.00299244 ETH
203598042024-07-22 4:52:23159 days ago1721623943
0x36862fF1...B3664e22B
0.00232202 ETH
203598042024-07-22 4:52:23159 days ago1721623943
0x36862fF1...B3664e22B
0.000774 ETH
203598042024-07-22 4:52:23159 days ago1721623943
0x36862fF1...B3664e22B
0.00309603 ETH
203490492024-07-20 16:50:47161 days ago1721494247
0x36862fF1...B3664e22B
0.00363588 ETH
203490492024-07-20 16:50:47161 days ago1721494247
0x36862fF1...B3664e22B
0.00121196 ETH
203490492024-07-20 16:50:47161 days ago1721494247
0x36862fF1...B3664e22B
0.00484785 ETH
203343942024-07-18 15:46:59163 days ago1721317619
0x36862fF1...B3664e22B
0.00330488 ETH
203343942024-07-18 15:46:59163 days ago1721317619
0x36862fF1...B3664e22B
0.00110162 ETH
203343942024-07-18 15:46:59163 days ago1721317619
0x36862fF1...B3664e22B
0.0044065 ETH
202737092024-07-10 4:28:35171 days ago1720585715
0x36862fF1...B3664e22B
0.00336996 ETH
202737092024-07-10 4:28:35171 days ago1720585715
0x36862fF1...B3664e22B
0.00112332 ETH
202737092024-07-10 4:28:35171 days ago1720585715
0x36862fF1...B3664e22B
0.00449328 ETH
202737012024-07-10 4:26:59171 days ago1720585619
0x36862fF1...B3664e22B
0.00336996 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PoofAI

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

// Poof - Remove Your Digital Footprint
// Website:  https://p00f.co
// Telegram: https://t.me/poofentry
// Twitter:  https://x.com/p00fAI

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    } 
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Invalid owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "New owner is ZERO");
        _transferOwnership(newOwner);
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, 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);
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (
        uint112 reserve0,
        uint112 reserve1,
        uint32 blockTimestampLast
    );

    function price0CumulativeLast() external view returns (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function mint(address to) external returns (uint256 liquidity);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}


contract ERC20 is IERC20, Context {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

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

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: Not owner != address(0)");
        require(spender != address(0), "ERC20: Not spender != address(0)");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        _transfer(from, to, amount);
        uint256 curAllow = _allowances[from][_msgSender()];
        require(curAllow >= amount, "ERC20: Not curAllow >= amount");
        unchecked {
            _approve(from, _msgSender(), curAllow - amount);
        }
        return true;
    }

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

    function increaseAllowance(address spender, uint256 addValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subValue) public virtual returns (bool) {
        uint256 curAllow = _allowances[_msgSender()][spender];
        require(curAllow >= subValue, "ERC20: Not curAllow >= subValue");
        unchecked {
            _approve(_msgSender(), spender, curAllow - subValue);
        }
        return true;
    }

    function _mint(
    	address account,
	    uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(
    	address account,
	    uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 kBalance = _balances[account];
        require(kBalance >= amount, "ERC20: kBalance >= amount");
        unchecked {
            _balances[account] = kBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount) internal virtual {
    }

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: Not from != address(0)");
        require(to != address(0), "ERC20: Not to != address(0)");
        _beforeTokenTransfer(from, to, amount);
        uint256 balanceFrom = _balances[from];
        require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount");
        unchecked {
            _balances[from] = balanceFrom - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount) internal virtual {
        // Nothing
    }
}

contract PoofAI is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public swapRouter;
    address public swapPair;
    
    uint256 public minSwapTokenAmount;
    uint256 public maxTokenAmountPerWallet;
    uint256 public maxTokenAmountPerTxn;

    bool public TradingActive = false;
    uint256 public ActiveTradingBlock;
    uint256 public PreventSwapbackBlocks;
    bool public SwapEnabled = false;

    address public marketingWallet;
    address public devWallet;

    uint256 public tokenAmountForMarketing;
    uint256 public tokenAmountForDev;

    mapping(address => bool) public ExcludedMaxTokenAmountPerTxn;

    mapping(address => bool) public ExcludedFromTax;

    mapping(address => bool) public automatedMarketMakerPairs;

    bool public limitsInEffect = true;

    uint256 public sellTotalTax;
    uint256 public sellMarketingTax;
    uint256 public sellDevTax;

    uint256 public buyTotalTax;
    uint256 public buyMarketingTax;
    uint256 public buyDevTax;

    
    bool private Swapping;
    mapping(address => bool) private blackList;
    
    constructor() ERC20("PoofAI", "POOF") {
        devWallet = address(0x76Ee2919D45baEFd4331683012977F6e1a784E6A);
        marketingWallet = address(0x76Ee2919D45baEFd4331683012977F6e1a784E6A);

        swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH());

        ExcludedMaxTokenAmountPerTxn[owner()] = true;
        ExcludedMaxTokenAmountPerTxn[address(this)] = true;

        uint256 totalSupply = 100_000_000 * (10 ** decimals());
        minSwapTokenAmount = 100_000 * (10 ** decimals()); //0.1% min swap
        maxTokenAmountPerTxn = 1_250_001 * (10 ** decimals()); // 1.25% max tx amount
        maxTokenAmountPerWallet = 1_250_001 * (10 ** decimals()); // 1.25% max wallet amount
        ExcludedFromTax[address(this)] = true;
        ExcludedFromTax[owner()] = true;


        automatedMarketMakerPairs[address(swapPair)] = true;
        
        ExcludedMaxTokenAmountPerTxn[address(0xdead)] = true;
        ExcludedMaxTokenAmountPerTxn[address(swapRouter)] = true;
        ExcludedMaxTokenAmountPerTxn[address(swapPair)] = true;

        ExcludedFromTax[address(0xdead)] = true;

        sellMarketingTax = 30;
        sellDevTax = 10;
        sellTotalTax = sellMarketingTax + sellDevTax;


        buyMarketingTax = 15;
        buyDevTax = 5;
        buyTotalTax = buyMarketingTax + buyDevTax;

        PreventSwapbackBlocks=3; 
        _mint(msg.sender, totalSupply);
    }

    function activateTrading() external onlyOwner {
        TradingActive = true;
        SwapEnabled = true;
        ActiveTradingBlock=block.number;
    }
    function updateSwapbackBlocks(uint256 newNum) external onlyOwner{
        PreventSwapbackBlocks=newNum;
    }
    function excludeFromMaxTx(address addr, bool value) external onlyOwner {
        ExcludedMaxTokenAmountPerTxn[addr] = value;
    }
    function taxExempt(address account, bool value) external onlyOwner {    	
        ExcludedFromTax[account] = value;
    }

    function limitsOff() external onlyOwner {
        limitsInEffect = false;
    }
    function toggleSwap(bool enabled) external onlyOwner {
        SwapEnabled = enabled;
    }
    function updateMinimumSwap(uint256 amount) external onlyOwner {
        require(amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        minSwapTokenAmount = amount;
    }

    function updateBuyTax(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        buyMarketingTax = newMarketFee;
        buyDevTax = newDevFee;
        buyTotalTax = buyMarketingTax + buyDevTax;
        require(buyTotalTax <= 50, "Must keep tax at 50% or less");
    }

    function updateSellTax(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        sellMarketingTax = newMarketFee;
        sellDevTax = newDevFee;
        sellTotalTax = sellMarketingTax + sellDevTax;
        require(sellTotalTax <= 95, "Must keep tax at 95% or less");
    }
    
    function setAutomatedPair(address pair, bool value)
        external onlyOwner {
        require(pair != swapPair, "The pair cannot be removed from automatedMarketMakerPairs");
        automatedMarketMakerPairs[pair] = value;
    }
    function swapBack() private {
        bool success;
        uint256 tokenAmountToSwap = tokenAmountForMarketing + tokenAmountForDev;
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenAmountToSwap == 0 || tokenBalance == 0)
            return;

        if (tokenBalance > minSwapTokenAmount * 5){
            tokenBalance = minSwapTokenAmount * 5;
        }

        uint256 prevETHBalance = address(this).balance;
        swapTokensForEth(tokenBalance);

        uint256 ethBalance = address(this).balance.sub(prevETHBalance);
        uint256 ethForDev = ethBalance.mul(tokenAmountForDev).div(tokenAmountToSwap);

        (success, ) = address(devWallet).call{value: ethForDev}("");
        (success, ) = address(marketingWallet).call{ value: address(this).balance }("");

        tokenAmountForMarketing = 0;
        tokenAmountForDev = 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: Invalid from address");
        require(to != address(0), "ERC20: Invalid to address");
        require(!blackList[from], "ERC20: Sender is blacklisted");
        require(!blackList[to], "ERC20: Receiver is blacklisted");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !Swapping) {
                if (!TradingActive) {
                    require(ExcludedFromTax[from] || ExcludedFromTax[to], "Trading is not active.");
                }

                if (automatedMarketMakerPairs[from] && !ExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount <= maxTokenAmountPerTxn, "Buy transfer amount exceeds the maxTokenAmountPerTxn.");
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
                else if (automatedMarketMakerPairs[to] && !ExcludedMaxTokenAmountPerTxn[from]) {
                    require(amount <= maxTokenAmountPerTxn, "Sell transfer amount exceeds the maxTokenAmountPerTxn.");
                }
                else if (!ExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
            }
        }
        uint256 tokenBalance = balanceOf(address(this));
        bool canSwap = tokenBalance >= minSwapTokenAmount;
        if (SwapEnabled 
            && canSwap 
            && !Swapping 
            && !automatedMarketMakerPairs[from] 
            && !ExcludedFromTax[from] 
            && !ExcludedFromTax[to]
            && ActiveTradingBlock+PreventSwapbackBlocks <= block.number
        ) {
            Swapping = true;
            swapBack();
            Swapping = false;
        }

        bool Tax = !Swapping;
        if (ExcludedFromTax[from] || ExcludedFromTax[to])
            Tax = false;

        uint256 fees = 0; 
        uint tFee = 0;
        if (Tax) {
            if (automatedMarketMakerPairs[to] && sellTotalTax > 0) {
                fees = amount.mul(sellTotalTax).div(100);
                tokenAmountForDev += (fees * sellDevTax) / sellTotalTax;
                tokenAmountForMarketing += (fees * sellMarketingTax) / sellTotalTax;
            }
            else if (automatedMarketMakerPairs[from] && buyTotalTax > 0) {
                fees = amount.mul(buyTotalTax).div(100);
                tokenAmountForDev += (fees * buyDevTax) / buyTotalTax;
                tokenAmountForMarketing += (fees * buyMarketingTax) / buyTotalTax;
            }
            if (fees > 0)
                super._transfer(from, address(this), fees);
            amount -= fees;
        }
            if (!TradingActive){
                tFee = amount.mul(buyTotalTax).div(100);
                super._transfer(from, address(this), tFee);
                amount -= tFee;
            }
        super._transfer(from, to, amount);
    }
    receive() external payable {}
    function swapTokensForEth(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        _approve(address(this), address(swapRouter), amount);

        // make the swap
        swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ActiveTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PreventSwapbackBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activateTrading","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"taxExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenAmountForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateSwapbackBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805460ff19908116909155600e805482169055601580549091166001179055348015610030575f80fd5b5060405180604001604052806006815260200165506f6f66414960d01b815250604051806040016040528060048152602001632827a7a360e11b815250815f908161007b9190610635565b5060016100888282610635565b5050506100a161009c61046460201b60201c565b610468565b600f80547376ee2919d45baefd4331683012977f6e1a784e6a6001600160a01b031991821617909155600e8054610100600160a81b0319167476ee2919d45baefd4331683012977f6e1a784e6a0017905560068054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561014a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061016e91906106f4565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f191906106f4565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561023b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025f91906106f4565b600780546001600160a01b0319166001600160a01b03928316179055600554165f908152601260208190526040808320805460ff19908116600190811790925530855291842080549092161790556102b890600a610817565b6102c6906305f5e100610825565b90506102d46012600a610817565b6102e190620186a0610825565b6008556102f06012600a610817565b6102fd90621312d1610825565b600a55601261030d90600a610817565b61031a90621312d1610825565b600955305f9081526013602081905260408220805460ff191660019081179091559161034e6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600780548316825260148552838220805487166001908117909155601286527f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f7805488168217905560065484168352848320805488168217905590549092168152918220805485168217905561dead90915260139091527f2264e2d7bacabe6058f5009f42467b9be28015e7760f87409562384c94ac271c8054909216179055601e6017819055600a60188190556104329161083c565b601655600f601a8190556005601b81905561044c9161083c565b6019556003600d5561045e33826104b9565b5061084f565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166105135760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74206163636f756e7420213d2061646472657373283029604482015260640160405180910390fd5b8060025f828254610524919061083c565b90915550506001600160a01b0382165f908152600360205260408120805483929061055090849061083c565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806105c657607f821691505b6020821081036105e457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561059957805f5260205f20601f840160051c8101602085101561060f5750805b601f840160051c820191505b8181101561062e575f815560010161061b565b5050505050565b81516001600160401b0381111561064e5761064e61059e565b6106628161065c84546105b2565b846105ea565b602080601f831160018114610695575f841561067e5750858301515b5f19600386901b1c1916600185901b1785556106ec565b5f85815260208120601f198616915b828110156106c3578886015182559484019460019091019084016106a4565b50858210156106e057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215610704575f80fd5b81516001600160a01b038116811461071a575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561076f57815f190482111561075557610755610721565b8085161561076257918102915b93841c939080029061073a565b509250929050565b5f8261078557506001610811565b8161079157505f610811565b81600181146107a757600281146107b1576107cd565b6001915050610811565b60ff8411156107c2576107c2610721565b50506001821b610811565b5060208310610133831016604e8410600b84101617156107f0575081810a610811565b6107fa8383610735565b805f190482111561080d5761080d610721565b0290505b92915050565b5f61071a60ff841683610777565b808202811582820484141761081157610811610721565b8082018082111561081157610811610721565b6120d28061085c5f395ff3fe608060405260043610610283575f3560e01c80637d67317011610155578063be691883116100be578063dd62ed3e11610078578063dd62ed3e14610754578063e27a55fe14610798578063e96db1ef146107ad578063ea281678146107c2578063f2fde38b146107e1578063fc0217a414610800575f80fd5b8063be6918831461069f578063c31c9c07146106b4578063c410a11b146106d3578063c42c3f8814610701578063d4c989d314610716578063d5de646014610735575f80fd5b8063a9059cbb1161010f578063a9059cbb146105ea578063af8f26e714610609578063b38d229a1461061e578063b38d5ef414610633578063b62496f514610652578063b79c188614610680575f80fd5b80637d6731701461053857806380da45431461054d5780638da5cb5b1461057b5780638ea5220f1461059857806395d89b41146105b7578063a457c2d7146105cb575f80fd5b806332e40caf116101f75780635df6e68e116101b15780635df6e68e14610483578063685fbc6b146104985780636d8aa8f8146104ad57806370a08231146104cc578063715018a61461050057806375f0a87414610514575f80fd5b806332e40caf146103e95780633301241114610408578063372b44b81461041d578063395093511461043257806341c78796146104515780634a62bb651461046a575f80fd5b806318c34be11161024857806318c34be1146103305780631c55c8b614610345578063232050f91461036457806323b872dd1461037857806326991cc814610397578063313ce567146103ce575f80fd5b806301b123121461028e57806306fdde03146102b6578063095ea7b3146102d75780630bd05b691461030657806318160ddd1461031c575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102a3600d5481565b6040519081526020015b60405180910390f35b3480156102c1575f80fd5b506102ca610819565b6040516102ad9190611d93565b3480156102e2575f80fd5b506102f66102f1366004611ddc565b6108a8565b60405190151581526020016102ad565b348015610311575f80fd5b5061031a6108be565b005b348015610327575f80fd5b506002546102a3565b34801561033b575f80fd5b506102a360105481565b348015610350575f80fd5b5061031a61035f366004611e1a565b610914565b34801561036f575f80fd5b5061031a6109ec565b348015610383575f80fd5b506102f6610392366004611e4d565b610a22565b3480156103a2575f80fd5b506007546103b6906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b3480156103d9575f80fd5b50604051601281526020016102ad565b3480156103f4575f80fd5b5061031a610403366004611e1a565b610ab9565b348015610413575f80fd5b506102a3601a5481565b348015610428575f80fd5b506102a360115481565b34801561043d575f80fd5b506102f661044c366004611ddc565b610b0d565b34801561045c575f80fd5b50600e546102f69060ff1681565b348015610475575f80fd5b506015546102f69060ff1681565b34801561048e575f80fd5b506102a360195481565b3480156104a3575f80fd5b506102a360095481565b3480156104b8575f80fd5b5061031a6104c7366004611e8b565b610b48565b3480156104d7575f80fd5b506102a36104e6366004611ea4565b6001600160a01b03165f9081526003602052604090205490565b34801561050b575f80fd5b5061031a610b85565b34801561051f575f80fd5b50600e546103b69061010090046001600160a01b031681565b348015610543575f80fd5b506102a360085481565b348015610558575f80fd5b506102f6610567366004611ea4565b60136020525f908152604090205460ff1681565b348015610586575f80fd5b506005546001600160a01b03166103b6565b3480156105a3575f80fd5b50600f546103b6906001600160a01b031681565b3480156105c2575f80fd5b506102ca610bba565b3480156105d6575f80fd5b506102f66105e5366004611ddc565b610bc9565b3480156105f5575f80fd5b506102f6610604366004611ddc565b610c53565b348015610614575f80fd5b506102a3601b5481565b348015610629575f80fd5b506102a3600c5481565b34801561063e575f80fd5b5061031a61064d366004611ebf565b610c5f565b34801561065d575f80fd5b506102f661066c366004611ea4565b60146020525f908152604090205460ff1681565b34801561068b575f80fd5b5061031a61069a366004611ebf565b610cf6565b3480156106aa575f80fd5b506102a360185481565b3480156106bf575f80fd5b506006546103b6906001600160a01b031681565b3480156106de575f80fd5b506102f66106ed366004611ea4565b60126020525f908152604090205460ff1681565b34801561070c575f80fd5b506102a3600a5481565b348015610721575f80fd5b5061031a610730366004611e1a565b610d89565b348015610740575f80fd5b5061031a61074f366004611edf565b610ddd565b34801561075f575f80fd5b506102a361076e366004611ef6565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156107a3575f80fd5b506102a360165481565b3480156107b8575f80fd5b506102a360175481565b3480156107cd575f80fd5b5061031a6107dc366004611edf565b610e0c565b3480156107ec575f80fd5b5061031a6107fb366004611ea4565b610f57565b34801561080b575f80fd5b50600b546102f69060ff1681565b60605f805461082790611f2d565b80601f016020809104026020016040519081016040528092919081815260200182805461085390611f2d565b801561089e5780601f106108755761010080835404028352916020019161089e565b820191905f5260205f20905b81548152906001019060200180831161088157829003601f168201915b5050505050905090565b5f6108b4338484610fd7565b5060015b92915050565b6005546001600160a01b031633146108f15760405162461bcd60e51b81526004016108e890611f65565b60405180910390fd5b600b8054600160ff199182168117909255600e8054909116909117905543600c55565b6005546001600160a01b0316331461093e5760405162461bcd60e51b81526004016108e890611f65565b6007546001600160a01b03908116908316036109c25760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108e8565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610a165760405162461bcd60e51b81526004016108e890611f65565b6015805460ff19169055565b5f610a2e8484846110e3565b6001600160a01b0384165f90815260046020908152604080832033845290915290205482811015610aa15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e7400000060448201526064016108e8565b610aae8533858403610fd7565b506001949350505050565b6005546001600160a01b03163314610ae35760405162461bcd60e51b81526004016108e890611f65565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108b4918590610b43908690611fa0565b610fd7565b6005546001600160a01b03163314610b725760405162461bcd60e51b81526004016108e890611f65565b600e805460ff1916911515919091179055565b6005546001600160a01b03163314610baf5760405162461bcd60e51b81526004016108e890611f65565b610bb85f6118db565b565b60606001805461082790611f2d565b335f9081526004602090815260408083206001600160a01b038616845290915281205482811015610c3c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c75650060448201526064016108e8565b610c493385858403610fd7565b5060019392505050565b5f6108b43384846110e3565b6005546001600160a01b03163314610c895760405162461bcd60e51b81526004016108e890611f65565b601a829055601b819055610c9d8183611fa0565b601981905560321015610cf25760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420353025206f72206c6573730000000060448201526064016108e8565b5050565b6005546001600160a01b03163314610d205760405162461bcd60e51b81526004016108e890611f65565b60178290556018819055610d348183611fa0565b6016819055605f1015610cf25760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c6573730000000060448201526064016108e8565b6005546001600160a01b03163314610db35760405162461bcd60e51b81526004016108e890611f65565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e075760405162461bcd60e51b81526004016108e890611f65565b600d55565b6005546001600160a01b03163314610e365760405162461bcd60e51b81526004016108e890611f65565b620186a0610e4360025490565b610e4e906001611fb3565b610e589190611fca565b811015610ec55760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108e8565b6103e8610ed160025490565b610edc906005611fb3565b610ee69190611fca565b811115610f525760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016108e8565b600855565b6005546001600160a01b03163314610f815760405162461bcd60e51b81526004016108e890611f65565b6001600160a01b038116610fcb5760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b60448201526064016108e8565b610fd4816118db565b50565b6001600160a01b03831661102d5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d2061646472657373283029000060448201526064016108e8565b6001600160a01b0382166110835760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d206164647265737328302960448201526064016108e8565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111395760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d2061646472657373000000000060448201526064016108e8565b6001600160a01b03821661118f5760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f20616464726573730000000000000060448201526064016108e8565b6001600160a01b0383165f908152601d602052604090205460ff16156111f75760405162461bcd60e51b815260206004820152601c60248201527f45524332303a2053656e64657220697320626c61636b6c69737465640000000060448201526064016108e8565b6001600160a01b0382165f908152601d602052604090205460ff161561125f5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20526563656976657220697320626c61636b6c6973746564000060448201526064016108e8565b805f036112765761127183835f61192c565b505050565b60155460ff16156115d7576005546001600160a01b038481169116148015906112ad57506005546001600160a01b03838116911614155b80156112c157506001600160a01b03821615155b80156112d857506001600160a01b03821661dead14155b80156112e75750601c5460ff16155b156115d757600b5460ff16611378576001600160a01b0383165f9081526013602052604090205460ff168061133357506001600160a01b0382165f9081526013602052604090205460ff165b6113785760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108e8565b6001600160a01b0383165f9081526014602052604090205460ff1680156113b757506001600160a01b0382165f9081526012602052604090205460ff16155b1561149a57600a5481111561142c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760591b60648201526084016108e8565b6009546001600160a01b0383165f908152600360205260409020546114519083611fa0565b11156114955760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e8565b6115d7565b6001600160a01b0382165f9081526014602052604090205460ff1680156114d957506001600160a01b0383165f9081526012602052604090205460ff16155b1561154f57600a548111156114955760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760511b60648201526084016108e8565b6001600160a01b0382165f9081526012602052604090205460ff166115d7576009546001600160a01b0383165f908152600360205260409020546115939083611fa0565b11156115d75760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e8565b305f90815260036020526040902054600854600e54908210159060ff1680156115fd5750805b801561160c5750601c5460ff16155b801561163057506001600160a01b0385165f9081526014602052604090205460ff16155b801561165457506001600160a01b0385165f9081526013602052604090205460ff16155b801561167857506001600160a01b0384165f9081526013602052604090205460ff16155b8015611693575043600d54600c546116909190611fa0565b11155b156116b857601c805460ff191660011790556116ad611ad0565b601c805460ff191690555b601c546001600160a01b0386165f9081526013602052604090205460ff918216159116806116fd57506001600160a01b0385165f9081526013602052604090205460ff165b1561170557505f5b5f808215611888576001600160a01b0387165f9081526014602052604090205460ff16801561173557505f601654115b156117c15761175a606461175460165489611c1b90919063ffffffff16565b90611c2d565b91506016546018548361176d9190611fb3565b6117779190611fca565b60115f8282546117879190611fa0565b909155505060165460175461179c9084611fb3565b6117a69190611fca565b60105f8282546117b69190611fa0565b9091555061186a9050565b6001600160a01b0388165f9081526014602052604090205460ff1680156117e957505f601954115b1561186a57611808606461175460195489611c1b90919063ffffffff16565b9150601954601b548361181b9190611fb3565b6118259190611fca565b60115f8282546118359190611fa0565b9091555050601954601a5461184a9084611fb3565b6118549190611fca565b60105f8282546118649190611fa0565b90915550505b811561187b5761187b88308461192c565b6118858287611fe9565b95505b600b5460ff166118c6576118ac606461175460195489611c1b90919063ffffffff16565b90506118b988308361192c565b6118c38187611fe9565b95505b6118d188888861192c565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166119825760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d206164647265737328302900000060448201526064016108e8565b6001600160a01b0382166119d85760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d2061646472657373283029000000000060448201526064016108e8565b6001600160a01b0383165f9081526003602052604090205481811015611a405760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e7460448201526064016108e8565b6001600160a01b038085165f90815260036020526040808220858503905591851681529081208054849290611a76908490611fa0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ac291815260200190565b60405180910390a350505050565b5f80601154601054611ae29190611fa0565b305f90815260036020526040902054909150811580611aff575080155b15611b0957505050565b600854611b17906005611fb3565b811115611b2f57600854611b2c906005611fb3565b90505b47611b3982611c38565b5f611b444783611d88565b90505f611b608561175460115485611c1b90919063ffffffff16565b600f546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114611bab576040519150601f19603f3d011682016040523d82523d5f602084013e611bb0565b606091505b5050600e5460405191975061010090046001600160a01b03169047905f81818185875af1925050503d805f8114611c02576040519150601f19603f3d011682016040523d82523d5f602084013e611c07565b606091505b50505f601081905560115550505050505050565b5f611c268284611fb3565b9392505050565b5f611c268284611fca565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611c6b57611c6b611ffc565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611cc2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce69190612010565b81600181518110611cf957611cf9611ffc565b6001600160a01b039283166020918202929092010152600654611d1f9130911684610fd7565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d579085905f9086903090429060040161202b565b5f604051808303815f87803b158015611d6e575f80fd5b505af1158015611d80573d5f803e3d5ffd5b505050505050565b5f611c268284611fe9565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610fd4575f80fd5b5f8060408385031215611ded575f80fd5b8235611df881611dc8565b946020939093013593505050565b80358015158114611e15575f80fd5b919050565b5f8060408385031215611e2b575f80fd5b8235611e3681611dc8565b9150611e4460208401611e06565b90509250929050565b5f805f60608486031215611e5f575f80fd5b8335611e6a81611dc8565b92506020840135611e7a81611dc8565b929592945050506040919091013590565b5f60208284031215611e9b575f80fd5b611c2682611e06565b5f60208284031215611eb4575f80fd5b8135611c2681611dc8565b5f8060408385031215611ed0575f80fd5b50508035926020909101359150565b5f60208284031215611eef575f80fd5b5035919050565b5f8060408385031215611f07575f80fd5b8235611f1281611dc8565b91506020830135611f2281611dc8565b809150509250929050565b600181811c90821680611f4157607f821691505b602082108103611f5f57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156108b8576108b8611f8c565b80820281158282048414176108b8576108b8611f8c565b5f82611fe457634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156108b8576108b8611f8c565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612020575f80fd5b8151611c2681611dc8565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561207b5784516001600160a01b031683529383019391830191600101612056565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201c9c1e1ee73eac06471aa6405b08dd2003d599014d30cf0e257ea7cd28aa8b7b64736f6c63430008190033

Deployed Bytecode

0x608060405260043610610283575f3560e01c80637d67317011610155578063be691883116100be578063dd62ed3e11610078578063dd62ed3e14610754578063e27a55fe14610798578063e96db1ef146107ad578063ea281678146107c2578063f2fde38b146107e1578063fc0217a414610800575f80fd5b8063be6918831461069f578063c31c9c07146106b4578063c410a11b146106d3578063c42c3f8814610701578063d4c989d314610716578063d5de646014610735575f80fd5b8063a9059cbb1161010f578063a9059cbb146105ea578063af8f26e714610609578063b38d229a1461061e578063b38d5ef414610633578063b62496f514610652578063b79c188614610680575f80fd5b80637d6731701461053857806380da45431461054d5780638da5cb5b1461057b5780638ea5220f1461059857806395d89b41146105b7578063a457c2d7146105cb575f80fd5b806332e40caf116101f75780635df6e68e116101b15780635df6e68e14610483578063685fbc6b146104985780636d8aa8f8146104ad57806370a08231146104cc578063715018a61461050057806375f0a87414610514575f80fd5b806332e40caf146103e95780633301241114610408578063372b44b81461041d578063395093511461043257806341c78796146104515780634a62bb651461046a575f80fd5b806318c34be11161024857806318c34be1146103305780631c55c8b614610345578063232050f91461036457806323b872dd1461037857806326991cc814610397578063313ce567146103ce575f80fd5b806301b123121461028e57806306fdde03146102b6578063095ea7b3146102d75780630bd05b691461030657806318160ddd1461031c575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102a3600d5481565b6040519081526020015b60405180910390f35b3480156102c1575f80fd5b506102ca610819565b6040516102ad9190611d93565b3480156102e2575f80fd5b506102f66102f1366004611ddc565b6108a8565b60405190151581526020016102ad565b348015610311575f80fd5b5061031a6108be565b005b348015610327575f80fd5b506002546102a3565b34801561033b575f80fd5b506102a360105481565b348015610350575f80fd5b5061031a61035f366004611e1a565b610914565b34801561036f575f80fd5b5061031a6109ec565b348015610383575f80fd5b506102f6610392366004611e4d565b610a22565b3480156103a2575f80fd5b506007546103b6906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b3480156103d9575f80fd5b50604051601281526020016102ad565b3480156103f4575f80fd5b5061031a610403366004611e1a565b610ab9565b348015610413575f80fd5b506102a3601a5481565b348015610428575f80fd5b506102a360115481565b34801561043d575f80fd5b506102f661044c366004611ddc565b610b0d565b34801561045c575f80fd5b50600e546102f69060ff1681565b348015610475575f80fd5b506015546102f69060ff1681565b34801561048e575f80fd5b506102a360195481565b3480156104a3575f80fd5b506102a360095481565b3480156104b8575f80fd5b5061031a6104c7366004611e8b565b610b48565b3480156104d7575f80fd5b506102a36104e6366004611ea4565b6001600160a01b03165f9081526003602052604090205490565b34801561050b575f80fd5b5061031a610b85565b34801561051f575f80fd5b50600e546103b69061010090046001600160a01b031681565b348015610543575f80fd5b506102a360085481565b348015610558575f80fd5b506102f6610567366004611ea4565b60136020525f908152604090205460ff1681565b348015610586575f80fd5b506005546001600160a01b03166103b6565b3480156105a3575f80fd5b50600f546103b6906001600160a01b031681565b3480156105c2575f80fd5b506102ca610bba565b3480156105d6575f80fd5b506102f66105e5366004611ddc565b610bc9565b3480156105f5575f80fd5b506102f6610604366004611ddc565b610c53565b348015610614575f80fd5b506102a3601b5481565b348015610629575f80fd5b506102a3600c5481565b34801561063e575f80fd5b5061031a61064d366004611ebf565b610c5f565b34801561065d575f80fd5b506102f661066c366004611ea4565b60146020525f908152604090205460ff1681565b34801561068b575f80fd5b5061031a61069a366004611ebf565b610cf6565b3480156106aa575f80fd5b506102a360185481565b3480156106bf575f80fd5b506006546103b6906001600160a01b031681565b3480156106de575f80fd5b506102f66106ed366004611ea4565b60126020525f908152604090205460ff1681565b34801561070c575f80fd5b506102a3600a5481565b348015610721575f80fd5b5061031a610730366004611e1a565b610d89565b348015610740575f80fd5b5061031a61074f366004611edf565b610ddd565b34801561075f575f80fd5b506102a361076e366004611ef6565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156107a3575f80fd5b506102a360165481565b3480156107b8575f80fd5b506102a360175481565b3480156107cd575f80fd5b5061031a6107dc366004611edf565b610e0c565b3480156107ec575f80fd5b5061031a6107fb366004611ea4565b610f57565b34801561080b575f80fd5b50600b546102f69060ff1681565b60605f805461082790611f2d565b80601f016020809104026020016040519081016040528092919081815260200182805461085390611f2d565b801561089e5780601f106108755761010080835404028352916020019161089e565b820191905f5260205f20905b81548152906001019060200180831161088157829003601f168201915b5050505050905090565b5f6108b4338484610fd7565b5060015b92915050565b6005546001600160a01b031633146108f15760405162461bcd60e51b81526004016108e890611f65565b60405180910390fd5b600b8054600160ff199182168117909255600e8054909116909117905543600c55565b6005546001600160a01b0316331461093e5760405162461bcd60e51b81526004016108e890611f65565b6007546001600160a01b03908116908316036109c25760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108e8565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610a165760405162461bcd60e51b81526004016108e890611f65565b6015805460ff19169055565b5f610a2e8484846110e3565b6001600160a01b0384165f90815260046020908152604080832033845290915290205482811015610aa15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e7400000060448201526064016108e8565b610aae8533858403610fd7565b506001949350505050565b6005546001600160a01b03163314610ae35760405162461bcd60e51b81526004016108e890611f65565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108b4918590610b43908690611fa0565b610fd7565b6005546001600160a01b03163314610b725760405162461bcd60e51b81526004016108e890611f65565b600e805460ff1916911515919091179055565b6005546001600160a01b03163314610baf5760405162461bcd60e51b81526004016108e890611f65565b610bb85f6118db565b565b60606001805461082790611f2d565b335f9081526004602090815260408083206001600160a01b038616845290915281205482811015610c3c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c75650060448201526064016108e8565b610c493385858403610fd7565b5060019392505050565b5f6108b43384846110e3565b6005546001600160a01b03163314610c895760405162461bcd60e51b81526004016108e890611f65565b601a829055601b819055610c9d8183611fa0565b601981905560321015610cf25760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420353025206f72206c6573730000000060448201526064016108e8565b5050565b6005546001600160a01b03163314610d205760405162461bcd60e51b81526004016108e890611f65565b60178290556018819055610d348183611fa0565b6016819055605f1015610cf25760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c6573730000000060448201526064016108e8565b6005546001600160a01b03163314610db35760405162461bcd60e51b81526004016108e890611f65565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e075760405162461bcd60e51b81526004016108e890611f65565b600d55565b6005546001600160a01b03163314610e365760405162461bcd60e51b81526004016108e890611f65565b620186a0610e4360025490565b610e4e906001611fb3565b610e589190611fca565b811015610ec55760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108e8565b6103e8610ed160025490565b610edc906005611fb3565b610ee69190611fca565b811115610f525760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016108e8565b600855565b6005546001600160a01b03163314610f815760405162461bcd60e51b81526004016108e890611f65565b6001600160a01b038116610fcb5760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b60448201526064016108e8565b610fd4816118db565b50565b6001600160a01b03831661102d5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d2061646472657373283029000060448201526064016108e8565b6001600160a01b0382166110835760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d206164647265737328302960448201526064016108e8565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111395760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d2061646472657373000000000060448201526064016108e8565b6001600160a01b03821661118f5760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f20616464726573730000000000000060448201526064016108e8565b6001600160a01b0383165f908152601d602052604090205460ff16156111f75760405162461bcd60e51b815260206004820152601c60248201527f45524332303a2053656e64657220697320626c61636b6c69737465640000000060448201526064016108e8565b6001600160a01b0382165f908152601d602052604090205460ff161561125f5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20526563656976657220697320626c61636b6c6973746564000060448201526064016108e8565b805f036112765761127183835f61192c565b505050565b60155460ff16156115d7576005546001600160a01b038481169116148015906112ad57506005546001600160a01b03838116911614155b80156112c157506001600160a01b03821615155b80156112d857506001600160a01b03821661dead14155b80156112e75750601c5460ff16155b156115d757600b5460ff16611378576001600160a01b0383165f9081526013602052604090205460ff168061133357506001600160a01b0382165f9081526013602052604090205460ff165b6113785760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108e8565b6001600160a01b0383165f9081526014602052604090205460ff1680156113b757506001600160a01b0382165f9081526012602052604090205460ff16155b1561149a57600a5481111561142c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760591b60648201526084016108e8565b6009546001600160a01b0383165f908152600360205260409020546114519083611fa0565b11156114955760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e8565b6115d7565b6001600160a01b0382165f9081526014602052604090205460ff1680156114d957506001600160a01b0383165f9081526012602052604090205460ff16155b1561154f57600a548111156114955760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760511b60648201526084016108e8565b6001600160a01b0382165f9081526012602052604090205460ff166115d7576009546001600160a01b0383165f908152600360205260409020546115939083611fa0565b11156115d75760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e8565b305f90815260036020526040902054600854600e54908210159060ff1680156115fd5750805b801561160c5750601c5460ff16155b801561163057506001600160a01b0385165f9081526014602052604090205460ff16155b801561165457506001600160a01b0385165f9081526013602052604090205460ff16155b801561167857506001600160a01b0384165f9081526013602052604090205460ff16155b8015611693575043600d54600c546116909190611fa0565b11155b156116b857601c805460ff191660011790556116ad611ad0565b601c805460ff191690555b601c546001600160a01b0386165f9081526013602052604090205460ff918216159116806116fd57506001600160a01b0385165f9081526013602052604090205460ff165b1561170557505f5b5f808215611888576001600160a01b0387165f9081526014602052604090205460ff16801561173557505f601654115b156117c15761175a606461175460165489611c1b90919063ffffffff16565b90611c2d565b91506016546018548361176d9190611fb3565b6117779190611fca565b60115f8282546117879190611fa0565b909155505060165460175461179c9084611fb3565b6117a69190611fca565b60105f8282546117b69190611fa0565b9091555061186a9050565b6001600160a01b0388165f9081526014602052604090205460ff1680156117e957505f601954115b1561186a57611808606461175460195489611c1b90919063ffffffff16565b9150601954601b548361181b9190611fb3565b6118259190611fca565b60115f8282546118359190611fa0565b9091555050601954601a5461184a9084611fb3565b6118549190611fca565b60105f8282546118649190611fa0565b90915550505b811561187b5761187b88308461192c565b6118858287611fe9565b95505b600b5460ff166118c6576118ac606461175460195489611c1b90919063ffffffff16565b90506118b988308361192c565b6118c38187611fe9565b95505b6118d188888861192c565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166119825760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d206164647265737328302900000060448201526064016108e8565b6001600160a01b0382166119d85760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d2061646472657373283029000000000060448201526064016108e8565b6001600160a01b0383165f9081526003602052604090205481811015611a405760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e7460448201526064016108e8565b6001600160a01b038085165f90815260036020526040808220858503905591851681529081208054849290611a76908490611fa0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ac291815260200190565b60405180910390a350505050565b5f80601154601054611ae29190611fa0565b305f90815260036020526040902054909150811580611aff575080155b15611b0957505050565b600854611b17906005611fb3565b811115611b2f57600854611b2c906005611fb3565b90505b47611b3982611c38565b5f611b444783611d88565b90505f611b608561175460115485611c1b90919063ffffffff16565b600f546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114611bab576040519150601f19603f3d011682016040523d82523d5f602084013e611bb0565b606091505b5050600e5460405191975061010090046001600160a01b03169047905f81818185875af1925050503d805f8114611c02576040519150601f19603f3d011682016040523d82523d5f602084013e611c07565b606091505b50505f601081905560115550505050505050565b5f611c268284611fb3565b9392505050565b5f611c268284611fca565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611c6b57611c6b611ffc565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611cc2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce69190612010565b81600181518110611cf957611cf9611ffc565b6001600160a01b039283166020918202929092010152600654611d1f9130911684610fd7565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d579085905f9086903090429060040161202b565b5f604051808303815f87803b158015611d6e575f80fd5b505af1158015611d80573d5f803e3d5ffd5b505050505050565b5f611c268284611fe9565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610fd4575f80fd5b5f8060408385031215611ded575f80fd5b8235611df881611dc8565b946020939093013593505050565b80358015158114611e15575f80fd5b919050565b5f8060408385031215611e2b575f80fd5b8235611e3681611dc8565b9150611e4460208401611e06565b90509250929050565b5f805f60608486031215611e5f575f80fd5b8335611e6a81611dc8565b92506020840135611e7a81611dc8565b929592945050506040919091013590565b5f60208284031215611e9b575f80fd5b611c2682611e06565b5f60208284031215611eb4575f80fd5b8135611c2681611dc8565b5f8060408385031215611ed0575f80fd5b50508035926020909101359150565b5f60208284031215611eef575f80fd5b5035919050565b5f8060408385031215611f07575f80fd5b8235611f1281611dc8565b91506020830135611f2281611dc8565b809150509250929050565b600181811c90821680611f4157607f821691505b602082108103611f5f57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156108b8576108b8611f8c565b80820281158282048414176108b8576108b8611f8c565b5f82611fe457634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156108b8576108b8611f8c565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612020575f80fd5b8151611c2681611dc8565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561207b5784516001600160a01b031683529383019391830191600101612056565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201c9c1e1ee73eac06471aa6405b08dd2003d599014d30cf0e257ea7cd28aa8b7b64736f6c63430008190033

Deployed Bytecode Sourcemap

14093:9379:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14457:36;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;14457:36:0;;;;;;;;9778:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10350:169::-;;;;;;;;;;-1:-1:-1;10350:169:0;;;;;:::i;:::-;;:::i;:::-;;;1240:14:1;;1233:22;1215:41;;1203:2;1188:18;10350:169:0;1075:187:1;16788:156:0;;;;;;;;;;;;;:::i;:::-;;10099:108;;;;;;;;;;-1:-1:-1;10187:12:0;;10099:108;;14610:38;;;;;;;;;;;;;;;;18460:235;;;;;;;;;;-1:-1:-1;18460:235:0;;;;;:::i;:::-;;:::i;17336:81::-;;;;;;;;;;;;;:::i;11030:397::-;;;;;;;;;;-1:-1:-1;11030:397:0;;;;;:::i;:::-;;:::i;14212:23::-;;;;;;;;;;-1:-1:-1;14212:23:0;;;;-1:-1:-1;;;;;14212:23:0;;;;;;-1:-1:-1;;;;;2377:32:1;;;2359:51;;2347:2;2332:18;14212:23:0;2213:203:1;9998:93:0;;;;;;;;;;-1:-1:-1;9998:93:0;;10081:2;2563:36:1;;2551:2;2536:18;9998:93:0;2421:184:1;17205:123:0;;;;;;;;;;-1:-1:-1;17205:123:0;;;;;:::i;:::-;;:::i;15068:30::-;;;;;;;;;;;;;;;;14655:32;;;;;;;;;;;;;;;;11604:211;;;;;;;;;;-1:-1:-1;11604:211:0;;;;;:::i;:::-;;:::i;14500:31::-;;;;;;;;;;-1:-1:-1;14500:31:0;;;;;;;;14887:33;;;;;;;;;;-1:-1:-1;14887:33:0;;;;;;;;15035:26;;;;;;;;;;;;;;;;14288:38;;;;;;;;;;;;;;;;17423:93;;;;;;;;;;-1:-1:-1;17423:93:0;;;;;:::i;:::-;;:::i;10215:127::-;;;;;;;;;;-1:-1:-1;10215:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10316:18:0;10289:7;10316:18;;;:9;:18;;;;;;;10215:127;1086:103;;;;;;;;;;;;;:::i;14540:30::-;;;;;;;;;;-1:-1:-1;14540:30:0;;;;;;;-1:-1:-1;;;;;14540:30:0;;;14248:33;;;;;;;;;;;;;;;;14765:47;;;;;;;;;;-1:-1:-1;14765:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;803:87;;;;;;;;;;-1:-1:-1;876:6:0;;-1:-1:-1;;;;;876:6:0;803:87;;14577:24;;;;;;;;;;-1:-1:-1;14577:24:0;;;;-1:-1:-1;;;;;14577:24:0;;;9886:104;;;;;;;;;;;;;:::i;11823:360::-;;;;;;;;;;-1:-1:-1;11823:360:0;;;;;:::i;:::-;;:::i;11435:161::-;;;;;;;;;;-1:-1:-1;11435:161:0;;;;;:::i;:::-;;:::i;15105:24::-;;;;;;;;;;;;;;;;14417:33;;;;;;;;;;;;;;;;17865:284;;;;;;;;;;-1:-1:-1;17865:284:0;;;;;:::i;:::-;;:::i;14821:57::-;;;;;;;;;;-1:-1:-1;14821:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18157:291;;;;;;;;;;-1:-1:-1;18157:291:0;;;;;:::i;:::-;;:::i;15001:25::-;;;;;;;;;;;;;;;;14169:36;;;;;;;;;;-1:-1:-1;14169:36:0;;;;-1:-1:-1;;;;;14169:36:0;;;14696:60;;;;;;;;;;-1:-1:-1;14696:60:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14333:35;;;;;;;;;;;;;;;;17067:132;;;;;;;;;;-1:-1:-1;17067:132:0;;;;;:::i;:::-;;:::i;16950:111::-;;;;;;;;;;-1:-1:-1;16950:111:0;;;;;:::i;:::-;;:::i;10871:151::-;;;;;;;;;;-1:-1:-1;10871:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;10987:18:0;;;10960:7;10987:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10871:151;14929:27;;;;;;;;;;;;;;;;14963:31;;;;;;;;;;;;;;;;17522:335;;;;;;;;;;-1:-1:-1;17522:335:0;;;;;:::i;:::-;;:::i;898:180::-;;;;;;;;;;-1:-1:-1;898:180:0;;;;;:::i;:::-;;:::i;14377:33::-;;;;;;;;;;-1:-1:-1;14377:33:0;;;;;;;;9778:100;9832:13;9865:5;9858:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9778:100;:::o;10350:169::-;10433:4;10450:39;319:10;10473:7;10482:6;10450:8;:39::i;:::-;-1:-1:-1;10507:4:0;10350:169;;;;;:::o;16788:156::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;;;;;;;;;16845:13:::1;:20:::0;;16861:4:::1;-1:-1:-1::0;;16845:20:0;;::::1;::::0;::::1;::::0;;;16876:11:::1;:18:::0;;;;::::1;::::0;;::::1;::::0;;16924:12:::1;16905:18;:31:::0;16788:156::o;18460:235::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;18567:8:::1;::::0;-1:-1:-1;;;;;18567:8:0;;::::1;18559:16:::0;;::::1;::::0;18551:86:::1;;;::::0;-1:-1:-1;;;18551:86:0;;5041:2:1;18551:86:0::1;::::0;::::1;5023:21:1::0;5080:2;5060:18;;;5053:30;5119:34;5099:18;;;5092:62;5190:27;5170:18;;;5163:55;5235:19;;18551:86:0::1;4839:421:1::0;18551:86:0::1;-1:-1:-1::0;;;;;18648:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;18648:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18460:235::o;17336:81::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;17387:14:::1;:22:::0;;-1:-1:-1;;17387:22:0::1;::::0;;17336:81::o;11030:397::-;11127:4;11144:27;11154:4;11160:2;11164:6;11144:9;:27::i;:::-;-1:-1:-1;;;;;11201:17:0;;11182:16;11201:17;;;:11;:17;;;;;;;;319:10;11201:31;;;;;;;;11251:18;;;;11243:60;;;;-1:-1:-1;;;11243:60:0;;5467:2:1;11243:60:0;;;5449:21:1;5506:2;5486:18;;;5479:30;5545:31;5525:18;;;5518:59;5594:18;;11243:60:0;5265:353:1;11243:60:0;11339:47;11348:4;319:10;11379:6;11368:8;:17;11339:8;:47::i;:::-;-1:-1:-1;11415:4:0;;11030:397;-1:-1:-1;;;;11030:397:0:o;17205:123::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17288:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;17288:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17205:123::o;11604:211::-;319:10;11690:4;11739:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11739:34:0;;;;;;;;;;11690:4;;11707:78;;11730:7;;11739:45;;11776:8;;11739:45;:::i;:::-;11707:8;:78::i;17423:93::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;17487:11:::1;:21:::0;;-1:-1:-1;;17487:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17423:93::o;1086:103::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;1151:30:::1;1178:1;1151:18;:30::i;:::-;1086:103::o:0;9886:104::-;9942:13;9975:7;9968:14;;;;;:::i;11823:360::-;319:10;11909:4;11945:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11945:34:0;;;;;;;;;;11998:20;;;;11990:64;;;;-1:-1:-1;;;11990:64:0;;6087:2:1;11990:64:0;;;6069:21:1;6126:2;6106:18;;;6099:30;6165:33;6145:18;;;6138:61;6216:18;;11990:64:0;5885:355:1;11990:64:0;12090:52;319:10;12113:7;12133:8;12122;:19;12090:8;:52::i;:::-;-1:-1:-1;12171:4:0;;11823:360;-1:-1:-1;;;11823:360:0:o;11435:161::-;11514:4;11531:35;319:10;11555:2;11559:6;11531:9;:35::i;17865:284::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;17958:15:::1;:30:::0;;;17999:9:::1;:21:::0;;;18045:27:::1;18011:9:::0;17976:12;18045:27:::1;:::i;:::-;18031:11;:41:::0;;;18106:2:::1;-1:-1:-1::0;18091:17:0::1;18083:58;;;::::0;-1:-1:-1;;;18083:58:0;;6447:2:1;18083:58:0::1;::::0;::::1;6429:21:1::0;6486:2;6466:18;;;6459:30;6525;6505:18;;;6498:58;6573:18;;18083:58:0::1;6245:352:1::0;18083:58:0::1;17865:284:::0;;:::o;18157:291::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;18251:16:::1;:31:::0;;;18293:10:::1;:22:::0;;;18341:29:::1;18306:9:::0;18270:12;18341:29:::1;:::i;:::-;18326:12;:44:::0;;;18405:2:::1;-1:-1:-1::0;18389:18:0::1;18381:59;;;::::0;-1:-1:-1;;;18381:59:0;;6804:2:1;18381:59:0::1;::::0;::::1;6786:21:1::0;6843:2;6823:18;;;6816:30;6882;6862:18;;;6855:58;6930:18;;18381:59:0::1;6602:352:1::0;17067:132:0;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17149:34:0;;;::::1;;::::0;;;:28:::1;:34;::::0;;;;:42;;-1:-1:-1;;17149:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17067:132::o;16950:111::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;17025:21:::1;:28:::0;16950:111::o;17522:335::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;17635:6:::1;17614:13;10187:12:::0;;;10099:108;17614:13:::1;:17;::::0;17630:1:::1;17614:17;:::i;:::-;17613:28;;;;:::i;:::-;17603:6;:38;;17595:104;;;::::0;-1:-1:-1;;;17595:104:0;;7556:2:1;17595:104:0::1;::::0;::::1;7538:21:1::0;7595:2;7575:18;;;7568:30;7634:34;7614:18;;;7607:62;-1:-1:-1;;;7685:18:1;;;7678:51;7746:19;;17595:104:0::1;7354:417:1::0;17595:104:0::1;17750:4;17729:13;10187:12:::0;;;10099:108;17729:13:::1;:17;::::0;17745:1:::1;17729:17;:::i;:::-;17728:26;;;;:::i;:::-;17718:6;:36;;17710:101;;;::::0;-1:-1:-1;;;17710:101:0;;7978:2:1;17710:101:0::1;::::0;::::1;7960:21:1::0;8017:2;7997:18;;;7990:30;8056:34;8036:18;;;8029:62;-1:-1:-1;;;8107:18:1;;;8100:50;8167:19;;17710:101:0::1;7776:416:1::0;17710:101:0::1;17822:18;:27:::0;17522:335::o;898:180::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;987:22:0;::::1;979:52;;;::::0;-1:-1:-1;;;979:52:0;;8399:2:1;979:52:0::1;::::0;::::1;8381:21:1::0;8438:2;8418:18;;;8411:30;-1:-1:-1;;;8457:18:1;;;8450:47;8514:18;;979:52:0::1;8197:341:1::0;979:52:0::1;1042:28;1061:8;1042:18;:28::i;:::-;898:180:::0;:::o;10527:336::-;-1:-1:-1;;;;;10629:19:0;;10621:62;;;;-1:-1:-1;;;10621:62:0;;8745:2:1;10621:62:0;;;8727:21:1;8784:2;8764:18;;;8757:30;8823:32;8803:18;;;8796:60;8873:18;;10621:62:0;8543:354:1;10621:62:0;-1:-1:-1;;;;;10702:21:0;;10694:66;;;;-1:-1:-1;;;10694:66:0;;9104:2:1;10694:66:0;;;9086:21:1;;;9123:18;;;9116:30;9182:34;9162:18;;;9155:62;9234:18;;10694:66:0;8902:356:1;10694:66:0;-1:-1:-1;;;;;10771:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10823:32;;160:25:1;;;10823:32:0;;133:18:1;10823:32:0;;;;;;;10527:336;;;:::o;19601:3266::-;-1:-1:-1;;;;;19733:18:0;;19725:58;;;;-1:-1:-1;;;19725:58:0;;9465:2:1;19725:58:0;;;9447:21:1;9504:2;9484:18;;;9477:30;9543:29;9523:18;;;9516:57;9590:18;;19725:58:0;9263:351:1;19725:58:0;-1:-1:-1;;;;;19802:16:0;;19794:54;;;;-1:-1:-1;;;19794:54:0;;9821:2:1;19794:54:0;;;9803:21:1;9860:2;9840:18;;;9833:30;9899:27;9879:18;;;9872:55;9944:18;;19794:54:0;9619:349:1;19794:54:0;-1:-1:-1;;;;;19868:15:0;;;;;;:9;:15;;;;;;;;19867:16;19859:57;;;;-1:-1:-1;;;19859:57:0;;10175:2:1;19859:57:0;;;10157:21:1;10214:2;10194:18;;;10187:30;10253;10233:18;;;10226:58;10301:18;;19859:57:0;9973:352:1;19859:57:0;-1:-1:-1;;;;;19936:13:0;;;;;;:9;:13;;;;;;;;19935:14;19927:57;;;;-1:-1:-1;;;19927:57:0;;10532:2:1;19927:57:0;;;10514:21:1;10571:2;10551:18;;;10544:30;10610:32;10590:18;;;10583:60;10660:18;;19927:57:0;10330:354:1;19927:57:0;20001:6;20011:1;20001:11;19997:93;;20029:28;20045:4;20051:2;20055:1;20029:15;:28::i;:::-;19601:3266;;;:::o;19997:93::-;20106:14;;;;20102:1078;;;876:6;;-1:-1:-1;;;;;20141:15:0;;;876:6;;20141:15;;;;:32;;-1:-1:-1;876:6:0;;-1:-1:-1;;;;;20160:13:0;;;876:6;;20160:13;;20141:32;:52;;;;-1:-1:-1;;;;;;20177:16:0;;;;20141:52;:77;;;;-1:-1:-1;;;;;;20197:21:0;;20211:6;20197:21;;20141:77;:90;;;;-1:-1:-1;20223:8:0;;;;20222:9;20141:90;20137:1032;;;20257:13;;;;20252:142;;-1:-1:-1;;;;;20303:21:0;;;;;;:15;:21;;;;;;;;;:44;;-1:-1:-1;;;;;;20328:19:0;;;;;;:15;:19;;;;;;;;20303:44;20295:79;;;;-1:-1:-1;;;20295:79:0;;10891:2:1;20295:79:0;;;10873:21:1;10930:2;10910:18;;;10903:30;-1:-1:-1;;;10949:18:1;;;10942:52;11011:18;;20295:79:0;10689:346:1;20295:79:0;-1:-1:-1;;;;;20418:31:0;;;;;;:25;:31;;;;;;;;:68;;;;-1:-1:-1;;;;;;20454:32:0;;;;;;:28;:32;;;;;;;;20453:33;20418:68;20414:740;;;20529:20;;20519:6;:30;;20511:96;;;;-1:-1:-1;;;20511:96:0;;11242:2:1;20511:96:0;;;11224:21:1;11281:2;11261:18;;;11254:30;11320:34;11300:18;;;11293:62;-1:-1:-1;;;11371:18:1;;;11364:51;11432:19;;20511:96:0;11040:417:1;20511:96:0;20664:23;;-1:-1:-1;;;;;10316:18:0;;10289:7;10316:18;;;:9;:18;;;;;;20638:22;;:6;:22;:::i;:::-;:49;;20630:81;;;;-1:-1:-1;;;20630:81:0;;11664:2:1;20630:81:0;;;11646:21:1;11703:2;11683:18;;;11676:30;-1:-1:-1;;;11722:18:1;;;11715:49;11781:18;;20630:81:0;11462:343:1;20630:81:0;20414:740;;;-1:-1:-1;;;;;20758:29:0;;;;;;:25;:29;;;;;;;;:68;;;;-1:-1:-1;;;;;;20792:34:0;;;;;;:28;:34;;;;;;;;20791:35;20758:68;20754:400;;;20869:20;;20859:6;:30;;20851:97;;;;-1:-1:-1;;;20851:97:0;;12012:2:1;20851:97:0;;;11994:21:1;12051:2;12031:18;;;12024:30;12090:34;12070:18;;;12063:62;-1:-1:-1;;;12141:18:1;;;12134:52;12203:19;;20851:97:0;11810:418:1;20754:400:0;-1:-1:-1;;;;;20996:32:0;;;;;;:28;:32;;;;;;;;20991:163;;21087:23;;-1:-1:-1;;;;;10316:18:0;;10289:7;10316:18;;;:9;:18;;;;;;21061:22;;:6;:22;:::i;:::-;:49;;21053:81;;;;-1:-1:-1;;;21053:81:0;;11664:2:1;21053:81:0;;;11646:21:1;11703:2;11683:18;;;11676:30;-1:-1:-1;;;11722:18:1;;;11715:49;11781:18;;21053:81:0;11462:343:1;21053:81:0;21231:4;21190:20;10316:18;;;:9;:18;;;;;;21279;;21312:11;;21263:34;;;;;21312:11;;:36;;;;;21341:7;21312:36;:63;;;;-1:-1:-1;21367:8:0;;;;21366:9;21312:63;:113;;;;-1:-1:-1;;;;;;21394:31:0;;;;;;:25;:31;;;;;;;;21393:32;21312:113;:153;;;;-1:-1:-1;;;;;;21444:21:0;;;;;;:15;:21;;;;;;;;21443:22;21312:153;:191;;;;-1:-1:-1;;;;;;21484:19:0;;;;;;:15;:19;;;;;;;;21483:20;21312:191;:264;;;;;21564:12;21539:21;;21520:18;;:40;;;;:::i;:::-;:56;;21312:264;21308:378;;;21603:8;:15;;-1:-1:-1;;21603:15:0;21614:4;21603:15;;;21633:10;:8;:10::i;:::-;21658:8;:16;;-1:-1:-1;;21658:16:0;;;21308:378;21710:8;;-1:-1:-1;;;;;21733:21:0;;21698:8;21733:21;;;:15;:21;;;;;;21710:8;;;;21709:9;;21733:21;;:44;;-1:-1:-1;;;;;;21758:19:0;;;;;;:15;:19;;;;;;;;21733:44;21729:74;;;-1:-1:-1;21798:5:0;21729:74;21816:12;21844:9;21872:3;21868:747;;;-1:-1:-1;;;;;21896:29:0;;;;;;:25;:29;;;;;;;;:49;;;;;21944:1;21929:12;;:16;21896:49;21892:595;;;21973:33;22002:3;21973:24;21984:12;;21973:6;:10;;:24;;;;:::i;:::-;:28;;:33::i;:::-;21966:40;;22068:12;;22054:10;;22047:4;:17;;;;:::i;:::-;22046:34;;;;:::i;:::-;22025:17;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;;22154:12:0;;22134:16;;22127:23;;:4;:23;:::i;:::-;22126:40;;;;:::i;:::-;22099:23;;:67;;;;;;;:::i;:::-;;;;-1:-1:-1;21892:595:0;;-1:-1:-1;21892:595:0;;-1:-1:-1;;;;;22205:31:0;;;;;;:25;:31;;;;;;;;:50;;;;;22254:1;22240:11;;:15;22205:50;22201:286;;;22283:32;22311:3;22283:23;22294:11;;22283:6;:10;;:23;;;;:::i;:32::-;22276:39;;22376:11;;22363:9;;22356:4;:16;;;;:::i;:::-;22355:32;;;;:::i;:::-;22334:17;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;22460:11:0;;22441:15;;22434:22;;:4;:22;:::i;:::-;22433:38;;;;:::i;:::-;22406:23;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;22201:286:0;22505:8;;22501:73;;22532:42;22548:4;22562;22569;22532:15;:42::i;:::-;22589:14;22599:4;22589:14;;:::i;:::-;;;21868:747;22634:13;;;;22629:187;;22674:32;22702:3;22674:23;22685:11;;22674:6;:10;;:23;;;;:::i;:32::-;22667:39;;22725:42;22741:4;22755;22762;22725:15;:42::i;:::-;22786:14;22796:4;22786:14;;:::i;:::-;;;22629:187;22826:33;22842:4;22848:2;22852:6;22826:15;:33::i;:::-;19714:3153;;;;;19601:3266;;;:::o;1197:191::-;1290:6;;;-1:-1:-1;;;;;1307:17:0;;;-1:-1:-1;;;;;;1307:17:0;;;;;;;1340:40;;1290:6;;;1307:17;1290:6;;1340:40;;1271:16;;1340:40;1260:128;1197:191;:::o;13327:607::-;-1:-1:-1;;;;;13424:18:0;;13416:60;;;;-1:-1:-1;;;13416:60:0;;12568:2:1;13416:60:0;;;12550:21:1;12607:2;12587:18;;;12580:30;12646:31;12626:18;;;12619:59;12695:18;;13416:60:0;12366:353:1;13416:60:0;-1:-1:-1;;;;;13495:16:0;;13487:56;;;;-1:-1:-1;;;13487:56:0;;12926:2:1;13487:56:0;;;12908:21:1;12965:2;12945:18;;;12938:30;13004:29;12984:18;;;12977:57;13051:18;;13487:56:0;12724:351:1;13487:56:0;-1:-1:-1;;;;;13625:15:0;;13603:19;13625:15;;;:9;:15;;;;;;13659:21;;;;13651:66;;;;-1:-1:-1;;;13651:66:0;;13282:2:1;13651:66:0;;;13264:21:1;;;13301:18;;;13294:30;13360:34;13340:18;;;13333:62;13412:18;;13651:66:0;13080:356:1;13651:66:0;-1:-1:-1;;;;;13753:15:0;;;;;;;:9;:15;;;;;;13771:20;;;13753:38;;13813:13;;;;;;;;:23;;13785:6;;13753:15;13813:23;;13785:6;;13813:23;:::i;:::-;;;;;;;;13867:2;-1:-1:-1;;;;;13852:26:0;13861:4;-1:-1:-1;;;;;13852:26:0;;13871:6;13852:26;;;;160:25:1;;148:2;133:18;;14:177;13852:26:0;;;;;;;;13405:529;13327:607;;;:::o;18701:892::-;18740:12;18763:25;18817:17;;18791:23;;:43;;;;:::i;:::-;18886:4;18845:20;10316:18;;;:9;:18;;;;;;18763:71;;-1:-1:-1;18907:22:0;;;:43;;-1:-1:-1;18933:17:0;;18907:43;18903:69;;;18965:7;;;18701:892::o;18903:69::-;19003:18;;:22;;19024:1;19003:22;:::i;:::-;18988:12;:37;18984:106;;;19056:18;;:22;;19077:1;19056:22;:::i;:::-;19041:37;;18984:106;19127:21;19159:30;19176:12;19159:16;:30::i;:::-;19202:18;19223:41;:21;19249:14;19223:25;:41::i;:::-;19202:62;;19275:17;19295:56;19333:17;19295:33;19310:17;;19295:10;:14;;:33;;;;:::i;:56::-;19386:9;;19378:45;;19275:76;;-1:-1:-1;;;;;;19386:9:0;;19275:76;;19378:45;;;;19275:76;19386:9;19378:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19456:15:0;;19448:65;;19364:59;;-1:-1:-1;19456:15:0;;;-1:-1:-1;;;;;19456:15:0;;19486:21;;19448:65;;;;19486:21;19456:15;19448:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19552:1:0;19526:23;:27;;;19564:17;:21;-1:-1:-1;;;;;;;18701:892:0:o;1419:98::-;1477:7;1504:5;1508:1;1504;:5;:::i;:::-;1497:12;1419:98;-1:-1:-1;;;1419:98:0:o;1803:::-;1861:7;1888:5;1892:1;1888;:5;:::i;22908:559::-;23053:16;;;23067:1;23053:16;;;;;;;;23029:21;;23053:16;;;;;;;;;;-1:-1:-1;23053:16:0;23029:40;;23098:4;23080;23085:1;23080:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23080:23:0;;;:7;;;;;;;;;;:23;;;;23124:10;;:17;;;-1:-1:-1;;;23124:17:0;;;;:10;;;;;:15;;:17;;;;;23080:7;;23124:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23114:4;23119:1;23114:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23114:27:0;;;:7;;;;;;;;;:27;23186:10;;23154:52;;23171:4;;23186:10;23199:6;23154:8;:52::i;:::-;23245:10;;:214;;-1:-1:-1;;;23245:214:0;;-1:-1:-1;;;;;23245:10:0;;;;:61;;:214;;23321:6;;23245:10;;23386:4;;23413;;23433:15;;23245:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22958:509;22908:559;:::o;2448:98::-;2506:7;2533:5;2537:1;2533;:5;:::i;196:418:1:-;345:2;334:9;327:21;308:4;377:6;371:13;420:6;415:2;404:9;400:18;393:34;479:6;474:2;466:6;462:15;457:2;446:9;442:18;436:50;535:1;530:2;521:6;510:9;506:22;502:31;495:42;605:2;598;594:7;589:2;581:6;577:15;573:29;562:9;558:45;554:54;546:62;;;196:418;;;;:::o;619:131::-;-1:-1:-1;;;;;694:31:1;;684:42;;674:70;;740:1;737;730:12;755:315;823:6;831;884:2;872:9;863:7;859:23;855:32;852:52;;;900:1;897;890:12;852:52;939:9;926:23;958:31;983:5;958:31;:::i;:::-;1008:5;1060:2;1045:18;;;;1032:32;;-1:-1:-1;;;755:315:1:o;1267:160::-;1332:20;;1388:13;;1381:21;1371:32;;1361:60;;1417:1;1414;1407:12;1361:60;1267:160;;;:::o;1432:315::-;1497:6;1505;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;1613:9;1600:23;1632:31;1657:5;1632:31;:::i;:::-;1682:5;-1:-1:-1;1706:35:1;1737:2;1722:18;;1706:35;:::i;:::-;1696:45;;1432:315;;;;;:::o;1752:456::-;1829:6;1837;1845;1898:2;1886:9;1877:7;1873:23;1869:32;1866:52;;;1914:1;1911;1904:12;1866:52;1953:9;1940:23;1972:31;1997:5;1972:31;:::i;:::-;2022:5;-1:-1:-1;2079:2:1;2064:18;;2051:32;2092:33;2051:32;2092:33;:::i;:::-;1752:456;;2144:7;;-1:-1:-1;;;2198:2:1;2183:18;;;;2170:32;;1752:456::o;2610:180::-;2666:6;2719:2;2707:9;2698:7;2694:23;2690:32;2687:52;;;2735:1;2732;2725:12;2687:52;2758:26;2774:9;2758:26;:::i;2795:247::-;2854:6;2907:2;2895:9;2886:7;2882:23;2878:32;2875:52;;;2923:1;2920;2913:12;2875:52;2962:9;2949:23;2981:31;3006:5;2981:31;:::i;3047:248::-;3115:6;3123;3176:2;3164:9;3155:7;3151:23;3147:32;3144:52;;;3192:1;3189;3182:12;3144:52;-1:-1:-1;;3215:23:1;;;3285:2;3270:18;;;3257:32;;-1:-1:-1;3047:248:1:o;3534:180::-;3593:6;3646:2;3634:9;3625:7;3621:23;3617:32;3614:52;;;3662:1;3659;3652:12;3614:52;-1:-1:-1;3685:23:1;;3534:180;-1:-1:-1;3534:180:1:o;3719:388::-;3787:6;3795;3848:2;3836:9;3827:7;3823:23;3819:32;3816:52;;;3864:1;3861;3854:12;3816:52;3903:9;3890:23;3922:31;3947:5;3922:31;:::i;:::-;3972:5;-1:-1:-1;4029:2:1;4014:18;;4001:32;4042:33;4001:32;4042:33;:::i;:::-;4094:7;4084:17;;;3719:388;;;;;:::o;4112:380::-;4191:1;4187:12;;;;4234;;;4255:61;;4309:4;4301:6;4297:17;4287:27;;4255:61;4362:2;4354:6;4351:14;4331:18;4328:38;4325:161;;4408:10;4403:3;4399:20;4396:1;4389:31;4443:4;4440:1;4433:15;4471:4;4468:1;4461:15;4325:161;;4112:380;;;:::o;4497:337::-;4699:2;4681:21;;;4738:2;4718:18;;;4711:30;-1:-1:-1;;;4772:2:1;4757:18;;4750:43;4825:2;4810:18;;4497:337::o;5623:127::-;5684:10;5679:3;5675:20;5672:1;5665:31;5715:4;5712:1;5705:15;5739:4;5736:1;5729:15;5755:125;5820:9;;;5841:10;;;5838:36;;;5854:18;;:::i;6959:168::-;7032:9;;;7063;;7080:15;;;7074:22;;7060:37;7050:71;;7101:18;;:::i;7132:217::-;7172:1;7198;7188:132;;7242:10;7237:3;7233:20;7230:1;7223:31;7277:4;7274:1;7267:15;7305:4;7302:1;7295:15;7188:132;-1:-1:-1;7334:9:1;;7132:217::o;12233:128::-;12300:9;;;12321:11;;;12318:37;;;12335:18;;:::i;13783:127::-;13844:10;13839:3;13835:20;13832:1;13825:31;13875:4;13872:1;13865:15;13899:4;13896:1;13889:15;13915:251;13985:6;14038:2;14026:9;14017:7;14013:23;14009:32;14006:52;;;14054:1;14051;14044:12;14006:52;14086:9;14080:16;14105:31;14130:5;14105:31;:::i;14171:980::-;14433:4;14481:3;14470:9;14466:19;14512:6;14501:9;14494:25;14538:2;14576:6;14571:2;14560:9;14556:18;14549:34;14619:3;14614:2;14603:9;14599:18;14592:31;14643:6;14678;14672:13;14709:6;14701;14694:22;14747:3;14736:9;14732:19;14725:26;;14786:2;14778:6;14774:15;14760:29;;14807:1;14817:195;14831:6;14828:1;14825:13;14817:195;;;14896:13;;-1:-1:-1;;;;;14892:39:1;14880:52;;14987:15;;;;14952:12;;;;14928:1;14846:9;14817:195;;;-1:-1:-1;;;;;;;15068:32:1;;;;15063:2;15048:18;;15041:60;-1:-1:-1;;;15132:3:1;15117:19;15110:35;15029:3;14171:980;-1:-1:-1;;;14171:980:1:o

Swarm Source

ipfs://1c9c1e1ee73eac06471aa6405b08dd2003d599014d30cf0e257ea7cd28aa8b7b

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.