Contract 0xb9844a9cb6abd9f86bb0b3ad159e37eecce08987

 

Contract Overview

Dexfolio: DEXF Token
Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xd71921399d5a18645ee3fb792d0501565100f01f568a9139f859f8819775fb98Approve112902322021-09-27 21:40:0811 hrs 58 mins ago0x4e2f395de08c11d28be37fb2f19f6f5869136567 IN  Dexfolio: DEXF Token0 BNB0.000220935
0xad69b2235ea0110b142675b589284d0012a22c31bf7b3d054cbbace9e08deba1Approve112901242021-09-27 21:34:4412 hrs 3 mins ago0x54f8e2447136ec5ce870feb36600ca6e17678ecc IN  Dexfolio: DEXF Token0 BNB0.000220935
0x4c5738e36bf94facb31558f2bdc05902bdef8bc4eb508ca838bd089439e6719aApprove112897952021-09-27 21:17:4912 hrs 20 mins ago0x6ff520e4a45bbfd0978be2cc2611f9504229f670 IN  Dexfolio: DEXF Token0 BNB0.000222375
0xd8919192407dcd30afcec82e9d9b434dcf8830445983052ddadd236abd4df1d7Approve112883262021-09-27 20:04:0413 hrs 34 mins ago0xf64a846eb8f314d44d82c0e9dd2aa8f3051cfa66 IN  Dexfolio: DEXF Token0 BNB0.000222375
0xcd35a4c6b91f84abe70a44856a71157893679ac59c1dff3ddc84ba1ce1ddf4ecApprove112818572021-09-27 14:39:0118 hrs 59 mins ago0x9021142742bd7c6e040b800ff8bbec355cf339cd IN  Dexfolio: DEXF Token0 BNB0.000222375
0x56761fd53dd48bc11dd2c2e8862c2403cb87374071d51f7c811c98c1b345c9bfApprove112747832021-09-27 8:42:481 day 55 mins ago0x15c86e318b9491a0ebdbda01e5a25f6d9c30be42 IN  Dexfolio: DEXF Token0 BNB0.00007273
0x532abb14269a59359a52ef9d83fb8048cfd798bfea8b92cd57797e349e60f1c1Approve112616722021-09-26 21:37:191 day 12 hrs ago0x5ce11628f8b777ea648bf1cd5735c82ee7c7ced3 IN  Dexfolio: DEXF Token0 BNB0.000220935
0x348af39803fdc08019543896e30a397ba97faa6381b9c2285ef4fb213325c409Transfer112573492021-09-26 17:59:151 day 15 hrs ago0xe222a2929ddc38cc8362083375c8e680269073b6 IN  Dexfolio: DEXF Token0 BNB0.00033964
0x91cecfe2c1e27748d19be57479bdad9dcd1eb298457883f1e42a326150485954Approve112526852021-09-26 14:03:591 day 19 hrs ago0xef3f253aeef650a085384264eaff799217ffead8 IN  Dexfolio: DEXF Token0 BNB0.000220935
0x01a9558f0170ce654047e1ee342e38ebb900ad441068d527f392adf736d92b4aApprove112518122021-09-26 13:20:201 day 20 hrs ago0xa0780f5cf86ade92109cef793308fae650def2c5 IN  Dexfolio: DEXF Token0 BNB0.000220935
0xb936638369e07e69ccb85e86929bbb925a1e22e4b0b15fd102761ad38f2ea697Approve112490322021-09-26 10:59:361 day 22 hrs ago0xed255c1c9d84d225ac8eae7ea56b2302bc200fd2 IN  Dexfolio: DEXF Token0 BNB0.000220935
0xdcd678c59ac4db9e4605b1b21befbf2f1dfe0386d2f527b76de3269f507d2797Approve112444692021-09-26 7:09:432 days 2 hrs ago0x95b9c9dc7ce612c39d2c2f65d0806539801e7d42 IN  Dexfolio: DEXF Token0 BNB0.0000741846
0x0248c11fb531f4ee2ff4cc34b53c0e96a09c39cac6478c837c9383e6496603b8Transfer112394032021-09-26 2:53:432 days 6 hrs ago0xc33c8dfd82e16f30dcb2787ab84e71cb061dfa17 IN  Dexfolio: DEXF Token0 BNB0.00018964
0xc5d1c8d20da39a3d4cb4ade9be24deda667d4d32e62c91de3b49e1cf7ee9e5b6Transfer112393892021-09-26 2:53:012 days 6 hrs ago0xe8bd6f0fe638db0f7b9262be8d866e3c5267d7f0 IN  Dexfolio: DEXF Token0 BNB0.00018964
0x5932b0dfbc47641643c7bb07863ed831283d3b86e9baa8b724edc264d051c388Transfer112393822021-09-26 2:52:402 days 6 hrs ago0x61764e628c505db51f5e10c5014771c68a1d612f IN  Dexfolio: DEXF Token0 BNB0.00018964
0xc23cef5107fe70a6965a811bd755d76ca28ce422a608f679fea4a1b1c2ee4660Transfer112393762021-09-26 2:52:222 days 6 hrs ago0xb7ee37bbf8c037eec45b95b4e0448f17db25f6fd IN  Dexfolio: DEXF Token0 BNB0.00018964
0xa28162156a2e2f7085287878d3bf275eef6060871dcb2da19b4af04048e6e37eTransfer112393672021-09-26 2:51:552 days 6 hrs ago0xccbfb33ef62af9605323b663aa897c5e4766f347 IN  Dexfolio: DEXF Token0 BNB0.00026464
0xf702cf87ef858c3ed161d20945e303a883b5dc8af9fe3c7849d7b36311297bbdApprove112377732021-09-26 1:32:102 days 8 hrs ago0x2fa5fcc93ac9b373ef0065708330f7cac493fea7 IN  Dexfolio: DEXF Token0 BNB0.000220935
0x766f15219687cc23fe5f3112e6ce27f1a9ce5b17925206cfc551ae863928e555Approve112364722021-09-26 0:27:052 days 9 hrs ago0x5f977412352043aca47bff9adefae3d4d9eed292 IN  Dexfolio: DEXF Token0 BNB0.000222375
0x4f70b0ac6ce871bef1a0b37ceef00d6d65da8ac40af1ead71eb4f7baad123a29Transfer112357892021-09-25 23:52:562 days 9 hrs ago0xbd7f29e40b43ac1c5d43d61d8a01fc0ef3cbd998 IN  Dexfolio: DEXF Token0 BNB0.000317568
0x9310c011089f0a1133737356acad027c93f96523ea71d727758d47bd7119de25Approve112283612021-09-25 17:40:492 days 15 hrs ago0xf094720152518f9ee855440589203c9f077e9377 IN  Dexfolio: DEXF Token0 BNB0.000220935
0x1ccc2b5f82e5b5897e07442f7cf22b3c19481ea5274667069552d06a9dd5b93cApprove112241732021-09-25 14:09:132 days 19 hrs ago0xf32e0b63dbe0ed01844ae9e2109989f751f13aae IN  Dexfolio: DEXF Token0 BNB0.000222375
0x7a42d12d7888607d4dd6df0ef4c5978f6c32889eb300b75fa8f67415597dc5cdApprove112237482021-09-25 13:46:542 days 19 hrs ago0x5c82940654e32acbc9c93f9883258bd3bf542693 IN  Dexfolio: DEXF Token0 BNB0.000220935
0x33ee5f66acdddcecc835de61f1c19be398cf878b35458352293b9597263ecd1bTransfer112236262021-09-25 13:40:052 days 19 hrs ago0x99e575d6453168d0c7b3ea6de069b596fa1453cf IN  Dexfolio: DEXF Token0 BNB0.0003397
0x91512aa7baef88fa9cde9064e2bb92b0cb4f3e3a25527ce140d31e7fd1a48f09Approve112119552021-09-25 3:54:223 days 5 hrs ago0xb00fdf25bb94735ebadaae6a7ef2bffecbf5d187 IN  Dexfolio: DEXF Token0 BNB0.000222375
[ Download CSV Export 

OVERVIEW

Dexfolio is a mobile crypto tracker with alerts and automatic portfolio tracking. Using DEXF, users can get features like LP tracking, SMS alerts, advanced trade stats, and token watch list.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DEXF

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-07-22
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.7.6;

// ----------------------------------------------------------------------------
// 'Dexfolio Token contract
//
// Name : Dexfolio
// Symbol : DEXF
// Total supply: 200,000,000 (200M)
// Decimals : 18
//
// ----------------------------------------------------------------------------

/*
 * @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) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

/**
 * @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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context, Ownable {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor () {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function pause() external whenNotPaused onlyOwner {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function unpause() external whenPaused onlyOwner {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

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

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

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

/**
 * @dev Interface of the BEP20Interface standard as defined in the EIP.
 */
interface BEP20Interface {
    /**
     * @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 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);
}

interface IPancakeSwapV2Factory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

interface IPancakeSwapV2Router02 is IPancakeSwapV2Router01 {
}

abstract contract BPContract{
    function protect(
        address sender, 
        address receiver, 
        uint256 amount
    ) external virtual;
}

/**
 * @dev Implementation of the {BEP20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {BEP20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-BEP20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of BEP20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {BEP20-approve}.
 */
contract DEXF is BEP20Interface, Pausable {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    address public constant _treasury = 0xa43439d9Cd5F183dE221cCC0428ae16e87a1CC3a;
    address public constant _team = 0x760EA046e0dA63E20699D592206cF8E33d17Ff50;
    address public constant _stakingPool = 0x31501F2B86cc3485093df368C813be7b8e700b38;
    address public _treasury1 = address(0);

    uint256 public DAILY_RELEASE_AMOUNT_TREASURY;
    uint256 public DAILY_RELEASE_AMOUNT_TEAM;

    uint256 public DAILY_RELEASE_PERCENT_STAKING;
    uint256 public stakingRewardRemaining;

    uint256 public treasuryAvailable;
    uint256 public teamAvailable;
    uint256 public stakingAvailable;

    mapping (uint256 => uint256) public dailyStakingRewards;

    uint256 public _epoch1Start;

    uint256 public _epochDuration;

    uint256 public _lastInitializedEpoch;

    address public stakingContract = address(0);

    address public pancakeswapV2Pair;
    mapping(address => bool) private _isBlacklisted;
    uint256 private deployTimestamp;
    uint256 private constant BLACK_AVAILABLE_PERIOD = 5 hours;

    uint256 public buyLimit;
    uint256 public sellLimit;

    uint256 public taxFee = 3;

    BPContract public BP;
    bool public bpEnabled;

    event ChangedDailyReleaseAmountTreasury(address indexed owner, uint256 amount);
    event ChangedDailyReleasePercentStaking(address indexed owner, uint256 percent);
    event ChangedStakingRewardRemaining(address indexed owner, uint256 amount);
    event ChangedTreasury1Address(address indexed owner, address newAddress);
    event changedAllocation(address indexed owner, uint256 amount, uint8 from, uint8 to);
    event AddedToBlacklist(address account);
    event RemovedFromBlacklist(address account);
    event UpdatedBuyLimit(uint256 limit);
    event UpdatedSellLimit(uint256 limit);
    event ClaimedStakingReward(address recipient, uint256 amount);
    event InitializedEpoch(uint256 epochId);

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut 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 () {
        _name = "Dexfolio";  //Token Name
        _symbol = "DEXF"; //Token Symbol
        _decimals = 18;  //Decimals

        _mint(address(0xe222a2929DDC38CC8362083375C8e680269073b6), 40000000E18);
        _mint(_treasury, 72000000E18); // 72M
        _mint(_team, 20000000E18); // 20M
        _mint(_stakingPool, 68000000E18); // 68M

        DAILY_RELEASE_AMOUNT_TREASURY = 72000000E18 / uint256(3647); // 3647 days
        DAILY_RELEASE_AMOUNT_TEAM = 20000000E18 / uint256(104); // 104 days
        DAILY_RELEASE_PERCENT_STAKING = 10;
        stakingRewardRemaining = 68000000E18;

        _epoch1Start = 1627012800;
        _epochDuration = 24 hours;

        buyLimit = 200000E18;
        sellLimit = 200000E18;

        IPancakeSwapV2Router02 _pancakeswapV2Router = IPancakeSwapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        address pair = IPancakeSwapV2Factory(_pancakeswapV2Router.factory())
            .getPair(address(this), _pancakeswapV2Router.WETH());
        if (pair != address(0)) {
            pancakeswapV2Pair = pair;
        } else {
            pancakeswapV2Pair = address(IPancakeSwapV2Factory(_pancakeswapV2Router.factory())
                .createPair(address(this), _pancakeswapV2Router.WETH()));
        }

        deployTimestamp = block.timestamp;
    }

    /**
     * @dev Sets daily release amount of treasury.
     */
    function setDailyReleaseAmountTreasury(uint256 dailyReleaseAmount) external onlyOwner {
        DAILY_RELEASE_AMOUNT_TREASURY = dailyReleaseAmount;
        emit ChangedDailyReleaseAmountTreasury(_msgSender(), dailyReleaseAmount);
    }

    /**
     * @dev Sets daily release percent for staking reward.
     */
    function setDailyReleasePercentStaking(uint256 percent) external onlyOwner {
        DAILY_RELEASE_PERCENT_STAKING = percent;
        emit ChangedDailyReleasePercentStaking(_msgSender(), percent);
    }

    /**
     * @dev Sets staking contract address.
     */
    function setStakingContract(address stakingContractAddr) external onlyOwner {
        require(stakingContract == address(0), "Dexf: Staking contract already initialized");

        stakingContract = address(stakingContractAddr);
    }

    /**
     * @dev Sets staking contract address.
     */
    function setStakingRewardRemaining(uint256 remainingAmount) external onlyOwner {
        stakingRewardRemaining = remainingAmount;
        emit ChangedStakingRewardRemaining(_msgSender(), remainingAmount);
    }

    /**
     * @dev Sets treasury 1 address.
     */
    function setTreasury1(address newAddress) external onlyOwner {
        _treasury1 = newAddress;
        emit ChangedTreasury1Address(_msgSender(), newAddress);
    }

    /**
     * @dev Set epoch 1 start time. Call by only owner.
     */
    function setEpoch1Start(uint256 epochStartTime) external onlyOwner {
        _epoch1Start = epochStartTime;
    }

    /**
     * @dev Set tax fee percent. Call by only owner.
     */
    function setTaxFee(uint256 fee) external onlyOwner {
        require(fee <= 10, "Dexf: Invalid tax fee");
        taxFee = fee;
    }

    /**
     * @dev Changes allocations.
     */
    function changeAllocation(uint256 amount, uint8 from, uint8 to) external onlyOwner {
        require(from < 4 && to < 4 && from != to, "Dexf: Invalid allocation");
        require(to != 1, "Dexf: Invalid allocation");

        uint256 currentEpochId = getCurrentEpoch();
        if (_lastInitializedEpoch < currentEpochId) {
            _initEpoch(currentEpochId);
        }

        address fromAddress = _treasury;
        address toAddress = _treasury;

        if (from == 1) {
            fromAddress = _team;    
        } else if (from == 2) {
            fromAddress = _stakingPool;
        } else if (from == 3) {
            fromAddress = _treasury1;
        }

        if (to == 2) {
            toAddress = _stakingPool;
        } else if (to == 3) {
            toAddress = _treasury1;
        }

        uint256 senderBalance = _balances[fromAddress];
        require(senderBalance >= amount, "BEP20: transfer amount exceeds balance");
        _balances[fromAddress] = senderBalance - amount;
        _balances[toAddress] += amount;

        if (fromAddress == _stakingPool) {
            stakingRewardRemaining = stakingRewardRemaining.sub(amount);
        } else if (toAddress == _stakingPool) {
            stakingRewardRemaining = stakingRewardRemaining.add(amount);
        }

        emit changedAllocation(_msgSender(), amount, from, to);
    }

    function setBPAddrss(address _bp) external onlyOwner {
        BP = BPContract(_bp);
    }

    function setBpEnabled(bool _enabled) external onlyOwner {
        bpEnabled = _enabled;
    }

    function getDailyStakingReward(uint256 day) external view returns (uint256) {
        return dailyStakingRewards[day];
    }

    function getDailyStakingRewardAfterEpochInit(uint256 day) external returns (uint256) {
        uint256 currentEpochId = getCurrentEpoch();
        if (_lastInitializedEpoch < currentEpochId) {
            _initEpoch(currentEpochId);
        }

        return dailyStakingRewards[day];
    }

    /**
     * @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 {BEP20} uses, unless this function is
     * overloaded;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IBEP20-balanceOf} and {IBEP20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    /**
     * @dev See {IBEP20-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 {IBEP20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IBEP20-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 {IBEP20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {BEP20}.
     *
     * 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, "BEP20: transfer amount exceeds allowance");
        _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 {IBEP20-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] + 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 {IBEP20-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, "BEP20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Destroys `amount` tokens from `msg.sender`, reducing the
     * total supply.
     */
    function burn(uint256 amount) external whenNotPaused {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is 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 whenNotPaused virtual {
        require(sender != address(0), "BEP20: transfer from the zero address");
        require(recipient != address(0), "BEP20: transfer to the zero address");
        require(
            !_isBlacklisted[sender] && !_isBlacklisted[recipient],
            "Blacklisted account"
        );
        _validateTransfer(sender, recipient, amount);

        if (bpEnabled) {
            BP.protect(sender, recipient, amount);
        }

        uint256 currentEpochId = getCurrentEpoch();

        if (_lastInitializedEpoch < currentEpochId) {
            _initEpoch(currentEpochId);
        }

        _changeAvailableAmount(sender, amount); // if sender is team or treasury, try weekly release
        
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "BEP20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;

        uint256 feeAmount = 0;
        if (taxFee != 0 && sender != owner() && recipient != owner() && sender != address(_stakingPool)) {
            feeAmount = amount.mul(taxFee).div(100);
        }
        _balances[_stakingPool] = _balances[_stakingPool].add(feeAmount);
        stakingRewardRemaining = stakingRewardRemaining.add(feeAmount);
        _balances[recipient] += amount.sub(feeAmount);

        emit Transfer(sender, recipient, amount);
    }

    function _validateTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private view {
        if (sender != owner() && _isBuy(sender)) {
            require(amount <= buyLimit, "Buy amount exceeds limit");
        } else if (sender != owner() && recipient != owner() && _isSell(sender, recipient)) {
            require(amount <= sellLimit, "Sell amount exceeds limit");
        }
    }

    /** @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:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "BEP20: mint to the zero address");

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "BEP20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "BEP20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), 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), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

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

    /**
     * @dev Check and set available send amount for team and treasury.
     *
     * sender should be team or treasury
     *
     * if available amount less than sending amount, transaction will be failed
     */
    function _changeAvailableAmount(address sender, uint256 amount) internal {
        if (sender == _treasury || sender == _team || sender == _stakingPool) {
            uint256 currentEpochId = getCurrentEpoch();

            require(currentEpochId > 0, "BEP20: locked yet");

            if (sender == _treasury) {
                treasuryAvailable = treasuryAvailable.sub(amount);
            }
            if (sender == _team) {
                teamAvailable = teamAvailable.sub(amount);
            }
            if (sender == _stakingPool) {
                stakingAvailable = stakingAvailable.sub(amount);
            }
        }
    }

    /**
     * @dev Returns the id of the current epoch derived from block.timestamp
     */
    function getCurrentEpoch() public view returns (uint256) {
        if (block.timestamp < _epoch1Start) {
            return 0;
        }

        return (block.timestamp - _epoch1Start) / _epochDuration + 1;
    }

    function _initEpoch(uint256 epochId) internal {
        require(epochId <= getCurrentEpoch(), "Can't init a future epoch");
        require(epochId > _lastInitializedEpoch, "Already initialized");

        for (uint256 i = _lastInitializedEpoch + 1; i <= epochId; i++) {
            treasuryAvailable = treasuryAvailable.add(DAILY_RELEASE_AMOUNT_TREASURY);
            teamAvailable = teamAvailable.add(DAILY_RELEASE_AMOUNT_TEAM);

            dailyStakingRewards[i] = stakingRewardRemaining.mul(DAILY_RELEASE_PERCENT_STAKING).div(10000);
            stakingAvailable = stakingAvailable.add(dailyStakingRewards[i]);
            stakingRewardRemaining = stakingRewardRemaining.sub(dailyStakingRewards[i]);
        }
        _lastInitializedEpoch = epochId;

        emit InitializedEpoch(epochId);
    }

    function manualEpochInit(uint128 epochId) public {
        _initEpoch(epochId);
    }

    /**
     * @dev Claim reward from staking pool
     */
    function claimStakingReward(address recipient, uint256 amount) external {
        require(_msgSender() == stakingContract, "Dexf: No staking contract");

        _transfer(_stakingPool, recipient, amount);

        emit ClaimedStakingReward(recipient, amount);
    }

    function _isSell(address sender, address recipient) internal view returns (bool) {
        // Transfer to pair from non-router address is a sell swap
        return sender != address(pancakeswapV2Pair) && recipient == address(pancakeswapV2Pair);
    }

    function _isBuy(address sender) internal view returns (bool) {
        // Transfer from pair is a buy swap
        return sender == address(pancakeswapV2Pair);
    }

    function addToBlacklist(address account) external onlyOwner {
        require(block.timestamp <= deployTimestamp + BLACK_AVAILABLE_PERIOD, "Dexf: Invalid call");
        require(account != address(pancakeswapV2Pair), "Dexf: Invalid address");

        _isBlacklisted[account] = true;

        emit AddedToBlacklist(account);
    }

    function removeFromBlacklist(address account) external onlyOwner {
        require(block.timestamp <= deployTimestamp + BLACK_AVAILABLE_PERIOD, "Dexf: Invalid call");
        _isBlacklisted[account] = false;

        emit RemovedFromBlacklist(account);
    }

    function updateBuyLimit(uint256 limit) external onlyOwner {
        require(limit >= 7000E18, "Dexf: invalid limit");
        buyLimit = limit;

        emit UpdatedBuyLimit(limit);
    }

    function updateSellLimit(uint256 limit) external onlyOwner {
        require(limit >= 7000E18, "Dexf: invalid limit");
        sellLimit = limit;

        emit UpdatedSellLimit(limit);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"AddedToBlacklist","type":"event"},{"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":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ChangedDailyReleaseAmountTreasury","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"ChangedDailyReleasePercentStaking","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ChangedStakingRewardRemaining","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"newAddress","type":"address"}],"name":"ChangedTreasury1Address","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimedStakingReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"epochId","type":"uint256"}],"name":"InitializedEpoch","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"RemovedFromBlacklist","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"limit","type":"uint256"}],"name":"UpdatedBuyLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"limit","type":"uint256"}],"name":"UpdatedSellLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"from","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"to","type":"uint8"}],"name":"changedAllocation","type":"event"},{"inputs":[],"name":"BP","outputs":[{"internalType":"contract BPContract","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DAILY_RELEASE_AMOUNT_TEAM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DAILY_RELEASE_AMOUNT_TREASURY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DAILY_RELEASE_PERCENT_STAKING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_epoch1Start","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_epochDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastInitializedEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_team","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasury1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bpEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint8","name":"from","type":"uint8"},{"internalType":"uint8","name":"to","type":"uint8"}],"name":"changeAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimStakingReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dailyStakingRewards","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":"getCurrentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"day","type":"uint256"}],"name":"getDailyStakingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"day","type":"uint256"}],"name":"getDailyStakingRewardAfterEpochInit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint128","name":"epochId","type":"uint128"}],"name":"manualEpochInit","outputs":[],"stateMutability":"nonpayable","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":"pancakeswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_bp","type":"address"}],"name":"setBPAddrss","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBpEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dailyReleaseAmount","type":"uint256"}],"name":"setDailyReleaseAmountTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setDailyReleasePercentStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"epochStartTime","type":"uint256"}],"name":"setEpoch1Start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stakingContractAddr","type":"address"}],"name":"setStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"remainingAmount","type":"uint256"}],"name":"setStakingRewardRemaining","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTreasury1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingRewardRemaining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamAvailable","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":[],"name":"treasuryAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"updateBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"updateSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260068054610100600160a81b0319169055601280546001600160a01b031916905560036018553480156200003757600080fd5b5060006200004462000543565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b1916905560408051808201909152600880825267446578666f6c696f60c01b6020909201918252620000cc9160049162000602565b50604080518082019091526004808252632222ac2360e11b6020909201918252620000fa9160059162000602565b506006805460ff191660121790556200013373e222a2929ddc38cc8362083375c8e680269073b66a211654585005212800000062000547565b6200015e73a43439d9cd5f183de221ccc0428ae16e87a1cc3a6a3b8e97d229a2d54800000062000547565b6200018973760ea046e0da63e20699d592206cf8e33d17ff506a108b2a2c2802909400000062000547565b620001b47331501f2b86cc3485093df368c813be7b8e700b386a383f8f62ee6f1ec400000062000547565b69042e3acf81c3b0e90bdc6007556928b90559000650313b13600855600a60098190556a383f8f62ee6f1ec400000090556360fa3ec0600f5562015180601055692a5a058fc295ed00000060168190556017556040805163c45a015560e01b815290517310ed43c718714eb63d5aa57b78b54704e256024e91600091839163c45a0155916004808301926020929190829003018186803b1580156200025857600080fd5b505afa1580156200026d573d6000803e3d6000fd5b505050506040513d60208110156200028457600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263e6a439059230929187169163ad5c464891600480820192602092909190829003018186803b158015620002d557600080fd5b505afa158015620002ea573d6000803e3d6000fd5b505050506040513d60208110156200030157600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152516044808301926020929190829003018186803b1580156200035257600080fd5b505afa15801562000367573d6000803e3d6000fd5b505050506040513d60208110156200037e57600080fd5b505190506001600160a01b03811615620003b357601380546001600160a01b0319166001600160a01b03831617905562000537565b816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ed57600080fd5b505afa15801562000402573d6000803e3d6000fd5b505050506040513d60208110156200041957600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929187169163ad5c464891600480820192602092909190829003018186803b1580156200046a57600080fd5b505afa1580156200047f573d6000803e3d6000fd5b505050506040513d60208110156200049657600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015620004e957600080fd5b505af1158015620004fe573d6000803e3d6000fd5b505050506040513d60208110156200051557600080fd5b5051601380546001600160a01b0319166001600160a01b039092169190911790555b505042601555620006ae565b3390565b6001600160a01b038216620005a3576040805162461bcd60e51b815260206004820152601f60248201527f42455032303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60038054820190556001600160a01b0382166000818152600160209081526040808320805486019055805185815290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200063a576000855562000685565b82601f106200065557805160ff191683800117855562000685565b8280016001018555821562000685579182015b828111156200068557825182559160200191906001019062000668565b506200069392915062000697565b5090565b5b8082111562000693576000815560010162000698565b612f4580620006be6000396000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806371d7b258116101e9578063ac49c1801161010f578063e2c94b9e116100ad578063f2fde38b1161007c578063f2fde38b14610923578063f3d7475514610949578063fa7cb0a514610951578063fbe3c4c21461095957610399565b8063e2c94b9e146108ee578063e319a3d9146108f6578063eafd0556146108fe578063ee99205c1461091b57610399565b8063c4081a4c116100e9578063c4081a4c14610858578063d79f1cf314610875578063dc1744cf146108a3578063dd62ed3e146108c057610399565b8063ac49c18014610840578063b8ea514914610848578063b97dd9e21461085057610399565b8063964fcac411610187578063a071dcf411610156578063a071dcf4146107c3578063a2a5802a146107cb578063a457c2d7146107e8578063a9059cbb1461081457610399565b8063964fcac414610770578063989072f01461078d5780639cfdbd5e146107955780639dd373b91461079d57610399565b80638456cb59116101c35780638456cb59146107325780638bcca6eb1461073a5780638da5cb5b1461076057806395d89b411461076857610399565b806371d7b258146106e15780637f481b58146106fe57806381f1a65f1461070657610399565b80633d074110116102ce578063528928841161026c5780635c975abb1161023b5780635c975abb1461068e57806369aa39e51461069657806370a08231146106b3578063715018a6146106d957610399565b80635289288414610632578063537df3b61461063a578063589210d914610660578063590fb23b1461066857610399565b806344337ea1116102a857806344337ea1146105df57806349989d66146106055780634d1b2f9e1461060d5780634f91e48c1461062a57610399565b80633d074110146105b25780633f4ba83a146105ba57806342966c68146105c257610399565b8063206a8a221161033b5780632bc12247116103155780632bc12247146105585780632fa27fae14610560578063313ce56714610568578063395093511461058657610399565b8063206a8a22146104fb57806323b872dd1461051a57806326898da91461055057610399565b80630bec90ad116103775780630bec90ad1461047a5780630ede03431461049757806311389808146104bb57806318160ddd146104e157610399565b8063046777611461039e57806306fdde03146103bd578063095ea7b31461043a575b600080fd5b6103bb600480360360208110156103b457600080fd5b5035610961565b005b6103c56109c8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ff5781810151838201526020016103e7565b50505050905090810190601f16801561042c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104666004803603604081101561045057600080fd5b506001600160a01b038135169060200135610a5f565b604080519115158252519081900360200190f35b6103bb6004803603602081101561049057600080fd5b5035610a7d565b61049f610b2f565b604080516001600160a01b039092168252519081900360200190f35b6103bb600480360360208110156104d157600080fd5b50356001600160a01b0316610b47565b6104e9610bcb565b60408051918252519081900360200190f35b6103bb6004803603602081101561051157600080fd5b50351515610bd1565b6104666004803603606081101561053057600080fd5b506001600160a01b03813581169160208101359091169060400135610c51565b610466610d00565b6104e9610d10565b6104e9610d16565b610570610d1c565b6040805160ff9092168252519081900360200190f35b6104666004803603604081101561059c57600080fd5b506001600160a01b038135169060200135610d21565b61049f610d6c565b6103bb610d84565b6103bb600480360360208110156105d857600080fd5b5035610e89565b6103bb600480360360208110156105f557600080fd5b50356001600160a01b0316610eea565b6104e9611052565b6103bb6004803603602081101561062357600080fd5b5035611058565b6104e961114a565b61049f611150565b6103bb6004803603602081101561065057600080fd5b50356001600160a01b031661115f565b6104e9611269565b6103bb6004803603602081101561067e57600080fd5b50356001600160801b031661126f565b610466611281565b6104e9600480360360208110156106ac57600080fd5b5035611291565b6104e9600480360360208110156106c957600080fd5b50356001600160a01b03166112a3565b6103bb6112be565b6103bb600480360360208110156106f757600080fd5b503561136a565b61049f61141c565b6103bb6004803603604081101561071c57600080fd5b506001600160a01b038135169060200135611430565b6103bb611506565b6103bb6004803603602081101561075057600080fd5b50356001600160a01b03166115f1565b61049f6116c7565b6103c56116d6565b6104e96004803603602081101561078657600080fd5b5035611737565b6104e9611749565b61049f61174f565b6103bb600480360360208110156107b357600080fd5b50356001600160a01b031661175e565b6104e961182a565b6103bb600480360360208110156107e157600080fd5b5035611830565b610466600480360360408110156107fe57600080fd5b506001600160a01b038135169060200135611922565b6104666004803603604081101561082a57600080fd5b506001600160a01b0381351690602001356119ba565b6104e96119ce565b6104e96119d4565b6104e96119da565b6103bb6004803603602081101561086e57600080fd5b5035611a06565b6103bb6004803603606081101561088b57600080fd5b5080359060ff60208201358116916040013516611abb565b6103bb600480360360208110156108b957600080fd5b5035611e1d565b6104e9600480360360408110156108d657600080fd5b506001600160a01b0381358116916020013516611ecf565b6104e9611efa565b61049f611f00565b6104e96004803603602081101561091457600080fd5b5035611f18565b61049f611f4c565b6103bb6004803603602081101561093957600080fd5b50356001600160a01b0316611f5b565b6104e961205d565b6104e9612063565b6104e9612069565b61096961206f565b6001600160a01b031661097a6116c7565b6001600160a01b0316146109c3576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b600f55565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a545780601f10610a2957610100808354040283529160200191610a54565b820191906000526020600020905b815481529060010190602001808311610a3757829003601f168201915b505050505090505b90565b6000610a73610a6c61206f565b8484612073565b5060015b92915050565b610a8561206f565b6001600160a01b0316610a966116c7565b6001600160a01b031614610adf576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b600a819055610aec61206f565b6001600160a01b03167f0782f8bd412ffa3b43ce2cc7371a2c8696ce7c7d28c840e93f4bcdce1965cfc4826040518082815260200191505060405180910390a250565b73760ea046e0da63e20699d592206cf8e33d17ff5081565b610b4f61206f565b6001600160a01b0316610b606116c7565b6001600160a01b031614610ba9576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b60035490565b610bd961206f565b6001600160a01b0316610bea6116c7565b6001600160a01b031614610c33576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b60198054911515600160a01b0260ff60a01b19909216919091179055565b6000610c5e84848461215f565b6001600160a01b038416600090815260026020526040812081610c7f61206f565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811015610ce15760405162461bcd60e51b8152600401808060200182810382526028815260200180612daa6028913960400191505060405180910390fd5b610cf585610ced61206f565b858403612073565b506001949350505050565b601954600160a01b900460ff1681565b60115481565b60105481565b601290565b6000610a73610d2e61206f565b848460026000610d3c61206f565b6001600160a01b03908116825260208083019390935260409182016000908120918b168152925290205401612073565b7331501f2b86cc3485093df368c813be7b8e700b3881565b610d8c611281565b610dd4576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b610ddc61206f565b6001600160a01b0316610ded6116c7565b6001600160a01b031614610e36576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e6c61206f565b604080516001600160a01b039092168252519081900360200190a1565b610e91611281565b15610ed6576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b610ee7610ee161206f565b82612595565b50565b610ef261206f565b6001600160a01b0316610f036116c7565b6001600160a01b031614610f4c576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b61465060155401421115610f9c576040805162461bcd60e51b815260206004820152601260248201527111195e198e88125b9d985b1a590818d85b1b60721b604482015290519081900360640190fd5b6013546001600160a01b0382811691161415610ff7576040805162461bcd60e51b8152602060048201526015602482015274446578663a20496e76616c6964206164647265737360581b604482015290519081900360640190fd5b6001600160a01b038116600081815260146020908152604091829020805460ff19166001179055815192835290517ff9b68063b051b82957fa193585681240904fed808db8b30fc5a2d2202c6ed6279281900390910190a150565b60095481565b61106061206f565b6001600160a01b03166110716116c7565b6001600160a01b0316146110ba576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b69017b7883c0691660000081101561110f576040805162461bcd60e51b815260206004820152601360248201527211195e198e881a5b9d985b1a59081b1a5b5a5d606a1b604482015290519081900360640190fd5b60168190556040805182815290517f541329f98295bd79ef69896afeebcf7dd6f46dcf2e292124ec604bf80ab325469181900360200190a150565b60175481565b6013546001600160a01b031681565b61116761206f565b6001600160a01b03166111786116c7565b6001600160a01b0316146111c1576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b61465060155401421115611211576040805162461bcd60e51b815260206004820152601260248201527111195e198e88125b9d985b1a590818d85b1b60721b604482015290519081900360640190fd5b6001600160a01b038116600081815260146020908152604091829020805460ff19169055815192835290517f2b6bf71b58b3583add364b3d9060ebf8019650f65f5be35f5464b9cb3e4ba2d49281900390910190a150565b60165481565b610ee7816001600160801b0316612695565b600054600160a01b900460ff1690565b6000908152600e602052604090205490565b6001600160a01b031660009081526001602052604090205490565b6112c661206f565b6001600160a01b03166112d76116c7565b6001600160a01b031614611320576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b61137261206f565b6001600160a01b03166113836116c7565b6001600160a01b0316146113cc576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b60098190556113d961206f565b6001600160a01b03167f2e45c5922f348347665fcd9c233f4efde8db24e614c0c4899246fe9842ae3caa826040518082815260200191505060405180910390a250565b60065461010090046001600160a01b031681565b6012546001600160a01b031661144461206f565b6001600160a01b03161461149f576040805162461bcd60e51b815260206004820152601960248201527f446578663a204e6f207374616b696e6720636f6e747261637400000000000000604482015290519081900360640190fd5b6114be7331501f2b86cc3485093df368c813be7b8e700b38838361215f565b604080516001600160a01b03841681526020810183905281517ffd16161feeb43ebb9c9031afc987720ec106f37b7b2f7c1d70dfe592b09886f3929181900390910190a15050565b61150e611281565b15611553576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b61155b61206f565b6001600160a01b031661156c6116c7565b6001600160a01b0316146115b5576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e6c61206f565b6115f961206f565b6001600160a01b031661160a6116c7565b6001600160a01b031614611653576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b60068054610100600160a81b0319166101006001600160a01b0384160217905561167b61206f565b6001600160a01b03167fb7b567f7f02b94be152c7e151f9d74bf7bf4c979f85ec2bd048ff6f14bb203a68260405180826001600160a01b0316815260200191505060405180910390a250565b6000546001600160a01b031690565b60058054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a545780601f10610a2957610100808354040283529160200191610a54565b600e6020526000908152604090205481565b600d5481565b6019546001600160a01b031681565b61176661206f565b6001600160a01b03166117776116c7565b6001600160a01b0316146117c0576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b6012546001600160a01b0316156118085760405162461bcd60e51b815260040180806020018281038252602a815260200180612ea2602a913960400191505060405180910390fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b60185481565b61183861206f565b6001600160a01b03166118496116c7565b6001600160a01b031614611892576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b69017b7883c069166000008110156118e7576040805162461bcd60e51b815260206004820152601360248201527211195e198e881a5b9d985b1a59081b1a5b5a5d606a1b604482015290519081900360640190fd5b60178190556040805182815290517f2f4cbfa80df8cd1e7fa4046a88e4cbdcb31cec227eebf181ea25890f4ed8a2769181900360200190a150565b6000806002600061193161206f565b6001600160a01b039081168252602080830193909352604091820160009081209188168152925290205490508281101561199c5760405162461bcd60e51b8152600401808060200182810382526025815260200180612e5c6025913960400191505060405180910390fd5b6119b06119a761206f565b85858403612073565b5060019392505050565b6000610a736119c761206f565b848461215f565b600c5481565b600b5481565b6000600f544210156119ee57506000610a5c565b601054600f544203816119fd57fe5b04600101905090565b611a0e61206f565b6001600160a01b0316611a1f6116c7565b6001600160a01b031614611a68576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b600a811115611ab6576040805162461bcd60e51b8152602060048201526015602482015274446578663a20496e76616c6964207461782066656560581b604482015290519081900360640190fd5b601855565b611ac361206f565b6001600160a01b0316611ad46116c7565b6001600160a01b031614611b1d576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b60048260ff16108015611b33575060048160ff16105b8015611b4557508060ff168260ff1614155b611b91576040805162461bcd60e51b81526020600482015260186024820152772232bc331d1024b73b30b634b21030b63637b1b0ba34b7b760411b604482015290519081900360640190fd5b8060ff1660011415611be5576040805162461bcd60e51b81526020600482015260186024820152772232bc331d1024b73b30b634b21030b63637b1b0ba34b7b760411b604482015290519081900360640190fd5b6000611bef6119da565b9050806011541015611c0457611c0481612695565b73a43439d9cd5f183de221ccc0428ae16e87a1cc3a80600160ff86161415611c425773760ea046e0da63e20699d592206cf8e33d17ff509150611c8a565b8460ff1660021415611c6a577331501f2b86cc3485093df368c813be7b8e700b389150611c8a565b8460ff1660031415611c8a5760065461010090046001600160a01b031691505b8360ff1660021415611cb157507331501f2b86cc3485093df368c813be7b8e700b38611cd0565b8360ff1660031415611cd0575060065461010090046001600160a01b03165b6001600160a01b03821660009081526001602052604090205486811015611d285760405162461bcd60e51b8152600401808060200182810382526026815260200180612e136026913960400191505060405180910390fd5b6001600160a01b038084166000818152600160205260408082208b860390559285168152919091208054890190557331501f2b86cc3485093df368c813be7b8e700b381415611d8657600a54611d7e9088612808565b600a55611dbc565b6001600160a01b0382167331501f2b86cc3485093df368c813be7b8e700b381415611dbc57600a54611db89088612851565b600a555b611dc461206f565b6040805189815260ff808a16602083015288168183015290516001600160a01b0392909216917fee995ba410bf89ceb979d13e2b810773d5e3390ea7561fd8f190cb2f76159d989181900360600190a250505050505050565b611e2561206f565b6001600160a01b0316611e366116c7565b6001600160a01b031614611e7f576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b6007819055611e8c61206f565b6001600160a01b03167fd09b88379f1fd9fac0b7154ef360e6d397bea69f6a7f725e4b841ae615bf71ad826040518082815260200191505060405180910390a250565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600a5481565b73a43439d9cd5f183de221ccc0428ae16e87a1cc3a81565b600080611f236119da565b9050806011541015611f3857611f3881612695565b50506000908152600e602052604090205490565b6012546001600160a01b031681565b611f6361206f565b6001600160a01b0316611f746116c7565b6001600160a01b031614611fbd576040805162461bcd60e51b81526020600482018190526024820152600080516020612df3833981519152604482015290519081900360640190fd5b6001600160a01b0381166120025760405162461bcd60e51b8152600401808060200182810382526026815260200180612d846026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600f5481565b60075481565b60085481565b3390565b6001600160a01b0383166120b85760405162461bcd60e51b8152600401808060200182810382526024815260200180612d606024913960400191505060405180910390fd5b6001600160a01b0382166120fd5760405162461bcd60e51b8152600401808060200182810382526022815260200180612eee6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b612167611281565b156121ac576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6001600160a01b0383166121f15760405162461bcd60e51b8152600401808060200182810382526025815260200180612d3b6025913960400191505060405180910390fd5b6001600160a01b0382166122365760405162461bcd60e51b8152600401808060200182810382526023815260200180612e396023913960400191505060405180910390fd5b6001600160a01b03831660009081526014602052604090205460ff1615801561227857506001600160a01b03821660009081526014602052604090205460ff16155b6122bf576040805162461bcd60e51b8152602060048201526013602482015272109b1858dadb1a5cdd1959081858d8dbdd5b9d606a1b604482015290519081900360640190fd5b6122ca8383836128ab565b601954600160a01b900460ff16156123525760195460408051637e2f3afd60e01b81526001600160a01b03868116600483015285811660248301526044820185905291519190921691637e2f3afd91606480830192600092919082900301818387803b15801561233957600080fd5b505af115801561234d573d6000803e3d6000fd5b505050505b600061235c6119da565b90508060115410156123715761237181612695565b61237b84836129ed565b6001600160a01b038416600090815260016020526040902054828110156123d35760405162461bcd60e51b8152600401808060200182810382526026815260200180612e136026913960400191505060405180910390fd5b6001600160a01b038516600090815260016020526040812084830390556018541580159061241a57506124046116c7565b6001600160a01b0316866001600160a01b031614155b801561243f57506124296116c7565b6001600160a01b0316856001600160a01b031614155b801561246857506001600160a01b0386167331501f2b86cc3485093df368c813be7b8e700b3814155b156124905761248d606461248760185487612b5c90919063ffffffff16565b90612bb5565b90505b7331501f2b86cc3485093df368c813be7b8e700b3860005260016020527fbcbc8120c4dbe1546d442610f355ce5b7d1d0c511ed6b5e438893aa927568670546124d99082612851565b7331501f2b86cc3485093df368c813be7b8e700b3860005260016020527fbcbc8120c4dbe1546d442610f355ce5b7d1d0c511ed6b5e438893aa92756867055600a546125259082612851565b600a556125328482612808565b6001600160a01b038087166000818152600160209081526040918290208054909501909455805188815290519193928a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050505050565b6001600160a01b0382166125da5760405162461bcd60e51b8152600401808060200182810382526021815260200180612e816021913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902054818110156126325760405162461bcd60e51b8152600401808060200182810382526022815260200180612ecc6022913960400191505060405180910390fd5b6001600160a01b03831660008181526001602090815260408083208686039055600380548790039055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3505050565b61269d6119da565b8111156126f1576040805162461bcd60e51b815260206004820152601960248201527f43616e277420696e69742061206675747572652065706f636800000000000000604482015290519081900360640190fd5b601154811161273d576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b6011546001015b8181116127cc57600754600b5461275a91612851565b600b55600854600c5461276c91612851565b600c55600954600a54612786916127109161248791612b5c565b6000828152600e60205260409020819055600d546127a391612851565b600d556000818152600e6020526040902054600a546127c191612808565b600a55600101612744565b5060118190556040805182815290517fb0aae8d0ac02b2874e3865f1cbe066ff572a8471667c7d0c4760dcddb46493899181900360200190a150565b600061284a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612bf7565b9392505050565b60008282018381101561284a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6128b36116c7565b6001600160a01b0316836001600160a01b0316141580156128d857506128d883612c8e565b1561293957601654811115612934576040805162461bcd60e51b815260206004820152601860248201527f42757920616d6f756e742065786365656473206c696d69740000000000000000604482015290519081900360640190fd5b6129e8565b6129416116c7565b6001600160a01b0316836001600160a01b03161415801561297b57506129656116c7565b6001600160a01b0316826001600160a01b031614155b801561298c575061298c8383612ca2565b156129e8576017548111156129e8576040805162461bcd60e51b815260206004820152601960248201527f53656c6c20616d6f756e742065786365656473206c696d697400000000000000604482015290519081900360640190fd5b505050565b6001600160a01b03821673a43439d9cd5f183de221ccc0428ae16e87a1cc3a1480612a3457506001600160a01b03821673760ea046e0da63e20699d592206cf8e33d17ff50145b80612a5b57506001600160a01b0382167331501f2b86cc3485093df368c813be7b8e700b38145b15612b58576000612a6a6119da565b905060008111612ab5576040805162461bcd60e51b81526020600482015260116024820152701091540c8c0e881b1bd8dad959081e595d607a1b604482015290519081900360640190fd5b6001600160a01b03831673a43439d9cd5f183de221ccc0428ae16e87a1cc3a1415612aeb57600b54612ae79083612808565b600b555b6001600160a01b03831673760ea046e0da63e20699d592206cf8e33d17ff501415612b2157600c54612b1d9083612808565b600c555b6001600160a01b0383167331501f2b86cc3485093df368c813be7b8e700b3814156129e857600d54612b539083612808565b600d55505b5050565b600082612b6b57506000610a77565b82820282848281612b7857fe5b041461284a5760405162461bcd60e51b8152600401808060200182810382526021815260200180612dd26021913960400191505060405180910390fd5b600061284a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612cd5565b60008184841115612c865760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c4b578181015183820152602001612c33565b50505050905090810190601f168015612c785780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6013546001600160a01b0390811691161490565b6013546000906001600160a01b0384811691161480159061284a5750506013546001600160a01b03908116911614919050565b60008183612d245760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612c4b578181015183820152602001612c33565b506000838581612d3057fe5b049594505050505056fe42455032303a207472616e736665722066726f6d20746865207a65726f206164647265737342455032303a20617070726f76652066726f6d20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737342455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657242455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a207472616e7366657220746f20746865207a65726f206164647265737342455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f42455032303a206275726e2066726f6d20746865207a65726f2061646472657373446578663a205374616b696e6720636f6e747261637420616c726561647920696e697469616c697a656442455032303a206275726e20616d6f756e7420657863656564732062616c616e636542455032303a20617070726f766520746f20746865207a65726f2061646472657373a26469706673582212202a66740ee4fe3c762f263b1d153581b1cfc711bc3d4b35fa5ed2104550cbf68464736f6c63430007060033

