ETH Price: $3,441.60 (+1.47%)
Gas: 4 Gwei

Contract

0xeBe8b87b93f946cb80b067987A96A838a147cAF0
 

Overview

ETH Balance

0.05215399756533732 ETH

Eth Value

$179.49 (@ $3,441.60/ETH)

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve201541502024-06-23 11:40:114 days ago1719142811IN
0xeBe8b87b...8a147cAF0
0 ETH0.000100282.16859609
Approve201468392024-06-22 11:06:356 days ago1719054395IN
0xeBe8b87b...8a147cAF0
0 ETH0.000189354.07257522
Approve201436962024-06-22 0:33:116 days ago1719016391IN
0xeBe8b87b...8a147cAF0
0 ETH0.000206924.45052168
Approve201434582024-06-21 23:45:236 days ago1719013523IN
0xeBe8b87b...8a147cAF0
0 ETH0.000109972.36538483
Approve201423352024-06-21 19:58:476 days ago1718999927IN
0xeBe8b87b...8a147cAF0
0 ETH0.000292826.29000168
Transfer201122382024-06-17 14:55:1110 days ago1718636111IN
0xeBe8b87b...8a147cAF0
0 ETH0.0011987912.70247439
Approve201021792024-06-16 5:11:5912 days ago1718514719IN
0xeBe8b87b...8a147cAF0
0 ETH0.000075612.59374003
Transfer201005372024-06-15 23:41:4712 days ago1718494907IN
0xeBe8b87b...8a147cAF0
0 ETH0.00009443.37145464
Approve201005372024-06-15 23:41:4712 days ago1718494907IN
0xeBe8b87b...8a147cAF0
0 ETH0.000109682.37145464
Approve200997532024-06-15 21:03:3512 days ago1718485415IN
0xeBe8b87b...8a147cAF0
0 ETH0.000231584.98095398
Approve200930602024-06-14 22:33:5913 days ago1718404439IN
0xeBe8b87b...8a147cAF0
0 ETH0.000283526.13773081
Approve200914972024-06-14 17:19:4713 days ago1718385587IN
0xeBe8b87b...8a147cAF0
0 ETH0.0010869623.3786858
Approve200864462024-06-14 0:24:1114 days ago1718324651IN
0xeBe8b87b...8a147cAF0
0 ETH0.000197777.52503714
Approve200730642024-06-12 3:28:3516 days ago1718162915IN
0xeBe8b87b...8a147cAF0
0 ETH0.000391568.4109763
Approve200703852024-06-11 18:29:4716 days ago1718130587IN
0xeBe8b87b...8a147cAF0
0 ETH0.0006698314.40692625
Approve200621332024-06-10 14:49:3517 days ago1718030975IN
0xeBe8b87b...8a147cAF0
0 ETH0.0008351618.08429024
Approve200561592024-06-09 18:48:5918 days ago1717958939IN
0xeBe8b87b...8a147cAF0
0 ETH0.000307196.64318738
Approve200489692024-06-08 18:42:3519 days ago1717872155IN
0xeBe8b87b...8a147cAF0
0 ETH0.000453429.80287965
Approve200489052024-06-08 18:29:3519 days ago1717871375IN
0xeBe8b87b...8a147cAF0
0 ETH0.0005233611.31503039
Approve200436262024-06-08 0:47:3520 days ago1717807655IN
0xeBe8b87b...8a147cAF0
0 ETH0.000311046.73346387
Approve200380762024-06-07 6:11:4721 days ago1717740707IN
0xeBe8b87b...8a147cAF0
0 ETH0.000389578.42477473
Approve200351272024-06-06 20:19:2321 days ago1717705163IN
0xeBe8b87b...8a147cAF0
0 ETH0.0011229424.27780391
Approve200296572024-06-06 1:58:2322 days ago1717639103IN
0xeBe8b87b...8a147cAF0
0 ETH0.0006612114.20328512
Approve200292862024-06-06 0:43:3522 days ago1717634615IN
0xeBe8b87b...8a147cAF0
0 ETH0.0007863417.00053115
Approve200227812024-06-05 2:56:4723 days ago1717556207IN
0xeBe8b87b...8a147cAF0
0 ETH0.000233688.01898694
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
200533652024-06-09 9:26:4719 days ago1717925207
0xeBe8b87b...8a147cAF0
0.06965001 ETH
200533652024-06-09 9:26:4719 days ago1717925207
0xeBe8b87b...8a147cAF0
0.0773889 ETH
198765262024-05-15 16:18:3543 days ago1715789915
0xeBe8b87b...8a147cAF0
0.06930763 ETH
198765262024-05-15 16:18:3543 days ago1715789915
0xeBe8b87b...8a147cAF0
0.07700848 ETH
196456222024-04-13 8:59:5976 days ago1712998799
0xeBe8b87b...8a147cAF0
0.06082603 ETH
196456222024-04-13 8:59:5976 days ago1712998799
0xeBe8b87b...8a147cAF0
0.06758448 ETH
195616462024-04-01 14:42:5987 days ago1711982579
0xeBe8b87b...8a147cAF0
0.06242195 ETH
195616462024-04-01 14:42:5987 days ago1711982579
0xeBe8b87b...8a147cAF0
0.06935773 ETH
195467802024-03-30 12:30:4789 days ago1711801847
0xeBe8b87b...8a147cAF0
0.0552516 ETH
195467802024-03-30 12:30:4789 days ago1711801847
0xeBe8b87b...8a147cAF0
0.06139067 ETH
195465412024-03-30 11:42:3589 days ago1711798955
0xeBe8b87b...8a147cAF0
0.0552516 ETH
195465412024-03-30 11:42:3589 days ago1711798955
0xeBe8b87b...8a147cAF0
0.06139067 ETH
194399512024-03-15 11:08:47105 days ago1710500927
0xeBe8b87b...8a147cAF0
0.06236187 ETH
194399512024-03-15 11:08:47105 days ago1710500927
0xeBe8b87b...8a147cAF0
0.06929097 ETH
194101702024-03-11 6:49:47109 days ago1710139787
0xeBe8b87b...8a147cAF0
0.06363642 ETH
194101702024-03-11 6:49:47109 days ago1710139787
0xeBe8b87b...8a147cAF0
0.07070713 ETH
194080992024-03-10 23:53:11109 days ago1710114791
0xeBe8b87b...8a147cAF0
0.0386639 ETH
194080992024-03-10 23:53:11109 days ago1710114791
0xeBe8b87b...8a147cAF0
0.04295988 ETH
193961642024-03-09 7:51:47111 days ago1709970707
0xeBe8b87b...8a147cAF0
0.0207628 ETH
193961642024-03-09 7:51:47111 days ago1709970707
0xeBe8b87b...8a147cAF0
0.02306977 ETH
193936322024-03-08 23:21:11111 days ago1709940071
0xeBe8b87b...8a147cAF0
0.0165572 ETH
193936322024-03-08 23:21:11111 days ago1709940071
0xeBe8b87b...8a147cAF0
0.01839689 ETH
174873682023-06-15 19:31:23378 days ago1686857483
0xeBe8b87b...8a147cAF0
0.00443808 ETH
174873682023-06-15 19:31:23378 days ago1686857483
0xeBe8b87b...8a147cAF0
0.0049312 ETH
174664682023-06-12 20:54:35381 days ago1686603275
0xeBe8b87b...8a147cAF0
1.74072567 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Pug

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/* 

TG
https://t.me/pugethtoken

Twitter
https://twitter.com/PugETHToken

Website
https://pugeth.com/

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣠⢤⣀⣀⡀⠀⠀⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⣠⠖⠉⠙⡖⢊⢉⡴⢀⠜⠁⡔⠀⡀⠈⣉⢍⠁⠀⠈⠙⠲⠤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣠⢾⣷⡤⠀⣰⠟⣫⠋⢀⠊⢀⠀⠳⡀⢣⡀⢹⡈⢧⣴⣶⡄⠘⢦⡀⠙⠲⢤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣠⠔⢋⣠⣾⡟⠤⠚⠡⠚⠁⠀⢸⠀⢸⡀⠙⠻⠄⠑⠆⠑⢌⠻⣿⣿⣄⠀⠹⣆⢰⣄⠈⢹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢀⠞⢁⡴⣻⣿⡟⠀⠀⠤⠤⠤⣀⠀⢸⠄⢨⣀⣠⠤⣄⡀⠀⠀⠀⠀⠙⠻⣿⣆⠀⢹⣿⣿⣦⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢾⣠⡾⣽⣿⡟⢀⣠⣤⡶⠀⢳⡈⠃⠀⠀⠘⠉⡴⠀⣬⣉⠙⠲⢄⠀⠀⠀⠈⢻⣆⢸⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠈⢻⢳⣿⣿⡀⠀⠾⢿⣿⣆⡾⠗⠒⠛⠓⠶⣾⡇⢰⣶⣿⣿⣦⣀⡀⠀⠀⠀⣰⣿⣆⢻⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⣼⣿⣿⣿⣿⣿⣿⣿⠿⠋⣀⣴⣶⣶⣶⣤⡈⠻⣾⣟⡥⣛⣿⣷⣝⢶⡄⢰⣿⣿⣿⣦⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⣿⣿⠟⠘⣷⣙⠛⢃⣤⣾⣿⣃⡄⢠⣤⢹⣿⣦⡀⠉⠈⣿⣿⠿⢛⣼⢣⠈⢿⢻⡇⢻⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣿⣿⠇⢘⣫⣿⣤⢉⣹⠀⣋⠉⣈⠉⢿⣦⣈⣿⣿⣿⣿⠃⢸⠄⢸⢸⡇⠀⢻⣆⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠸⣿⠀⢀⣀⣻⠁⠀⣸⠈⠁⣴⣮⢍⠛⠿⣧⠘⣿⡟⠋⢀⠎⠀⠉⣸⠀⠀⠀⢹⡿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⣷⠴⢋⣍⣠⡴⠚⠛⠳⢤⣈⠑⠦⣀⠀⠘⢷⡝⠷⢀⠞⢀⢤⣰⠃⠀⠀⢠⣿⠃⡏⠙⢲⣄⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠸⣶⣿⣿⠟⠀⠀⢠⡀⠀⠙⠷⣦⣌⡉⠀⢀⡷⠀⢀⡴⢁⠞⠁⠀⢀⣴⡟⠁⠀⠁⠀⢀⣿⣆⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⠻⡟⠳⣤⡼⠟⠻⠦⣀⣦⡀⠙⣿⣿⣿⢟⡠⢊⡠⠋⠀⣠⣶⠟⠁⠀⠀⢀⣠⣶⣿⣿⣿⣷⡄⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⢳⣶⣖⣢⡤⢖⣀⣀⠤⠛⢉⣀⡥⠖⢉⣠⣴⠟⠋⠀⠀⠀⣠⣴⣿⣿⠿⠟⣻⣿⣿⣿⣷⣦⣀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⡟⠛⠟⢋⣩⣴⠶⠚⠉⠁⣠⡶⠟⠉⠀⠀⠀⢀⣤⣾⡿⠟⠉⠀⣠⣾⣿⠿⠿⠿⠿⢿⣿⣦⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣇⡀⠐⠟⠋⠁⠀⢀⡴⠛⠁⠀⠀⠀⠀⢀⣴⣿⠟⠉⠀⠀⢀⡾⠛⠉⠀⠀⠀⠀⠀⠀⠀⠉⠃
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠔⠋⠀⠀⠀⠀⠀⠔⠁⠀⠀⠀⠀⠀⠀⣠⡿⠋⠀⠀⠀⠀⡰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡆⠀⣀⠴⠂⠀⠀⠀⠀⠀⠀⠀⠀⢠⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣧⣀⠀⠀⠀⠀⠀⠀⢀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⡀⠀⠀⣀⣤⠾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

*/


