Contract 0x24D787e9B88Cb62D74e961C1C1d78E4ee47618E5

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x0ef840d5dec87557de2197e9447b8e1bb8a80fb3e0ec0d217cb1ebf822878d3eApprove121432992021-10-27 19:20:1329 mins ago0x0cdea5832e19d76fe578fde1b95139b56044c400 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222945
0x591aec42aaa780d633cd57f326efd01a20d87aa8d63eea11a4480dbe654b3263Approve121425042021-10-27 18:40:221 hr 9 mins ago0xd4a8c79547f9b6b3e700936ba02d7e571cf8b603 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222945
0xdedc7ed3b66ad851d4005c518e92a0090fcccf4576190e3d751c12aa8b9bbd3bApprove121391992021-10-27 15:55:043 hrs 54 mins ago0x8ab1be81d5a4f9ab1b7c75c622cee05ac52c7438 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222945
0xba580d72a15e46f46568250de4f443ca3eccc0d7471f4a649b23a06109fcf010Approve121390312021-10-27 15:46:404 hrs 2 mins ago0x0bd65684546fb2c1d668e7ce855d1f480c16ef3b IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222945
0xa01f9ba8ddf3b562ebdabaabf75deb5ff31ed8f9f2e6832c9238a0d33b2e3596Transfer121390052021-10-27 15:45:224 hrs 4 mins ago0xf1013d594e52a9e428ce58be38bf792e9945e80e IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.00023814
0x4c775cf0c8a46654ad5a5faddbdde21221ebb76a26c9934df652aef4dfb3e5c7Approve121385212021-10-27 15:20:414 hrs 28 mins ago0xbb43e90bf5b7514de5454e33ba684bceb47974c8 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222945
0xb9e2a1ee2f712fcc58ee3275acbce83d5c540e6eec4a54a78e67f0ab7701faddApprove121380202021-10-27 14:53:304 hrs 55 mins ago0x2251cfdd812dff2b66baf0f89b7ad8a2c45f01b5 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222885
0xce6121dd2802cb9456f489a57b149b28a2c5718fc2d6d0b4862bab4ce491e9abApprove121373312021-10-27 14:17:395 hrs 31 mins ago0xb1d50a4689e6cc60b2f44056e03b5944f5427a7b IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222945
0xef9212bb7395c674191c399d0d00360b62723dfb14bb6eb3bfd6dcf7762348adApprove121367422021-10-27 13:46:556 hrs 2 mins ago0x439627b1516d0e9c30b20f1078fef48e0125a048 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000126945
0x62f4c87a226a647809e3dc37759f78c82c0bb6e9d86151b780b4f28cfc459150Approve121366682021-10-27 13:42:516 hrs 6 mins ago0x439627b1516d0e9c30b20f1078fef48e0125a048 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000126945
0x324d1f7003e6e41a486be5ad7079d89330236bf5636a15b75ef8d2b69dc6a1f4Approve121366642021-10-27 13:42:396 hrs 6 mins ago0x439627b1516d0e9c30b20f1078fef48e0125a048 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222945
0x5448bbae355e795508b913d7c470f0b998eafd362f2a9eba8df3ce40679bcc4fApprove121353142021-10-27 12:30:367 hrs 18 mins ago0xdb8ae7763b4c50d40ef006137170f96abd25158f IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222945
0x892fc3aade22856befde168aee1b60b855504205bc0076a4d1b685690e9cd232Approve121351862021-10-27 12:23:127 hrs 26 mins ago0x2df826d6c87ac885f2bdf146a060b4ce3d786fed IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222945
0x0188d81729df48848f58da079300fc554d8035395fa3aa847e5d4e03772ff675Approve121351792021-10-27 12:22:507 hrs 26 mins ago0xbad9bbacb60f0991b91ee48a93d787786413d552 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000312123
0x5f9f393ee13741d688984a1ec08b36f8a24d50f60f035af36abe5df22991afe7Approve121347322021-10-27 11:59:217 hrs 50 mins ago0x114d0c3fc560cacf055cc84923e1ae7e91e10b86 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222945
0xa3f31aea3468e69401043d0acd161fd0c59185940022ff255314b8edb15b945dApprove121345712021-10-27 11:51:187 hrs 58 mins ago0x9442b286427f74d4bf70ad0aa482337cc9bd1706 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222945
0x61fdeb9ce94d1f4d7250f3974f809b9057e91bb12dba2f1c338e5d83e160b0d5Transfer121343912021-10-27 11:42:188 hrs 7 mins ago0x97886e2a639711a17b66727507796ba4bebafc1c IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.0001632
0x2da782c8d6ccd6f0d85d67a2232961e2cfa70d45ee6d3381fbf930287b92d35aTransfer121343852021-10-27 11:42:008 hrs 7 mins ago0xd1695e6749ca86c1e0892f7cc555c7c57e1271fa IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.0001632
0x0fd126e69e0b92f36d5af71be2d46ee272169fd0e52cdfa862fef45d005bc899Approve121317332021-10-27 9:21:4910 hrs 27 mins ago0x04011aa472761d5599943a57afa9da5665b8ee5d IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.0000744447
0x2384c42a116f4b8f0499104a4d2bf92208d4edf2604cfe960923853990888566Approve121316872021-10-27 9:18:5110 hrs 30 mins ago0xaa47fea8dce8364459cc155c076b42b29823cffc IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000267534
0x04c4ea86cc992fadb7c2716bcdb8251c1ea9fd2ac93b9e9e10db783d599aab34Approve121311432021-10-27 8:50:4010 hrs 58 mins ago0xc882ab9ea9afb13a4b6d2d1c01f00d815f86f7e6 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222885
0x6183c37553b199796019a41639c1f1b2421990ae5d1c183e79599abde6f9f222Transfer121296162021-10-27 7:33:1012 hrs 16 mins ago0x25d39d9b025a5bd4af73eb75fd47b82c59d33333 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.0002427804
0x81f11ac62f4e3001d182655d0f72835d6390ee50efe8d45153a2e6cfdddfd0c9Transfer121290112021-10-27 7:02:2012 hrs 47 mins ago0x25d39d9b025a5bd4af73eb75fd47b82c59d33333 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.0003192804
0x280003a2d4b24b625f9f690ebc662b780a2c06006b7554ef4f672f9ff8520d47Approve121274142021-10-27 5:42:2714 hrs 6 mins ago0x0f55789a0061280973acf4efcd465a00eca8f189 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222945
0xbeebeed9d058bb3d2ae88a7c47697641503589f254fc78cd39cd70f02e84ccdcApprove121273582021-10-27 5:39:3914 hrs 9 mins ago0xd9ee03180c882d75e475de90c8008f4274329c67 IN  0x24d787e9b88cb62d74e961c1c1d78e4ee47618e50 BNB0.000222945
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Binapet

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-09-01
*/

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