Deployed ByteCode Sourcemap

12003:21362:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17440:115;;;;;;;;;;;;;;;;-1:-1:-1;17440:115:0;;:::i;:::-;;19946:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22113:169;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22113:169:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;16911:214;;;;;;;;;;;;;;;;-1:-1:-1;16911:214:0;;:::i;12430:74::-;;;:::i;:::-;;;;-1:-1:-1;;;;;12430:74:0;;;;;;;;;;;;;;19242:92;;;;;;;;;;;;;;;;-1:-1:-1;19242:92:0;-1:-1:-1;;;;;19242:92:0;;:::i;21066:108::-;;;:::i;:::-;;;;;;;;;;;;;;;;19342:95;;;;;;;;;;;;;;;;-1:-1:-1;19342:95:0;;;;:::i;22764:422::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22764:422:0;;;;;;;;;;;;;;;;;:::i;13513:21::-;;;:::i;13095:36::-;;;:::i;13057:29::-;;;:::i;20908:93::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23595:215;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23595:215:0;;;;;;;;:::i;12511:81::-;;;:::i;5509:121::-;;;:::i;24808:99::-;;;;;;;;;;;;;;;;-1:-1:-1;24808:99:0;;:::i;32351:337::-;;;;;;;;;;;;;;;;-1:-1:-1;32351:337:0;-1:-1:-1;;;;;32351:337:0;;:::i;12746:44::-;;;:::i;32967:192::-;;;;;;;;;;;;;;;;-1:-1:-1;32967:192:0;;:::i;13419:24::-;;;:::i;13192:32::-;;;:::i;32696:263::-;;;;;;;;;;;;;;;;-1:-1:-1;32696:263:0;-1:-1:-1;;;;;32696:263:0;;:::i;13389:23::-;;;:::i;31476:87::-;;;;;;;;;;;;;;;;-1:-1:-1;31476:87:0;-1:-1:-1;;;;;31476:87:0;;:::i;4449:86::-;;;:::i;19445:126::-;;;;;;;;;;;;;;;;-1:-1:-1;19445:126:0;;:::i;21237:127::-;;;;;;;;;;;;;;;;-1:-1:-1;21237:127:0;-1:-1:-1;;;;;21237:127:0;;:::i;2902:148::-;;;:::i;16328:205::-;;;;;;;;;;;;;;;;-1:-1:-1;16328:205:0;;:::i;12599:38::-;;;:::i;31633:272::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31633:272:0;;;;;;;;:::i;5249:119::-;;;:::i;17189:168::-;;;;;;;;;;;;;;;;-1:-1:-1;17189:168:0;-1:-1:-1;;;;;17189:168:0;;:::i;2251:87::-;;;:::i;20165:104::-;;;:::i;12957:55::-;;;;;;;;;;;;;;;;-1:-1:-1;12957:55:0;;:::i;12917:31::-;;;:::i;13486:20::-;;;:::i;16603:238::-;;;;;;;;;;;;;;;;-1:-1:-1;16603:238:0;-1:-1:-1;;;;;16603:238:0;;:::i;13452:25::-;;;:::i;33167:195::-;;;;;;;;;;;;;;;;-1:-1:-1;33167:195:0;;:::i;24313:377::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24313:377:0;;;;;;;;:::i;21577:175::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21577:175:0;;;;;;;;:::i;12882:28::-;;;:::i;12843:32::-;;;:::i;30424:219::-;;;:::i;17635:136::-;;;;;;;;;;;;;;;;-1:-1:-1;17635:136:0;;:::i;17831:1403::-;;;;;;;;;;;;;;;;-1:-1:-1;17831:1403:0;;;;;;;;;;;;;;;;:::i;16004:238::-;;;;;;;;;;;;;;;;-1:-1:-1;16004:238:0;;:::i;21815:151::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21815:151:0;;;;;;;;;;:::i;12797:37::-;;;:::i;12345:78::-;;;:::i;19579:297::-;;;;;;;;;;;;;;;;-1:-1:-1;19579:297:0;;:::i;13140:43::-;;;:::i;3205:244::-;;;;;;;;;;;;;;;;-1:-1:-1;3205:244:0;-1:-1:-1;;;;;3205:244:0;;:::i;13021:27::-;;;:::i;12646:44::-;;;:::i;12697:40::-;;;:::i;17440:115::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;17518:12:::1;:29:::0;17440:115::o;19946:100::-;20033:5;20026:12;;;;;;;;-1:-1:-1;;20026:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20000:13;;20026:12;;20033:5;;20026:12;;20033:5;20026:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19946:100;;:::o;22113:169::-;22196:4;22213:39;22222:12;:10;:12::i;:::-;22236:7;22245:6;22213:8;:39::i;:::-;-1:-1:-1;22270:4:0;22113:169;;;;;:::o;16911:214::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;17001:22:::1;:40:::0;;;17087:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;17057:60:0::1;;17101:15;17057:60;;;;;;;;;;;;;;;;;;16911:214:::0;:::o;12430:74::-;12462:42;12430:74;:::o;19242:92::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;19306:2:::1;:20:::0;;-1:-1:-1;;;;;;19306:20:0::1;-1:-1:-1::0;;;;;19306:20:0;;;::::1;::::0;;;::::1;::::0;;19242:92::o;21066:108::-;21154:12;;21066:108;:::o;19342:95::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;19409:9:::1;:20:::0;;;::::1;;-1:-1:-1::0;;;19409:20:0::1;-1:-1:-1::0;;;;19409:20:0;;::::1;::::0;;;::::1;::::0;;19342:95::o;22764:422::-;22870:4;22887:36;22897:6;22905:9;22916:6;22887:9;:36::i;:::-;-1:-1:-1;;;;;22963:19:0;;22936:24;22963:19;;;:11;:19;;;;;22936:24;22983:12;:10;:12::i;:::-;-1:-1:-1;;;;;22963:33:0;-1:-1:-1;;;;;22963:33:0;;;;;;;;;;;;;22936:60;;23035:6;23015:16;:26;;23007:79;;;;-1:-1:-1;;;23007:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23097:57;23106:6;23114:12;:10;:12::i;:::-;23147:6;23128:16;:25;23097:8;:57::i;:::-;-1:-1:-1;23174:4:0;;22764:422;-1:-1:-1;;;;22764:422:0:o;13513:21::-;;;-1:-1:-1;;;13513:21:0;;;;;:::o;13095:36::-;;;;:::o;13057:29::-;;;;:::o;20908:93::-;20991:2;20908:93;:::o;23595:215::-;23683:4;23700:80;23709:12;:10;:12::i;:::-;23723:7;23769:10;23732:11;:25;23744:12;:10;:12::i;:::-;-1:-1:-1;;;;;23732:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;23732:25:0;;;:34;;;;;;;;;;:47;23700:8;:80::i;12511:81::-;12550:42;12511:81;:::o;5509:121::-;5052:8;:6;:8::i;:::-;5044:41;;;;;-1:-1:-1;;;5044:41:0;;;;;;;;;;;;-1:-1:-1;;;5044:41:0;;;;;;;;;;;;;;;2482:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;2471:23:0::1;:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;2471:23:0::1;;2463:68;;;::::0;;-1:-1:-1;;;2463:68:0;;::::1;;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;::::1;;5579:5:::2;5569:15:::0;;-1:-1:-1;;;;5569:15:0::2;::::0;;5600:22:::2;5609:12;:10;:12::i;:::-;5600:22;::::0;;-1:-1:-1;;;;;5600:22:0;;::::2;::::0;;;;;;;::::2;::::0;;::::2;5509:121::o:0;24808:99::-;4775:8;:6;:8::i;:::-;4774:9;4766:38;;;;;-1:-1:-1;;;4766:38:0;;;;;;;;;;;;-1:-1:-1;;;4766:38:0;;;;;;;;;;;;;;;24872:27:::1;24878:12;:10;:12::i;:::-;24892:6;24872:5;:27::i;:::-;24808:99:::0;:::o;32351:337::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;13373:7:::1;32449:15;;:40;32430:15;:59;;32422:90;;;::::0;;-1:-1:-1;;;32422:90:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;32422:90:0;;;;;;;;;;;;;::::1;;32550:17;::::0;-1:-1:-1;;;;;32531:37:0;;::::1;32550:17:::0;::::1;32531:37;;32523:71;;;::::0;;-1:-1:-1;;;32523:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;32523:71:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;32607:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;;;;;:30;;-1:-1:-1;;32607:30:0::1;32633:4;32607:30;::::0;;32655:25;;;;;;;::::1;::::0;;;;;;;;::::1;32351:337:::0;:::o;12746:44::-;;;;:::o;32967:192::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;33053:7:::1;33044:5;:16;;33036:48;;;::::0;;-1:-1:-1;;;33036:48:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;33036:48:0;;;;;;;;;;;;;::::1;;33095:8;:16:::0;;;33129:22:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;32967:192:::0;:::o;13419:24::-;;;;:::o;13192:32::-;;;-1:-1:-1;;;;;13192:32:0;;:::o;32696:263::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;13373:7:::1;32799:15;;:40;32780:15;:59;;32772:90;;;::::0;;-1:-1:-1;;;32772:90:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;32772:90:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;32873:23:0;::::1;32899:5;32873:23:::0;;;:14:::1;:23;::::0;;;;;;;;:31;;-1:-1:-1;;32873:31:0::1;::::0;;32922:29;;;;;;;::::1;::::0;;;;;;;;::::1;32696:263:::0;:::o;13389:23::-;;;;:::o;31476:87::-;31536:19;31547:7;-1:-1:-1;;;;;31536:19:0;:10;:19::i;4449:86::-;4496:4;4520:7;-1:-1:-1;;;4520:7:0;;;;;4449:86::o;19445:126::-;19512:7;19539:24;;;:19;:24;;;;;;;19445:126::o;21237:127::-;-1:-1:-1;;;;;21338:18:0;21311:7;21338:18;;;:9;:18;;;;;;;21237:127::o;2902:148::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;3009:1:::1;2993:6:::0;;2972:40:::1;::::0;-1:-1:-1;;;;;2993:6:0;;::::1;::::0;2972:40:::1;::::0;3009:1;;2972:40:::1;3040:1;3023:19:::0;;-1:-1:-1;;;;;;3023:19:0::1;::::0;;2902:148::o;16328:205::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;16414:29:::1;:39:::0;;;16503:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;16469:56:0::1;;16517:7;16469:56;;;;;;;;;;;;;;;;;;16328:205:::0;:::o;12599:38::-;;;;;;-1:-1:-1;;;;;12599:38:0;;:::o;31633:272::-;31740:15;;-1:-1:-1;;;;;31740:15:0;31724:12;:10;:12::i;:::-;-1:-1:-1;;;;;31724:31:0;;31716:69;;;;;-1:-1:-1;;;31716:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;31798:42;12550;31822:9;31833:6;31798:9;:42::i;:::-;31858:39;;;-1:-1:-1;;;;;31858:39:0;;;;;;;;;;;;;;;;;;;;;;;31633:272;;:::o;5249:119::-;4775:8;:6;:8::i;:::-;4774:9;4766:38;;;;;-1:-1:-1;;;4766:38:0;;;;;;;;;;;;-1:-1:-1;;;4766:38:0;;;;;;;;;;;;;;;2482:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;2471:23:0::1;:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;2471:23:0::1;;2463:68;;;::::0;;-1:-1:-1;;;2463:68:0;;::::1;;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;::::1;;5310:7:::2;:14:::0;;-1:-1:-1;;;;5310:14:0::2;-1:-1:-1::0;;;5310:14:0::2;::::0;;5340:20:::2;5347:12;:10;:12::i;17189:168::-:0;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;17261:10:::1;:23:::0;;-1:-1:-1;;;;;;17261:23:0::1;;-1:-1:-1::0;;;;;17261:23:0;::::1;;;::::0;;17324:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;17300:49:0::1;;17338:10;17300:49;;;;-1:-1:-1::0;;;;;17300:49:0::1;;;;;;;;;;;;;;;17189:168:::0;:::o;2251:87::-;2297:7;2324:6;-1:-1:-1;;;;;2324:6:0;2251:87;:::o;20165:104::-;20254:7;20247:14;;;;;;;;-1:-1:-1;;20247:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20221:13;;20247:14;;20254:7;;20247:14;;20254:7;20247:14;;;;;;;;;;;;;;;;;;;;;;;;12957:55;;;;;;;;;;;;;:::o;12917:31::-;;;;:::o;13486:20::-;;;-1:-1:-1;;;;;13486:20:0;;:::o;16603:238::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;16698:15:::1;::::0;-1:-1:-1;;;;;16698:15:0::1;:29:::0;16690:84:::1;;;;-1:-1:-1::0;;;16690:84:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16787:15;:46:::0;;-1:-1:-1;;;;;;16787:46:0::1;-1:-1:-1::0;;;;;16787:46:0;;;::::1;::::0;;;::::1;::::0;;16603:238::o;13452:25::-;;;;:::o;33167:195::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;33254:7:::1;33245:5;:16;;33237:48;;;::::0;;-1:-1:-1;;;33237:48:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;33237:48:0;;;;;;;;;;;;;::::1;;33296:9;:17:::0;;;33331:23:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;33167:195:::0;:::o;24313:377::-;24406:4;24423:24;24450:11;:25;24462:12;:10;:12::i;:::-;-1:-1:-1;;;;;24450:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;24450:25:0;;;:34;;;;;;;;;;;-1:-1:-1;24503:35:0;;;;24495:85;;;;-1:-1:-1;;;24495:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24591:67;24600:12;:10;:12::i;:::-;24614:7;24642:15;24623:16;:34;24591:8;:67::i;:::-;-1:-1:-1;24678:4:0;;24313:377;-1:-1:-1;;;24313:377:0:o;21577:175::-;21663:4;21680:42;21690:12;:10;:12::i;:::-;21704:9;21715:6;21680:9;:42::i;12882:28::-;;;;:::o;12843:32::-;;;;:::o;30424:219::-;30472:7;30514:12;;30496:15;:30;30492:71;;;-1:-1:-1;30550:1:0;30543:8;;30492:71;30617:14;;30601:12;;30583:15;:30;30582:49;;;;;;30634:1;30582:53;30575:60;;30424:219;:::o;17635:136::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;17712:2:::1;17705:3;:9;;17697:43;;;::::0;;-1:-1:-1;;;17697:43:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17697:43:0;;;;;;;;;;;;;::::1;;17751:6;:12:::0;17635:136::o;17831:1403::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;17940:1:::1;17933:4;:8;;;:18;;;;;17950:1;17945:2;:6;;;17933:18;:32;;;;;17963:2;17955:10;;:4;:10;;;;17933:32;17925:69;;;::::0;;-1:-1:-1;;;17925:69:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17925:69:0;;;;;;;;;;;;;::::1;;18013:2;:7;;18019:1;18013:7;;18005:44;;;::::0;;-1:-1:-1;;;18005:44:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;18005:44:0;;;;;;;;;;;;;::::1;;18062:22;18087:17;:15;:17::i;:::-;18062:42;;18143:14;18119:21;;:38;18115:97;;;18174:26;18185:14;18174:10;:26::i;:::-;12381:42;::::0;18320:1:::1;18312:9;::::0;::::1;;18308:211;;;12462:42;18338:19;;18308:211;;;18383:4;:9;;18391:1;18383:9;18379:140;;;12550:42;18409:26;;18379:140;;;18457:4;:9;;18465:1;18457:9;18453:66;;;18497:10;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;18497:10:0::1;::::0;-1:-1:-1;18453:66:0::1;18535:2;:7;;18541:1;18535:7;18531:132;;;-1:-1:-1::0;12550:42:0::1;18531:132;;;18605:2;:7;;18611:1;18605:7;18601:62;;;-1:-1:-1::0;18641:10:0::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;18641:10:0::1;18601:62;-1:-1:-1::0;;;;;18699:22:0;::::1;18675:21;18699:22:::0;;;:9:::1;:22;::::0;;;;;18740:23;;::::1;;18732:74;;;;-1:-1:-1::0;;;18732:74:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;18817:22:0;;::::1;;::::0;;;:9:::1;:22;::::0;;;;;18842;;::::1;18817:47:::0;;18875:20;;::::1;::::0;;;;;;:30;;;::::1;::::0;;12550:42:::1;18922:27;18918:242;;;18991:22;::::0;:34:::1;::::0;19018:6;18991:26:::1;:34::i;:::-;18966:22;:59:::0;18918:242:::1;;;-1:-1:-1::0;;;;;19047:25:0;::::1;12550:42;19047:25;19043:117;;;19114:22;::::0;:34:::1;::::0;19141:6;19114:26:::1;:34::i;:::-;19089:22;:59:::0;19043:117:::1;19195:12;:10;:12::i;:::-;19177:49;::::0;;;;;::::1;::::0;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;19177:49:0;;;::::1;::::0;::::1;::::0;;;;;;;::::1;2542:1;;;;17831:1403:::0;;;:::o;16004:238::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;16101:29:::1;:50:::0;;;16201:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;16167:67:0::1;;16215:18;16167:67;;;;;;;;;;;;;;;;;;16004:238:::0;:::o;21815:151::-;-1:-1:-1;;;;;21931:18:0;;;21904:7;21931:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;21815:151::o;12797:37::-;;;;:::o;12345:78::-;12381:42;12345:78;:::o;19579:297::-;19655:7;19675:22;19700:17;:15;:17::i;:::-;19675:42;;19756:14;19732:21;;:38;19728:97;;;19787:26;19798:14;19787:10;:26::i;:::-;-1:-1:-1;;19844:24:0;;;;:19;:24;;;;;;;19579:297::o;13140:43::-;;;-1:-1:-1;;;;;13140:43:0;;:::o;3205:244::-;2482:12;:10;:12::i;:::-;-1:-1:-1;;;;;2471:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2471:23:0;;2463:68;;;;;-1:-1:-1;;;2463:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2463:68:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3294:22:0;::::1;3286:73;;;;-1:-1:-1::0;;;3286:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3396:6;::::0;;3375:38:::1;::::0;-1:-1:-1;;;;;3375:38:0;;::::1;::::0;3396:6;::::1;::::0;3375:38:::1;::::0;::::1;3424:6;:17:::0;;-1:-1:-1;;;;;;3424:17:0::1;-1:-1:-1::0;;;;;3424:17:0;;;::::1;::::0;;;::::1;::::0;;3205:244::o;13021:27::-;;;;:::o;12646:44::-;;;;:::o;12697:40::-;;;;:::o;895:98::-;975:10;895:98;:::o;29082:346::-;-1:-1:-1;;;;;29184:19:0;;29176:68;;;;-1:-1:-1;;;29176:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29263:21:0;;29255:68;;;;-1:-1:-1;;;29255:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29336:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;29388:32;;;;;;;;;;;;;;;;;29082:346;;;:::o;25397:1483::-;4775:8;:6;:8::i;:::-;4774:9;4766:38;;;;;-1:-1:-1;;;4766:38:0;;;;;;;;;;;;-1:-1:-1;;;4766:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;25517:20:0;::::1;25509:70;;;;-1:-1:-1::0;;;25509:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;25598:23:0;::::1;25590:71;;;;-1:-1:-1::0;;;25590:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;25695:22:0;::::1;;::::0;;;:14:::1;:22;::::0;;;;;::::1;;25694:23;:53:::0;::::1;;;-1:-1:-1::0;;;;;;25722:25:0;::::1;;::::0;;;:14:::1;:25;::::0;;;;;::::1;;25721:26;25694:53;25672:122;;;::::0;;-1:-1:-1;;;25672:122:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;25672:122:0;;;;;;;;;;;;;::::1;;25805:44;25823:6;25831:9;25842:6;25805:17;:44::i;:::-;25866:9;::::0;-1:-1:-1;;;25866:9:0;::::1;;;25862:79;;;25892:2;::::0;:37:::1;::::0;;-1:-1:-1;;;25892:37:0;;-1:-1:-1;;;;;25892:37:0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;;;;:2;;;::::1;::::0;:10:::1;::::0;:37;;;;;:2:::1;::::0;:37;;;;;;;:2;;:37;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25862:79;25953:22;25978:17;:15;:17::i;:::-;25953:42;;26036:14;26012:21;;:38;26008:97;;;26067:26;26078:14;26067:10;:26::i;:::-;26117:38;26140:6;26148;26117:22;:38::i;:::-;-1:-1:-1::0;;;;;26253:17:0;::::1;26229:21;26253:17:::0;;;:9:::1;:17;::::0;;;;;26289:23;;::::1;;26281:74;;;;-1:-1:-1::0;;;26281:74:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;26366:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;26386:22;;::::1;26366:42:::0;;26457:6:::1;::::0;:11;;::::1;::::0;:32:::1;;;26482:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;26472:17:0::1;:6;-1:-1:-1::0;;;;;26472:17:0::1;;;26457:32;:56;;;;;26506:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;26493:20:0::1;:9;-1:-1:-1::0;;;;;26493:20:0::1;;;26457:56;:91;;;;-1:-1:-1::0;;;;;;26517:31:0;::::1;12550:42;26517:31;;26457:91;26453:163;;;26577:27;26600:3;26577:18;26588:6;;26577;:10;;:18;;;;:::i;:::-;:22:::0;::::1;:27::i;:::-;26565:39;;26453:163;12550:42;26652:23;::::0;:9:::1;:23;::::0;;;:38:::1;::::0;26680:9;26652:27:::1;:38::i;:::-;12550:42;26626:23;::::0;:9:::1;:23;::::0;;:64;26726:22:::1;::::0;:37:::1;::::0;26753:9;26726:26:::1;:37::i;:::-;26701:22;:62:::0;26798:21:::1;:6:::0;26809:9;26798:10:::1;:21::i;:::-;-1:-1:-1::0;;;;;26774:20:0;;::::1;;::::0;;;:9:::1;:20;::::0;;;;;;;;:45;;;;::::1;::::0;;;26837:35;;;;;;;26774:20;;26837:35;;::::1;::::0;::::1;::::0;;;;;;;::::1;4815:1;;;25397:1483:::0;;;:::o;28212:432::-;-1:-1:-1;;;;;28296:21:0;;28288:67;;;;-1:-1:-1;;;28288:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28393:18:0;;28368:22;28393:18;;;:9;:18;;;;;;28430:24;;;;28422:71;;;;-1:-1:-1;;;28422:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28504:18:0;;;;;;:9;:18;;;;;;;;28525:23;;;28504:44;;28559:12;:22;;;;;;;28599:37;;;;;;;28504:18;;;28599:37;;;;;;;;;;;28212:432;;;:::o;30651:817::-;30727:17;:15;:17::i;:::-;30716:7;:28;;30708:66;;;;;-1:-1:-1;;;30708:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;30803:21;;30793:7;:31;30785:63;;;;;-1:-1:-1;;;30785:63:0;;;;;;;;;;;;-1:-1:-1;;;30785:63:0;;;;;;;;;;;;;;;30878:21;;30902:1;30878:25;30861:515;30910:7;30905:1;:12;30861:515;;30981:29;;30959:17;;:52;;:21;:52::i;:::-;30939:17;:72;31060:25;;31042:13;;:44;;:17;:44::i;:::-;31026:13;:60;31155:29;;31128:22;;:68;;31190:5;;31128:57;;:26;:57::i;:68::-;31103:22;;;;:19;:22;;;;;:93;;;31230:16;;:44;;:20;:44::i;:::-;31211:16;:63;31341:22;;;;:19;:22;;;;;;31314;;:50;;:26;:50::i;:::-;31289:22;:75;30919:3;;30861:515;;;-1:-1:-1;31386:21:0;:31;;;31435:25;;;;;;;;;;;;;;;;;30651:817;:::o;5850:136::-;5908:7;5935:43;5939:1;5942;5935:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5928:50;5850:136;-1:-1:-1;;;5850:136:0:o;5661:181::-;5719:7;5751:5;;;5775:6;;;;5767:46;;;;;-1:-1:-1;;;5767:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26888:433;27038:7;:5;:7::i;:::-;-1:-1:-1;;;;;27028:17:0;:6;-1:-1:-1;;;;;27028:17:0;;;:35;;;;;27049:14;27056:6;27049;:14::i;:::-;27024:290;;;27098:8;;27088:6;:18;;27080:55;;;;;-1:-1:-1;;;27080:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27024:290;;;27167:7;:5;:7::i;:::-;-1:-1:-1;;;;;27157:17:0;:6;-1:-1:-1;;;;;27157:17:0;;;:41;;;;;27191:7;:5;:7::i;:::-;-1:-1:-1;;;;;27178:20:0;:9;-1:-1:-1;;;;;27178:20:0;;;27157:41;:71;;;;;27202:26;27210:6;27218:9;27202:7;:26::i;:::-;27153:161;;;27263:9;;27253:6;:19;;27245:57;;;;;-1:-1:-1;;;27245:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26888:433;;;:::o;29665:655::-;-1:-1:-1;;;;;29753:19:0;;12381:42;29753:19;;:38;;-1:-1:-1;;;;;;29776:15:0;;12462:42;29776:15;29753:38;:64;;;-1:-1:-1;;;;;;29795:22:0;;12550:42;29795:22;29753:64;29749:564;;;29834:22;29859:17;:15;:17::i;:::-;29834:42;;29918:1;29901:14;:18;29893:48;;;;;-1:-1:-1;;;29893:48:0;;;;;;;;;;;;-1:-1:-1;;;29893:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;29962:19:0;;12381:42;29962:19;29958:109;;;30022:17;;:29;;30044:6;30022:21;:29::i;:::-;30002:17;:49;29958:109;-1:-1:-1;;;;;30085:15:0;;12462:42;30085:15;30081:97;;;30137:13;;:25;;30155:6;30137:17;:25::i;:::-;30121:13;:41;30081:97;-1:-1:-1;;;;;30196:22:0;;12550:42;30196:22;30192:110;;;30258:16;;:28;;30279:6;30258:20;:28::i;:::-;30239:16;:47;29749:564;;29665:655;;:::o;6194:250::-;6252:7;6276:6;6272:47;;-1:-1:-1;6306:1:0;6299:8;;6272:47;6343:5;;;6347:1;6343;:5;:1;6367:5;;;;;:10;6359:56;;;;-1:-1:-1;;;6359:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6452:132;6510:7;6537:39;6541:1;6544;6537:39;;;;;;;;;;;;;;;;;:3;:39::i;5994:192::-;6080:7;6116:12;6108:6;;;;6100:29;;;;-1:-1:-1;;;6100:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6152:5:0;;;5994:192::o;32175:168::-;32317:17;;-1:-1:-1;;;;;32317:17:0;;;32299:36;;;;32175:168::o;31913:254::-;32098:17;;31988:4;;-1:-1:-1;;;;;32080:36:0;;;32098:17;;32080:36;;;;:79;;-1:-1:-1;;32141:17:0;;-1:-1:-1;;;;;32141:17:0;;;32120:39;;;;31913:254;-1:-1:-1;31913:254:0:o;6592:191::-;6678:7;6713:12;6706:5;6698:28;;;;-1:-1:-1;;;6698:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6737:9;6753:1;6749;:5;;;;;;;6592:191;-1:-1:-1;;;;;6592:191:0:o

Swarm Source

ipfs://2a66740ee4fe3c762f263b1d153581b1cfc711bc3d4b35fa5ed2104550cbf684
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.