ETH Price: $2,388.72 (-0.60%)

Token

sBOLLY Staked Bollycoin (sBOLLY)
 

Overview

Max Total Supply

9,897,282.99999999979967 sBOLLY

Holders

55

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
gauravdua.eth
Balance
10,000 sBOLLY

Value
$0.00
0x5b8b87331e484afb35138da956aa30be26c1f22f
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Bollystake

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-25
*/

/**
 *Submitted for verification at Etherscan.io on 2021-12-24
*/

// SPDX-License-Identifier: MIT

/**
 *Submitted for verification at Etherscan.io on 2021-12-22
*/

// File: @openzeppelin/contracts/utils/math/SafeMath.sol


// OpenZeppelin Contracts v4.4.0 (utils/math/SafeMath.sol)

pragma solidity ^0.8.7;

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

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

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

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

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol)


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

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

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

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol


// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)



/**
 * @dev Implementation of the {IERC20} 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 {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * 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 {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

        _afterTokenTransfer(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), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

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

        emit Transfer(account, address(0), amount);

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

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

// File: scripts/BollyStake.sol

interface IERC20usdt {
    function transfer(address _to, uint256 _value) external ;
    function transferFrom(address _from, address _to, uint _value) external ;
    function allowance(address _owner ,address _spender) external returns(uint256);
    }
// This contract handles swapping to and from sBOLLY.
contract Bollystake is ERC20("sBOLLY Staked Bollycoin", "sBOLLY"){
    using SafeMath for uint256;

    IERC20 public immutable BOLLY;
    address public owner ;
    //address public usdt_address;
    //IERC20usdt public immutable usdt = IERC20usdt(address(usdt_address));
     IERC20usdt public immutable usdt;
    // Define the BOLLY token contract
    constructor(IERC20usdt _usdt,IERC20 _BOLLY, address _owner) {
        require(address(_BOLLY) != address(0), "_BOLLY is a zero address");
        require(address(_usdt) != address(0), "_usdt is a zero address");
        require(address(_owner) != address(0), "_owner is a zero address");
        BOLLY = _BOLLY;
        owner = _owner; 
        usdt = _usdt;
    }
     uint256 private constant _TIMELOCK = 365 days;
     
     struct locked{
        uint256 expire;
        uint256 locked_amount;
     }
     mapping(address => locked) users;
      function set_owner(address _owner) external {
        require(msg.sender==owner,"only owner set new owner")  ;
        owner = _owner;
        emit _set_owner(_owner,msg.sender);
      }  
      address[] internal stakeholders;
      /**
    * @notice A method to check if an address is a stakeholder.
    * @param _address The address to verify.
    * @return bool, uint256 Whether the address is a stakeholder,
    * and if so its position in the stakeholders array.
    */
   function isStakeholder(address _address)
       public
       view
       returns(bool, uint256)
   {
       for (uint256 s = 0; s < stakeholders.length; s += 1){
           if (_address == stakeholders[s]) return (true, s);
       }
       return (false, 0);
   }

   /**
    * @notice A method to add a stakeholder.
    * @param _stakeholder The stakeholder to add.
    */
   function addStakeholder(address _stakeholder)
       private
   {
       (bool _isStakeholder, ) = isStakeholder(_stakeholder);
       if(!_isStakeholder) stakeholders.push(_stakeholder);
   }

   /**
    * @notice A method to remove a stakeholder.
    * @param _stakeholder The stakeholder to remove.
    */
   function removeStakeholder(address _stakeholder)
       private
   {
       (bool _isStakeholder, uint256 s) = isStakeholder(_stakeholder);
       if(_isStakeholder){
           stakeholders[s] = stakeholders[stakeholders.length - 1];
           stakeholders.pop();
       }
   }

   mapping(address => uint256) internal stakes;
    /**
    * @notice A method to retrieve the stake for a stakeholder.
    * @param _stakeholder The stakeholder to retrieve the stake for.
    * @return uint256 The amount of wei staked.
    */
   function stakeOf(address _stakeholder)
       public
       view
       returns(uint256)
   {
       return stakes[_stakeholder];
   }

   /**
    * @notice A method to the aggregated stakes from all stakeholders.
    * @return uint256 The aggregated stakes from all stakeholders.
    */
   function totalStakes()
       external
       view 
       returns(uint256)
   {
       uint256 _totalStakes = 0;
       for (uint256 s = 0; s < stakeholders.length; s += 1){
           _totalStakes = _totalStakes.add(stakes[stakeholders[s]]);
       }
       return _totalStakes;
   }
   //only locked stakes gets the reward
   function total_eligible_Stakes()
       public
       view
       returns(uint256)
   {
       uint256 _totaleligibleStakes = 0;
       for (uint256 s = 0; s < stakeholders.length; s += 1){
           if(users[stakeholders[s]].expire > block.timestamp) {
           _totaleligibleStakes = _totaleligibleStakes.add(stakes[stakeholders[s]]);
           }
       }
       return _totaleligibleStakes;
   }

    // Locks BOLLY and mints sBOLLY
    function enter_stake(uint256 _amount) external {
        // Gets the amount of BOLLY locked in the contract
        require(_amount >= 10000000000000000000000,"minimum 10000 BOLLY needs to be staked");
        if(stakes[msg.sender] == 0) addStakeholder(msg.sender);
       stakes[msg.sender] = stakes[msg.sender].add(_amount);
        // Lock the BOLLY in the contract
        locked storage userInfo = users[msg.sender];
        userInfo.expire = block.timestamp + _TIMELOCK;
        userInfo.locked_amount = userInfo.locked_amount.add(_amount);
        BOLLY.transferFrom(msg.sender, address(this), _amount);
        _mint(msg.sender, _amount);
        emit _enter_stake(_amount,msg.sender);
    }
    function relock_stake() external {
        (bool _isStakeholder, ) = isStakeholder(msg.sender);
        require(_isStakeholder==true, "only current stakeholders can relock stake");
        locked storage userInfo = users[msg.sender];
        userInfo.expire = block.timestamp + _TIMELOCK;
        emit _relock_stake(msg.sender);
    }

     
    // Unclocks the staked + gained BOLLY and burns"sBOLLY
    function remove_stake(uint256 _share) external {
        require( (users[msg.sender].expire < block.timestamp) && (_share <= users[msg.sender].locked_amount) ,"Please wait 365 days until removing stake");
        _burn(msg.sender, _share);
         stakes[msg.sender] = stakes[msg.sender].sub(_share);
         locked storage userInfo = users[msg.sender];
         userInfo.locked_amount = userInfo.locked_amount.sub(_share);
       if(stakes[msg.sender] == 0) removeStakeholder(msg.sender);
        BOLLY.transfer(msg.sender, _share);
        emit _remove_stake(_share,msg.sender);
    }
    
    function distributeRewards(uint amount) external {
        require(amount > 0, "Nothing to distribute");
        require(msg.sender == owner, "Caller is not authorised");
        usdt.transferFrom(owner,address(this),amount);
         for (uint256 s = 0; s < stakeholders.length; s += 1){
           address stakeholder = stakeholders[s];
           uint256 stakeof = stakeOf(stakeholder);
           uint256 totalstakes = total_eligible_Stakes();
           if(users[stakeholder].expire > block.timestamp) {
           uint256 reward = (stakeof.mul(amount)).div(totalstakes);
                // Transfer the usdt
                usdt.transfer(stakeholder, reward);
           }    
         }
    }
    //EVENTS :
    event _set_owner(address _owner, address _from) ;    
    event _enter_stake(uint256 _amount, address _stake_from);
    event _relock_stake(address stake_from);
    event _remove_stake(uint256 _amount,address _stake_to); 
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IERC20usdt","name":"_usdt","type":"address"},{"internalType":"contract IERC20","name":"_BOLLY","type":"address"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"_stake_from","type":"address"}],"name":"_enter_stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"stake_from","type":"address"}],"name":"_relock_stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"_stake_to","type":"address"}],"name":"_remove_stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"},{"indexed":false,"internalType":"address","name":"_from","type":"address"}],"name":"_set_owner","type":"event"},{"inputs":[],"name":"BOLLY","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","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":"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"distributeRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"enter_stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isStakeholder","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"relock_stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_share","type":"uint256"}],"name":"remove_stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"set_owner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"stakeOf","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":"totalStakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total_eligible_Stakes","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":[],"name":"usdt","outputs":[{"internalType":"contract IERC20usdt","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60c06040523480156200001157600080fd5b50604051620037f9380380620037f9833981810160405281019062000037919062000486565b6040518060400160405280601781526020017f73424f4c4c59205374616b656420426f6c6c79636f696e0000000000000000008152506040518060400160405280600681526020017f73424f4c4c5900000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb929190620002e2565b508060049080519060200190620000d4929190620002e2565b505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200014a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001419062000543565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620001bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b490620005b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000230576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002279062000627565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050505050620006ae565b828054620002f09062000678565b90600052602060002090601f01602090048101928262000314576000855562000360565b82601f106200032f57805160ff191683800117855562000360565b8280016001018555821562000360579182015b828111156200035f57825182559160200191906001019062000342565b5b5090506200036f919062000373565b5090565b5b808211156200038e57600081600090555060010162000374565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003c48262000397565b9050919050565b6000620003d882620003b7565b9050919050565b620003ea81620003cb565b8114620003f657600080fd5b50565b6000815190506200040a81620003df565b92915050565b60006200041d82620003b7565b9050919050565b6200042f8162000410565b81146200043b57600080fd5b50565b6000815190506200044f8162000424565b92915050565b6200046081620003b7565b81146200046c57600080fd5b50565b600081519050620004808162000455565b92915050565b600080600060608486031215620004a257620004a162000392565b5b6000620004b286828701620003f9565b9350506020620004c5868287016200043e565b9250506040620004d8868287016200046f565b9150509250925092565b600082825260208201905092915050565b7f5f424f4c4c592069732061207a65726f20616464726573730000000000000000600082015250565b60006200052b601883620004e2565b91506200053882620004f3565b602082019050919050565b600060208201905081810360008301526200055e816200051c565b9050919050565b7f5f757364742069732061207a65726f2061646472657373000000000000000000600082015250565b60006200059d601783620004e2565b9150620005aa8262000565565b602082019050919050565b60006020820190508181036000830152620005d0816200058e565b9050919050565b7f5f6f776e65722069732061207a65726f20616464726573730000000000000000600082015250565b60006200060f601883620004e2565b91506200061c82620005d7565b602082019050919050565b60006020820190508181036000830152620006428162000600565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200069157607f821691505b60208210811415620006a857620006a762000649565b5b50919050565b60805160a051613109620006f06000396000818161078d01528181610a6d0152610bfd0152600081816110620152818161153d015261161901526131096000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063a9059cbb1161007c578063a9059cbb146103a2578063bf9befb1146103d2578063c4441cce146103f0578063d9c6b0331461040c578063dd62ed3e1461042a578063ef037b901461045a5761014d565b806370a08231146102ce5780637cb97b2b146102fe5780638da5cb5b1461031a57806395d89b4114610338578063987ec19714610356578063a457c2d7146103725761014d565b80632f48ab7d116101155780632f48ab7d1461020c578063313ce5671461022a5780633950935114610248578063426233601461027857806359377627146102a857806359974e38146102b25761014d565b806306fdde0314610152578063095ea7b3146101705780630cabb891146101a057806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61048b565b6040516101679190612186565b60405180910390f35b61018a60048036038101906101859190612241565b61051d565b604051610197919061229c565b60405180910390f35b6101a861053b565b6040516101b591906122c6565b60405180910390f35b6101c6610689565b6040516101d391906122c6565b60405180910390f35b6101f660048036038101906101f191906122e1565b610693565b604051610203919061229c565b60405180910390f35b61021461078b565b6040516102219190612393565b60405180910390f35b6102326107af565b60405161023f91906123ca565b60405180910390f35b610262600480360381019061025d9190612241565b6107b8565b60405161026f919061229c565b60405180910390f35b610292600480360381019061028d91906123e5565b610864565b60405161029f91906122c6565b60405180910390f35b6102b06108ad565b005b6102cc60048036038101906102c79190612412565b610998565b005b6102e860048036038101906102e391906123e5565b610ca5565b6040516102f591906122c6565b60405180910390f35b610318600480360381019061031391906123e5565b610ced565b005b610322610dfa565b60405161032f919061244e565b60405180910390f35b610340610e20565b60405161034d9190612186565b60405180910390f35b610370600480360381019061036b9190612412565b610eb2565b005b61038c60048036038101906103879190612241565b611148565b604051610399919061229c565b60405180910390f35b6103bc60048036038101906103b79190612241565b611233565b6040516103c9919061229c565b60405180910390f35b6103da611251565b6040516103e791906122c6565b60405180910390f35b61040a60048036038101906104059190612412565b611316565b005b610414611617565b604051610421919061248a565b60405180910390f35b610444600480360381019061043f91906124a5565b61163b565b60405161045191906122c6565b60405180910390f35b610474600480360381019061046f91906123e5565b6116c2565b6040516104829291906124e5565b60405180910390f35b60606003805461049a9061253d565b80601f01602080910402602001604051908101604052809291908181526020018280546104c69061253d565b80156105135780601f106104e857610100808354040283529160200191610513565b820191906000526020600020905b8154815290600101906020018083116104f657829003601f168201915b5050505050905090565b600061053161052a611776565b848461177e565b6001905092915050565b6000806000905060005b6007805490508110156106815742600660006007848154811061056b5761056a61256f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561066d5761066a60086000600784815481106105f5576105f461256f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361194990919063ffffffff16565b91505b60018161067a91906125cd565b9050610545565b508091505090565b6000600254905090565b60006106a084848461195f565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106eb611776565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561076b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076290612695565b60405180910390fd5b61077f85610777611776565b85840361177e565b60019150509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006012905090565b600061085a6107c5611776565b8484600160006107d3611776565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461085591906125cd565b61177e565b6001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006108b8336116c2565b5090506001151581151514610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f990612727565b60405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506301e133804261095591906125cd565b81600001819055507f852f6bd034b2506e91405ec15c016a85f64312ec8ca434c29332895c607e09953360405161098c919061244e565b60405180910390a15050565b600081116109db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d290612793565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a62906127ff565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630846040518463ffffffff1660e01b8152600401610aea9392919061281f565b600060405180830381600087803b158015610b0457600080fd5b505af1158015610b18573d6000803e3d6000fd5b5050505060005b600780549050811015610ca157600060078281548110610b4257610b4161256f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610b7a82610864565b90506000610b8661053b565b905042600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541115610c8a576000610bf982610beb8886611be090919063ffffffff16565b611bf690919063ffffffff16565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85836040518363ffffffff1660e01b8152600401610c56929190612856565b600060405180830381600087803b158015610c7057600080fd5b505af1158015610c84573d6000803e3d6000fd5b50505050505b505050600181610c9a91906125cd565b9050610b1f565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d74906128cb565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ff6d9a4eed19b18a4ebce1928e03a529b96e365cadccdff034fd0f85c0c75b6aa8133604051610def9291906128eb565b60405180910390a150565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054610e2f9061253d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5b9061253d565b8015610ea85780601f10610e7d57610100808354040283529160200191610ea8565b820191906000526020600020905b815481529060010190602001808311610e8b57829003601f168201915b5050505050905090565b69021e19e0c9bab2400000811015610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef690612986565b60405180910390fd5b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610f5157610f5033611c0c565b5b610fa381600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461194990919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506301e133804261103991906125cd565b816000018190555061105882826001015461194990919063ffffffff16565b81600101819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016110bd9392919061281f565b6020604051808303816000875af11580156110dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110091906129d2565b5061110b3383611c87565b7fbc1ef703eac9d781238d7b90b35df4583be56f59ff0aac617094cfe55d509a1a823360405161113c9291906129ff565b60405180910390a15050565b60008060016000611157611776565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120b90612a9a565b60405180910390fd5b61122861121f611776565b8585840361177e565b600191505092915050565b6000611247611240611776565b848461195f565b6001905092915050565b6000806000905060005b60078054905081101561130e576112f860086000600784815481106112835761128261256f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361194990919063ffffffff16565b915060018161130791906125cd565b905061125b565b508091505090565b42600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541080156113a95750600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548111155b6113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df90612b2c565b60405180910390fd5b6113f23382611de7565b61144481600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fbe90919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506114e1828260010154611fbe90919063ffffffff16565b81600101819055506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561153b5761153a33611fd4565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611596929190612856565b6020604051808303816000875af11580156115b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d991906129d2565b507f81a6b63d8fc60d9fffcc822d8f5835977bce32e74162023638838b962ff0eea3823360405161160b9291906129ff565b60405180910390a15050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060005b60078054905081101561176857600781815481106116e9576116e861256f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611754576001819250925050611771565b60018161176191906125cd565b90506116c8565b50600080915091505b915091565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e590612bbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561185e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185590612c50565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161193c91906122c6565b60405180910390a3505050565b6000818361195791906125cd565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c690612ce2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3690612d74565b60405180910390fd5b611a4a8383836120e3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac790612e06565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b6391906125cd565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bc791906122c6565b60405180910390a3611bda8484846120e8565b50505050565b60008183611bee9190612e26565b905092915050565b60008183611c049190612eaf565b905092915050565b6000611c17826116c2565b50905080611c83576007829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cee90612f2c565b60405180910390fd5b611d03600083836120e3565b8060026000828254611d1591906125cd565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d6a91906125cd565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dcf91906122c6565b60405180910390a3611de3600083836120e8565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4e90612fbe565b60405180910390fd5b611e63826000836120e3565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee090613050565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611f409190613070565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fa591906122c6565b60405180910390a3611fb9836000846120e8565b505050565b60008183611fcc9190613070565b905092915050565b600080611fe0836116c2565b9150915081156120de5760076001600780549050611ffe9190613070565b8154811061200f5761200e61256f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007828154811061204e5761204d61256f565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060078054806120a8576120a76130a4565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561212757808201518184015260208101905061210c565b83811115612136576000848401525b50505050565b6000601f19601f8301169050919050565b6000612158826120ed565b61216281856120f8565b9350612172818560208601612109565b61217b8161213c565b840191505092915050565b600060208201905081810360008301526121a0818461214d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121d8826121ad565b9050919050565b6121e8816121cd565b81146121f357600080fd5b50565b600081359050612205816121df565b92915050565b6000819050919050565b61221e8161220b565b811461222957600080fd5b50565b60008135905061223b81612215565b92915050565b60008060408385031215612258576122576121a8565b5b6000612266858286016121f6565b92505060206122778582860161222c565b9150509250929050565b60008115159050919050565b61229681612281565b82525050565b60006020820190506122b1600083018461228d565b92915050565b6122c08161220b565b82525050565b60006020820190506122db60008301846122b7565b92915050565b6000806000606084860312156122fa576122f96121a8565b5b6000612308868287016121f6565b9350506020612319868287016121f6565b925050604061232a8682870161222c565b9150509250925092565b6000819050919050565b600061235961235461234f846121ad565b612334565b6121ad565b9050919050565b600061236b8261233e565b9050919050565b600061237d82612360565b9050919050565b61238d81612372565b82525050565b60006020820190506123a86000830184612384565b92915050565b600060ff82169050919050565b6123c4816123ae565b82525050565b60006020820190506123df60008301846123bb565b92915050565b6000602082840312156123fb576123fa6121a8565b5b6000612409848285016121f6565b91505092915050565b600060208284031215612428576124276121a8565b5b60006124368482850161222c565b91505092915050565b612448816121cd565b82525050565b6000602082019050612463600083018461243f565b92915050565b600061247482612360565b9050919050565b61248481612469565b82525050565b600060208201905061249f600083018461247b565b92915050565b600080604083850312156124bc576124bb6121a8565b5b60006124ca858286016121f6565b92505060206124db858286016121f6565b9150509250929050565b60006040820190506124fa600083018561228d565b61250760208301846122b7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061255557607f821691505b602082108114156125695761256861250e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006125d88261220b565b91506125e38361220b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156126185761261761259e565b5b828201905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061267f6028836120f8565b915061268a82612623565b604082019050919050565b600060208201905081810360008301526126ae81612672565b9050919050565b7f6f6e6c792063757272656e74207374616b65686f6c646572732063616e20726560008201527f6c6f636b207374616b6500000000000000000000000000000000000000000000602082015250565b6000612711602a836120f8565b915061271c826126b5565b604082019050919050565b6000602082019050818103600083015261274081612704565b9050919050565b7f4e6f7468696e6720746f20646973747269627574650000000000000000000000600082015250565b600061277d6015836120f8565b915061278882612747565b602082019050919050565b600060208201905081810360008301526127ac81612770565b9050919050565b7f43616c6c6572206973206e6f7420617574686f72697365640000000000000000600082015250565b60006127e96018836120f8565b91506127f4826127b3565b602082019050919050565b60006020820190508181036000830152612818816127dc565b9050919050565b6000606082019050612834600083018661243f565b612841602083018561243f565b61284e60408301846122b7565b949350505050565b600060408201905061286b600083018561243f565b61287860208301846122b7565b9392505050565b7f6f6e6c79206f776e657220736574206e6577206f776e65720000000000000000600082015250565b60006128b56018836120f8565b91506128c08261287f565b602082019050919050565b600060208201905081810360008301526128e4816128a8565b9050919050565b6000604082019050612900600083018561243f565b61290d602083018461243f565b9392505050565b7f6d696e696d756d20313030303020424f4c4c59206e6565647320746f2062652060008201527f7374616b65640000000000000000000000000000000000000000000000000000602082015250565b60006129706026836120f8565b915061297b82612914565b604082019050919050565b6000602082019050818103600083015261299f81612963565b9050919050565b6129af81612281565b81146129ba57600080fd5b50565b6000815190506129cc816129a6565b92915050565b6000602082840312156129e8576129e76121a8565b5b60006129f6848285016129bd565b91505092915050565b6000604082019050612a1460008301856122b7565b612a21602083018461243f565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612a846025836120f8565b9150612a8f82612a28565b604082019050919050565b60006020820190508181036000830152612ab381612a77565b9050919050565b7f506c65617365207761697420333635206461797320756e74696c2072656d6f7660008201527f696e67207374616b650000000000000000000000000000000000000000000000602082015250565b6000612b166029836120f8565b9150612b2182612aba565b604082019050919050565b60006020820190508181036000830152612b4581612b09565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612ba86024836120f8565b9150612bb382612b4c565b604082019050919050565b60006020820190508181036000830152612bd781612b9b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c3a6022836120f8565b9150612c4582612bde565b604082019050919050565b60006020820190508181036000830152612c6981612c2d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612ccc6025836120f8565b9150612cd782612c70565b604082019050919050565b60006020820190508181036000830152612cfb81612cbf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d5e6023836120f8565b9150612d6982612d02565b604082019050919050565b60006020820190508181036000830152612d8d81612d51565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612df06026836120f8565b9150612dfb82612d94565b604082019050919050565b60006020820190508181036000830152612e1f81612de3565b9050919050565b6000612e318261220b565b9150612e3c8361220b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e7557612e7461259e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612eba8261220b565b9150612ec58361220b565b925082612ed557612ed4612e80565b5b828204905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612f16601f836120f8565b9150612f2182612ee0565b602082019050919050565b60006020820190508181036000830152612f4581612f09565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fa86021836120f8565b9150612fb382612f4c565b604082019050919050565b60006020820190508181036000830152612fd781612f9b565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061303a6022836120f8565b915061304582612fde565b604082019050919050565b600060208201905081810360008301526130698161302d565b9050919050565b600061307b8261220b565b91506130868361220b565b9250828210156130995761309861259e565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122068021759adbf099faf7a832a52d5246be3179fd7568b372eb2b4ec0244c9a98564736f6c634300080a0033000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000006bd361e10c1afed0d95259e7c0115f3a60e4ea99000000000000000000000000e14a683439a5da18769889da4d511eefd6bc88cb

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063a9059cbb1161007c578063a9059cbb146103a2578063bf9befb1146103d2578063c4441cce146103f0578063d9c6b0331461040c578063dd62ed3e1461042a578063ef037b901461045a5761014d565b806370a08231146102ce5780637cb97b2b146102fe5780638da5cb5b1461031a57806395d89b4114610338578063987ec19714610356578063a457c2d7146103725761014d565b80632f48ab7d116101155780632f48ab7d1461020c578063313ce5671461022a5780633950935114610248578063426233601461027857806359377627146102a857806359974e38146102b25761014d565b806306fdde0314610152578063095ea7b3146101705780630cabb891146101a057806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61048b565b6040516101679190612186565b60405180910390f35b61018a60048036038101906101859190612241565b61051d565b604051610197919061229c565b60405180910390f35b6101a861053b565b6040516101b591906122c6565b60405180910390f35b6101c6610689565b6040516101d391906122c6565b60405180910390f35b6101f660048036038101906101f191906122e1565b610693565b604051610203919061229c565b60405180910390f35b61021461078b565b6040516102219190612393565b60405180910390f35b6102326107af565b60405161023f91906123ca565b60405180910390f35b610262600480360381019061025d9190612241565b6107b8565b60405161026f919061229c565b60405180910390f35b610292600480360381019061028d91906123e5565b610864565b60405161029f91906122c6565b60405180910390f35b6102b06108ad565b005b6102cc60048036038101906102c79190612412565b610998565b005b6102e860048036038101906102e391906123e5565b610ca5565b6040516102f591906122c6565b60405180910390f35b610318600480360381019061031391906123e5565b610ced565b005b610322610dfa565b60405161032f919061244e565b60405180910390f35b610340610e20565b60405161034d9190612186565b60405180910390f35b610370600480360381019061036b9190612412565b610eb2565b005b61038c60048036038101906103879190612241565b611148565b604051610399919061229c565b60405180910390f35b6103bc60048036038101906103b79190612241565b611233565b6040516103c9919061229c565b60405180910390f35b6103da611251565b6040516103e791906122c6565b60405180910390f35b61040a60048036038101906104059190612412565b611316565b005b610414611617565b604051610421919061248a565b60405180910390f35b610444600480360381019061043f91906124a5565b61163b565b60405161045191906122c6565b60405180910390f35b610474600480360381019061046f91906123e5565b6116c2565b6040516104829291906124e5565b60405180910390f35b60606003805461049a9061253d565b80601f01602080910402602001604051908101604052809291908181526020018280546104c69061253d565b80156105135780601f106104e857610100808354040283529160200191610513565b820191906000526020600020905b8154815290600101906020018083116104f657829003601f168201915b5050505050905090565b600061053161052a611776565b848461177e565b6001905092915050565b6000806000905060005b6007805490508110156106815742600660006007848154811061056b5761056a61256f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561066d5761066a60086000600784815481106105f5576105f461256f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361194990919063ffffffff16565b91505b60018161067a91906125cd565b9050610545565b508091505090565b6000600254905090565b60006106a084848461195f565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106eb611776565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561076b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076290612695565b60405180910390fd5b61077f85610777611776565b85840361177e565b60019150509392505050565b7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec781565b60006012905090565b600061085a6107c5611776565b8484600160006107d3611776565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461085591906125cd565b61177e565b6001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006108b8336116c2565b5090506001151581151514610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f990612727565b60405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506301e133804261095591906125cd565b81600001819055507f852f6bd034b2506e91405ec15c016a85f64312ec8ca434c29332895c607e09953360405161098c919061244e565b60405180910390a15050565b600081116109db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d290612793565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a62906127ff565b60405180910390fd5b7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff166323b872dd600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630846040518463ffffffff1660e01b8152600401610aea9392919061281f565b600060405180830381600087803b158015610b0457600080fd5b505af1158015610b18573d6000803e3d6000fd5b5050505060005b600780549050811015610ca157600060078281548110610b4257610b4161256f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610b7a82610864565b90506000610b8661053b565b905042600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541115610c8a576000610bf982610beb8886611be090919063ffffffff16565b611bf690919063ffffffff16565b90507f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85836040518363ffffffff1660e01b8152600401610c56929190612856565b600060405180830381600087803b158015610c7057600080fd5b505af1158015610c84573d6000803e3d6000fd5b50505050505b505050600181610c9a91906125cd565b9050610b1f565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d74906128cb565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ff6d9a4eed19b18a4ebce1928e03a529b96e365cadccdff034fd0f85c0c75b6aa8133604051610def9291906128eb565b60405180910390a150565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054610e2f9061253d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5b9061253d565b8015610ea85780601f10610e7d57610100808354040283529160200191610ea8565b820191906000526020600020905b815481529060010190602001808311610e8b57829003601f168201915b5050505050905090565b69021e19e0c9bab2400000811015610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef690612986565b60405180910390fd5b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610f5157610f5033611c0c565b5b610fa381600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461194990919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506301e133804261103991906125cd565b816000018190555061105882826001015461194990919063ffffffff16565b81600101819055507f0000000000000000000000006bd361e10c1afed0d95259e7c0115f3a60e4ea9973ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016110bd9392919061281f565b6020604051808303816000875af11580156110dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110091906129d2565b5061110b3383611c87565b7fbc1ef703eac9d781238d7b90b35df4583be56f59ff0aac617094cfe55d509a1a823360405161113c9291906129ff565b60405180910390a15050565b60008060016000611157611776565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120b90612a9a565b60405180910390fd5b61122861121f611776565b8585840361177e565b600191505092915050565b6000611247611240611776565b848461195f565b6001905092915050565b6000806000905060005b60078054905081101561130e576112f860086000600784815481106112835761128261256f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361194990919063ffffffff16565b915060018161130791906125cd565b905061125b565b508091505090565b42600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541080156113a95750600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548111155b6113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df90612b2c565b60405180910390fd5b6113f23382611de7565b61144481600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fbe90919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506114e1828260010154611fbe90919063ffffffff16565b81600101819055506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561153b5761153a33611fd4565b5b7f0000000000000000000000006bd361e10c1afed0d95259e7c0115f3a60e4ea9973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611596929190612856565b6020604051808303816000875af11580156115b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d991906129d2565b507f81a6b63d8fc60d9fffcc822d8f5835977bce32e74162023638838b962ff0eea3823360405161160b9291906129ff565b60405180910390a15050565b7f0000000000000000000000006bd361e10c1afed0d95259e7c0115f3a60e4ea9981565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060005b60078054905081101561176857600781815481106116e9576116e861256f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611754576001819250925050611771565b60018161176191906125cd565b90506116c8565b50600080915091505b915091565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e590612bbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561185e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185590612c50565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161193c91906122c6565b60405180910390a3505050565b6000818361195791906125cd565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c690612ce2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3690612d74565b60405180910390fd5b611a4a8383836120e3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac790612e06565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b6391906125cd565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bc791906122c6565b60405180910390a3611bda8484846120e8565b50505050565b60008183611bee9190612e26565b905092915050565b60008183611c049190612eaf565b905092915050565b6000611c17826116c2565b50905080611c83576007829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cee90612f2c565b60405180910390fd5b611d03600083836120e3565b8060026000828254611d1591906125cd565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d6a91906125cd565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dcf91906122c6565b60405180910390a3611de3600083836120e8565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4e90612fbe565b60405180910390fd5b611e63826000836120e3565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee090613050565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611f409190613070565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fa591906122c6565b60405180910390a3611fb9836000846120e8565b505050565b60008183611fcc9190613070565b905092915050565b600080611fe0836116c2565b9150915081156120de5760076001600780549050611ffe9190613070565b8154811061200f5761200e61256f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007828154811061204e5761204d61256f565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060078054806120a8576120a76130a4565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561212757808201518184015260208101905061210c565b83811115612136576000848401525b50505050565b6000601f19601f8301169050919050565b6000612158826120ed565b61216281856120f8565b9350612172818560208601612109565b61217b8161213c565b840191505092915050565b600060208201905081810360008301526121a0818461214d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121d8826121ad565b9050919050565b6121e8816121cd565b81146121f357600080fd5b50565b600081359050612205816121df565b92915050565b6000819050919050565b61221e8161220b565b811461222957600080fd5b50565b60008135905061223b81612215565b92915050565b60008060408385031215612258576122576121a8565b5b6000612266858286016121f6565b92505060206122778582860161222c565b9150509250929050565b60008115159050919050565b61229681612281565b82525050565b60006020820190506122b1600083018461228d565b92915050565b6122c08161220b565b82525050565b60006020820190506122db60008301846122b7565b92915050565b6000806000606084860312156122fa576122f96121a8565b5b6000612308868287016121f6565b9350506020612319868287016121f6565b925050604061232a8682870161222c565b9150509250925092565b6000819050919050565b600061235961235461234f846121ad565b612334565b6121ad565b9050919050565b600061236b8261233e565b9050919050565b600061237d82612360565b9050919050565b61238d81612372565b82525050565b60006020820190506123a86000830184612384565b92915050565b600060ff82169050919050565b6123c4816123ae565b82525050565b60006020820190506123df60008301846123bb565b92915050565b6000602082840312156123fb576123fa6121a8565b5b6000612409848285016121f6565b91505092915050565b600060208284031215612428576124276121a8565b5b60006124368482850161222c565b91505092915050565b612448816121cd565b82525050565b6000602082019050612463600083018461243f565b92915050565b600061247482612360565b9050919050565b61248481612469565b82525050565b600060208201905061249f600083018461247b565b92915050565b600080604083850312156124bc576124bb6121a8565b5b60006124ca858286016121f6565b92505060206124db858286016121f6565b9150509250929050565b60006040820190506124fa600083018561228d565b61250760208301846122b7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061255557607f821691505b602082108114156125695761256861250e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006125d88261220b565b91506125e38361220b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156126185761261761259e565b5b828201905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061267f6028836120f8565b915061268a82612623565b604082019050919050565b600060208201905081810360008301526126ae81612672565b9050919050565b7f6f6e6c792063757272656e74207374616b65686f6c646572732063616e20726560008201527f6c6f636b207374616b6500000000000000000000000000000000000000000000602082015250565b6000612711602a836120f8565b915061271c826126b5565b604082019050919050565b6000602082019050818103600083015261274081612704565b9050919050565b7f4e6f7468696e6720746f20646973747269627574650000000000000000000000600082015250565b600061277d6015836120f8565b915061278882612747565b602082019050919050565b600060208201905081810360008301526127ac81612770565b9050919050565b7f43616c6c6572206973206e6f7420617574686f72697365640000000000000000600082015250565b60006127e96018836120f8565b91506127f4826127b3565b602082019050919050565b60006020820190508181036000830152612818816127dc565b9050919050565b6000606082019050612834600083018661243f565b612841602083018561243f565b61284e60408301846122b7565b949350505050565b600060408201905061286b600083018561243f565b61287860208301846122b7565b9392505050565b7f6f6e6c79206f776e657220736574206e6577206f776e65720000000000000000600082015250565b60006128b56018836120f8565b91506128c08261287f565b602082019050919050565b600060208201905081810360008301526128e4816128a8565b9050919050565b6000604082019050612900600083018561243f565b61290d602083018461243f565b9392505050565b7f6d696e696d756d20313030303020424f4c4c59206e6565647320746f2062652060008201527f7374616b65640000000000000000000000000000000000000000000000000000602082015250565b60006129706026836120f8565b915061297b82612914565b604082019050919050565b6000602082019050818103600083015261299f81612963565b9050919050565b6129af81612281565b81146129ba57600080fd5b50565b6000815190506129cc816129a6565b92915050565b6000602082840312156129e8576129e76121a8565b5b60006129f6848285016129bd565b91505092915050565b6000604082019050612a1460008301856122b7565b612a21602083018461243f565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612a846025836120f8565b9150612a8f82612a28565b604082019050919050565b60006020820190508181036000830152612ab381612a77565b9050919050565b7f506c65617365207761697420333635206461797320756e74696c2072656d6f7660008201527f696e67207374616b650000000000000000000000000000000000000000000000602082015250565b6000612b166029836120f8565b9150612b2182612aba565b604082019050919050565b60006020820190508181036000830152612b4581612b09565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612ba86024836120f8565b9150612bb382612b4c565b604082019050919050565b60006020820190508181036000830152612bd781612b9b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c3a6022836120f8565b9150612c4582612bde565b604082019050919050565b60006020820190508181036000830152612c6981612c2d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612ccc6025836120f8565b9150612cd782612c70565b604082019050919050565b60006020820190508181036000830152612cfb81612cbf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d5e6023836120f8565b9150612d6982612d02565b604082019050919050565b60006020820190508181036000830152612d8d81612d51565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612df06026836120f8565b9150612dfb82612d94565b604082019050919050565b60006020820190508181036000830152612e1f81612de3565b9050919050565b6000612e318261220b565b9150612e3c8361220b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e7557612e7461259e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612eba8261220b565b9150612ec58361220b565b925082612ed557612ed4612e80565b5b828204905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612f16601f836120f8565b9150612f2182612ee0565b602082019050919050565b60006020820190508181036000830152612f4581612f09565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fa86021836120f8565b9150612fb382612f4c565b604082019050919050565b60006020820190508181036000830152612fd781612f9b565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061303a6022836120f8565b915061304582612fde565b604082019050919050565b600060208201905081810360008301526130698161302d565b9050919050565b600061307b8261220b565b91506130868361220b565b9250828210156130995761309861259e565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122068021759adbf099faf7a832a52d5246be3179fd7568b372eb2b4ec0244c9a98564736f6c634300080a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000006bd361e10c1afed0d95259e7c0115f3a60e4ea99000000000000000000000000e14a683439a5da18769889da4d511eefd6bc88cb

-----Decoded View---------------
Arg [0] : _usdt (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [1] : _BOLLY (address): 0x6bd361e10c1afed0d95259e7C0115f3A60e4ea99
Arg [2] : _owner (address): 0xe14A683439a5DA18769889dA4d511EEFD6bc88Cb

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [1] : 0000000000000000000000006bd361e10c1afed0d95259e7c0115f3a60e4ea99
Arg [2] : 000000000000000000000000e14a683439a5da18769889da4d511eefd6bc88cb


Deployed Bytecode Sourcemap

24058:6486:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13749:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15916:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27382:414;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14869:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16567:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24343:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14711:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17468:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26738:140;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28558:340;;;:::i;:::-;;29582:713;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15040:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24987:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24201:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13968:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27841:711;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18186:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15380:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27041:295;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28973:597;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24165:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15618:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25478:273;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;13749:100;13803:13;13836:5;13829:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13749:100;:::o;15916:169::-;15999:4;16016:39;16025:12;:10;:12::i;:::-;16039:7;16048:6;16016:8;:39::i;:::-;16073:4;16066:11;;15916:169;;;;:::o;27382:414::-;27459:7;27482:28;27513:1;27482:32;;27529:9;27524:229;27548:12;:19;;;;27544:1;:23;27524:229;;;27625:15;27593:5;:22;27599:12;27612:1;27599:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27593:22;;;;;;;;;;;;;;;:29;;;:47;27590:153;;;27679:49;27704:6;:23;27711:12;27724:1;27711:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27704:23;;;;;;;;;;;;;;;;27679:20;:24;;:49;;;;:::i;:::-;27656:72;;27590:153;27574:1;27569:6;;;;;:::i;:::-;;;27524:229;;;;27769:20;27762:27;;;27382:414;:::o;14869:108::-;14930:7;14957:12;;14950:19;;14869:108;:::o;16567:492::-;16707:4;16724:36;16734:6;16742:9;16753:6;16724:9;:36::i;:::-;16773:24;16800:11;:19;16812:6;16800:19;;;;;;;;;;;;;;;:33;16820:12;:10;:12::i;:::-;16800:33;;;;;;;;;;;;;;;;16773:60;;16872:6;16852:16;:26;;16844:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16959:57;16968:6;16976:12;:10;:12::i;:::-;17009:6;16990:16;:25;16959:8;:57::i;:::-;17047:4;17040:11;;;16567:492;;;;;:::o;24343:32::-;;;:::o;14711:93::-;14769:5;14794:2;14787:9;;14711:93;:::o;17468:215::-;17556:4;17573:80;17582:12;:10;:12::i;:::-;17596:7;17642:10;17605:11;:25;17617:12;:10;:12::i;:::-;17605:25;;;;;;;;;;;;;;;:34;17631:7;17605:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;17573:8;:80::i;:::-;17671:4;17664:11;;17468:215;;;;:::o;26738:140::-;26821:7;26851:6;:20;26858:12;26851:20;;;;;;;;;;;;;;;;26844:27;;26738:140;;;:::o;28558:340::-;28603:19;28628:25;28642:10;28628:13;:25::i;:::-;28602:51;;;28688:4;28672:20;;:14;:20;;;28664:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;28750:23;28776:5;:17;28782:10;28776:17;;;;;;;;;;;;;;;28750:43;;24837:8;28822:15;:27;;;;:::i;:::-;28804:8;:15;;:45;;;;28865:25;28879:10;28865:25;;;;;;:::i;:::-;;;;;;;;28591:307;;28558:340::o;29582:713::-;29659:1;29650:6;:10;29642:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;29719:5;;;;;;;;;;;29705:19;;:10;:19;;;29697:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;29764:4;:17;;;29782:5;;;;;;;;;;;29796:4;29802:6;29764:45;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29826:9;29821:467;29845:12;:19;;;;29841:1;:23;29821:467;;;29887:19;29909:12;29922:1;29909:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29887:37;;29938:15;29956:20;29964:11;29956:7;:20::i;:::-;29938:38;;29990:19;30012:23;:21;:23::i;:::-;29990:45;;30080:15;30052:5;:18;30058:11;30052:18;;;;;;;;;;;;;;;:25;;;:43;30049:223;;;30111:14;30128:38;30154:11;30129:19;30141:6;30129:7;:11;;:19;;;;:::i;:::-;30128:25;;:38;;;;:::i;:::-;30111:55;;30223:4;:13;;;30237:11;30250:6;30223:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30097:175;30049:223;29873:415;;;29871:1;29866:6;;;;;:::i;:::-;;;29821:467;;;;29582:713;:::o;15040:127::-;15114:7;15141:9;:18;15151:7;15141:18;;;;;;;;;;;;;;;;15134:25;;15040:127;;;:::o;24987:190::-;25062:5;;;;;;;;;;;25050:17;;:10;:17;;;25042:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;25116:6;25108:5;;:14;;;;;;;;;;;;;;;;;;25138:29;25149:6;25156:10;25138:29;;;;;;;:::i;:::-;;;;;;;;24987:190;:::o;24201:20::-;;;;;;;;;;;;;:::o;13968:104::-;14024:13;14057:7;14050:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13968:104;:::o;27841:711::-;27978:23;27967:7;:34;;27959:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;28079:1;28057:6;:18;28064:10;28057:18;;;;;;;;;;;;;;;;:23;28054:54;;;28082:26;28097:10;28082:14;:26::i;:::-;28054:54;28139:31;28162:7;28139:6;:18;28146:10;28139:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;28118:6;:18;28125:10;28118:18;;;;;;;;;;;;;;;:52;;;;28224:23;28250:5;:17;28256:10;28250:17;;;;;;;;;;;;;;;28224:43;;24837:8;28296:15;:27;;;;:::i;:::-;28278:8;:15;;:45;;;;28359:35;28386:7;28359:8;:22;;;:26;;:35;;;;:::i;:::-;28334:8;:22;;:60;;;;28405:5;:18;;;28424:10;28444:4;28451:7;28405:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28470:26;28476:10;28488:7;28470:5;:26::i;:::-;28512:32;28525:7;28533:10;28512:32;;;;;;;:::i;:::-;;;;;;;;27888:664;27841:711;:::o;18186:413::-;18279:4;18296:24;18323:11;:25;18335:12;:10;:12::i;:::-;18323:25;;;;;;;;;;;;;;;:34;18349:7;18323:34;;;;;;;;;;;;;;;;18296:61;;18396:15;18376:16;:35;;18368:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;18489:67;18498:12;:10;:12::i;:::-;18512:7;18540:15;18521:16;:34;18489:8;:67::i;:::-;18587:4;18580:11;;;18186:413;;;;:::o;15380:175::-;15466:4;15483:42;15493:12;:10;:12::i;:::-;15507:9;15518:6;15483:9;:42::i;:::-;15543:4;15536:11;;15380:175;;;;:::o;27041:295::-;27111:7;27134:20;27157:1;27134:24;;27173:9;27168:133;27192:12;:19;;;;27188:1;:23;27168:133;;;27249:41;27266:6;:23;27273:12;27286:1;27273:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27266:23;;;;;;;;;;;;;;;;27249:12;:16;;:41;;;;:::i;:::-;27234:56;;27218:1;27213:6;;;;;:::i;:::-;;;27168:133;;;;27317:12;27310:19;;;27041:295;:::o;28973:597::-;29068:15;29041:5;:17;29047:10;29041:17;;;;;;;;;;;;;;;:24;;;:42;29040:91;;;;;29099:5;:17;29105:10;29099:17;;;;;;;;;;;;;;;:31;;;29089:6;:41;;29040:91;29031:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;29188:25;29194:10;29206:6;29188:5;:25::i;:::-;29246:30;29269:6;29246;:18;29253:10;29246:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;29225:6;:18;29232:10;29225:18;;;;;;;;;;;;;;;:51;;;;29288:23;29314:5;:17;29320:10;29314:17;;;;;;;;;;;;;;;29288:43;;29368:34;29395:6;29368:8;:22;;;:26;;:34;;;;:::i;:::-;29343:8;:22;;:59;;;;29437:1;29415:6;:18;29422:10;29415:18;;;;;;;;;;;;;;;;:23;29412:57;;;29440:29;29458:10;29440:17;:29::i;:::-;29412:57;29480:5;:14;;;29495:10;29507:6;29480:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29530:32;29544:6;29551:10;29530:32;;;;;;;:::i;:::-;;;;;;;;29020:550;28973:597;:::o;24165:29::-;;;:::o;15618:151::-;15707:7;15734:11;:18;15746:5;15734:18;;;;;;;;;;;;;;;:27;15753:7;15734:27;;;;;;;;;;;;;;;;15727:34;;15618:151;;;;:::o;25478:273::-;25563:4;25569:7;25597:9;25592:126;25616:12;:19;;;;25612:1;:23;25592:126;;;25674:12;25687:1;25674:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25662:27;;:8;:27;;;25658:49;;;25699:4;25705:1;25691:16;;;;;;;25658:49;25642:1;25637:6;;;;;:::i;:::-;;;25592:126;;;;25735:5;25742:1;25727:17;;;;25478:273;;;;:::o;7856:98::-;7909:7;7936:10;7929:17;;7856:98;:::o;21870:380::-;22023:1;22006:19;;:5;:19;;;;21998:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22104:1;22085:21;;:7;:21;;;;22077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22188:6;22158:11;:18;22170:5;22158:18;;;;;;;;;;;;;;;:27;22177:7;22158:27;;;;;;;;;;;;;;;:36;;;;22226:7;22210:32;;22219:5;22210:32;;;22235:6;22210:32;;;;;;:::i;:::-;;;;;;;;21870:380;;;:::o;3039:98::-;3097:7;3128:1;3124;:5;;;;:::i;:::-;3117:12;;3039:98;;;;:::o;19089:733::-;19247:1;19229:20;;:6;:20;;;;19221:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19331:1;19310:23;;:9;:23;;;;19302:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19386:47;19407:6;19415:9;19426:6;19386:20;:47::i;:::-;19446:21;19470:9;:17;19480:6;19470:17;;;;;;;;;;;;;;;;19446:41;;19523:6;19506:13;:23;;19498:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;19644:6;19628:13;:22;19608:9;:17;19618:6;19608:17;;;;;;;;;;;;;;;:42;;;;19696:6;19672:9;:20;19682:9;19672:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;19737:9;19720:35;;19729:6;19720:35;;;19748:6;19720:35;;;;;;:::i;:::-;;;;;;;;19768:46;19788:6;19796:9;19807:6;19768:19;:46::i;:::-;19210:612;19089:733;;;:::o;3777:98::-;3835:7;3866:1;3862;:5;;;;:::i;:::-;3855:12;;3777:98;;;;:::o;4176:::-;4234:7;4265:1;4261;:5;;;;:::i;:::-;4254:12;;4176:98;;;;:::o;25871:197::-;25948:19;25973:27;25987:12;25973:13;:27::i;:::-;25947:53;;;26014:14;26010:51;;26030:12;26048;26030:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26010:51;25937:131;25871:197;:::o;20109:399::-;20212:1;20193:21;;:7;:21;;;;20185:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20263:49;20292:1;20296:7;20305:6;20263:20;:49::i;:::-;20341:6;20325:12;;:22;;;;;;;:::i;:::-;;;;;;;;20380:6;20358:9;:18;20368:7;20358:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;20423:7;20402:37;;20419:1;20402:37;;;20432:6;20402:37;;;;;;:::i;:::-;;;;;;;;20452:48;20480:1;20484:7;20493:6;20452:19;:48::i;:::-;20109:399;;:::o;20841:591::-;20944:1;20925:21;;:7;:21;;;;20917:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20997:49;21018:7;21035:1;21039:6;20997:20;:49::i;:::-;21059:22;21084:9;:18;21094:7;21084:18;;;;;;;;;;;;;;;;21059:43;;21139:6;21121:14;:24;;21113:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21258:6;21241:14;:23;21220:9;:18;21230:7;21220:18;;;;;;;;;;;;;;;:44;;;;21302:6;21286:12;;:22;;;;;;;:::i;:::-;;;;;;;;21352:1;21326:37;;21335:7;21326:37;;;21356:6;21326:37;;;;;;:::i;:::-;;;;;;;;21376:48;21396:7;21413:1;21417:6;21376:19;:48::i;:::-;20906:526;20841:591;;:::o;3420:98::-;3478:7;3509:1;3505;:5;;;;:::i;:::-;3498:12;;3420:98;;;;:::o;26194:287::-;26274:19;26295:9;26308:27;26322:12;26308:13;:27::i;:::-;26273:62;;;;26348:14;26345:130;;;26395:12;26430:1;26408:12;:19;;;;:23;;;;:::i;:::-;26395:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26377:12;26390:1;26377:15;;;;;;;;:::i;:::-;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;26446:12;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;26345:130;26263:218;;26194:287;:::o;22850:125::-;;;;:::o;23579:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:60::-;4499:3;4520:5;4513:12;;4471:60;;;:::o;4537:142::-;4587:9;4620:53;4638:34;4647:24;4665:5;4647:24;:::i;:::-;4638:34;:::i;:::-;4620:53;:::i;:::-;4607:66;;4537:142;;;:::o;4685:126::-;4735:9;4768:37;4799:5;4768:37;:::i;:::-;4755:50;;4685:126;;;:::o;4817:144::-;4885:9;4918:37;4949:5;4918:37;:::i;:::-;4905:50;;4817:144;;;:::o;4967:167::-;5072:55;5121:5;5072:55;:::i;:::-;5067:3;5060:68;4967:167;;:::o;5140:258::-;5251:4;5289:2;5278:9;5274:18;5266:26;;5302:89;5388:1;5377:9;5373:17;5364:6;5302:89;:::i;:::-;5140:258;;;;:::o;5404:86::-;5439:7;5479:4;5472:5;5468:16;5457:27;;5404:86;;;:::o;5496:112::-;5579:22;5595:5;5579:22;:::i;:::-;5574:3;5567:35;5496:112;;:::o;5614:214::-;5703:4;5741:2;5730:9;5726:18;5718:26;;5754:67;5818:1;5807:9;5803:17;5794:6;5754:67;:::i;:::-;5614:214;;;;:::o;5834:329::-;5893:6;5942:2;5930:9;5921:7;5917:23;5913:32;5910:119;;;5948:79;;:::i;:::-;5910:119;6068:1;6093:53;6138:7;6129:6;6118:9;6114:22;6093:53;:::i;:::-;6083:63;;6039:117;5834:329;;;;:::o;6169:::-;6228:6;6277:2;6265:9;6256:7;6252:23;6248:32;6245:119;;;6283:79;;:::i;:::-;6245:119;6403:1;6428:53;6473:7;6464:6;6453:9;6449:22;6428:53;:::i;:::-;6418:63;;6374:117;6169:329;;;;:::o;6504:118::-;6591:24;6609:5;6591:24;:::i;:::-;6586:3;6579:37;6504:118;;:::o;6628:222::-;6721:4;6759:2;6748:9;6744:18;6736:26;;6772:71;6840:1;6829:9;6825:17;6816:6;6772:71;:::i;:::-;6628:222;;;;:::o;6856:140::-;6920:9;6953:37;6984:5;6953:37;:::i;:::-;6940:50;;6856:140;;;:::o;7002:159::-;7103:51;7148:5;7103:51;:::i;:::-;7098:3;7091:64;7002:159;;:::o;7167:250::-;7274:4;7312:2;7301:9;7297:18;7289:26;;7325:85;7407:1;7396:9;7392:17;7383:6;7325:85;:::i;:::-;7167:250;;;;:::o;7423:474::-;7491:6;7499;7548:2;7536:9;7527:7;7523:23;7519:32;7516:119;;;7554:79;;:::i;:::-;7516:119;7674:1;7699:53;7744:7;7735:6;7724:9;7720:22;7699:53;:::i;:::-;7689:63;;7645:117;7801:2;7827:53;7872:7;7863:6;7852:9;7848:22;7827:53;:::i;:::-;7817:63;;7772:118;7423:474;;;;;:::o;7903:320::-;8018:4;8056:2;8045:9;8041:18;8033:26;;8069:65;8131:1;8120:9;8116:17;8107:6;8069:65;:::i;:::-;8144:72;8212:2;8201:9;8197:18;8188:6;8144:72;:::i;:::-;7903:320;;;;;:::o;8229:180::-;8277:77;8274:1;8267:88;8374:4;8371:1;8364:15;8398:4;8395:1;8388:15;8415:320;8459:6;8496:1;8490:4;8486:12;8476:22;;8543:1;8537:4;8533:12;8564:18;8554:81;;8620:4;8612:6;8608:17;8598:27;;8554:81;8682:2;8674:6;8671:14;8651:18;8648:38;8645:84;;;8701:18;;:::i;:::-;8645:84;8466:269;8415:320;;;:::o;8741:180::-;8789:77;8786:1;8779:88;8886:4;8883:1;8876:15;8910:4;8907:1;8900:15;8927:180;8975:77;8972:1;8965:88;9072:4;9069:1;9062:15;9096:4;9093:1;9086:15;9113:305;9153:3;9172:20;9190:1;9172:20;:::i;:::-;9167:25;;9206:20;9224:1;9206:20;:::i;:::-;9201:25;;9360:1;9292:66;9288:74;9285:1;9282:81;9279:107;;;9366:18;;:::i;:::-;9279:107;9410:1;9407;9403:9;9396:16;;9113:305;;;;:::o;9424:227::-;9564:34;9560:1;9552:6;9548:14;9541:58;9633:10;9628:2;9620:6;9616:15;9609:35;9424:227;:::o;9657:366::-;9799:3;9820:67;9884:2;9879:3;9820:67;:::i;:::-;9813:74;;9896:93;9985:3;9896:93;:::i;:::-;10014:2;10009:3;10005:12;9998:19;;9657:366;;;:::o;10029:419::-;10195:4;10233:2;10222:9;10218:18;10210:26;;10282:9;10276:4;10272:20;10268:1;10257:9;10253:17;10246:47;10310:131;10436:4;10310:131;:::i;:::-;10302:139;;10029:419;;;:::o;10454:229::-;10594:34;10590:1;10582:6;10578:14;10571:58;10663:12;10658:2;10650:6;10646:15;10639:37;10454:229;:::o;10689:366::-;10831:3;10852:67;10916:2;10911:3;10852:67;:::i;:::-;10845:74;;10928:93;11017:3;10928:93;:::i;:::-;11046:2;11041:3;11037:12;11030:19;;10689:366;;;:::o;11061:419::-;11227:4;11265:2;11254:9;11250:18;11242:26;;11314:9;11308:4;11304:20;11300:1;11289:9;11285:17;11278:47;11342:131;11468:4;11342:131;:::i;:::-;11334:139;;11061:419;;;:::o;11486:171::-;11626:23;11622:1;11614:6;11610:14;11603:47;11486:171;:::o;11663:366::-;11805:3;11826:67;11890:2;11885:3;11826:67;:::i;:::-;11819:74;;11902:93;11991:3;11902:93;:::i;:::-;12020:2;12015:3;12011:12;12004:19;;11663:366;;;:::o;12035:419::-;12201:4;12239:2;12228:9;12224:18;12216:26;;12288:9;12282:4;12278:20;12274:1;12263:9;12259:17;12252:47;12316:131;12442:4;12316:131;:::i;:::-;12308:139;;12035:419;;;:::o;12460:174::-;12600:26;12596:1;12588:6;12584:14;12577:50;12460:174;:::o;12640:366::-;12782:3;12803:67;12867:2;12862:3;12803:67;:::i;:::-;12796:74;;12879:93;12968:3;12879:93;:::i;:::-;12997:2;12992:3;12988:12;12981:19;;12640:366;;;:::o;13012:419::-;13178:4;13216:2;13205:9;13201:18;13193:26;;13265:9;13259:4;13255:20;13251:1;13240:9;13236:17;13229:47;13293:131;13419:4;13293:131;:::i;:::-;13285:139;;13012:419;;;:::o;13437:442::-;13586:4;13624:2;13613:9;13609:18;13601:26;;13637:71;13705:1;13694:9;13690:17;13681:6;13637:71;:::i;:::-;13718:72;13786:2;13775:9;13771:18;13762:6;13718:72;:::i;:::-;13800;13868:2;13857:9;13853:18;13844:6;13800:72;:::i;:::-;13437:442;;;;;;:::o;13885:332::-;14006:4;14044:2;14033:9;14029:18;14021:26;;14057:71;14125:1;14114:9;14110:17;14101:6;14057:71;:::i;:::-;14138:72;14206:2;14195:9;14191:18;14182:6;14138:72;:::i;:::-;13885:332;;;;;:::o;14223:174::-;14363:26;14359:1;14351:6;14347:14;14340:50;14223:174;:::o;14403:366::-;14545:3;14566:67;14630:2;14625:3;14566:67;:::i;:::-;14559:74;;14642:93;14731:3;14642:93;:::i;:::-;14760:2;14755:3;14751:12;14744:19;;14403:366;;;:::o;14775:419::-;14941:4;14979:2;14968:9;14964:18;14956:26;;15028:9;15022:4;15018:20;15014:1;15003:9;14999:17;14992:47;15056:131;15182:4;15056:131;:::i;:::-;15048:139;;14775:419;;;:::o;15200:332::-;15321:4;15359:2;15348:9;15344:18;15336:26;;15372:71;15440:1;15429:9;15425:17;15416:6;15372:71;:::i;:::-;15453:72;15521:2;15510:9;15506:18;15497:6;15453:72;:::i;:::-;15200:332;;;;;:::o;15538:225::-;15678:34;15674:1;15666:6;15662:14;15655:58;15747:8;15742:2;15734:6;15730:15;15723:33;15538:225;:::o;15769:366::-;15911:3;15932:67;15996:2;15991:3;15932:67;:::i;:::-;15925:74;;16008:93;16097:3;16008:93;:::i;:::-;16126:2;16121:3;16117:12;16110:19;;15769:366;;;:::o;16141:419::-;16307:4;16345:2;16334:9;16330:18;16322:26;;16394:9;16388:4;16384:20;16380:1;16369:9;16365:17;16358:47;16422:131;16548:4;16422:131;:::i;:::-;16414:139;;16141:419;;;:::o;16566:116::-;16636:21;16651:5;16636:21;:::i;:::-;16629:5;16626:32;16616:60;;16672:1;16669;16662:12;16616:60;16566:116;:::o;16688:137::-;16742:5;16773:6;16767:13;16758:22;;16789:30;16813:5;16789:30;:::i;:::-;16688:137;;;;:::o;16831:345::-;16898:6;16947:2;16935:9;16926:7;16922:23;16918:32;16915:119;;;16953:79;;:::i;:::-;16915:119;17073:1;17098:61;17151:7;17142:6;17131:9;17127:22;17098:61;:::i;:::-;17088:71;;17044:125;16831:345;;;;:::o;17182:332::-;17303:4;17341:2;17330:9;17326:18;17318:26;;17354:71;17422:1;17411:9;17407:17;17398:6;17354:71;:::i;:::-;17435:72;17503:2;17492:9;17488:18;17479:6;17435:72;:::i;:::-;17182:332;;;;;:::o;17520:224::-;17660:34;17656:1;17648:6;17644:14;17637:58;17729:7;17724:2;17716:6;17712:15;17705:32;17520:224;:::o;17750:366::-;17892:3;17913:67;17977:2;17972:3;17913:67;:::i;:::-;17906:74;;17989:93;18078:3;17989:93;:::i;:::-;18107:2;18102:3;18098:12;18091:19;;17750:366;;;:::o;18122:419::-;18288:4;18326:2;18315:9;18311:18;18303:26;;18375:9;18369:4;18365:20;18361:1;18350:9;18346:17;18339:47;18403:131;18529:4;18403:131;:::i;:::-;18395:139;;18122:419;;;:::o;18547:228::-;18687:34;18683:1;18675:6;18671:14;18664:58;18756:11;18751:2;18743:6;18739:15;18732:36;18547:228;:::o;18781:366::-;18923:3;18944:67;19008:2;19003:3;18944:67;:::i;:::-;18937:74;;19020:93;19109:3;19020:93;:::i;:::-;19138:2;19133:3;19129:12;19122:19;;18781:366;;;:::o;19153:419::-;19319:4;19357:2;19346:9;19342:18;19334:26;;19406:9;19400:4;19396:20;19392:1;19381:9;19377:17;19370:47;19434:131;19560:4;19434:131;:::i;:::-;19426:139;;19153:419;;;:::o;19578:223::-;19718:34;19714:1;19706:6;19702:14;19695:58;19787:6;19782:2;19774:6;19770:15;19763:31;19578:223;:::o;19807:366::-;19949:3;19970:67;20034:2;20029:3;19970:67;:::i;:::-;19963:74;;20046:93;20135:3;20046:93;:::i;:::-;20164:2;20159:3;20155:12;20148:19;;19807:366;;;:::o;20179:419::-;20345:4;20383:2;20372:9;20368:18;20360:26;;20432:9;20426:4;20422:20;20418:1;20407:9;20403:17;20396:47;20460:131;20586:4;20460:131;:::i;:::-;20452:139;;20179:419;;;:::o;20604:221::-;20744:34;20740:1;20732:6;20728:14;20721:58;20813:4;20808:2;20800:6;20796:15;20789:29;20604:221;:::o;20831:366::-;20973:3;20994:67;21058:2;21053:3;20994:67;:::i;:::-;20987:74;;21070:93;21159:3;21070:93;:::i;:::-;21188:2;21183:3;21179:12;21172:19;;20831:366;;;:::o;21203:419::-;21369:4;21407:2;21396:9;21392:18;21384:26;;21456:9;21450:4;21446:20;21442:1;21431:9;21427:17;21420:47;21484:131;21610:4;21484:131;:::i;:::-;21476:139;;21203:419;;;:::o;21628:224::-;21768:34;21764:1;21756:6;21752:14;21745:58;21837:7;21832:2;21824:6;21820:15;21813:32;21628:224;:::o;21858:366::-;22000:3;22021:67;22085:2;22080:3;22021:67;:::i;:::-;22014:74;;22097:93;22186:3;22097:93;:::i;:::-;22215:2;22210:3;22206:12;22199:19;;21858:366;;;:::o;22230:419::-;22396:4;22434:2;22423:9;22419:18;22411:26;;22483:9;22477:4;22473:20;22469:1;22458:9;22454:17;22447:47;22511:131;22637:4;22511:131;:::i;:::-;22503:139;;22230:419;;;:::o;22655:222::-;22795:34;22791:1;22783:6;22779:14;22772:58;22864:5;22859:2;22851:6;22847:15;22840:30;22655:222;:::o;22883:366::-;23025:3;23046:67;23110:2;23105:3;23046:67;:::i;:::-;23039:74;;23122:93;23211:3;23122:93;:::i;:::-;23240:2;23235:3;23231:12;23224:19;;22883:366;;;:::o;23255:419::-;23421:4;23459:2;23448:9;23444:18;23436:26;;23508:9;23502:4;23498:20;23494:1;23483:9;23479:17;23472:47;23536:131;23662:4;23536:131;:::i;:::-;23528:139;;23255:419;;;:::o;23680:225::-;23820:34;23816:1;23808:6;23804:14;23797:58;23889:8;23884:2;23876:6;23872:15;23865:33;23680:225;:::o;23911:366::-;24053:3;24074:67;24138:2;24133:3;24074:67;:::i;:::-;24067:74;;24150:93;24239:3;24150:93;:::i;:::-;24268:2;24263:3;24259:12;24252:19;;23911:366;;;:::o;24283:419::-;24449:4;24487:2;24476:9;24472:18;24464:26;;24536:9;24530:4;24526:20;24522:1;24511:9;24507:17;24500:47;24564:131;24690:4;24564:131;:::i;:::-;24556:139;;24283:419;;;:::o;24708:348::-;24748:7;24771:20;24789:1;24771:20;:::i;:::-;24766:25;;24805:20;24823:1;24805:20;:::i;:::-;24800:25;;24993:1;24925:66;24921:74;24918:1;24915:81;24910:1;24903:9;24896:17;24892:105;24889:131;;;25000:18;;:::i;:::-;24889:131;25048:1;25045;25041:9;25030:20;;24708:348;;;;:::o;25062:180::-;25110:77;25107:1;25100:88;25207:4;25204:1;25197:15;25231:4;25228:1;25221:15;25248:185;25288:1;25305:20;25323:1;25305:20;:::i;:::-;25300:25;;25339:20;25357:1;25339:20;:::i;:::-;25334:25;;25378:1;25368:35;;25383:18;;:::i;:::-;25368:35;25425:1;25422;25418:9;25413:14;;25248:185;;;;:::o;25439:181::-;25579:33;25575:1;25567:6;25563:14;25556:57;25439:181;:::o;25626:366::-;25768:3;25789:67;25853:2;25848:3;25789:67;:::i;:::-;25782:74;;25865:93;25954:3;25865:93;:::i;:::-;25983:2;25978:3;25974:12;25967:19;;25626:366;;;:::o;25998:419::-;26164:4;26202:2;26191:9;26187:18;26179:26;;26251:9;26245:4;26241:20;26237:1;26226:9;26222:17;26215:47;26279:131;26405:4;26279:131;:::i;:::-;26271:139;;25998:419;;;:::o;26423:220::-;26563:34;26559:1;26551:6;26547:14;26540:58;26632:3;26627:2;26619:6;26615:15;26608:28;26423:220;:::o;26649:366::-;26791:3;26812:67;26876:2;26871:3;26812:67;:::i;:::-;26805:74;;26888:93;26977:3;26888:93;:::i;:::-;27006:2;27001:3;26997:12;26990:19;;26649:366;;;:::o;27021:419::-;27187:4;27225:2;27214:9;27210:18;27202:26;;27274:9;27268:4;27264:20;27260:1;27249:9;27245:17;27238:47;27302:131;27428:4;27302:131;:::i;:::-;27294:139;;27021:419;;;:::o;27446:221::-;27586:34;27582:1;27574:6;27570:14;27563:58;27655:4;27650:2;27642:6;27638:15;27631:29;27446:221;:::o;27673:366::-;27815:3;27836:67;27900:2;27895:3;27836:67;:::i;:::-;27829:74;;27912:93;28001:3;27912:93;:::i;:::-;28030:2;28025:3;28021:12;28014:19;;27673:366;;;:::o;28045:419::-;28211:4;28249:2;28238:9;28234:18;28226:26;;28298:9;28292:4;28288:20;28284:1;28273:9;28269:17;28262:47;28326:131;28452:4;28326:131;:::i;:::-;28318:139;;28045:419;;;:::o;28470:191::-;28510:4;28530:20;28548:1;28530:20;:::i;:::-;28525:25;;28564:20;28582:1;28564:20;:::i;:::-;28559:25;;28603:1;28600;28597:8;28594:34;;;28608:18;;:::i;:::-;28594:34;28653:1;28650;28646:9;28638:17;;28470:191;;;;:::o;28667:180::-;28715:77;28712:1;28705:88;28812:4;28809:1;28802:15;28836:4;28833:1;28826:15

Swarm Source

ipfs://68021759adbf099faf7a832a52d5246be3179fd7568b372eb2b4ec0244c9a985
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.