// SPDX-License-Identifier: Unlicensed


pragma solidity 0.8.20;

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

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



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

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

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

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

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

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

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

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

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

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

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

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

interface InterfaceLP {
    function sync() external;
}

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

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = "Pug";
    string constant _symbol = "PUG ";
    uint8 constant _decimals = 9; 
  

    uint256 _totalSupply = 1 * 10**9 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(1).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(1).div(100);

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

    
    mapping (address => bool) isFeeexempt;
    mapping (address => bool) isTxLimitexempt;

    uint256 private liquidityFee    = 1;
    uint256 private marketingFee    = 3;
    uint256 private devFee          = 0;
    uint256 private teamFee         = 1; 
    uint256 private burnFee         = 0;
    uint256 public totalFee         = teamFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 sellmultiplier = 800;
    uint256 buymultiplier = 500;
    uint256 transfertax = 800; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private devFeeReceiver;
    address private teamFeeReceiver;
    address private burnFeeReceiver;
    
    uint256 targetLiquidity = 30;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false; 


    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 60 / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeexempt[msg.sender] = true;
        isFeeexempt[devFeeReceiver] = true;
            
        isTxLimitexempt[msg.sender] = true;
        isTxLimitexempt[pair] = true;
        isTxLimitexempt[devFeeReceiver] = true;
        isTxLimitexempt[marketingFeeReceiver] = true;
        isTxLimitexempt[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x9D8FBeC2aA1EF4cFB322aF7d96496555086f6027;
        devFeeReceiver = msg.sender;
        teamFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

  
    function removelimits () external onlyOwner {
            _maxTxAmount = _totalSupply;
            _maxWalletToken = _totalSupply;
    }
      
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
          }
        
               
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitexempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
      
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeexempt[sender] || isFeeexempt[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitexempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeexempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 percent = transfertax;

        if(recipient == pair) {
            percent = sellmultiplier;
        } else if(sender == pair) {
            percent = buymultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percent).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

  
    function manualSend() external { 
    payable(autoLiquidityReceiver).transfer(address(this).balance);
        
    }
  
    function clearForeignToken(address tokenAddress, uint256 tokens) public returns (bool) {
               if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

    function setMultipliers(uint256 _issell, uint256 _isbuy, uint256 _wallet) external onlyOwner {
        sellmultiplier = _issell;
        buymultiplier = _isbuy;
        transfertax = _wallet;    
          
    }

     function setMaxHolding(uint256 maxWallPercent) external onlyOwner {
         require(maxWallPercent >= 1); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
                
    }

    function setMaxTransaction(uint256 maxTXPercent) external onlyOwner {
         require(maxTXPercent >= 1); 
        _maxTxAmount = (_totalSupply * maxTXPercent ) / 1000;
    }

    function openTrading() public onlyOwner {
        TradingOpen = true;     
        
    }

     function setBacking(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    
               
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    
    function setFees(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee).add(_devFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 5, "Fees can not be more than 20%"); 
    }

    function updateWallets(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _burnFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

    function configSwapback(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
       
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }



event AutoLiquify(uint256 amountETH, uint256 amountTokens);


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","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":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearForeignToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"configSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removelimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setBacking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"setMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_issell","type":"uint256"},{"internalType":"uint256","name":"_isbuy","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a620006a1565b6200004290633b9aca00620006b1565b600581905562000063906064906200005c9060016200047e565b9062000511565b6006556005546200007e906064906200005c9060016200047e565b6007556001600c556003600d555f600e556001600f555f601055601054600e54600c54600d54600f54620000b39190620006cb565b620000bf9190620006cb565b620000cb9190620006cb565b620000d79190620006cb565b6011556064601281905561032060138190556101f4601455601555601e601b55601c55601f805461ffff60a01b1916600160a81b1790556005546103e8906200012290603c620006b1565b6200012e9190620006e1565b6020553480156200013d575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620001fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000220919062000701565b600280546001600160a01b0319166001600160a01b03928316179055601d546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156200027d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000701565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620002f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000318919062000701565b601f80546001600160a01b039283166001600160a01b031991821681178355601e805483169091179055305f818152600960209081526040808320601d548816845282528083205f19905533808452600a8352818420805460ff199081166001908117909255601880548b1687528487208054831684179055838752600b8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601780548b1687528487208054831684179055968652838620805490911690911790556016805487168217905584548616739d8fbec2aa1ef4cfb322af7d96496555086f60271790945585548516841790955560198054851684179055600354601a80549095169616959095179092556005548183526008855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000776565b5f825f036200048f57505f6200050b565b5f6200049c8385620006b1565b905082620004ab8583620006e1565b14620005085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200050883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200055a60201b60201c565b5f81836200057d5760405162461bcd60e51b8152600401620004ff919062000729565b505f6200058b8486620006e1565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005e857815f1904821115620005cc57620005cc62000594565b80851615620005da57918102915b93841c9390800290620005ad565b509250929050565b5f8262000600575060016200050b565b816200060e57505f6200050b565b8160018114620006275760028114620006325762000652565b60019150506200050b565b60ff84111562000646576200064662000594565b50506001821b6200050b565b5060208310610133831016604e8410600b841016171562000677575081810a6200050b565b620006838383620005a8565b805f190482111562000699576200069962000594565b029392505050565b5f6200050860ff841683620005f0565b80820281158282048414176200050b576200050b62000594565b808201808211156200050b576200050b62000594565b5f82620006fc57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000712575f80fd5b81516001600160a01b038116811462000508575f80fd5b5f6020808352835180828501525f5b81811015620007565785810183015185820160400152820162000738565b505f604082860101526040601f19601f8301168501019250505092915050565b611e5a80620007845f395ff3fe608060405260043610610215575f3560e01c806386f6c3c11161011e578063c9567bf9116100a8578063f0a9e3651161006d578063f0a9e3651461062d578063f2fde38b1461064c578063f42938901461066b578063f887ea401461067f578063fd5ea1de1461069e575f80fd5b8063c9567bf914610578578063cc798a5c1461058c578063d51ed1c8146105ab578063dd62ed3e146105ca578063e33624ab1461060e575f80fd5b80639bc7c8c0116100ee5780639bc7c8c0146104de578063a8aa1b31146104fd578063a9059cbb1461051c578063ab5a18871461053b578063b2bdfa7b1461055a575f80fd5b806386f6c3c114610447578063893d20e8146104665780638da5cb5b1461049657806395d89b41146104b2575f80fd5b8063313ce5671161019f5780636ddd17131161016f5780636ddd1713146103b557806370a08231146103d5578063715018a61461040957806378109e541461041d5780637d1db4a514610432575f80fd5b8063313ce56714610346578063571ac8b0146103615780635e4ae81b146103805780636ce46bc314610396575f80fd5b80631161ae39116101e55780631161ae39146102cb57806318160ddd146102ea5780631df4ccfc146102fe57806323b872dd146103135780632b112e4914610332575f80fd5b80630445b6671461022057806306fdde031461024857806308fd3d051461027c578063095ea7b3146102ac575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b5061023560205481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b5060408051808201909152600381526250756760e81b60208201525b60405161023f9190611a45565b348015610287575f80fd5b50601f5461029c90600160a01b900460ff1681565b604051901515815260200161023f565b3480156102b7575f80fd5b5061029c6102c6366004611aab565b6106bd565b3480156102d6575f80fd5b5061029c6102e5366004611ad3565b610729565b3480156102f5575f80fd5b50600554610235565b348015610309575f80fd5b5061023560115481565b34801561031e575f80fd5b5061029c61032d366004611af3565b61073c565b34801561033d575f80fd5b506102356107fa565b348015610351575f80fd5b506040516009815260200161023f565b34801561036c575f80fd5b5061029c61037b366004611b2c565b61084a565b34801561038b575f80fd5b50610394610856565b005b3480156103a1575f80fd5b506103946103b0366004611b45565b610895565b3480156103c0575f80fd5b50601f5461029c90600160a81b900460ff1681565b3480156103e0575f80fd5b506102356103ef366004611b2c565b6001600160a01b03165f9081526008602052604090205490565b348015610414575f80fd5b506103946108cc565b348015610428575f80fd5b5061023560075481565b34801561043d575f80fd5b5061023560065481565b348015610452575f80fd5b50610394610461366004611b6e565b61093d565b348015610471575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b3480156104a1575f80fd5b505f546001600160a01b031661047e565b3480156104bd575f80fd5b506040805180820190915260048152630282aa3960e51b602082015261026f565b3480156104e9575f80fd5b506103946104f8366004611bad565b610a02565b348015610508575f80fd5b50601f5461047e906001600160a01b031681565b348015610527575f80fd5b5061029c610536366004611aab565b610a59565b348015610546575f80fd5b50610394610555366004611bad565b610a65565b348015610565575f80fd5b505f5461047e906001600160a01b031681565b348015610583575f80fd5b50610394610abc565b348015610597575f80fd5b506103946105a6366004611ad3565b610afa565b3480156105b6575f80fd5b506102356105c5366004611bad565b610b2e565b3480156105d5575f80fd5b506102356105e4366004611bc4565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610619575f80fd5b50610394610628366004611c02565b610b73565b348015610638575f80fd5b5061029c610647366004611aab565b610bbe565b348015610657575f80fd5b50610394610666366004611b2c565b610ca3565b348015610676575f80fd5b50610394610d8a565b34801561068a575f80fd5b50601d5461047e906001600160a01b031681565b3480156106a9575f80fd5b506103946106b8366004611c1e565b610dc3565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107179086815260200190565b60405180910390a35060015b92915050565b5f8261073483610b2e565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19146107e5576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546107c1918490610e4b565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b6107f0848484610e83565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610845906003546001600160a01b03165f9081526008602052604090205461083f90600554906111dd565b906111dd565b905090565b5f610723825f196106bd565b5f546001600160a01b031633146108885760405162461bcd60e51b815260040161087f90611c7f565b60405180910390fd5b6005546006819055600755565b5f546001600160a01b031633146108be5760405162461bcd60e51b815260040161087f90611c7f565b601392909255601455601555565b5f546001600160a01b031633146108f55760405162461bcd60e51b815260040161087f90611c7f565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146109665760405162461bcd60e51b815260040161087f90611c7f565b600c869055600f859055600d849055600e839055601082905561099782610991858188818c8c61121e565b9061121e565b60115560128190556109aa600582611cc8565b601154106109fa5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e20323025000000604482015260640161087f565b505050505050565b5f546001600160a01b03163314610a2b5760405162461bcd60e51b815260040161087f90611c7f565b6001811015610a38575f80fd5b6103e881600554610a499190611ce7565b610a539190611cc8565b60075550565b5f6107f3338484610e83565b5f546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161087f90611c7f565b6001811015610a9b575f80fd5b6103e881600554610aac9190611ce7565b610ab69190611cc8565b60065550565b5f546001600160a01b03163314610ae55760405162461bcd60e51b815260040161087f90611c7f565b601f805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610b235760405162461bcd60e51b815260040161087f90611c7f565b601b91909155601c55565b5f610723610b3a6107fa565b601f546001600160a01b03165f90815260086020526040902054610b6d90610b66906002905b9061127c565b859061127c565b906112fa565b5f546001600160a01b03163314610b9c5760405162461bcd60e51b815260040161087f90611c7f565b601f8054921515600160a81b0260ff60a81b1990931692909217909155602055565b5f815f03610c2f576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610c08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2c9190611cfe565b91505b60165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610c7f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f39190611d15565b5f546001600160a01b03163314610ccc5760405162461bcd60e51b815260040161087f90611c7f565b6001600160a01b038116610d315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087f565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6016546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610dc0573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610dec5760405162461bcd60e51b815260040161087f90611c7f565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b5f8184841115610e6e5760405162461bcd60e51b815260040161087f9190611a45565b505f610e7a8486611d30565b95945050505050565b6021545f9060ff1615610ea257610e9b84848461133b565b90506107f3565b6001600160a01b0384165f9081526001602052604090205460ff16158015610ee257506001600160a01b0383165f9081526001602052604090205460ff16155b15610f3757601f54600160a01b900460ff16610f375760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161087f565b6001600160a01b0384165f9081526001602052604090205460ff16158015610f6857506001600160a01b0383163014155b8015610f8257506003546001600160a01b03848116911614155b8015610f9c5750601f546001600160a01b03848116911614155b8015610fb65750601a546001600160a01b03848116911614155b8015610fd057506017546001600160a01b03848116911614155b8015610ff457506001600160a01b0383165f908152600b602052604090205460ff16155b15611094576001600160a01b0383165f9081526008602052604090205460075461101e8483611d43565b11156110925760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161087f565b505b61109e848361140b565b6110a6611477565b156110b3576110b36114cd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260089091529190912054611104918490610e4b565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061114f57506001600160a01b0384165f908152600a602052604090205460ff165b6111635761115e858486611895565b611165565b825b6001600160a01b0385165f9081526008602052604090205490915061118a908261121e565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f80516020611e05833981519152906111ca9085815260200190565b60405180910390a3506001949350505050565b5f6107f383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e4b565b5f8061122a8385611d43565b9050838110156107f35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161087f565b5f825f0361128b57505f610723565b5f6112968385611ce7565b9050826112a38583611cc8565b146107f35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161087f565b5f6107f383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a19565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260089091529182205461138b918490610e4b565b6001600160a01b038086165f9081526008602052604080822093909355908516815220546113b9908361121e565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f80516020611e05833981519152906113f99086815260200190565b60405180910390a35060019392505050565b6006548111158061143357506001600160a01b0382165f908152600b602052604090205460ff165b6114735760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161087f565b5050565b601f545f906001600160a01b03163314801590611497575060215460ff16155b80156114ac5750601f54600160a81b900460ff165b801561084557505060208054305f9081526008909252604090912054101590565b6021805460ff19166001179055601b54601c545f916114eb91610729565b6114f757600c546114f9565b5f5b90505f61151c6002610b6d601154610b6d8660205461127c90919063ffffffff16565b90505f611534826020546111dd90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061156c5761156c611d56565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061159d5761159d611d56565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac947906115e69086905f90879030904290600401611d6a565b5f604051808303815f87803b1580156115fd575f80fd5b505af115801561160f573d5f803e3d5ffd5b505050505f61162782476111dd90919063ffffffff16565b90505f6116416116388860026112fa565b601154906111dd565b90505f6116556002610b6d8481878d61127c565b90505f61167183610b6d600d548761127c90919063ffffffff16565b90505f61168d84610b6d600f548861127c90919063ffffffff16565b90505f6116a985610b6d600e548961127c90919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f81146116f8576040519150601f19603f3d011682016040523d82523d5f602084013e6116fd565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f811461174a576040519150601f19603f3d011682016040523d82523d5f602084013e61174f565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f811461179c576040519150601f19603f3d011682016040523d82523d5f602084013e6117a1565b606091505b505f9250508b15905061187d57601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af115801561181b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118409190611dd9565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506021805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b03908116908416036118ba57506013546118d5565b601f546001600160a01b03908116908616036118d557506014545b5f61190160125460646118e89190611ce7565b610b6d84610b606011548a61127c90919063ffffffff16565b90505f61191f601154610b6d6010548561127c90919063ffffffff16565b90505f61192c83836111dd565b305f90815260086020526040902054909150611948908261121e565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611975908361121e565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f80516020611e05833981519152910160405180910390a38115611a03576005546119cd90836111dd565b6005556004546040518381526001600160a01b03918216918a16905f80516020611e058339815191529060200160405180910390a35b611a0d87846111dd565b98975050505050505050565b5f8183611a395760405162461bcd60e51b815260040161087f9190611a45565b505f610e7a8486611cc8565b5f6020808352835180828501525f5b81811015611a7057858101830151858201604001528201611a54565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611aa6575f80fd5b919050565b5f8060408385031215611abc575f80fd5b611ac583611a90565b946020939093013593505050565b5f8060408385031215611ae4575f80fd5b50508035926020909101359150565b5f805f60608486031215611b05575f80fd5b611b0e84611a90565b9250611b1c60208501611a90565b9150604084013590509250925092565b5f60208284031215611b3c575f80fd5b6107f382611a90565b5f805f60608486031215611b57575f80fd5b505081359360208301359350604090920135919050565b5f805f805f8060c08789031215611b83575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f60208284031215611bbd575f80fd5b5035919050565b5f8060408385031215611bd5575f80fd5b611bde83611a90565b9150611bec60208401611a90565b90509250929050565b8015158114610dc0575f80fd5b5f8060408385031215611c13575f80fd5b8235611ac581611bf5565b5f805f805f60a08688031215611c32575f80fd5b611c3b86611a90565b9450611c4960208701611a90565b9350611c5760408701611a90565b9250611c6560608701611a90565b9150611c7360808701611a90565b90509295509295909350565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82611ce257634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761072357610723611cb4565b5f60208284031215611d0e575f80fd5b5051919050565b5f60208284031215611d25575f80fd5b81516107f381611bf5565b8181038181111561072357610723611cb4565b8082018082111561072357610723611cb4565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611db85784516001600160a01b031683529383019391830191600101611d93565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611deb575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122058f50d47b644da8b5ea866ef5f5c331f28e108f7f26d52acb2096d811187923c64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610215575f3560e01c806386f6c3c11161011e578063c9567bf9116100a8578063f0a9e3651161006d578063f0a9e3651461062d578063f2fde38b1461064c578063f42938901461066b578063f887ea401461067f578063fd5ea1de1461069e575f80fd5b8063c9567bf914610578578063cc798a5c1461058c578063d51ed1c8146105ab578063dd62ed3e146105ca578063e33624ab1461060e575f80fd5b80639bc7c8c0116100ee5780639bc7c8c0146104de578063a8aa1b31146104fd578063a9059cbb1461051c578063ab5a18871461053b578063b2bdfa7b1461055a575f80fd5b806386f6c3c114610447578063893d20e8146104665780638da5cb5b1461049657806395d89b41146104b2575f80fd5b8063313ce5671161019f5780636ddd17131161016f5780636ddd1713146103b557806370a08231146103d5578063715018a61461040957806378109e541461041d5780637d1db4a514610432575f80fd5b8063313ce56714610346578063571ac8b0146103615780635e4ae81b146103805780636ce46bc314610396575f80fd5b80631161ae39116101e55780631161ae39146102cb57806318160ddd146102ea5780631df4ccfc146102fe57806323b872dd146103135780632b112e4914610332575f80fd5b80630445b6671461022057806306fdde031461024857806308fd3d051461027c578063095ea7b3146102ac575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b5061023560205481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b5060408051808201909152600381526250756760e81b60208201525b60405161023f9190611a45565b348015610287575f80fd5b50601f5461029c90600160a01b900460ff1681565b604051901515815260200161023f565b3480156102b7575f80fd5b5061029c6102c6366004611aab565b6106bd565b3480156102d6575f80fd5b5061029c6102e5366004611ad3565b610729565b3480156102f5575f80fd5b50600554610235565b348015610309575f80fd5b5061023560115481565b34801561031e575f80fd5b5061029c61032d366004611af3565b61073c565b34801561033d575f80fd5b506102356107fa565b348015610351575f80fd5b506040516009815260200161023f565b34801561036c575f80fd5b5061029c61037b366004611b2c565b61084a565b34801561038b575f80fd5b50610394610856565b005b3480156103a1575f80fd5b506103946103b0366004611b45565b610895565b3480156103c0575f80fd5b50601f5461029c90600160a81b900460ff1681565b3480156103e0575f80fd5b506102356103ef366004611b2c565b6001600160a01b03165f9081526008602052604090205490565b348015610414575f80fd5b506103946108cc565b348015610428575f80fd5b5061023560075481565b34801561043d575f80fd5b5061023560065481565b348015610452575f80fd5b50610394610461366004611b6e565b61093d565b348015610471575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b3480156104a1575f80fd5b505f546001600160a01b031661047e565b3480156104bd575f80fd5b506040805180820190915260048152630282aa3960e51b602082015261026f565b3480156104e9575f80fd5b506103946104f8366004611bad565b610a02565b348015610508575f80fd5b50601f5461047e906001600160a01b031681565b348015610527575f80fd5b5061029c610536366004611aab565b610a59565b348015610546575f80fd5b50610394610555366004611bad565b610a65565b348015610565575f80fd5b505f5461047e906001600160a01b031681565b348015610583575f80fd5b50610394610abc565b348015610597575f80fd5b506103946105a6366004611ad3565b610afa565b3480156105b6575f80fd5b506102356105c5366004611bad565b610b2e565b3480156105d5575f80fd5b506102356105e4366004611bc4565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610619575f80fd5b50610394610628366004611c02565b610b73565b348015610638575f80fd5b5061029c610647366004611aab565b610bbe565b348015610657575f80fd5b50610394610666366004611b2c565b610ca3565b348015610676575f80fd5b50610394610d8a565b34801561068a575f80fd5b50601d5461047e906001600160a01b031681565b3480156106a9575f80fd5b506103946106b8366004611c1e565b610dc3565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107179086815260200190565b60405180910390a35060015b92915050565b5f8261073483610b2e565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19146107e5576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546107c1918490610e4b565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b6107f0848484610e83565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610845906003546001600160a01b03165f9081526008602052604090205461083f90600554906111dd565b906111dd565b905090565b5f610723825f196106bd565b5f546001600160a01b031633146108885760405162461bcd60e51b815260040161087f90611c7f565b60405180910390fd5b6005546006819055600755565b5f546001600160a01b031633146108be5760405162461bcd60e51b815260040161087f90611c7f565b601392909255601455601555565b5f546001600160a01b031633146108f55760405162461bcd60e51b815260040161087f90611c7f565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146109665760405162461bcd60e51b815260040161087f90611c7f565b600c869055600f859055600d849055600e839055601082905561099782610991858188818c8c61121e565b9061121e565b60115560128190556109aa600582611cc8565b601154106109fa5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e20323025000000604482015260640161087f565b505050505050565b5f546001600160a01b03163314610a2b5760405162461bcd60e51b815260040161087f90611c7f565b6001811015610a38575f80fd5b6103e881600554610a499190611ce7565b610a539190611cc8565b60075550565b5f6107f3338484610e83565b5f546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161087f90611c7f565b6001811015610a9b575f80fd5b6103e881600554610aac9190611ce7565b610ab69190611cc8565b60065550565b5f546001600160a01b03163314610ae55760405162461bcd60e51b815260040161087f90611c7f565b601f805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610b235760405162461bcd60e51b815260040161087f90611c7f565b601b91909155601c55565b5f610723610b3a6107fa565b601f546001600160a01b03165f90815260086020526040902054610b6d90610b66906002905b9061127c565b859061127c565b906112fa565b5f546001600160a01b03163314610b9c5760405162461bcd60e51b815260040161087f90611c7f565b601f8054921515600160a81b0260ff60a81b1990931692909217909155602055565b5f815f03610c2f576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610c08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2c9190611cfe565b91505b60165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610c7f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f39190611d15565b5f546001600160a01b03163314610ccc5760405162461bcd60e51b815260040161087f90611c7f565b6001600160a01b038116610d315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087f565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6016546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610dc0573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610dec5760405162461bcd60e51b815260040161087f90611c7f565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b5f8184841115610e6e5760405162461bcd60e51b815260040161087f9190611a45565b505f610e7a8486611d30565b95945050505050565b6021545f9060ff1615610ea257610e9b84848461133b565b90506107f3565b6001600160a01b0384165f9081526001602052604090205460ff16158015610ee257506001600160a01b0383165f9081526001602052604090205460ff16155b15610f3757601f54600160a01b900460ff16610f375760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161087f565b6001600160a01b0384165f9081526001602052604090205460ff16158015610f6857506001600160a01b0383163014155b8015610f8257506003546001600160a01b03848116911614155b8015610f9c5750601f546001600160a01b03848116911614155b8015610fb65750601a546001600160a01b03848116911614155b8015610fd057506017546001600160a01b03848116911614155b8015610ff457506001600160a01b0383165f908152600b602052604090205460ff16155b15611094576001600160a01b0383165f9081526008602052604090205460075461101e8483611d43565b11156110925760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161087f565b505b61109e848361140b565b6110a6611477565b156110b3576110b36114cd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260089091529190912054611104918490610e4b565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061114f57506001600160a01b0384165f908152600a602052604090205460ff165b6111635761115e858486611895565b611165565b825b6001600160a01b0385165f9081526008602052604090205490915061118a908261121e565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f80516020611e05833981519152906111ca9085815260200190565b60405180910390a3506001949350505050565b5f6107f383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e4b565b5f8061122a8385611d43565b9050838110156107f35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161087f565b5f825f0361128b57505f610723565b5f6112968385611ce7565b9050826112a38583611cc8565b146107f35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161087f565b5f6107f383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a19565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260089091529182205461138b918490610e4b565b6001600160a01b038086165f9081526008602052604080822093909355908516815220546113b9908361121e565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f80516020611e05833981519152906113f99086815260200190565b60405180910390a35060019392505050565b6006548111158061143357506001600160a01b0382165f908152600b602052604090205460ff165b6114735760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161087f565b5050565b601f545f906001600160a01b03163314801590611497575060215460ff16155b80156114ac5750601f54600160a81b900460ff165b801561084557505060208054305f9081526008909252604090912054101590565b6021805460ff19166001179055601b54601c545f916114eb91610729565b6114f757600c546114f9565b5f5b90505f61151c6002610b6d601154610b6d8660205461127c90919063ffffffff16565b90505f611534826020546111dd90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061156c5761156c611d56565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061159d5761159d611d56565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac947906115e69086905f90879030904290600401611d6a565b5f604051808303815f87803b1580156115fd575f80fd5b505af115801561160f573d5f803e3d5ffd5b505050505f61162782476111dd90919063ffffffff16565b90505f6116416116388860026112fa565b601154906111dd565b90505f6116556002610b6d8481878d61127c565b90505f61167183610b6d600d548761127c90919063ffffffff16565b90505f61168d84610b6d600f548861127c90919063ffffffff16565b90505f6116a985610b6d600e548961127c90919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f81146116f8576040519150601f19603f3d011682016040523d82523d5f602084013e6116fd565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f811461174a576040519150601f19603f3d011682016040523d82523d5f602084013e61174f565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f811461179c576040519150601f19603f3d011682016040523d82523d5f602084013e6117a1565b606091505b505f9250508b15905061187d57601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af115801561181b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118409190611dd9565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506021805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b03908116908416036118ba57506013546118d5565b601f546001600160a01b03908116908616036118d557506014545b5f61190160125460646118e89190611ce7565b610b6d84610b606011548a61127c90919063ffffffff16565b90505f61191f601154610b6d6010548561127c90919063ffffffff16565b90505f61192c83836111dd565b305f90815260086020526040902054909150611948908261121e565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611975908361121e565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f80516020611e05833981519152910160405180910390a38115611a03576005546119cd90836111dd565b6005556004546040518381526001600160a01b03918216918a16905f80516020611e058339815191529060200160405180910390a35b611a0d87846111dd565b98975050505050505050565b5f8183611a395760405162461bcd60e51b815260040161087f9190611a45565b505f610e7a8486611cc8565b5f6020808352835180828501525f5b81811015611a7057858101830151858201604001528201611a54565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611aa6575f80fd5b919050565b5f8060408385031215611abc575f80fd5b611ac583611a90565b946020939093013593505050565b5f8060408385031215611ae4575f80fd5b50508035926020909101359150565b5f805f60608486031215611b05575f80fd5b611b0e84611a90565b9250611b1c60208501611a90565b9150604084013590509250925092565b5f60208284031215611b3c575f80fd5b6107f382611a90565b5f805f60608486031215611b57575f80fd5b505081359360208301359350604090920135919050565b5f805f805f8060c08789031215611b83575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f60208284031215611bbd575f80fd5b5035919050565b5f8060408385031215611bd5575f80fd5b611bde83611a90565b9150611bec60208401611a90565b90509250929050565b8015158114610dc0575f80fd5b5f8060408385031215611c13575f80fd5b8235611ac581611bf5565b5f805f805f60a08688031215611c32575f80fd5b611c3b86611a90565b9450611c4960208701611a90565b9350611c5760408701611a90565b9250611c6560608701611a90565b9150611c7360808701611a90565b90509295509295909350565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82611ce257634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761072357610723611cb4565b5f60208284031215611d0e575f80fd5b5051919050565b5f60208284031215611d25575f80fd5b81516107f381611bf5565b8181038181111561072357610723611cb4565b8082018082111561072357610723611cb4565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611db85784516001600160a01b031683529383019391830191600101611d93565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611deb575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122058f50d47b644da8b5ea866ef5f5c331f28e108f7f26d52acb2096d811187923c64736f6c63430008140033

Deployed Bytecode Sourcemap

8905:12697:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10587:55;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;10587:55:0;;;;;;;;12089:80;;;;;;;;;;-1:-1:-1;12161:5:0;;;;;;;;;;;;-1:-1:-1;;;12161:5:0;;;;12089:80;;;;;;;:::i;10507:31::-;;;;;;;;;;-1:-1:-1;10507:31:0;;;;-1:-1:-1;;;10507:31:0;;;;;;;;;914:14:1;;907:22;889:41;;877:2;862:18;10507:31:0;749:187:1;12511:216:0;;;;;;;;;;-1:-1:-1;12511:216:0;;;;;:::i;:::-;;:::i;21378:150::-;;;;;;;;;;-1:-1:-1;21378:150:0;;;;;:::i;:::-;;:::i;11819:88::-;;;;;;;;;;-1:-1:-1;11892:12:0;;11819:88;;9868:90;;;;;;;;;;;;;;;;13029:370;;;;;;;;;;-1:-1:-1;13029:370:0;;;;;:::i;:::-;;:::i;21053:142::-;;;;;;;;;;;;;:::i;11913:80::-;;;;;;;;;;-1:-1:-1;11913:80:0;;9235:1;2106:36:1;;2094:2;2079:18;11913:80:0;1964:184:1;12735:122:0;;;;;;;;;;-1:-1:-1;12735:122:0;;;;;:::i;:::-;;:::i;13411:139::-;;;;;;;;;;;;;:::i;:::-;;17079:217;;;;;;;;;;-1:-1:-1;17079:217:0;;;;;:::i;:::-;;:::i;10550:30::-;;;;;;;;;;-1:-1:-1;10550:30:0;;;;-1:-1:-1;;;10550:30:0;;;;;;12259:105;;;;;;;;;;-1:-1:-1;12259:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;12343:18:0;12325:7;12343:18;;;:9;:18;;;;;;;12259:105;6962:148;;;;;;;;;;;;;:::i;9372:61::-;;;;;;;;;;;;;;;;9307:58;;;;;;;;;;;;;;;;19885:552;;;;;;;;;;-1:-1:-1;19885:552:0;;;;;:::i;:::-;;:::i;12175:78::-;;;;;;;;;;-1:-1:-1;12227:7:0;6813:6;-1:-1:-1;;;;;6813:6:0;12175:78;;;-1:-1:-1;;;;;3357:32:1;;;3339:51;;3327:2;3312:18;12175:78:0;3193:203:1;6748:79:0;;;;;;;;;;-1:-1:-1;6786:7:0;6813:6;-1:-1:-1;;;;;6813:6:0;6748:79;;11999:84;;;;;;;;;;-1:-1:-1;12073:7:0;;;;;;;;;;;;-1:-1:-1;;;12073:7:0;;;;11999:84;;17305:201;;;;;;;;;;-1:-1:-1;17305:201:0;;;;;:::i;:::-;;:::i;10475:19::-;;;;;;;;;;-1:-1:-1;10475:19:0;;;;-1:-1:-1;;;;;10475:19:0;;;12865:156;;;;;;;;;;-1:-1:-1;12865:156:0;;;;;:::i;:::-;;:::i;17514:178::-;;;;;;;;;;-1:-1:-1;17514:178:0;;;;;:::i;:::-;;:::i;6368:21::-;;;;;;;;;;-1:-1:-1;6368:21:0;;;;-1:-1:-1;;;;;6368:21:0;;;17700:92;;;;;;;;;;;;;:::i;17801:174::-;;;;;;;;;;-1:-1:-1;17801:174:0;;;;;:::i;:::-;;:::i;21203:167::-;;;;;;;;;;-1:-1:-1;21203:167:0;;;;;:::i;:::-;;:::i;12370:133::-;;;;;;;;;;-1:-1:-1;12370:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12472:19:0;;;12454:7;12472:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12370:133;20888:150;;;;;;;;;;-1:-1:-1;20888:150:0;;;;;:::i;:::-;;:::i;16787:284::-;;;;;;;;;;-1:-1:-1;16787:284:0;;;;;:::i;:::-;;:::i;7118:244::-;;;;;;;;;;-1:-1:-1;7118:244:0;;;;;:::i;:::-;;:::i;16658:119::-;;;;;;;;;;;;;:::i;10405:24::-;;;;;;;;;;-1:-1:-1;10405:24:0;;;;-1:-1:-1;;;;;10405:24:0;;;20445:435;;;;;;;;;;-1:-1:-1;20445:435:0;;;;;:::i;:::-;;:::i;12511:216::-;12615:10;12586:4;12603:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12603:32:0;;;;;;;;;;:41;;;12660:37;12586:4;;12603:32;;12660:37;;;;12638:6;160:25:1;;148:2;133:18;;14:177;12660:37:0;;;;;;;;-1:-1:-1;12715:4:0;12511:216;;;;;:::o;21378:150::-;21458:4;21514:6;21482:29;21502:8;21482:19;:29::i;:::-;:38;;21378:150;-1:-1:-1;;;21378:150:0:o;13029:370::-;-1:-1:-1;;;;;13149:19:0;;13129:4;13149:19;;;:11;:19;;;;;;;;13169:10;13149:31;;;;;;;;-1:-1:-1;;13149:52:0;13146:186;;13251:69;;;;;;;;;;;-1:-1:-1;;;13251:69:0;;;;;;;;-1:-1:-1;;;;;13251:19:0;;-1:-1:-1;13251:19:0;;;:11;:19;;;;;13271:10;13251:31;;;;;;;;;;:69;;13287:6;;13251:35;:69::i;:::-;-1:-1:-1;;;;;13217:19:0;;;;;;:11;:19;;;;;;;;13237:10;13217:31;;;;;;;:103;13146:186;13351:40;13365:6;13373:9;13384:6;13351:13;:40::i;:::-;13344:47;;13029:370;;;;;;:::o;21053:142::-;21181:4;;-1:-1:-1;;;;;21181:4:0;21106:7;12343:18;;;:9;:18;;;;;;21133:54;;21160:4;;-1:-1:-1;;;;;21160:4:0;12325:7;12343:18;;;:9;:18;;;;;;21133:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;21126:61;;21053:142;:::o;12735:122::-;12790:4;12814:35;12822:7;-1:-1:-1;;12814:7:0;:35::i;13411:139::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;;;;;;;;;13485:12:::1;::::0;13470::::1;:27:::0;;;13512:15:::1;:30:::0;13411:139::o;17079:217::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;17183:14:::1;:24:::0;;;;17218:13:::1;:22:::0;17251:11:::1;:21:::0;17079:217::o;6962:148::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;7069:1:::1;7053:6:::0;;7032:40:::1;::::0;-1:-1:-1;;;;;7053:6:0;;::::1;::::0;7032:40:::1;::::0;7069:1;;7032:40:::1;7100:1;7083:19:::0;;-1:-1:-1;;;;;;7083:19:0::1;::::0;;6962:148::o;19885:552::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;20056:12:::1;:28:::0;;;20095:7:::1;:18:::0;;;20124:12:::1;:28:::0;;;20163:6:::1;:16:::0;;;20190:7:::1;:18:::0;;;20230:73:::1;20200:8:::0;20230:59:::1;20172:7:::0;20230:59;20139:13;20230:59;20071:13;20105:8;20230:17:::1;:27::i;:::-;:31:::0;::::1;:46::i;:73::-;20219:8;:84:::0;20314:14:::1;:32:::0;;;20376:18:::1;20393:1;20331:15:::0;20376:18:::1;:::i;:::-;20365:8;;:29;20357:71;;;::::0;-1:-1:-1;;;20357:71:0;;5920:2:1;20357:71:0::1;::::0;::::1;5902:21:1::0;5959:2;5939:18;;;5932:30;5998:31;5978:18;;;5971:59;6047:18;;20357:71:0::1;5718:353:1::0;20357:71:0::1;19885:552:::0;;;;;;:::o;17305:201::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;17409:1:::1;17391:14;:19;;17383:28;;;::::0;::::1;;17476:4;17457:14;17442:12;;:29;;;;:::i;:::-;17441:39;;;;:::i;:::-;17423:15;:57:::0;-1:-1:-1;17305:201:0:o;12865:156::-;12945:4;12969:44;12983:10;12995:9;13006:6;12969:13;:44::i;17514:178::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;17618:1:::1;17602:12;:17;;17594:26;;;::::0;::::1;;17680:4;17663:12;17648;;:27;;;;:::i;:::-;17647:37;;;;:::i;:::-;17632:12;:52:::0;-1:-1:-1;17514:178:0:o;17700:92::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;17751:11:::1;:18:::0;;-1:-1:-1;;;;17751:18:0::1;-1:-1:-1::0;;;17751:18:0::1;::::0;;17700:92::o;17801:174::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;17890:15:::1;:25:::0;;;;17926:26:::1;:41:::0;17801:174::o;21203:167::-;21271:7;21298:64;21339:22;:20;:22::i;:::-;21321:4;;-1:-1:-1;;;;;21321:4:0;12325:7;12343:18;;;:9;:18;;;;;;21298:36;;21311:22;;21331:1;;21311:15;:19;;:22::i;:::-;21298:8;;:12;:36::i;:::-;:40;;:64::i;20888:150::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;20974:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;20974:22:0::1;-1:-1:-1::0;;;;20974:22:0;;::::1;::::0;;;::::1;::::0;;;21007:13:::1;:23:::0;20888:150::o;16787:284::-;16868:4;16895:6;16905:1;16895:11;16892:95;;16931:44;;-1:-1:-1;;;16931:44:0;;16969:4;16931:44;;;3339:51:1;-1:-1:-1;;;;;16931:29:0;;;;;3312:18:1;;16931:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16922:53;;16892:95;17033:21;;17004:59;;-1:-1:-1;;;17004:59:0;;-1:-1:-1;;;;;17033:21:0;;;17004:59;;;6612:51:1;6679:18;;;6672:34;;;17004:28:0;;;;;;6585:18:1;;17004:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7118:244::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7207:22:0;::::1;7199:73;;;::::0;-1:-1:-1;;;7199:73:0;;7169:2:1;7199:73:0::1;::::0;::::1;7151:21:1::0;7208:2;7188:18;;;7181:30;7247:34;7227:18;;;7220:62;-1:-1:-1;;;7298:18:1;;;7291:36;7344:19;;7199:73:0::1;6967:402:1::0;7199:73:0::1;7309:6;::::0;;7288:38:::1;::::0;-1:-1:-1;;;;;7288:38:0;;::::1;::::0;7309:6;::::1;::::0;7288:38:::1;::::0;::::1;7337:6;:17:::0;;-1:-1:-1;;;;;;7337:17:0::1;-1:-1:-1::0;;;;;7337:17:0;;;::::1;::::0;;;::::1;::::0;;7118:244::o;16658:119::-;16705:21;;16697:62;;-1:-1:-1;;;;;16705:21:0;;;;16737;16697:62;;;;;16705:21;16697:62;16705:21;16697:62;16737:21;16705;16697:62;;;;;;;;;;;;;;;;;;;;;16658:119::o;20445:435::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;20638:21:::1;:46:::0;;-1:-1:-1;;;;;;20638:46:0;;::::1;-1:-1:-1::0;;;;;20638:46:0;;::::1;;::::0;;;20695:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;20750:14:::1;:32:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;20793:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;20838:15:::1;:34:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;20445:435::o;5258:192::-;5344:7;5380:12;5372:6;;;;5364:29;;;;-1:-1:-1;;;5364:29:0;;;;;;;;:::i;:::-;-1:-1:-1;5404:9:0;5416:5;5420:1;5416;:5;:::i;:::-;5404:17;5258:192;-1:-1:-1;;;;;5258:192:0:o;13564:1243::-;13676:6;;13656:4;;13676:6;;13673:63;;;13692:41;13707:6;13715:9;13726:6;13692:14;:41::i;:::-;13685:48;;;;13673:63;-1:-1:-1;;;;;13752:22:0;;;;;;:14;:22;;;;;;;;13751:23;:53;;;;-1:-1:-1;;;;;;13779:25:0;;;;;;:14;:25;;;;;;;;13778:26;13751:53;13748:139;;;13828:11;;-1:-1:-1;;;13828:11:0;;;;13820:43;;;;-1:-1:-1;;;13820:43:0;;7709:2:1;13820:43:0;;;7691:21:1;7748:2;7728:18;;;7721:30;-1:-1:-1;;;7767:18:1;;;7760:50;7827:18;;13820:43:0;7507:344:1;13820:43:0;-1:-1:-1;;;;;13929:22:0;;;;;;:14;:22;;;;;;;;13928:23;:53;;;;-1:-1:-1;;;;;;13955:26:0;;13976:4;13955:26;;13928:53;:84;;;;-1:-1:-1;14007:4:0;;-1:-1:-1;;;;;13986:26:0;;;14007:4;;13986:26;;13928:84;:105;;;;-1:-1:-1;14029:4:0;;-1:-1:-1;;;;;14016:17:0;;;14029:4;;14016:17;;13928:105;:137;;;;-1:-1:-1;14050:15:0;;-1:-1:-1;;;;;14037:28:0;;;14050:15;;14037:28;;13928:137;:174;;;;-1:-1:-1;14082:20:0;;-1:-1:-1;;;;;14069:33:0;;;14082:20;;14069:33;;13928:174;:205;;;;-1:-1:-1;;;;;;14107:26:0;;;;;;:15;:26;;;;;;;;14106:27;13928:205;13924:397;;;-1:-1:-1;;;;;12343:18:0;;14149;12343;;;:9;:18;;;;;;14238:15;;14214:19;14227:6;12343:18;14214:19;:::i;:::-;14213:40;;14205:114;;;;-1:-1:-1;;;14205:114:0;;8188:2:1;14205:114:0;;;8170:21:1;8227:2;8207:18;;;8200:30;8266:34;8246:18;;;8239:62;8337:32;8317:18;;;8310:60;8387:19;;14205:114:0;7986:426:1;14205:114:0;14134:187;13924:397;14343:28;14356:6;14364;14343:12;:28::i;:::-;14388:16;:14;:16::i;:::-;14385:35;;;14407:10;:8;:10::i;:::-;14458:53;;;;;;;;;;;-1:-1:-1;;;14458:53:0;;;;;;;;-1:-1:-1;;;;;14458:17:0;;-1:-1:-1;14458:17:0;;;:9;:17;;;;;;;;:53;;14480:6;;14458:21;:53::i;:::-;-1:-1:-1;;;;;14438:17:0;;;;;;:9;:17;;;;;;;;:73;;;;14550:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;14573:22:0;;;;;;:11;:22;;;;;;;;14550:45;14549:93;;14608:34;14616:6;14624;14632:9;14608:7;:34::i;:::-;14549:93;;;14599:6;14549:93;-1:-1:-1;;;;;14676:20:0;;;;;;:9;:20;;;;;;14524:118;;-1:-1:-1;14676:40:0;;14524:118;14676:24;:40::i;:::-;-1:-1:-1;;;;;14653:20:0;;;;;;;:9;:20;;;;;;;:63;;;;14734:43;;;;;;-1:-1:-1;;;;;;;;;;;14734:43:0;;;14762:14;160:25:1;;148:2;133:18;;14:177;14734:43:0;;;;;;;;-1:-1:-1;14795:4:0;;13564:1243;-1:-1:-1;;;;13564:1243:0:o;5116:136::-;5174:7;5201:43;5205:1;5208;5201:43;;;;;;;;;;;;;;;;;:3;:43::i;4929:181::-;4987:7;;5019:5;5023:1;5019;:5;:::i;:::-;5007:17;;5048:1;5043;:6;;5035:46;;;;-1:-1:-1;;;5035:46:0;;8619:2:1;5035:46:0;;;8601:21:1;8658:2;8638:18;;;8631:30;8697:29;8677:18;;;8670:57;8744:18;;5035:46:0;8417:351:1;5456:250:0;5514:7;5538:1;5543;5538:6;5534:47;;-1:-1:-1;5568:1:0;5561:8;;5534:47;5593:9;5605:5;5609:1;5605;:5;:::i;:::-;5593:17;-1:-1:-1;5638:1:0;5629:5;5633:1;5593:17;5629:5;:::i;:::-;:10;5621:56;;;;-1:-1:-1;;;5621:56:0;;8975:2:1;5621:56:0;;;8957:21:1;9014:2;8994:18;;;8987:30;9053:34;9033:18;;;9026:62;-1:-1:-1;;;9104:18:1;;;9097:31;9145:19;;5621:56:0;8773:397:1;5712:132:0;5770:7;5797:39;5801:1;5804;5797:39;;;;;;;;;;;;;;;;;:3;:39::i;14819:330::-;14949:53;;;;;;;;;;;-1:-1:-1;;;14949:53:0;;;;;;;;-1:-1:-1;;;;;14949:17:0;;14912:4;14949:17;;;:9;:17;;;;;;;:53;;14971:6;;14949:21;:53::i;:::-;-1:-1:-1;;;;;14929:17:0;;;;;;;:9;:17;;;;;;:73;;;;15036:20;;;;;;;:32;;15061:6;15036:24;:32::i;:::-;-1:-1:-1;;;;;15013:20:0;;;;;;;:9;:20;;;;;;;:55;;;;15084:35;;;;;;-1:-1:-1;;;;;;;;;;;15084:35:0;;;15112:6;160:25:1;;148:2;133:18;;14:177;15084:35:0;;;;;;;;-1:-1:-1;15137:4:0;14819:330;;;;;:::o;15157:166::-;15254:12;;15244:6;:22;;:49;;;-1:-1:-1;;;;;;15270:23:0;;;;;;:15;:23;;;;;;;;15244:49;15236:79;;;;-1:-1:-1;;;15236:79:0;;9377:2:1;15236:79:0;;;9359:21:1;9416:2;9396:18;;;9389:30;-1:-1:-1;;;9435:18:1;;;9428:47;9492:18;;15236:79:0;9175:341:1;15236:79:0;15157:166;;:::o;16449:197::-;16536:4;;16498;;-1:-1:-1;;;;;16536:4:0;16522:10;:18;;;;:38;;-1:-1:-1;16554:6:0;;;;16553:7;16522:38;:62;;;;-1:-1:-1;16573:11:0;;-1:-1:-1;;;16573:11:0;;;;16522:62;:116;;;;-1:-1:-1;;16625:13:0;;;16615:4;16597:24;;;;:9;:24;;;;;;;;:41;;;16449:197::o;18010:1861::-;10690:6;:13;;-1:-1:-1;;10690:13:0;10699:4;10690:13;;;18105:15:::1;::::0;18122:26:::1;::::0;10690:6;;18089:60:::1;::::0;:15:::1;:60::i;:::-;:79;;18156:12;;18089:79;;;18152:1;18089:79;18059:109;;18179:23;18205:59;18262:1;18205:52;18248:8;;18205:38;18223:19;18205:13;;:17;;:38;;;;:::i;:59::-;18179:85;;18275:20;18298:34;18316:15;18298:13;;:17;;:34;;;;:::i;:::-;18369:16;::::0;;18383:1:::1;18369:16:::0;;;;;::::1;::::0;;18275:57;;-1:-1:-1;18345:21:0::1;::::0;18369:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18369:16:0::1;18345:40;;18414:4;18396;18401:1;18396:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18396:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;18440:4:::1;::::0;18430:7;;18440:4;::::1;::::0;18430;;18440;;18430:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;18430:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;18515:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;18515:188:0;;18481:21:::1;::::0;18515:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;18587:12;;18457:21:::1;::::0;18630:4;;18657::::1;::::0;18677:15:::1;::::0;18515:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18716:17;18736:40;18762:13;18736:21;:25;;:40;;;;:::i;:::-;18716:60:::0;-1:-1:-1;18789:19:0::1;18811:40;18824:26;:19:::0;18848:1:::1;18824:23;:26::i;:::-;18811:8;::::0;;:12:::1;:40::i;:::-;18789:62:::0;-1:-1:-1;18872:26:0::1;18901:58;18957:1;18901:51;18789:62:::0;18901:51;:9;18915:19;18901:13:::1;:34::i;:58::-;18872:87;;18970:26;18999:44;19031:11;18999:27;19013:12;;18999:9;:13;;:27;;;;:::i;:44::-;18970:73;;19054:21;19078:39;19105:11;19078:22;19092:7;;19078:9;:13;;:22;;;;:::i;:39::-;19054:63;;19128:20;19151:38;19177:11;19151:21;19165:6;;19151:9;:13;;:21;;;;:::i;:38::-;19231:20;::::0;19223:65:::1;::::0;19128:61;;-1:-1:-1;19203:15:0::1;::::0;-1:-1:-1;;;;;19231:20:0;;::::1;::::0;19265:18;;19203:15;19223:65;19203:15;19223:65;19265:18;19231:20;19223:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;19323:14:0::1;::::0;19315:53:::1;::::0;19202:86;;-1:-1:-1;;;;;;19323:14:0::1;::::0;19351:12;;19315:53:::1;::::0;;;19351:12;19323:14;19315:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;19403:15:0::1;::::0;19395:55:::1;::::0;19299:69;;-1:-1:-1;;;;;;19403:15:0::1;::::0;19432:13;;19395:55:::1;::::0;;;19432:13;19403:15;19395:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;19484:5:0::1;::::0;-1:-1:-1;;19505:19:0;;;-1:-1:-1;19502:362:0::1;;19540:6;::::0;19714:21:::1;::::0;19540:244:::1;::::0;-1:-1:-1;;;19540:244:0;;19616:4:::1;19540:244;::::0;::::1;11321:34:1::0;11371:18;;;11364:34;;;19540:6:0::1;11414:18:1::0;;;11407:34;;;11457:18;;;11450:34;-1:-1:-1;;;;;19714:21:0;;::::1;11500:19:1::0;;;11493:44;19754:15:0::1;11553:19:1::0;;;11546:35;19540:6:0;::::1;::::0;:22:::1;::::0;19570:18;;11255:19:1;;19540:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;19804:48:0::1;::::0;;12077:25:1;;;12133:2;12118:18;;12111:34;;;19804:48:0::1;::::0;-1:-1:-1;12050:18:1;19804:48:0::1;;;;;;;19502:362;-1:-1:-1::0;;10708:6:0;:14;;-1:-1:-1;;10708:14:0;;;-1:-1:-1;;;;;;;;;;18010:1861:0:o;15453:988::-;15587:11;;15627:4;;15539:7;;15587:11;-1:-1:-1;;;;;15627:4:0;;;15614:17;;;;15611:148;;-1:-1:-1;15658:14:0;;15611:148;;;15703:4;;-1:-1:-1;;;;;15703:4:0;;;15693:14;;;;15690:69;;-1:-1:-1;15734:13:0;;15690:69;15771:17;15791:59;15829:14;;15846:3;15829:20;;;;:::i;:::-;15791:33;15816:7;15791:20;15802:8;;15791:6;:10;;:20;;;;:::i;:59::-;15771:79;;15861:18;15882:36;15909:8;;15882:22;15896:7;;15882:9;:13;;:22;;;;:::i;:36::-;15861:57;-1:-1:-1;15929:22:0;15954:25;:9;15861:57;15954:13;:25::i;:::-;16037:4;16019:24;;;;:9;:24;;;;;;15929:50;;-1:-1:-1;16019:44:0;;15929:50;16019:28;:44::i;:::-;16010:4;15992:24;;;;:9;:24;;;;;;:71;;;;16113:15;;-1:-1:-1;;;;;16113:15:0;16103:26;;;;:42;;16134:10;16103:30;:42::i;:::-;16084:15;;-1:-1:-1;;;;;16084:15:0;;;16074:26;;;;:9;:26;;;;;;;;;:71;;;;16161:47;160:25:1;;;16186:4:0;;16161:47;;;;-1:-1:-1;;;;;;;;;;;16161:47:0;133:18:1;16161:47:0;;;;;;;16242:14;;16239:154;;16287:12;;:28;;16304:10;16287:16;:28::i;:::-;16272:12;:43;16352:4;;16335:34;;160:25:1;;;-1:-1:-1;;;;;16352:4:0;;;;16335:34;;;-1:-1:-1;;;;;;;;;;;16335:34:0;148:2:1;133:18;16335:34:0;;;;;;;16239:154;16412:21;:6;16423:9;16412:10;:21::i;:::-;16405:28;15453:988;-1:-1:-1;;;;;;;;15453:988:0:o;5850:189::-;5936:7;5971:12;5964:5;5956:28;;;;-1:-1:-1;;;5956:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5995:9:0;6007:5;6011:1;6007;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;941:173::-;1009:20;;-1:-1:-1;;;;;1058:31:1;;1048:42;;1038:70;;1104:1;1101;1094:12;1038:70;941:173;;;:::o;1119:254::-;1187:6;1195;1248:2;1236:9;1227:7;1223:23;1219:32;1216:52;;;1264:1;1261;1254:12;1216:52;1287:29;1306:9;1287:29;:::i;:::-;1277:39;1363:2;1348:18;;;;1335:32;;-1:-1:-1;;;1119:254:1:o;1378:248::-;1446:6;1454;1507:2;1495:9;1486:7;1482:23;1478:32;1475:52;;;1523:1;1520;1513:12;1475:52;-1:-1:-1;;1546:23:1;;;1616:2;1601:18;;;1588:32;;-1:-1:-1;1378:248:1:o;1631:328::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1816:29;1835:9;1816:29;:::i;:::-;1806:39;;1864:38;1898:2;1887:9;1883:18;1864:38;:::i;:::-;1854:48;;1949:2;1938:9;1934:18;1921:32;1911:42;;1631:328;;;;;:::o;2153:186::-;2212:6;2265:2;2253:9;2244:7;2240:23;2236:32;2233:52;;;2281:1;2278;2271:12;2233:52;2304:29;2323:9;2304:29;:::i;2344:316::-;2421:6;2429;2437;2490:2;2478:9;2469:7;2465:23;2461:32;2458:52;;;2506:1;2503;2496:12;2458:52;-1:-1:-1;;2529:23:1;;;2599:2;2584:18;;2571:32;;-1:-1:-1;2650:2:1;2635:18;;;2622:32;;2344:316;-1:-1:-1;2344:316:1:o;2665:523::-;2769:6;2777;2785;2793;2801;2809;2862:3;2850:9;2841:7;2837:23;2833:33;2830:53;;;2879:1;2876;2869:12;2830:53;-1:-1:-1;;2902:23:1;;;2972:2;2957:18;;2944:32;;-1:-1:-1;3023:2:1;3008:18;;2995:32;;3074:2;3059:18;;3046:32;;-1:-1:-1;3125:3:1;3110:19;;3097:33;;-1:-1:-1;3177:3:1;3162:19;3149:33;;-1:-1:-1;2665:523:1;-1:-1:-1;2665:523:1:o;3401:180::-;3460:6;3513:2;3501:9;3492:7;3488:23;3484:32;3481:52;;;3529:1;3526;3519:12;3481:52;-1:-1:-1;3552:23:1;;3401:180;-1:-1:-1;3401:180:1:o;3586:260::-;3654:6;3662;3715:2;3703:9;3694:7;3690:23;3686:32;3683:52;;;3731:1;3728;3721:12;3683:52;3754:29;3773:9;3754:29;:::i;:::-;3744:39;;3802:38;3836:2;3825:9;3821:18;3802:38;:::i;:::-;3792:48;;3586:260;;;;;:::o;3851:118::-;3937:5;3930:13;3923:21;3916:5;3913:32;3903:60;;3959:1;3956;3949:12;3974:309;4039:6;4047;4100:2;4088:9;4079:7;4075:23;4071:32;4068:52;;;4116:1;4113;4106:12;4068:52;4155:9;4142:23;4174:28;4196:5;4174:28;:::i;4514:484::-;4609:6;4617;4625;4633;4641;4694:3;4682:9;4673:7;4669:23;4665:33;4662:53;;;4711:1;4708;4701:12;4662:53;4734:29;4753:9;4734:29;:::i;:::-;4724:39;;4782:38;4816:2;4805:9;4801:18;4782:38;:::i;:::-;4772:48;;4839:38;4873:2;4862:9;4858:18;4839:38;:::i;:::-;4829:48;;4896:38;4930:2;4919:9;4915:18;4896:38;:::i;:::-;4886:48;;4953:39;4987:3;4976:9;4972:19;4953:39;:::i;:::-;4943:49;;4514:484;;;;;;;;:::o;5003:356::-;5205:2;5187:21;;;5224:18;;;5217:30;5283:34;5278:2;5263:18;;5256:62;5350:2;5335:18;;5003:356::o;5364:127::-;5425:10;5420:3;5416:20;5413:1;5406:31;5456:4;5453:1;5446:15;5480:4;5477:1;5470:15;5496:217;5536:1;5562;5552:132;;5606:10;5601:3;5597:20;5594:1;5587:31;5641:4;5638:1;5631:15;5669:4;5666:1;5659:15;5552:132;-1:-1:-1;5698:9:1;;5496:217::o;6076:168::-;6149:9;;;6180;;6197:15;;;6191:22;;6177:37;6167:71;;6218:18;;:::i;6249:184::-;6319:6;6372:2;6360:9;6351:7;6347:23;6343:32;6340:52;;;6388:1;6385;6378:12;6340:52;-1:-1:-1;6411:16:1;;6249:184;-1:-1:-1;6249:184:1:o;6717:245::-;6784:6;6837:2;6825:9;6816:7;6812:23;6808:32;6805:52;;;6853:1;6850;6843:12;6805:52;6885:9;6879:16;6904:28;6926:5;6904:28;:::i;7374:128::-;7441:9;;;7462:11;;;7459:37;;;7476:18;;:::i;7856:125::-;7921:9;;;7942:10;;;7939:36;;;7955:18;;:::i;9653:127::-;9714:10;9709:3;9705:20;9702:1;9695:31;9745:4;9742:1;9735:15;9769:4;9766:1;9759:15;9785:980;10047:4;10095:3;10084:9;10080:19;10126:6;10115:9;10108:25;10152:2;10190:6;10185:2;10174:9;10170:18;10163:34;10233:3;10228:2;10217:9;10213:18;10206:31;10257:6;10292;10286:13;10323:6;10315;10308:22;10361:3;10350:9;10346:19;10339:26;;10400:2;10392:6;10388:15;10374:29;;10421:1;10431:195;10445:6;10442:1;10439:13;10431:195;;;10510:13;;-1:-1:-1;;;;;10506:39:1;10494:52;;10601:15;;;;10566:12;;;;10542:1;10460:9;10431:195;;;-1:-1:-1;;;;;;;10682:32:1;;;;10677:2;10662:18;;10655:60;-1:-1:-1;;;10746:3:1;10731:19;10724:35;10643:3;9785:980;-1:-1:-1;;;9785:980:1:o;11592:306::-;11680:6;11688;11696;11749:2;11737:9;11728:7;11724:23;11720:32;11717:52;;;11765:1;11762;11755:12;11717:52;11794:9;11788:16;11778:26;;11844:2;11833:9;11829:18;11823:25;11813:35;;11888:2;11877:9;11873:18;11867:25;11857:35;;11592:306;;;;;:::o

Swarm Source

ipfs://58f50d47b644da8b5ea866ef5f5c331f28e108f7f26d52acb2096d811187923c

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.