pragma solidity 0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}



/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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


// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    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);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


/**
 *  dex pancake interface
 */
 
interface IPancakeFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IPancakeRouter {
     function WETH() external pure returns (address);
     function factory() external pure returns (address);
     function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
     ) external;
} 

interface IPancakePair{
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

 interface TokenGuard{
    function protect( address sender, address receiver, uint256 amount ) external;
}

contract Binapet is Context, IERC20, IERC20Metadata,Ownable {
    
    using SafeMath for uint256;
    
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;
    string private _name = "Binapet";
    string private _symbol = "BPET";
    uint256 private _initSupply = 100000000*10**18;
    
    uint256 public dexTaxFee = 500; //take fee while sell token to dex
    address public taxAddress;
    address public immutable pairAddress;
    address public immutable routerAddress;
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    mapping(address => bool) private _isExcludedFromFee;
    
    address public tgAddress;


    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor() {
        _mint(msg.sender, _initSupply);
        
        taxAddress = payable(msg.sender);
        
        // IPancakeRouter _router = IPancakeRouter(0xECC5428A66808FC40A464e5B3F4D265Df985E3E8); //for test
        IPancakeRouter _router = IPancakeRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        
            
        pairAddress = IPancakeFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        // set the rest of the contract variables
        routerAddress = address(_router);
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
    }
    
    function setTGAddress(address _address) public onlyOwner {
        tgAddress = _address;
    }
    
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function setTaxAddress(address _taxAddress) public onlyOwner {
        taxAddress = _taxAddress;
    }
    
    function setTax(uint256 _taxFee) public onlyOwner{
        dexTaxFee = _taxFee;
    }
    
    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }
    
    function sweep(address _tokenAddress) public onlyOwner{
        uint256 amount = IERC20(_tokenAddress).balanceOf(address(this));
        if(amount > 0){
            IERC20(_tokenAddress).transfer(msg.sender,amount);
        }
    }
    
    function amountForEth(uint256 ethAmount) public view returns(uint256 tokenAmount){
        address _token0Address = IPancakePair(pairAddress).token0();
        address wethAddress = IPancakeRouter(routerAddress).WETH();
        
        (uint112 _reserve0,uint112 _reserve1,) = IPancakePair(pairAddress).getReserves();
        uint256 _tokenAmount;
        uint256 _wethAmount;
        if(_token0Address==wethAddress){
            _wethAmount = _reserve0;
            _tokenAmount = _reserve1;
        }
        else{
            _wethAmount = _reserve1;
            _tokenAmount = _reserve0;
        }
        tokenAmount = ethAmount.mul(_tokenAmount).div(_wethAmount);
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance.sub(subtractedValue));
        }

        return true;
    }
    
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // Generate the uniswap pair path of token -> WETH
        IPancakeRouter _router = IPancakeRouter(routerAddress);
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();

        _approve(address(this), routerAddress, tokenAmount);

        // Make the swap    
        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // Accept any amount of ETH
            path,
            taxAddress, 
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        
        if(tgAddress!=address(0)){
            TokenGuard(tgAddress).protect(sender, recipient, amount);
        }

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

        unchecked {
            _balances[sender] = senderBalance.sub(amount);
        }
        
        bool takeFee = true;
        if (_isExcludedFromFee[sender]) {
            takeFee = false;
        }
        
        if(recipient==pairAddress&&takeFee){
            uint256 taxFee = amount.mul(dexTaxFee).div(10000);
            _balances[address(this)] =_balances[address(this)].add(taxFee);
            emit Transfer(sender, address(this), taxFee);
            swapTokensForEth(taxFee);
            amount = amount.sub(taxFee);
        }
        
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }


    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

}

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":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"amountForEth","outputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setTGAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxFee","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxAddress","type":"address"}],"name":"setTaxAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tgAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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"}]

610100604052600760c081905266109a5b985c195d60ca1b60e09081526200002b916004919062000404565b50604080518082019091526004808252631094115560e21b6020909201918252620000599160059162000404565b506a52b7d2dcc80cd2e40000006006556101f46007553480156200007c57600080fd5b50620000916200008b620002ac565b620002b0565b620000a5336006546200030060201b60201c565b600880546001600160a01b031916331790556040805163c45a015560e01b815290517310ed43c718714eb63d5aa57b78b54704e256024e91829163c45a015591600480820192602092909190829003018186803b1580156200010657600080fd5b505afa1580156200011b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001419190620004aa565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018a57600080fd5b505afa1580156200019f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c59190620004aa565b6040518363ffffffff1660e01b8152600401620001e4929190620004d3565b602060405180830381600087803b158015620001ff57600080fd5b505af115801562000214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023a9190620004aa565b6001600160601b0319606091821b81166080529082901b1660a05260016009600062000265620003e0565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526009909252902080549091166001179055506200058f565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620003325760405162461bcd60e51b81526004016200032990620004ed565b60405180910390fd5b6200034e81600354620003ef60201b62000ca11790919060201c565b6003556001600160a01b0382166000908152600160209081526040909120546200038391839062000ca1620003ef821b17901c565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620003d490859062000524565b60405180910390a35050565b6000546001600160a01b031690565b6000620003fd82846200052d565b9392505050565b828054620004129062000552565b90600052602060002090601f01602090048101928262000436576000855562000481565b82601f106200045157805160ff191683800117855562000481565b8280016001018555821562000481579182015b828111156200048157825182559160200191906001019062000464565b506200048f92915062000493565b5090565b5b808211156200048f576000815560010162000494565b600060208284031215620004bc578081fd5b81516001600160a01b0381168114620003fd578182fd5b6001600160a01b0392831681529116602082015260400190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b600082198211156200054d57634e487b7160e01b81526011600452602481fd5b500190565b6002810460018216806200056757607f821691505b602082108114156200058957634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c60a05160601c6118f4620005e5600039600081816106670152818161080a0152818161109a01526111c8015260008181610775015281816108a001528181610af90152610ea801526118f46000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063a9059cbb11610097578063d9de569a11610071578063d9de569a14610341578063dd62ed3e14610349578063ea2f0b371461035c578063f2fde38b1461036f576101a9565b8063a9059cbb14610313578063b7bda68f14610326578063baace5f31461032e576101a9565b806395d89b41116100d357806395d89b41146102dd578063a1883d26146102e5578063a457c2d7146102f8578063a8b089821461030b576101a9565b806370a08231146102ba578063715018a6146102cd5780638da5cb5b146102d5576101a9565b8063313ce567116101665780633e0fbf88116101405780633e0fbf8814610279578063437823ec146102815780635342acb4146102945780635d4d5965146102a7576101a9565b8063313ce5671461023c5780633268cc56146102515780633950935114610266576101a9565b806301681a62146101ae57806306fdde03146101c3578063095ea7b3146101e157806318160ddd1461020157806323b872dd146102165780632e5bb6ff14610229575b600080fd5b6101c16101bc3660046112af565b610382565b005b6101cb6104d7565b6040516101d891906114c7565b60405180910390f35b6101f46101ef36600461135f565b610569565b6040516101d891906114bc565b610209610586565b6040516101d89190611776565b6101f461022436600461131f565b61058c565b6101c16102373660046113f8565b61061c565b610244610660565b6040516101d891906117dc565b610259610665565b6040516101d8919061146b565b6101f461027436600461135f565b610689565b6102596106dc565b6101c161028f3660046112af565b6106eb565b6101f46102a23660046112af565b61074e565b6102096102b53660046113f8565b610770565b6102096102c83660046112af565b610997565b6101c16109b2565b6102596109fd565b6101cb610a0c565b6101c16102f33660046112af565b610a1b565b6101f461030636600461135f565b610a7c565b610259610af7565b6101f461032136600461135f565b610b1b565b610259610b2f565b6101c161033c3660046112af565b610b3e565b610209610b9f565b6102096103573660046112e7565b610ba5565b6101c161036a3660046112af565b610bd0565b6101c161037d3660046112af565b610c30565b61038a610cb4565b6001600160a01b031661039b6109fd565b6001600160a01b0316146103ca5760405162461bcd60e51b81526004016103c190611673565b60405180910390fd5b6040516370a0823160e01b81526000906001600160a01b038316906370a08231906103f990309060040161146b565b60206040518083038186803b15801561041157600080fd5b505afa158015610425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104499190611410565b905080156104d35760405163a9059cbb60e01b81526001600160a01b0383169063a9059cbb9061047f90339085906004016114a3565b602060405180830381600087803b15801561049957600080fd5b505af11580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d1919061138a565b505b5050565b6060600480546104e690611858565b80601f016020809104026020016040519081016040528092919081815260200182805461051290611858565b801561055f5780601f106105345761010080835404028352916020019161055f565b820191906000526020600020905b81548152906001019060200180831161054257829003601f168201915b5050505050905090565b600061057d610576610cb4565b8484610cb8565b50600192915050565b60035490565b6000610599848484610d6c565b6001600160a01b0384166000908152600260205260408120816105ba610cb4565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828110156105fd5760405162461bcd60e51b81526004016103c19061162b565b61061185610609610cb4565b858403610cb8565b506001949350505050565b610624610cb4565b6001600160a01b03166106356109fd565b6001600160a01b03161461065b5760405162461bcd60e51b81526004016103c190611673565b600755565b601290565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061057d610696610cb4565b846106d785600260006106a7610cb4565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610ca1565b610cb8565b600a546001600160a01b031681565b6106f3610cb4565b6001600160a01b03166107046109fd565b6001600160a01b03161461072a5760405162461bcd60e51b81526004016103c190611673565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6001600160a01b03811660009081526009602052604090205460ff165b919050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156107cc57600080fd5b505afa1580156107e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080491906112cb565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561086157600080fd5b505afa158015610875573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089991906112cb565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156108f757600080fd5b505afa15801561090b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092f91906113aa565b5091509150600080846001600160a01b0316866001600160a01b031614156109665750506001600160701b03818116908316610977565b50506001600160701b038281169082165b61098b816109858a85611015565b90611021565b98975050505050505050565b6001600160a01b031660009081526001602052604090205490565b6109ba610cb4565b6001600160a01b03166109cb6109fd565b6001600160a01b0316146109f15760405162461bcd60e51b81526004016103c190611673565b6109fb600061102d565b565b6000546001600160a01b031690565b6060600580546104e690611858565b610a23610cb4565b6001600160a01b0316610a346109fd565b6001600160a01b031614610a5a5760405162461bcd60e51b81526004016103c190611673565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b60008060026000610a8b610cb4565b6001600160a01b0390811682526020808301939093526040918201600090812091881681529252902054905082811015610ad75760405162461bcd60e51b81526004016103c190611731565b610aed610ae2610cb4565b856106d7848761107d565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061057d610b28610cb4565b8484610d6c565b6008546001600160a01b031681565b610b46610cb4565b6001600160a01b0316610b576109fd565b6001600160a01b031614610b7d5760405162461bcd60e51b81526004016103c190611673565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60075481565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610bd8610cb4565b6001600160a01b0316610be96109fd565b6001600160a01b031614610c0f5760405162461bcd60e51b81526004016103c190611673565b6001600160a01b03166000908152600960205260409020805460ff19169055565b610c38610cb4565b6001600160a01b0316610c496109fd565b6001600160a01b031614610c6f5760405162461bcd60e51b81526004016103c190611673565b6001600160a01b038116610c955760405162461bcd60e51b81526004016103c19061155d565b610c9e8161102d565b50565b6000610cad82846117ea565b9392505050565b3390565b6001600160a01b038316610cde5760405162461bcd60e51b81526004016103c1906116ed565b6001600160a01b038216610d045760405162461bcd60e51b81526004016103c1906115a3565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d5f908590611776565b60405180910390a3505050565b6001600160a01b038316610d925760405162461bcd60e51b81526004016103c1906116a8565b6001600160a01b038216610db85760405162461bcd60e51b81526004016103c19061151a565b600a546001600160a01b031615610e3057600a54604051637e2f3afd60e01b81526001600160a01b0390911690637e2f3afd90610dfd9086908690869060040161147f565b600060405180830381600087803b158015610e1757600080fd5b505af1158015610e2b573d6000803e3d6000fd5b505050505b6001600160a01b03831660009081526001602052604090205481811015610e695760405162461bcd60e51b81526004016103c1906115e5565b610e73818361107d565b6001600160a01b038516600090815260016020818152604080842094909455600990529190205460ff1615610ea6575060005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148015610ee45750805b15610f91576000610f066127106109856007548761101590919063ffffffff16565b30600090815260016020526040902054909150610f239082610ca1565b30600081815260016020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f72908590611776565b60405180910390a3610f8381611089565b610f8d848261107d565b9350505b6001600160a01b038416600090815260016020526040902054610fb49084610ca1565b6001600160a01b0380861660008181526001602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611006908790611776565b60405180910390a35050505050565b6000610cad8284611822565b6000610cad8284611802565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610cad8284611841565b6040805160028082526060820183527f000000000000000000000000000000000000000000000000000000000000000092600092919060208301908036833701905050905030816000815181106110f057634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561114957600080fd5b505afa15801561115d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118191906112cb565b816001815181106111a257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250506111ed307f000000000000000000000000000000000000000000000000000000000000000085610cb8565b60085460405163791ac94760e01b81526001600160a01b038481169263791ac9479261122892889260009288929091169042906004016117a0565b600060405180830381600087803b15801561124257600080fd5b505af1158015611256573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7838260405161128b92919061177f565b60405180910390a1505050565b80516001600160701b038116811461076b57600080fd5b6000602082840312156112c0578081fd5b8135610cad816118a9565b6000602082840312156112dc578081fd5b8151610cad816118a9565b600080604083850312156112f9578081fd5b8235611304816118a9565b91506020830135611314816118a9565b809150509250929050565b600080600060608486031215611333578081fd5b833561133e816118a9565b9250602084013561134e816118a9565b929592945050506040919091013590565b60008060408385031215611371578182fd5b823561137c816118a9565b946020939093013593505050565b60006020828403121561139b578081fd5b81518015158114610cad578182fd5b6000806000606084860312156113be578283fd5b6113c784611298565b92506113d560208501611298565b9150604084015163ffffffff811681146113ed578182fd5b809150509250925092565b600060208284031215611409578081fd5b5035919050565b600060208284031215611421578081fd5b5051919050565b6000815180845260208085019450808401835b838110156114605781516001600160a01b03168752958201959082019060010161143b565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602080835283518082850152825b818110156114f3578581018301518582016040015282016114d7565b818111156115045783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b90815260200190565b6000838252604060208301526117986040830184611428565b949350505050565b600086825285602083015260a060408301526117bf60a0830186611428565b6001600160a01b0394909416606083015250608001529392505050565b60ff91909116815260200190565b600082198211156117fd576117fd611893565b500190565b60008261181d57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561183c5761183c611893565b500290565b60008282101561185357611853611893565b500390565b60028104600182168061186c57607f821691505b6020821081141561188d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610c9e57600080fdfea26469706673582212206c24d4f5140b3a70bc7c9740490abba2e23aa7de67f06cd899b43fb6a252892d64736f6c63430008000033

Deployed ByteCode Sourcemap

14097:12237:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16588:236;;;;;;:::i;:::-;;:::i;:::-;;17598:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19765:169;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;18718:108::-;;;:::i;:::-;;;;;;;:::i;20416:492::-;;;;;;:::i;:::-;;:::i;16353:87::-;;;;;;:::i;:::-;;:::i;18560:93::-;;;:::i;:::-;;;;;;;:::i;14657:38::-;;;:::i;:::-;;;;;;;:::i;21317:218::-;;;;;;:::i;:::-;;:::i;14860:24::-;;;:::i;15996:111::-;;;;;;:::i;:::-;;:::i;16452:124::-;;;;;;:::i;:::-;;:::i;16836:692::-;;;;;;:::i;:::-;;:::i;18889:127::-;;;;;;:::i;:::-;;:::i;12552:94::-;;;:::i;11901:87::-;;;:::i;17817:104::-;;;:::i;16237:::-;;;;;;:::i;:::-;;:::i;22038:416::-;;;;;;:::i;:::-;;:::i;14614:36::-;;;:::i;19229:175::-;;;;;;:::i;:::-;;:::i;14582:25::-;;;:::i;15888:96::-;;;;;;:::i;:::-;;:::i;14510:30::-;;;:::i;19467:151::-;;;;;;:::i;:::-;;:::i;16115:110::-;;;;;;:::i;:::-;;:::i;12801:192::-;;;;;;:::i;:::-;;:::i;16588:236::-;12132:12;:10;:12::i;:::-;-1:-1:-1;;;;;12121:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12121:23:0;;12113:68;;;;-1:-1:-1;;;12113:68:0;;;;;;;:::i;:::-;;;;;;;;;16670:46:::1;::::0;-1:-1:-1;;;16670:46:0;;16653:14:::1;::::0;-1:-1:-1;;;;;16670:31:0;::::1;::::0;::::1;::::0;:46:::1;::::0;16710:4:::1;::::0;16670:46:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16653:63:::0;-1:-1:-1;16730:10:0;;16727:90:::1;;16756:49;::::0;-1:-1:-1;;;16756:49:0;;-1:-1:-1;;;;;16756:30:0;::::1;::::0;::::1;::::0;:49:::1;::::0;16787:10:::1;::::0;16798:6;;16756:49:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16727:90;12192:1;16588:236:::0;:::o;17598:100::-;17652:13;17685:5;17678:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17598:100;:::o;19765:169::-;19848:4;19865:39;19874:12;:10;:12::i;:::-;19888:7;19897:6;19865:8;:39::i;:::-;-1:-1:-1;19922:4:0;19765:169;;;;:::o;18718:108::-;18806:12;;18718:108;:::o;20416:492::-;20556:4;20573:36;20583:6;20591:9;20602:6;20573:9;:36::i;:::-;-1:-1:-1;;;;;20649:19:0;;20622:24;20649:19;;;:11;:19;;;;;20622:24;20669:12;:10;:12::i;:::-;-1:-1:-1;;;;;20649:33:0;-1:-1:-1;;;;;20649:33:0;;;;;;;;;;;;;20622:60;;20721:6;20701:16;:26;;20693:79;;;;-1:-1:-1;;;20693:79:0;;;;;;;:::i;:::-;20808:57;20817:6;20825:12;:10;:12::i;:::-;20858:6;20839:16;:25;20808:8;:57::i;:::-;-1:-1:-1;20896:4:0;;20416:492;-1:-1:-1;;;;20416:492:0:o;16353:87::-;12132:12;:10;:12::i;:::-;-1:-1:-1;;;;;12121:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12121:23:0;;12113:68;;;;-1:-1:-1;;;12113:68:0;;;;;;;:::i;:::-;16413:9:::1;:19:::0;16353:87::o;18560:93::-;18643:2;18560:93;:::o;14657:38::-;;;:::o;21317:218::-;21405:4;21422:83;21431:12;:10;:12::i;:::-;21445:7;21454:50;21493:10;21454:11;:25;21466:12;:10;:12::i;:::-;-1:-1:-1;;;;;21454:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;21454:25:0;;;:34;;;;;;;;;;;:38;:50::i;:::-;21422:8;:83::i;14860:24::-;;;-1:-1:-1;;;;;14860:24:0;;:::o;15996:111::-;12132:12;:10;:12::i;:::-;-1:-1:-1;;;;;12121:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12121:23:0;;12113:68;;;;-1:-1:-1;;;12113:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16065:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;16065:34:0::1;16095:4;16065:34;::::0;;15996:111::o;16452:124::-;-1:-1:-1;;;;;16541:27:0;;16517:4;16541:27;;;:18;:27;;;;;;;;16452:124;;;;:::o;16836:692::-;16897:19;16928:22;16966:11;-1:-1:-1;;;;;16953:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16928:59;;16998:19;17035:13;-1:-1:-1;;;;;17020:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16998:58;;17078:17;17096;17131:11;-1:-1:-1;;;;;17118:37:0;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17077:80;;;;;17168:20;17199:19;17248:11;-1:-1:-1;;;;;17232:27:0;:14;-1:-1:-1;;;;;17232:27:0;;17229:223;;;-1:-1:-1;;;;;;;17313:24:0;;;;17275:23;;17229:223;;;-1:-1:-1;;;;;;;17416:24:0;;;;17378:23;;17229:223;17476:44;17508:11;17476:27;:9;17490:12;17476:13;:27::i;:::-;:31;;:44::i;:::-;17462:58;16836:692;-1:-1:-1;;;;;;;;16836:692:0:o;18889:127::-;-1:-1:-1;;;;;18990:18:0;18963:7;18990:18;;;:9;:18;;;;;;;18889:127::o;12552:94::-;12132:12;:10;:12::i;:::-;-1:-1:-1;;;;;12121:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12121:23:0;;12113:68;;;;-1:-1:-1;;;12113:68:0;;;;;;;:::i;:::-;12617:21:::1;12635:1;12617:9;:21::i;:::-;12552:94::o:0;11901:87::-;11947:7;11974:6;-1:-1:-1;;;;;11974:6:0;11901:87;:::o;17817:104::-;17873:13;17906:7;17899:14;;;;;:::i;16237:104::-;12132:12;:10;:12::i;:::-;-1:-1:-1;;;;;12121:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12121:23:0;;12113:68;;;;-1:-1:-1;;;12113:68:0;;;;;;;:::i;:::-;16309:10:::1;:24:::0;;-1:-1:-1;;;;;;16309:24:0::1;-1:-1:-1::0;;;;;16309:24:0;;;::::1;::::0;;;::::1;::::0;;16237:104::o;22038:416::-;22131:4;22148:24;22175:11;:25;22187:12;:10;:12::i;:::-;-1:-1:-1;;;;;22175:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;22175:25:0;;;:34;;;;;;;;;;;-1:-1:-1;22228:35:0;;;;22220:85;;;;-1:-1:-1;;;22220:85:0;;;;;;;:::i;:::-;22341:70;22350:12;:10;:12::i;:::-;22364:7;22373:37;:16;22394:15;22373:20;:37::i;22341:70::-;-1:-1:-1;22442:4:0;;22038:416;-1:-1:-1;;;22038:416:0:o;14614:36::-;;;:::o;19229:175::-;19315:4;19332:42;19342:12;:10;:12::i;:::-;19356:9;19367:6;19332:9;:42::i;14582:25::-;;;-1:-1:-1;;;;;14582:25:0;;:::o;15888:96::-;12132:12;:10;:12::i;:::-;-1:-1:-1;;;;;12121:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12121:23:0;;12113:68;;;;-1:-1:-1;;;12113:68:0;;;;;;;:::i;:::-;15956:9:::1;:20:::0;;-1:-1:-1;;;;;;15956:20:0::1;-1:-1:-1::0;;;;;15956:20:0;;;::::1;::::0;;;::::1;::::0;;15888:96::o;14510:30::-;;;;:::o;19467:151::-;-1:-1:-1;;;;;19583:18:0;;;19556:7;19583:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19467:151::o;16115:110::-;12132:12;:10;:12::i;:::-;-1:-1:-1;;;;;12121:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12121:23:0;;12113:68;;;;-1:-1:-1;;;12113:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16182:27:0::1;16212:5;16182:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;16182:35:0::1;::::0;;16115:110::o;12801:192::-;12132:12;:10;:12::i;:::-;-1:-1:-1;;;;;12121:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12121:23:0;;12113:68;;;;-1:-1:-1;;;12113:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12890:22:0;::::1;12882:73;;;;-1:-1:-1::0;;;12882:73:0::1;;;;;;;:::i;:::-;12966:19;12976:8;12966:9;:19::i;:::-;12801:192:::0;:::o;6826:98::-;6884:7;6911:5;6915:1;6911;:5;:::i;:::-;6904:12;6826:98;-1:-1:-1;;;6826:98:0:o;3909:::-;3989:10;3909:98;:::o;25949:380::-;-1:-1:-1;;;;;26085:19:0;;26077:68;;;;-1:-1:-1;;;26077:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26164:21:0;;26156:68;;;;-1:-1:-1;;;26156:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26237:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;26289:32;;;;;26267:6;;26289:32;:::i;:::-;;;;;;;;25949:380;;;:::o;23662:1252::-;-1:-1:-1;;;;;23802:20:0;;23794:70;;;;-1:-1:-1;;;23794:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23883:23:0;;23875:71;;;;-1:-1:-1;;;23875:71:0;;;;;;;:::i;:::-;23970:9;;-1:-1:-1;;;;;23970:9:0;:21;23967:108;;24018:9;;24007:56;;-1:-1:-1;;;24007:56:0;;-1:-1:-1;;;;;24018:9:0;;;;24007:29;;:56;;24037:6;;24045:9;;24056:6;;24007:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23967:108;-1:-1:-1;;;;;24111:17:0;;24087:21;24111:17;;;:9;:17;;;;;;24147:23;;;;24139:74;;;;-1:-1:-1;;;24139:74:0;;;;;;;:::i;:::-;24271:25;:13;24289:6;24271:17;:25::i;:::-;-1:-1:-1;;;;;24251:17:0;;;;;;:9;:17;;;;;;;;:45;;;;24362:18;:26;;;;;;;;24358:74;;;-1:-1:-1;24415:5:0;24358:74;24466:11;-1:-1:-1;;;;;24455:22:0;:9;-1:-1:-1;;;;;24455:22:0;;:31;;;;;24479:7;24455:31;24452:328;;;24502:14;24519:32;24545:5;24519:21;24530:9;;24519:6;:10;;:21;;;;:::i;:32::-;24610:4;24592:24;;;;:9;:24;;;;;;24502:49;;-1:-1:-1;24592:36:0;;24502:49;24592:28;:36::i;:::-;24584:4;24566:24;;;;:9;:24;;;;;;;:62;;;;24648:39;;-1:-1:-1;;;;;24648:39:0;;;;;;;24680:6;;24648:39;:::i;:::-;;;;;;;;24702:24;24719:6;24702:16;:24::i;:::-;24750:18;:6;24761;24750:10;:18::i;:::-;24741:27;;24452:328;;-1:-1:-1;;;;;24823:20:0;;;;;;:9;:20;;;;;;:32;;24848:6;24823:24;:32::i;:::-;-1:-1:-1;;;;;24800:20:0;;;;;;;:9;:20;;;;;;;:55;;;;24871:35;;;;;;;;;;24899:6;;24871:35;:::i;:::-;;;;;;;;23662:1252;;;;;:::o;7564:98::-;7622:7;7649:5;7653:1;7649;:5;:::i;7963:98::-;8021:7;8048:5;8052:1;8048;:5;:::i;13001:173::-;13057:16;13076:6;;-1:-1:-1;;;;;13093:17:0;;;-1:-1:-1;;;;;;13093:17:0;;;;;;13126:40;;13076:6;;;;;;;13126:40;;13057:16;13126:40;13001:173;;:::o;7207:98::-;7265:7;7292:5;7296:1;7292;:5;:::i;22472:700::-;22697:16;;;22711:1;22697:16;;;;;;;;22638:13;;22598:22;;22697:16;22711:1;22697:16;;;;;;;;;;-1:-1:-1;22697:16:0;22673:40;;22742:4;22724;22729:1;22724:7;;;;;;-1:-1:-1;;;22724:7:0;;;;;;;;;;;;;;:23;-1:-1:-1;;;;;22724:23:0;;;-1:-1:-1;;;;;22724:23:0;;;;;22768:7;-1:-1:-1;;;;;22768:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22758:4;22763:1;22758:7;;;;;;-1:-1:-1;;;22758:7:0;;;;;;;;;;;;;;:24;-1:-1:-1;;;;;22758:24:0;;;-1:-1:-1;;;;;22758:24:0;;;;;22795:51;22812:4;22819:13;22834:11;22795:8;:51::i;:::-;23051:10;;22889:214;;-1:-1:-1;;;22889:214:0;;-1:-1:-1;;;;;22889:58:0;;;;;;:214;;22962:11;;22988:1;;23032:4;;23051:10;;;;23077:15;;22889:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23129:35;23146:11;23159:4;23129:35;;;;;;;:::i;:::-;;;;;;;;22472:700;;;:::o;14:190:1:-;95:13;;-1:-1:-1;;;;;137:42:1;;127:53;;117:2;;194:1;191;184:12;209:259;;321:2;309:9;300:7;296:23;292:32;289:2;;;342:6;334;327:22;289:2;386:9;373:23;405:33;432:5;405:33;:::i;473:263::-;;596:2;584:9;575:7;571:23;567:32;564:2;;;617:6;609;602:22;564:2;654:9;648:16;673:33;700:5;673:33;:::i;741:402::-;;;870:2;858:9;849:7;845:23;841:32;838:2;;;891:6;883;876:22;838:2;935:9;922:23;954:33;981:5;954:33;:::i;:::-;1006:5;-1:-1:-1;1063:2:1;1048:18;;1035:32;1076:35;1035:32;1076:35;:::i;:::-;1130:7;1120:17;;;828:315;;;;;:::o;1148:470::-;;;;1294:2;1282:9;1273:7;1269:23;1265:32;1262:2;;;1315:6;1307;1300:22;1262:2;1359:9;1346:23;1378:33;1405:5;1378:33;:::i;:::-;1430:5;-1:-1:-1;1487:2:1;1472:18;;1459:32;1500:35;1459:32;1500:35;:::i;:::-;1252:366;;1554:7;;-1:-1:-1;;;1608:2:1;1593:18;;;;1580:32;;1252:366::o;1623:327::-;;;1752:2;1740:9;1731:7;1727:23;1723:32;1720:2;;;1773:6;1765;1758:22;1720:2;1817:9;1804:23;1836:33;1863:5;1836:33;:::i;:::-;1888:5;1940:2;1925:18;;;;1912:32;;-1:-1:-1;;;1710:240:1:o;1955:297::-;;2075:2;2063:9;2054:7;2050:23;2046:32;2043:2;;;2096:6;2088;2081:22;2043:2;2133:9;2127:16;2186:5;2179:13;2172:21;2165:5;2162:32;2152:2;;2213:6;2205;2198:22;2257:474;;;;2413:2;2401:9;2392:7;2388:23;2384:32;2381:2;;;2434:6;2426;2419:22;2381:2;2462:42;2494:9;2462:42;:::i;:::-;2452:52;;2523:51;2570:2;2559:9;2555:18;2523:51;:::i;:::-;2513:61;;2617:2;2606:9;2602:18;2596:25;2661:10;2654:5;2650:22;2643:5;2640:33;2630:2;;2692:6;2684;2677:22;2630:2;2720:5;2710:15;;;2371:360;;;;;:::o;2736:190::-;;2848:2;2836:9;2827:7;2823:23;2819:32;2816:2;;;2869:6;2861;2854:22;2816:2;-1:-1:-1;2897:23:1;;2806:120;-1:-1:-1;2806:120:1:o;2931:194::-;;3054:2;3042:9;3033:7;3029:23;3025:32;3022:2;;;3075:6;3067;3060:22;3022:2;-1:-1:-1;3103:16:1;;3012:113;-1:-1:-1;3012:113:1:o;3130:469::-;;3227:5;3221:12;3254:6;3249:3;3242:19;3280:4;3309:2;3304:3;3300:12;3293:19;;3346:2;3339:5;3335:14;3367:3;3379:195;3393:6;3390:1;3387:13;3379:195;;;3458:13;;-1:-1:-1;;;;;3454:39:1;3442:52;;3514:12;;;;3549:15;;;;3490:1;3408:9;3379:195;;;-1:-1:-1;3590:3:1;;3197:402;-1:-1:-1;;;;;3197:402:1:o;3604:203::-;-1:-1:-1;;;;;3768:32:1;;;;3750:51;;3738:2;3723:18;;3705:102::o;3812:375::-;-1:-1:-1;;;;;4070:15:1;;;4052:34;;4122:15;;;;4117:2;4102:18;;4095:43;4169:2;4154:18;;4147:34;;;;4002:2;3987:18;;3969:218::o;4192:274::-;-1:-1:-1;;;;;4384:32:1;;;;4366:51;;4448:2;4433:18;;4426:34;4354:2;4339:18;;4321:145::o;4471:187::-;4636:14;;4629:22;4611:41;;4599:2;4584:18;;4566:92::o;4663:603::-;;4804:2;4833;4822:9;4815:21;4865:6;4859:13;4908:6;4903:2;4892:9;4888:18;4881:34;4933:4;4946:140;4960:6;4957:1;4954:13;4946:140;;;5055:14;;;5051:23;;5045:30;5021:17;;;5040:2;5017:26;5010:66;4975:10;;4946:140;;;5104:6;5101:1;5098:13;5095:2;;;5174:4;5169:2;5160:6;5149:9;5145:22;5141:31;5134:45;5095:2;-1:-1:-1;5250:2:1;5229:15;-1:-1:-1;;5225:29:1;5210:45;;;;5257:2;5206:54;;4784:482;-1:-1:-1;;;4784:482:1:o;5271:399::-;5473:2;5455:21;;;5512:2;5492:18;;;5485:30;5551:34;5546:2;5531:18;;5524:62;-1:-1:-1;;;5617:2:1;5602:18;;5595:33;5660:3;5645:19;;5445:225::o;5675:402::-;5877:2;5859:21;;;5916:2;5896:18;;;5889:30;5955:34;5950:2;5935:18;;5928:62;-1:-1:-1;;;6021:2:1;6006:18;;5999:36;6067:3;6052:19;;5849:228::o;6082:398::-;6284:2;6266:21;;;6323:2;6303:18;;;6296:30;6362:34;6357:2;6342:18;;6335:62;-1:-1:-1;;;6428:2:1;6413:18;;6406:32;6470:3;6455:19;;6256:224::o;6485:402::-;6687:2;6669:21;;;6726:2;6706:18;;;6699:30;6765:34;6760:2;6745:18;;6738:62;-1:-1:-1;;;6831:2:1;6816:18;;6809:36;6877:3;6862:19;;6659:228::o;6892:404::-;7094:2;7076:21;;;7133:2;7113:18;;;7106:30;7172:34;7167:2;7152:18;;7145:62;-1:-1:-1;;;7238:2:1;7223:18;;7216:38;7286:3;7271:19;;7066:230::o;7301:356::-;7503:2;7485:21;;;7522:18;;;7515:30;7581:34;7576:2;7561:18;;7554:62;7648:2;7633:18;;7475:182::o;7662:401::-;7864:2;7846:21;;;7903:2;7883:18;;;7876:30;7942:34;7937:2;7922:18;;7915:62;-1:-1:-1;;;8008:2:1;7993:18;;7986:35;8053:3;8038:19;;7836:227::o;8068:400::-;8270:2;8252:21;;;8309:2;8289:18;;;8282:30;8348:34;8343:2;8328:18;;8321:62;-1:-1:-1;;;8414:2:1;8399:18;;8392:34;8458:3;8443:19;;8242:226::o;8473:401::-;8675:2;8657:21;;;8714:2;8694:18;;;8687:30;8753:34;8748:2;8733:18;;8726:62;-1:-1:-1;;;8819:2:1;8804:18;;8797:35;8864:3;8849:19;;8647:227::o;8879:177::-;9025:25;;;9013:2;8998:18;;8980:76::o;9061:338::-;;9268:6;9257:9;9250:25;9311:2;9306;9295:9;9291:18;9284:30;9331:62;9389:2;9378:9;9374:18;9366:6;9331:62;:::i;:::-;9323:70;9240:159;-1:-1:-1;;;;9240:159:1:o;9404:588::-;;9703:6;9692:9;9685:25;9746:6;9741:2;9730:9;9726:18;9719:34;9789:3;9784:2;9773:9;9769:18;9762:31;9810:63;9868:3;9857:9;9853:19;9845:6;9810:63;:::i;:::-;-1:-1:-1;;;;;9909:32:1;;;;9904:2;9889:18;;9882:60;-1:-1:-1;9973:3:1;9958:19;9951:35;9802:71;9675:317;-1:-1:-1;;;9675:317:1:o;9997:184::-;10169:4;10157:17;;;;10139:36;;10127:2;10112:18;;10094:87::o;10186:128::-;;10257:1;10253:6;10250:1;10247:13;10244:2;;;10263:18;;:::i;:::-;-1:-1:-1;10299:9:1;;10234:80::o;10319:217::-;;10385:1;10375:2;;-1:-1:-1;;;10410:31:1;;10464:4;10461:1;10454:15;10492:4;10417:1;10482:15;10375:2;-1:-1:-1;10521:9:1;;10365:171::o;10541:168::-;;10647:1;10643;10639:6;10635:14;10632:1;10629:21;10624:1;10617:9;10610:17;10606:45;10603:2;;;10654:18;;:::i;:::-;-1:-1:-1;10694:9:1;;10593:116::o;10714:125::-;;10782:1;10779;10776:8;10773:2;;;10787:18;;:::i;:::-;-1:-1:-1;10824:9:1;;10763:76::o;10844:380::-;10929:1;10919:12;;10976:1;10966:12;;;10987:2;;11041:4;11033:6;11029:17;11019:27;;10987:2;11094;11086:6;11083:14;11063:18;11060:38;11057:2;;;11140:10;11135:3;11131:20;11128:1;11121:31;11175:4;11172:1;11165:15;11203:4;11200:1;11193:15;11057:2;;10899:325;;;:::o;11229:127::-;11290:10;11285:3;11281:20;11278:1;11271:31;11321:4;11318:1;11311:15;11345:4;11342:1;11335:15;11361:133;-1:-1:-1;;;;;11438:31:1;;11428:42;;11418:2;;11484:1;11481;11474:12

Swarm Source

ipfs://6c24d4f5140b3a70bc7c9740490abba2e23aa7de67f06cd899b43fb6a252892d
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.