Contract 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x3078aeb88f2b13f375ee85a58b4ed61fb754d35c37fc4426e7ab22c8cb0c46f8Set Invest Disab...72293132021-05-08 1:34:29206 days 16 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.00021573
0x7a0bacd598d1b34eb850a72a1ff21243f3f1062b82ba15e76e4fda211f01894fSet Strategy Len...71530042021-05-05 8:19:47209 days 9 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.00021174
0xf3942de672e64a3276b5dd0cae081b4f0197a8e271f576e34ea1614ce368bb77Set Strategy Inf...71529982021-05-05 8:19:29209 days 9 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.000179925
0xe3547ba8886ef0af31c552a983127ea6499eb58d73888780fabc6f23ecc2ba75Set Strategy Inf...71529902021-05-05 8:19:05209 days 9 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.000179925
0x0982d5f5e7369429e064f63ba140549eb343b057cedd185eef81484452a594a1Set Strategy Len...71529822021-05-05 8:18:41209 days 9 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.00006834
0x838c2f13ef36b3a43d287d2e19071bb6fc62f3afb3f574c56206fb9baadf08d6Switch Fund71254862021-05-04 9:11:54210 days 8 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.00373921
0x214b2dbaa7896448798033991e283592c099df3d34c22d3b6439d4e0d3dd621fSwitch Fund71254422021-05-04 9:09:42210 days 8 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.005584075
0xb80b73d33cb315d3e9df3e681659ccd1eb32bf3d538a0f1738f91a419745ffafSet Strategy Inf...71253982021-05-04 9:07:30210 days 8 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.000082065
0x3923030f558c46903893d6ac9375534ef33987b89fc9c58914f5dcba7f4e1efaSet Strategy Inf...71253922021-05-04 9:07:12210 days 8 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.000137985
0x2276382f4844fb59272bb13b2af2f488efc5cc94e4a33d1f4b10756d120ff799Set Strategy Inf...71253862021-05-04 9:06:54210 days 8 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.000137865
0xe329b1c02457293d92ada170eb7fdb6436a02927fc8ef802820bfa6cd2dee1e2Set Strategy Len...71250892021-05-04 8:52:03210 days 9 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.00013674
0x724c25011b7333098d4c8c62abcff2dc535f8dc4ef22e15ca2445e3f29435dfdSet Strategy Inf...71250842021-05-04 8:51:48210 days 9 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.000425985
0x99ed3e8199bc0357606bed6231784a4d13583b23b21990d0c885b59898288ea4Set Strategy Inf...71250792021-05-04 8:51:33210 days 9 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.000158985
0x12631a47e6679bb26ed2af39c7f2a02d64c575bce29608f9f2cafc5bf1539e08Set Strategy Inf...71250692021-05-04 8:51:03210 days 9 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.000158865
0x081aa15891e7e6029f841cd12eface479934fe735ccb76436f33eaf3dec2a0bfApprove Strategy71250602021-05-04 8:50:36210 days 9 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.000216955
0xd6364bab0d42024974eecdc0c114ae01a3014e5a78a3f3d79dff005cc81e1c2aSwitch Fund69764762021-04-29 3:35:11215 days 14 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.00352016
0xffb85077e4e81ebb1f6b390cbc5a8b50f100e05eb533f2d766d294f2bda32657Switch Fund69764612021-04-29 3:34:26215 days 14 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.00359522
0xd0767a7b7056b895f5147d6e3c43b1a866f7ecaf808729d6c2b5f1143c5627fdSet Strategy Inf...69764192021-04-29 3:32:20215 days 14 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.000254985
0x9e4d4f322a2757867893a6fac049a59209ce4f024c79a54bec476e07ee349530Set Strategy Inf...69764132021-04-29 3:32:02215 days 14 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.000158865
0xf33099e159ad9ab7bccec4cb61591a64fa0c11dd933807c777d19221e9e83a43Switch Fund63251242021-04-06 7:39:02238 days 10 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.00719054
0x341eb6b1091c27291c92d44c8cc897f95ba6e5b61eb58332a368fee5398ab8d7Switch Fund63207652021-04-06 3:59:19238 days 14 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.00721943
0x8bd93233a814b32975eeb3fa8896811d9e1e5b3de6e0b0c04dd2a09571c80375Set Strategy Inf...63206942021-04-06 3:55:46238 days 14 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.00024813
0xa828b9c0899270b9ccccf0b603cbadc4a0bc57e677832b6b192cff63cfefc6a9Set Strategy Inf...63206722021-04-06 3:54:40238 days 14 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.00055173
0x917da82c763bb167d92c556e17a4886c8c324dabbf263163ae1f0a25b7c98500Switch Fund63188042021-04-06 2:20:25238 days 15 hrs agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.00721931
0xfacceb51690f485489037f60b7546955bdb7be65f5115402bbcc073ef765276dSwitch Fund63084702021-04-05 17:40:01239 days 26 mins agoValueDefi: Deployer IN  0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB0.00721931
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x14cdcf7845a4e9ae2f1a6accf664d7f4585f1a2f83afcb1c45d401c2f186781c54712962021-03-07 11:57:45268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e 0xb43410a271c71f2fda2d1ed9c1165e924be159d90 BNB
0x14cdcf7845a4e9ae2f1a6accf664d7f4585f1a2f83afcb1c45d401c2f186781c54712962021-03-07 11:57:45268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e 0xb43410a271c71f2fda2d1ed9c1165e924be159d90 BNB
0x14cdcf7845a4e9ae2f1a6accf664d7f4585f1a2f83afcb1c45d401c2f186781c54712962021-03-07 11:57:45268 days 6 hrs ago 0xd4bbf439d3eab5155ca7c0537e583088fb4cfce8 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB
0x14cdcf7845a4e9ae2f1a6accf664d7f4585f1a2f83afcb1c45d401c2f186781c54712962021-03-07 11:57:45268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e 0xb43410a271c71f2fda2d1ed9c1165e924be159d90 BNB
0x14cdcf7845a4e9ae2f1a6accf664d7f4585f1a2f83afcb1c45d401c2f186781c54712962021-03-07 11:57:45268 days 6 hrs ago 0xd4bbf439d3eab5155ca7c0537e583088fb4cfce8 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB
0x17d3c537c85fc923724e46b1dbc5eee377069407ee327483a6638055c8e759f054711682021-03-07 11:51:21268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e 0xb43410a271c71f2fda2d1ed9c1165e924be159d90 BNB
0x17d3c537c85fc923724e46b1dbc5eee377069407ee327483a6638055c8e759f054711682021-03-07 11:51:21268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e 0xb43410a271c71f2fda2d1ed9c1165e924be159d90 BNB
0x17d3c537c85fc923724e46b1dbc5eee377069407ee327483a6638055c8e759f054711682021-03-07 11:51:21268 days 6 hrs ago 0xd4bbf439d3eab5155ca7c0537e583088fb4cfce8 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB
0x17d3c537c85fc923724e46b1dbc5eee377069407ee327483a6638055c8e759f054711682021-03-07 11:51:21268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e 0xb43410a271c71f2fda2d1ed9c1165e924be159d90 BNB
0x17d3c537c85fc923724e46b1dbc5eee377069407ee327483a6638055c8e759f054711682021-03-07 11:51:21268 days 6 hrs ago 0xd4bbf439d3eab5155ca7c0537e583088fb4cfce8 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB
0xae859c4d05567b23db8432ba9d6f283410883c581730effe81e7041ead6b14de54710452021-03-07 11:45:12268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e 0xb43410a271c71f2fda2d1ed9c1165e924be159d90 BNB
0xae859c4d05567b23db8432ba9d6f283410883c581730effe81e7041ead6b14de54710452021-03-07 11:45:12268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e 0xb43410a271c71f2fda2d1ed9c1165e924be159d90 BNB
0xae859c4d05567b23db8432ba9d6f283410883c581730effe81e7041ead6b14de54710452021-03-07 11:45:12268 days 6 hrs ago 0xd4bbf439d3eab5155ca7c0537e583088fb4cfce8 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB
0xae859c4d05567b23db8432ba9d6f283410883c581730effe81e7041ead6b14de54710452021-03-07 11:45:12268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e 0xb43410a271c71f2fda2d1ed9c1165e924be159d90 BNB
0xae859c4d05567b23db8432ba9d6f283410883c581730effe81e7041ead6b14de54710452021-03-07 11:45:12268 days 6 hrs ago 0xd4bbf439d3eab5155ca7c0537e583088fb4cfce8 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB
0x03d59760993843c26745a192efb13ddb6a4057a743adcbb8f0bfb9067166b70754709802021-03-07 11:41:57268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e 0xb43410a271c71f2fda2d1ed9c1165e924be159d90 BNB
0x03d59760993843c26745a192efb13ddb6a4057a743adcbb8f0bfb9067166b70754709802021-03-07 11:41:57268 days 6 hrs ago 0xd4bbf439d3eab5155ca7c0537e583088fb4cfce8 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB
0x03d59760993843c26745a192efb13ddb6a4057a743adcbb8f0bfb9067166b70754709802021-03-07 11:41:57268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e 0xb43410a271c71f2fda2d1ed9c1165e924be159d90 BNB
0x03d59760993843c26745a192efb13ddb6a4057a743adcbb8f0bfb9067166b70754709802021-03-07 11:41:57268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e Binance: WBNB Token0 BNB
0x03d59760993843c26745a192efb13ddb6a4057a743adcbb8f0bfb9067166b70754709802021-03-07 11:41:57268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e 0xb43410a271c71f2fda2d1ed9c1165e924be159d90 BNB
0x03d59760993843c26745a192efb13ddb6a4057a743adcbb8f0bfb9067166b70754709802021-03-07 11:41:57268 days 6 hrs ago 0xd4bbf439d3eab5155ca7c0537e583088fb4cfce8 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB
0x03d59760993843c26745a192efb13ddb6a4057a743adcbb8f0bfb9067166b70754709802021-03-07 11:41:57268 days 6 hrs ago 0xd4bbf439d3eab5155ca7c0537e583088fb4cfce8 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB
0x03d59760993843c26745a192efb13ddb6a4057a743adcbb8f0bfb9067166b70754709802021-03-07 11:41:57268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e 0xb43410a271c71f2fda2d1ed9c1165e924be159d90 BNB
0x03d59760993843c26745a192efb13ddb6a4057a743adcbb8f0bfb9067166b70754709802021-03-07 11:41:57268 days 6 hrs ago 0xd4bbf439d3eab5155ca7c0537e583088fb4cfce8 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e0 BNB
0x03d59760993843c26745a192efb13ddb6a4057a743adcbb8f0bfb9067166b70754709802021-03-07 11:41:57268 days 6 hrs ago 0x2b4f87d9d0a32a04b2d045fd5927cb57bedb076e 0xb43410a271c71f2fda2d1ed9c1165e924be159d90 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VSafeVaultController

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-03-05
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

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

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

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

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

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

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

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

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

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @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) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @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 sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @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) {
        // 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 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts 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 mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message 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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance");
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

interface IStrategy {
    event Deposit(address token, uint256 amount);
    event Withdraw(address token, uint256 amount, address to);
    event Harvest(uint256 priceShareBefore, uint256 priceShareAfter, address compoundToken, uint256 compoundBalance, uint256 reserveFundAmount);

    function baseToken() external view returns (address);

    function deposit() external;

    function withdraw(address _asset) external returns (uint256);

    function withdraw(uint256 _amount) external returns (uint256);

    function withdrawToController(uint256 _amount) external;

    function skim() external;

    function harvest(address _mergedStrategy) external;

    function withdrawAll() external returns (uint256);

    function balanceOf() external view returns (uint256);

    function beforeDeposit() external;
}

interface IVSafeVault {
    function cap() external view returns (uint256);

    function getVaultMaster() external view returns (address);

    function balance() external view returns (uint256);

    function token() external view returns (address);

    function available() external view returns (uint256);

    function accept(address _input) external view returns (bool);

    function earn() external;

    function harvest(address reserve, uint256 amount) external;

    function addNewCompound(uint256, uint256) external;

    function withdraw_fee(uint256 _shares) external view returns (uint256);

    function calc_token_amount_deposit(uint256 _amount) external view returns (uint256);

    function calc_token_amount_withdraw(uint256 _shares) external view returns (uint256);

    function getPricePerFullShare() external view returns (uint256);

    function deposit(uint256 _amount, uint256 _min_mint_amount) external returns (uint256);

    function depositFor(
        address _account,
        address _to,
        uint256 _amount,
        uint256 _min_mint_amount
    ) external returns (uint256 _mint_amount);

    function withdraw(uint256 _shares, uint256 _min_output_amount) external returns (uint256);

    function withdrawFor(
        address _account,
        uint256 _shares,
        uint256 _min_output_amount
    ) external returns (uint256 _output_amount);

    function harvestStrategy(address _strategy) external;

    function harvestAllStrategies() external;
}

interface IController {
    function vault() external view returns (IVSafeVault);

    function getStrategyCount() external view returns (uint256);

    function strategies(uint256 _stratId)
        external
        view
        returns (
            address _strategy,
            uint256 _quota,
            uint256 _percent
        );

    function getBestStrategy() external view returns (address _strategy);

    function want() external view returns (address);

    function balanceOf() external view returns (uint256);

    function withdraw_fee(uint256 _amount) external view returns (uint256); // eg. 3CRV => pJar: 0.5% (50/10000)

    function investDisabled() external view returns (bool);

    function withdraw(uint256) external returns (uint256 _withdrawFee);

    function earn(address _token, uint256 _amount) external;

    function harvestStrategy(address _strategy) external;

    function harvestAllStrategies() external;

    function beforeDeposit() external;

    function withdrawFee(uint256) external view returns (uint256); // pJar: 0.5% (50/10000)
}

contract VSafeVaultController is IController {
    using SafeERC20 for IERC20;
    using Address for address;
    using SafeMath for uint256;

    address public governance;
    address public strategist;

    struct StrategyInfo {
        address strategy;
        uint256 quota; // set = 0 to disable
        uint256 percent;
    }

    IVSafeVault public override vault;
    string public name = "VSafeVaultController:WBNB";

    address public override want;
    uint256 public strategyLength;

    // stratId => StrategyInfo
    mapping(uint256 => StrategyInfo) public override strategies;

    mapping(address => bool) public approvedStrategies;

    bool public override investDisabled;

    address public lazySelectedBestStrategy; // we pre-set the best strategy to avoid gas cost of iterating the array
    uint256 public lastHarvestAllTimeStamp;

    uint256 public withdrawalFee = 0; // over 10000

    constructor(IVSafeVault _vault) public {
        require(address(_vault) != address(0), "!_vault");
        vault = _vault;
        want = vault.token();
        governance = msg.sender;
        strategist = msg.sender;
    }

    modifier onlyGovernance() {
        require(msg.sender == governance, "!governance");
        _;
    }

    modifier onlyStrategist() {
        require(msg.sender == strategist || msg.sender == governance, "!strategist");
        _;
    }

    modifier onlyAuthorized() {
        require(msg.sender == address(vault) || msg.sender == strategist || msg.sender == governance, "!authorized");
        _;
    }

    function setName(string memory _name) external onlyGovernance {
        name = _name;
    }

    function setGovernance(address _governance) external onlyGovernance {
        governance = _governance;
    }

    function setStrategist(address _strategist) external onlyGovernance {
        strategist = _strategist;
    }

    function approveStrategy(address _strategy) external onlyGovernance {
        approvedStrategies[_strategy] = true;
    }

    function revokeStrategy(address _strategy) external onlyGovernance {
        approvedStrategies[_strategy] = false;
    }

    function setWithdrawalFee(uint256 _withdrawalFee) external onlyGovernance {
        withdrawalFee = _withdrawalFee;
    }

    function setStrategyLength(uint256 _length) external onlyStrategist {
        strategyLength = _length;
    }

    // stratId => StrategyInfo
    function setStrategyInfo(
        uint256 _sid,
        address _strategy,
        uint256 _quota,
        uint256 _percent
    ) external onlyStrategist {
        require(approvedStrategies[_strategy], "!approved");
        strategies[_sid].strategy = _strategy;
        strategies[_sid].quota = _quota;
        strategies[_sid].percent = _percent;
    }

    function setInvestDisabled(bool _investDisabled) external onlyStrategist {
        investDisabled = _investDisabled;
    }

    function setLazySelectedBestStrategy(address _strategy) external onlyStrategist {
        require(approvedStrategies[_strategy], "!approved");
        require(IStrategy(_strategy).baseToken() == want, "!want");
        lazySelectedBestStrategy = _strategy;
    }

    function getStrategyCount() external view override returns (uint256 _strategyCount) {
        _strategyCount = strategyLength;
    }

    function getBestStrategy() public view override returns (address _strategy) {
        if (lazySelectedBestStrategy != address(0)) {
            return lazySelectedBestStrategy;
        }
        _strategy = address(0);
        if (strategyLength == 0) return _strategy;
        if (strategyLength == 1) return strategies[0].strategy;
        uint256 _totalBal = balanceOf();
        if (_totalBal == 0) return strategies[0].strategy; // first depositor, simply return the first strategy
        uint256 _bestDiff = 201;
        for (uint256 _sid = 0; _sid < strategyLength; _sid++) {
            StrategyInfo storage sinfo = strategies[_sid];
            uint256 _stratBal = IStrategy(sinfo.strategy).balanceOf();
            if (_stratBal < sinfo.quota) {
                uint256 _diff = _stratBal.add(_totalBal).mul(100).div(_totalBal).sub(sinfo.percent); // [100, 200] - [percent]
                if (_diff < _bestDiff) {
                    _bestDiff = _diff;
                    _strategy = sinfo.strategy;
                }
            }
        }
        if (_strategy == address(0)) {
            _strategy = strategies[0].strategy;
        }
    }

    function beforeDeposit() external override onlyAuthorized {
        for (uint256 _sid = 0; _sid < strategyLength; _sid++) {
            IStrategy(strategies[_sid].strategy).beforeDeposit();
        }
    }

    function earn(address _token, uint256 _amount) external override onlyAuthorized {
        address _strategy = getBestStrategy();
        if (_strategy == address(0) || IStrategy(_strategy).baseToken() != _token) {
            // forward to vault and then call earnExtra() by its governance
            IERC20(_token).safeTransfer(address(vault), _amount);
        } else {
            IERC20(_token).safeTransfer(_strategy, _amount);
            IStrategy(_strategy).deposit();
        }
    }

    function withdraw_fee(uint256 _amount) external view override returns (uint256) {
        address _strategy = getBestStrategy();
        return (_strategy == address(0)) ? 0 : withdrawFee(_amount);
    }

    function balanceOf() public view override returns (uint256 _totalBal) {
        for (uint256 _sid = 0; _sid < strategyLength; _sid++) {
            _totalBal = _totalBal.add(IStrategy(strategies[_sid].strategy).balanceOf());
        }
    }

    function withdrawAll(address _strategy) external onlyStrategist {
        // WithdrawAll sends 'want' to 'vault'
        IStrategy(_strategy).withdrawAll();
    }

    function inCaseTokensGetStuck(address _token, uint256 _amount) external onlyStrategist {
        IERC20(_token).safeTransfer(address(vault), _amount);
    }

    function inCaseStrategyGetStuck(address _strategy, address _token) external onlyStrategist {
        IStrategy(_strategy).withdraw(_token);
        IERC20(_token).safeTransfer(address(vault), IERC20(_token).balanceOf(address(this)));
    }

    // note that some strategies do not allow controller to harvest
    function harvestStrategy(address _strategy) external override onlyAuthorized {
        IStrategy(_strategy).harvest(address(0));
    }

    function harvestAllStrategies() external override onlyAuthorized {
        address _bestStrategy = getBestStrategy(); // to send all harvested WETH and proceed the profit sharing all-in-one here
        for (uint256 _sid = 0; _sid < strategyLength; _sid++) {
            address _strategy = strategies[_sid].strategy;
            if (_strategy != _bestStrategy) {
                IStrategy(_strategy).harvest(_bestStrategy);
            }
        }
        if (_bestStrategy != address(0)) {
            IStrategy(_bestStrategy).harvest(address(0));
        }
        lastHarvestAllTimeStamp = block.timestamp;
    }

    function switchFund(
        IStrategy _srcStrat,
        IStrategy _destStrat,
        uint256 _amount
    ) external onlyStrategist {
        require(approvedStrategies[address(_destStrat)], "!approved");
        require(_srcStrat.baseToken() == want, "!_srcStrat.baseToken");
        require(_destStrat.baseToken() == want, "!_destStrat.baseToken");
        _srcStrat.withdrawToController(_amount);
        IERC20(want).safeTransfer(address(_destStrat), IERC20(want).balanceOf(address(this)));
        _destStrat.deposit();
    }

    function withdrawFee(uint256 _amount) public view override returns (uint256) {
        return _amount.mul(withdrawalFee).div(10000);
    }

    function withdraw(uint256 _amount) external override onlyAuthorized returns (uint256 _withdrawFee) {
        _withdrawFee = 0;
        uint256 _toWithdraw = _amount;
        uint256 _received;
        for (uint256 _sid = 0; _sid < strategyLength; _sid++) {
            IStrategy _strategy = IStrategy(strategies[_sid].strategy);
            uint256 _stratBal = _strategy.balanceOf();
            if (_toWithdraw < _stratBal) {
                _received = _strategy.withdraw(_toWithdraw);
                _withdrawFee = _withdrawFee.add(withdrawFee(_received));
                return _withdrawFee;
            }
            _received = _strategy.withdrawAll();
            _withdrawFee = _withdrawFee.add(withdrawFee(_received));
            if (_received >= _toWithdraw) {
                return _withdrawFee;
            }
            _toWithdraw = _toWithdraw.sub(_received);
        }
        return _withdrawFee;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IVSafeVault","name":"_vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"name":"approveStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"approvedStrategies","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"_totalBal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beforeDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"earn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBestStrategy","outputs":[{"internalType":"address","name":"_strategy","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStrategyCount","outputs":[{"internalType":"uint256","name":"_strategyCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvestAllStrategies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"name":"harvestStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"inCaseStrategyGetStuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"inCaseTokensGetStuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"investDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastHarvestAllTimeStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lazySelectedBestStrategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"name":"revokeStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_investDisabled","type":"bool"}],"name":"setInvestDisabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"name":"setLazySelectedBestStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"setName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategist","type":"address"}],"name":"setStrategist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sid","type":"uint256"},{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"uint256","name":"_quota","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"setStrategyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_length","type":"uint256"}],"name":"setStrategyLength","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_withdrawalFee","type":"uint256"}],"name":"setWithdrawalFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"strategies","outputs":[{"internalType":"address","name":"strategy","type":"address"},{"internalType":"uint256","name":"quota","type":"uint256"},{"internalType":"uint256","name":"percent","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"strategist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"strategyLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IStrategy","name":"_srcStrat","type":"address"},{"internalType":"contract IStrategy","name":"_destStrat","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"switchFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVSafeVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"want","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"_withdrawFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw_fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60c0604052601960808190527f56536166655661756c74436f6e74726f6c6c65723a57424e420000000000000060a090815262000040916003919062000188565b506000600a553480156200005357600080fd5b506040516200340e3803806200340e833981810160405260208110156200007957600080fd5b50516001600160a01b038116620000c1576040805162461bcd60e51b81526020600482015260076024820152660857dd985d5b1d60ca1b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b03838116919091179182905560408051637e062a3560e11b81529051929091169163fc0c546a91600480820192602092909190829003018186803b1580156200011e57600080fd5b505afa15801562000133573d6000803e3d6000fd5b505050506040513d60208110156200014a57600080fd5b5051600480546001600160a01b039092166001600160a01b031992831617905560008054821633908117909155600180549092161790555062000224565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001cb57805160ff1916838001178555620001fb565b82800160010185558215620001fb579182015b82811115620001fb578251825591602001919060010190620001de565b50620002099291506200020d565b5090565b5b808211156200020957600081556001016200020e565b6131da80620002346000396000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c806395c2204611610145578063c6d758cb116100bd578063e4d640c41161008c578063fa09e63011610071578063fa09e630146107bc578063fbfa77cf146107ef578063fe621df3146107f75761025c565b8063e4d640c41461076f578063e860ed49146107b45761025c565b8063c6d758cb1461067e578063c7b9d530146106b7578063ce3975b2146106ea578063d574ea3d1461071d5761025c565b8063b02bf4b911610114578063be357616116100f9578063be35761614610588578063c47f0027146105a5578063c613aec01461064b5761025c565b8063b02bf4b91461051c578063bb994d48146105555761025c565b806395c2204614610489578063a44c00da146104c4578063ab033ea9146104cc578063ac1e5025146104ff5761025c565b80633b8ae397116101d85780635aa6e675116101a7578063722713f71161018c578063722713f71461047157806386f1c92c146104795780638bc7e8c4146104815761025c565b80635aa6e6751461043657806361f13e001461043e5761025c565b80633b8ae3971461039c5780633bfdefa0146103cf5780634fa14470146103eb578063573fef0a1461042e5761025c565b806327ef9ab81161022f5780632edeb8cf116102145780632edeb8cf1461036f57806331e19cfa1461038c578063358b1c27146103945761025c565b806327ef9ab8146103215780632e1a7d4d146103405761025c565b806306fdde03146102615780631997db76146102de5780631f1fcd51146102e85780631fe4a68614610319575b600080fd5b610269610814565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a357818101518382015260200161028b565b50505050905090810190601f1680156102d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e66108c0565b005b6102f0610b07565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102f0610b23565b6102e66004803603602081101561033757600080fd5b50351515610b3f565b61035d6004803603602081101561035657600080fd5b5035610c18565b60408051918252519081900360200190f35b61035d6004803603602081101561038557600080fd5b5035610ef6565b61035d610f37565b6102f0610f3d565b6102e6600480360360208110156103b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111ce565b6103d76112a3565b604080519115158252519081900360200190f35b6102e66004803603606081101561040157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356112ac565b6102e66117d6565b6102f0611946565b6102e66004803603602081101561045457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611962565b61035d611ab3565b6102f0611b7a565b61035d611b9b565b6102e66004803603604081101561049f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611ba1565b61035d611da5565b6102e6600480360360208110156104e257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611dab565b6102e66004803603602081101561051557600080fd5b5035611e78565b6102e66004803603604081101561053257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611f03565b6102e66004803603602081101561056b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612138565b61035d6004803603602081101561059e57600080fd5b503561220a565b6102e6600480360360208110156105bb57600080fd5b8101906020810181356401000000008111156105d657600080fd5b8201836020820111156105e857600080fd5b8035906020019184600183028401116401000000008311171561060a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061222d945050505050565b6103d76004803603602081101561066157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166122c6565b6102e66004803603604081101561069457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356122db565b6102e6600480360360208110156106cd57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166123aa565b6102e66004803603602081101561070057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612477565b61073a6004803603602081101561073357600080fd5b503561272c565b6040805173ffffffffffffffffffffffffffffffffffffffff9094168452602084019290925282820152519081900360600190f35b6102e66004803603608081101561078557600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060408101359060600135612764565b61035d6128fd565b6102e6600480360360208110156107d257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612903565b6102f0612a1d565b6102e66004803603602081101561080d57600080fd5b5035612a39565b6003805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156108b85780601f1061088d576101008083540402835291602001916108b8565b820191906000526020600020905b81548152906001019060200180831161089b57829003601f168201915b505050505081565b60025473ffffffffffffffffffffffffffffffffffffffff163314806108fd575060015473ffffffffffffffffffffffffffffffffffffffff1633145b8061091f575060005473ffffffffffffffffffffffffffffffffffffffff1633145b61098a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21617574686f72697a6564000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000610994610f3d565b905060005b600554811015610a5e5760008181526006602052604090205473ffffffffffffffffffffffffffffffffffffffff9081169083168114610a55578073ffffffffffffffffffffffffffffffffffffffff16630e5c011e846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610a3c57600080fd5b505af1158015610a50573d6000803e3d6000fd5b505050505b50600101610999565b5073ffffffffffffffffffffffffffffffffffffffff811615610b0057604080517f0e5c011e000000000000000000000000000000000000000000000000000000008152600060048201819052915173ffffffffffffffffffffffffffffffffffffffff841692630e5c011e926024808201939182900301818387803b158015610ae757600080fd5b505af1158015610afb573d6000803e3d6000fd5b505050505b5042600955565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331480610b7c575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610be757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f2173747261746567697374000000000000000000000000000000000000000000604482015290519081900360640190fd5b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60025460009073ffffffffffffffffffffffffffffffffffffffff16331480610c58575060015473ffffffffffffffffffffffffffffffffffffffff1633145b80610c7a575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610ce557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21617574686f72697a6564000000000000000000000000000000000000000000604482015290519081900360640190fd5b5060008181805b600554811015610eed5760008181526006602090815260408083205481517f722713f7000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff9091169392849263722713f79260048083019392829003018186803b158015610d6c57600080fd5b505afa158015610d80573d6000803e3d6000fd5b505050506040513d6020811015610d9657600080fd5b5051905080851015610e42578173ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d866040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610df557600080fd5b505af1158015610e09573d6000803e3d6000fd5b505050506040513d6020811015610e1f57600080fd5b50519350610e36610e2f8561220a565b8790612ae6565b95505050505050610ef1565b8173ffffffffffffffffffffffffffffffffffffffff1663853828b66040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610e8a57600080fd5b505af1158015610e9e573d6000803e3d6000fd5b505050506040513d6020811015610eb457600080fd5b50519350610ec4610e2f8561220a565b9550848410610ed7575050505050610ef1565b610ee18585612b5a565b94505050600101610cec565b5050505b919050565b600080610f01610f3d565b905073ffffffffffffffffffffffffffffffffffffffff811615610f2d57610f288361220a565b610f30565b60005b9392505050565b60055490565b600854600090610100900473ffffffffffffffffffffffffffffffffffffffff1615610f875750600854610100900473ffffffffffffffffffffffffffffffffffffffff166111cb565b50600554600090610f97576111cb565b60055460011415610fe957506000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85473ffffffffffffffffffffffffffffffffffffffff166111cb565b6000610ff3611ab3565b9050806110425750506000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85473ffffffffffffffffffffffffffffffffffffffff166111cb565b60c960005b600554811015611168576000818152600660209081526040808320805482517f722713f7000000000000000000000000000000000000000000000000000000008152925191949373ffffffffffffffffffffffffffffffffffffffff9091169263722713f79260048083019392829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600183015490915081101561115e5760028201546000906111349061112e8861112860646111228884612ae6565b90612b9c565b90612c0f565b90612b5a565b90508481101561115c57825473ffffffffffffffffffffffffffffffffffffffff1696509350835b505b5050600101611047565b5073ffffffffffffffffffffffffffffffffffffffff83166111c8576000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85473ffffffffffffffffffffffffffffffffffffffff1692505b50505b90565b60005473ffffffffffffffffffffffffffffffffffffffff16331461125457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676f7665726e616e6365000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260076020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60085460ff1681565b60015473ffffffffffffffffffffffffffffffffffffffff163314806112e9575060005473ffffffffffffffffffffffffffffffffffffffff1633145b61135457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f2173747261746567697374000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604090205460ff166113e857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21617070726f7665640000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1663c55dae636040518163ffffffff1660e01b815260040160206040518083038186803b15801561146757600080fd5b505afa15801561147b573d6000803e3d6000fd5b505050506040513d602081101561149157600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461151557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f215f73726353747261742e62617365546f6b656e000000000000000000000000604482015290519081900360640190fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1663c55dae636040518163ffffffff1660e01b815260040160206040518083038186803b15801561159457600080fd5b505afa1580156115a8573d6000803e3d6000fd5b505050506040513d60208110156115be57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461164257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f215f6465737453747261742e62617365546f6b656e0000000000000000000000604482015290519081900360640190fd5b8273ffffffffffffffffffffffffffffffffffffffff1663eda7e97d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561169557600080fd5b505af11580156116a9573d6000803e3d6000fd5b505060048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251611771945086935073ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561172557600080fd5b505afa158015611739573d6000803e3d6000fd5b505050506040513d602081101561174f57600080fd5b505160045473ffffffffffffffffffffffffffffffffffffffff169190612c51565b8173ffffffffffffffffffffffffffffffffffffffff1663d0e30db06040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156117b957600080fd5b505af11580156117cd573d6000803e3d6000fd5b50505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff16331480611813575060015473ffffffffffffffffffffffffffffffffffffffff1633145b80611835575060005473ffffffffffffffffffffffffffffffffffffffff1633145b6118a057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21617574686f72697a6564000000000000000000000000000000000000000000604482015290519081900360640190fd5b60005b600554811015611943576000818152600660205260408082205481517f573fef0a000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff9091169263573fef0a926004808201939182900301818387803b15801561191f57600080fd5b505af1158015611933573d6000803e3d6000fd5b5050600190920191506118a39050565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1633148061199f575060015473ffffffffffffffffffffffffffffffffffffffff1633145b806119c1575060005473ffffffffffffffffffffffffffffffffffffffff1633145b611a2c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21617574686f72697a6564000000000000000000000000000000000000000000604482015290519081900360640190fd5b604080517f0e5c011e000000000000000000000000000000000000000000000000000000008152600060048201819052915173ffffffffffffffffffffffffffffffffffffffff841692630e5c011e926024808201939182900301818387803b158015611a9857600080fd5b505af1158015611aac573d6000803e3d6000fd5b5050505050565b6000805b600554811015611b76576000818152600660209081526040918290205482517f722713f70000000000000000000000000000000000000000000000000000000081529251611b6c9373ffffffffffffffffffffffffffffffffffffffff9092169263722713f79260048082019391829003018186803b158015611b3957600080fd5b505afa158015611b4d573d6000803e3d6000fd5b505050506040513d6020811015611b6357600080fd5b50518390612ae6565b9150600101611ab7565b5090565b600854610100900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60015473ffffffffffffffffffffffffffffffffffffffff16331480611bde575060005473ffffffffffffffffffffffffffffffffffffffff1633145b611c4957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f2173747261746567697374000000000000000000000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff166351cff8d9826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611cb257600080fd5b505af1158015611cc6573d6000803e3d6000fd5b505050506040513d6020811015611cdc57600080fd5b5050600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611da19273ffffffffffffffffffffffffffffffffffffffff90811692908516916370a0823191602480820192602092909190829003018186803b158015611d5757600080fd5b505afa158015611d6b573d6000803e3d6000fd5b505050506040513d6020811015611d8157600080fd5b505173ffffffffffffffffffffffffffffffffffffffff84169190612c51565b5050565b60095481565b60005473ffffffffffffffffffffffffffffffffffffffff163314611e3157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676f7665726e616e6365000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611efe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676f7665726e616e6365000000000000000000000000000000000000000000604482015290519081900360640190fd5b600a55565b60025473ffffffffffffffffffffffffffffffffffffffff16331480611f40575060015473ffffffffffffffffffffffffffffffffffffffff1633145b80611f62575060005473ffffffffffffffffffffffffffffffffffffffff1633145b611fcd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21617574686f72697a6564000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000611fd7610f3d565b905073ffffffffffffffffffffffffffffffffffffffff8116158061209957508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c55dae636040518163ffffffff1660e01b815260040160206040518083038186803b15801561205457600080fd5b505afa158015612068573d6000803e3d6000fd5b505050506040513d602081101561207e57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614155b156120ca576002546120c59073ffffffffffffffffffffffffffffffffffffffff858116911684612c51565b612133565b6120eb73ffffffffffffffffffffffffffffffffffffffff84168284612c51565b8073ffffffffffffffffffffffffffffffffffffffff1663d0e30db06040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156117b957600080fd5b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146121be57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676f7665726e616e6365000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260076020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6000612227612710611128600a5485612b9c90919063ffffffff16565b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146122b357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676f7665726e616e6365000000000000000000000000000000000000000000604482015290519081900360640190fd5b8051611da19060039060208401906130cf565b60076020526000908152604090205460ff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331480612318575060005473ffffffffffffffffffffffffffffffffffffffff1633145b61238357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f2173747261746567697374000000000000000000000000000000000000000000604482015290519081900360640190fd5b600254611da19073ffffffffffffffffffffffffffffffffffffffff848116911683612c51565b60005473ffffffffffffffffffffffffffffffffffffffff16331461243057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676f7665726e616e6365000000000000000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff163314806124b4575060005473ffffffffffffffffffffffffffffffffffffffff1633145b61251f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f2173747261746567697374000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604090205460ff166125b357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21617070726f7665640000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c55dae636040518163ffffffff1660e01b815260040160206040518083038186803b15801561263257600080fd5b505afa158015612646573d6000803e3d6000fd5b505050506040513d602081101561265c57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16146126e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f2177616e74000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6008805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60066020526000908152604090208054600182015460029092015473ffffffffffffffffffffffffffffffffffffffff909116919083565b60015473ffffffffffffffffffffffffffffffffffffffff163314806127a1575060005473ffffffffffffffffffffffffffffffffffffffff1633145b61280c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f2173747261746567697374000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205460ff166128a057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21617070726f7665640000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60009384526006602052604090932080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff93909316929092178255600182015560020155565b60055481565b60015473ffffffffffffffffffffffffffffffffffffffff16331480612940575060005473ffffffffffffffffffffffffffffffffffffffff1633145b6129ab57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f2173747261746567697374000000000000000000000000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff1663853828b66040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156129f357600080fd5b505af1158015612a07573d6000803e3d6000fd5b505050506040513d602081101561213357600080fd5b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331480612a76575060005473ffffffffffffffffffffffffffffffffffffffff1633145b612ae157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f2173747261746567697374000000000000000000000000000000000000000000604482015290519081900360640190fd5b600555565b600082820183811015610f3057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610f3083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cde565b600082612bab57506000612227565b82820282848281612bb857fe5b0414610f30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061315a6021913960400191505060405180910390fd5b6000610f3083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d8f565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052612133908490612e0e565b60008184841115612d87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d4c578181015183820152602001612d34565b50505050905090810190601f168015612d795780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183612df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201818152835160248401528351909283926044909101919085019080838360008315612d4c578181015183820152602001612d34565b506000838581612e0457fe5b0495945050505050565b6060612e70826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ee69092919063ffffffff16565b80519091501561213357808060200190516020811015612e8f57600080fd5b5051612133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061317b602a913960400191505060405180910390fd5b6060612ef58484600085612efd565b949350505050565b6060612f08856130c9565b612f7357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310612fdd57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612fa0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461303f576040519150601f19603f3d011682016040523d82523d6000602084013e613044565b606091505b50915091508115613058579150612ef59050565b8051156130685780518082602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201818152865160248401528651879391928392604401919085019080838360008315612d4c578181015183820152602001612d34565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061311057805160ff191683800117855561313d565b8280016001018555821561313d579182015b8281111561313d578251825591602001919060010190613122565b50611b769291505b80821115611b76576000815560010161314556fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220fa2eb0a2d2c8a5c1d99da98799d40ee55d966a5873b28a273e467da70253bca764736f6c634300060c0033000000000000000000000000d4bbf439d3eab5155ca7c0537e583088fb4cfce8

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

000000000000000000000000d4bbf439d3eab5155ca7c0537e583088fb4cfce8

-----Decoded View---------------
Arg [0] : _vault (address): 0xd4bbf439d3eab5155ca7c0537e583088fb4cfce8

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d4bbf439d3eab5155ca7c0537e583088fb4cfce8


Deployed ByteCode Sourcemap

21651:8881:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22044:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28251:628;;;:::i;:::-;;22101:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21835:25;;;:::i;24520:124::-;;;;;;;;;;;;;;;;-1:-1:-1;24520:124:0;;;;:::i;29586:943::-;;;;;;;;;;;;;;;;-1:-1:-1;29586:943:0;;:::i;:::-;;;;;;;;;;;;;;;;26983:206;;;;;;;;;;;;;;;;-1:-1:-1;26983:206:0;;:::i;24926:134::-;;;:::i;25068:1180::-;;;:::i;23603:123::-;;;;;;;;;;;;;;;;-1:-1:-1;23603:123:0;;;;:::i;22333:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;28887:543;;;;;;;;;;;;;;;;-1:-1:-1;28887:543:0;;;;;;;;;;;;;;;;;;:::i;26256:209::-;;;:::i;21803:25::-;;;:::i;28107:136::-;;;;;;;;;;;;;;;;-1:-1:-1;28107:136:0;;;;:::i;27197:244::-;;;:::i;22377:39::-;;;:::i;22543:32::-;;;:::i;27788:242::-;;;;;;;;;;;;;;;;-1:-1:-1;27788:242:0;;;;;;;;;;;:::i;22496:38::-;;;:::i;23365:111::-;;;;;;;;;;;;;;;;-1:-1:-1;23365:111:0;;;;:::i;23865:123::-;;;;;;;;;;;;;;;;-1:-1:-1;23865:123:0;;:::i;26473:502::-;;;;;;;;;;;;;;;;-1:-1:-1;26473:502:0;;;;;;;;;:::i;23734:123::-;;;;;;;;;;;;;;;;-1:-1:-1;23734:123:0;;;;:::i;29438:140::-;;;;;;;;;;;;;;;;-1:-1:-1;29438:140:0;;:::i;23264:93::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23264:93:0;;-1:-1:-1;23264:93:0;;-1:-1:-1;;;;;23264:93:0:i;22274:50::-;;;;;;;;;;;;;;;;-1:-1:-1;22274:50:0;;;;:::i;27622:158::-;;;;;;;;;;;;;;;;-1:-1:-1;27622:158:0;;;;;;;;;:::i;23484:111::-;;;;;;;;;;;;;;;;-1:-1:-1;23484:111:0;;;;:::i;24652:266::-;;;;;;;;;;;;;;;;-1:-1:-1;24652:266:0;;;;:::i;22206:59::-;;;;;;;;;;;;;;;;-1:-1:-1;22206:59:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24147:365;;;;;;;;;;;;;;;;-1:-1:-1;24147:365:0;;;;;;;;;;;;;;;;;;;:::i;22136:29::-;;;:::i;27449:165::-;;;;;;;;;;;;;;;;-1:-1:-1;27449:165:0;;;;:::i;22004:33::-;;;:::i;23996:111::-;;;;;;;;;;;;;;;;-1:-1:-1;23996:111:0;;:::i;22044:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28251:628::-;23158:5;;;;23136:10;:28;;:56;;-1:-1:-1;23182:10:0;;;;23168;:24;23136:56;:84;;;-1:-1:-1;23210:10:0;;;;23196;:24;23136:84;23128:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28327:21:::1;28351:17;:15;:17::i;:::-;28327:41;;28461:12;28456:250;28486:14;;28479:4;:21;28456:250;;;28525:17;28545:16:::0;;;:10:::1;:16;::::0;;;;:25;::::1;::::0;;::::1;::::0;28589:26;::::1;::::0;::::1;28585:110;;28646:9;28636:28;;;28665:13;28636:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28585:110;-1:-1:-1::0;28502:6:0::1;;28456:250;;;-1:-1:-1::0;28720:27:0::1;::::0;::::1;::::0;28716:104:::1;;28764:44;::::0;;;;;28805:1:::1;28764:44;::::0;::::1;::::0;;;;;:32:::1;::::0;::::1;::::0;::::1;::::0;:44;;;;;;;;;;;28805:1;28764:32;:44;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28716:104;-1:-1:-1::0;28856:15:0::1;28830:23;:41:::0;28251:628::o;22101:28::-;;;;;;:::o;21835:25::-;;;;;;:::o;24520:124::-;23009:10;;;;22995;:24;;:52;;-1:-1:-1;23037:10:0;;;;23023;:24;22995:52;22987:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24604:14:::1;:32:::0;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;24520:124::o;29586:943::-;23158:5;;29663:20;;23158:5;;23136:10;:28;;:56;;-1:-1:-1;23182:10:0;;;;23168;:24;23136:56;:84;;;-1:-1:-1;23210:10:0;;;;23196;:24;23136:84;23128:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29711:1:0::1;29745:7:::0;29711:1;;29791:701:::1;29821:14;;29814:4;:21;29791:701;;;29860:19;29892:16:::0;;;:10:::1;:16;::::0;;;;;;;:25;29953:21;;;;;;;29892:25:::1;::::0;;::::1;::::0;29860:19;29892:25;;29953:19:::1;::::0;:21:::1;::::0;;::::1;::::0;29892:16;29953:21;;;;;29892:25;29953:21;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;29953:21:0;;-1:-1:-1;29993:23:0;;::::1;29989:219;;;30049:9;:18;;;30068:11;30049:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;30049:31:0;;-1:-1:-1;30114:40:0::1;30131:22;30049:31:::0;30131:11:::1;:22::i;:::-;30114:12:::0;;:16:::1;:40::i;:::-;30099:55;;30173:19;;;;;;;29989:219;30234:9;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;30234:23:0;;-1:-1:-1;30287:40:0::1;30304:22;30234:23:::0;30304:11:::1;:22::i;30287:40::-;30272:55;;30359:11;30346:9;:24;30342:84;;30391:19;;;;;;;30342:84;30454:26;:11:::0;30470:9;30454:15:::1;:26::i;:::-;30440:40:::0;-1:-1:-1;;;29837:6:0::1;;29791:701;;;;30502:19;;23247:1;29586:943:::0;;;:::o;26983:206::-;27054:7;27074:17;27094;:15;:17::i;:::-;27074:37;-1:-1:-1;27130:23:0;;;;27129:52;;27161:20;27173:7;27161:11;:20::i;:::-;27129:52;;;27157:1;27129:52;27122:59;26983:206;-1:-1:-1;;;26983:206:0:o;24926:134::-;25038:14;;;24926:134::o;25068:1180::-;25159:24;;25125:17;;25159:24;;;:38;:24;:38;25155:102;;-1:-1:-1;25221:24:0;;;;;;;25214:31;;25155:102;-1:-1:-1;25304:14:0;;25287:1;;25300:41;;25325:16;;25300:41;25356:14;;25374:1;25356:19;25352:54;;;-1:-1:-1;25384:13:0;;;:10;:13;;;:22;;;25377:29;;25352:54;25417:17;25437:11;:9;:11::i;:::-;25417:31;-1:-1:-1;25463:14:0;25459:49;;-1:-1:-1;;25486:13:0;;;:10;:13;;;:22;;;25479:29;;25459:49;25592:3;25572:17;25606:535;25636:14;;25629:4;:21;25606:535;;;25675:26;25704:16;;;:10;:16;;;;;;;;25765:14;;25755:37;;;;;;;25704:16;;25675:26;25765:14;;;;;25755:35;;:37;;;;;25704:16;25755:37;;;;;25765:14;25755:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25755:37:0;25823:11;;;;25755:37;;-1:-1:-1;25811:23:0;;25807:323;;;25924:13;;;;25855;;25871:67;;:48;25909:9;25871:33;25900:3;25871:24;:9;25909;25871:13;:24::i;:::-;:28;;:33::i;:::-;:37;;:48::i;:::-;:52;;:67::i;:::-;25855:83;;25995:9;25987:5;:17;25983:132;;;26081:14;;;;;-1:-1:-1;26041:5:0;-1:-1:-1;26041:5:0;25983:132;25807:323;;-1:-1:-1;;25652:6:0;;25606:535;;;-1:-1:-1;26155:23:0;;;26151:90;;26207:13;;;:10;:13;;;:22;;;;-1:-1:-1;26151:90:0;25068:1180;;;;:::o;23603:123::-;22896:10;;;;22882;:24;22874:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23682:29:::1;;;::::0;;;:18:::1;:29;::::0;;;;:36;;;::::1;23714:4;23682:36;::::0;;23603:123::o;22333:35::-;;;;;;:::o;28887:543::-;23009:10;;;;22995;:24;;:52;;-1:-1:-1;23037:10:0;;;;23023;:24;22995:52;22987:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29044:39:::1;::::0;::::1;;::::0;;;:18:::1;:39;::::0;;;;;::::1;;29036:61;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;29141:4;;;;;;;;;;;29116:29;;:9;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;29116:21:0;:29:::1;;;29108:62;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;29215:4;;;;;;;;;;;29189:30;;:10;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;29189:22:0;:30:::1;;;29181:64;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;29256:9;:30;;;29287:7;29256:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;29360:4:0::1;::::0;;29353:37:::1;::::0;;;;;29384:4:::1;29353:37:::0;;::::1;::::0;;;;;29306:85:::1;::::0;-1:-1:-1;29340:10:0;;-1:-1:-1;29360:4:0::1;::::0;;::::1;::::0;29353:22:::1;::::0;:37;;;;;::::1;::::0;;;;;;;;29360:4;29353:37;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;29353:37:0;29313:4:::1;::::0;::::1;;::::0;29306:85;:25:::1;:85::i;:::-;29402:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28887:543:::0;;;:::o;26256:209::-;23158:5;;;;23136:10;:28;;:56;;-1:-1:-1;23182:10:0;;;;23168;:24;23136:56;:84;;;-1:-1:-1;23210:10:0;;;;23196;:24;23136:84;23128:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26330:12:::1;26325:133;26355:14;;26348:4;:21;26325:133;;;26404:16;::::0;;;:10:::1;:16;::::0;;;;;:25;26394:52;;;;;;;26404:25:::1;::::0;;::::1;::::0;26394:50:::1;::::0;:52:::1;::::0;;::::1;::::0;;;;;;;26404:16;:25;26394:52;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;26371:6:0::1;::::0;;::::1;::::0;-1:-1:-1;26325:133:0::1;::::0;-1:-1:-1;26325:133:0::1;;;26256:209::o:0;21803:25::-;;;;;;:::o;28107:136::-;23158:5;;;;23136:10;:28;;:56;;-1:-1:-1;23182:10:0;;;;23168;:24;23136:56;:84;;;-1:-1:-1;23210:10:0;;;;23196;:24;23136:84;23128:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28195:40:::1;::::0;;;;;28232:1:::1;28195:40;::::0;::::1;::::0;;;;;:28:::1;::::0;::::1;::::0;::::1;::::0;:40;;;;;;;;;;;28232:1;28195:28;:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28107:136:::0;:::o;27197:244::-;27248:17;;27278:156;27308:14;;27301:4;:21;27278:156;;;27383:16;;;;:10;:16;;;;;;;;;:25;27373:48;;;;;;;27359:63;;27383:25;;;;;27373:46;;:48;;;;;;;;;;;27383:25;27373:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27373:48:0;27359:9;;:13;:63::i;:::-;27347:75;-1:-1:-1;27324:6:0;;27278:156;;;;27197:244;:::o;22377:39::-;;;;;;;;;:::o;22543:32::-;;;;:::o;27788:242::-;23009:10;;;;22995;:24;;:52;;-1:-1:-1;23037:10:0;;;;23023;:24;22995:52;22987:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27900:9:::1;27890:29;;;27920:6;27890:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;27974:5:0::1;::::0;27982:39:::1;::::0;;;;;28015:4:::1;27982:39;::::0;::::1;::::0;;;27938:84:::1;::::0;27974:5:::1;::::0;;::::1;::::0;27982:24;;::::1;::::0;::::1;::::0;:39;;;;;27890:37:::1;::::0;27982:39;;;;;;;;:24;:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;27982:39:0;27938:27:::1;::::0;::::1;::::0;:84;:27:::1;:84::i;:::-;27788:242:::0;;:::o;22496:38::-;;;;:::o;23365:111::-;22896:10;;;;22882;:24;22874:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23444:10:::1;:24:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;23365:111::o;23865:123::-;22896:10;;;;22882;:24;22874:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23950:13:::1;:30:::0;23865:123::o;26473:502::-;23158:5;;;;23136:10;:28;;:56;;-1:-1:-1;23182:10:0;;;;23168;:24;23136:56;:84;;;-1:-1:-1;23210:10:0;;;;23196;:24;23136:84;23128:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26564:17:::1;26584;:15;:17::i;:::-;26564:37:::0;-1:-1:-1;26616:23:0::1;::::0;::::1;::::0;;:69:::1;;;26679:6;26643:42;;26653:9;26643:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;26643:32:0;:42:::1;;;;26616:69;26612:356;;;26815:5;::::0;26779:52:::1;::::0;26815:5:::1;26779:27:::0;;::::1;::::0;26815:5:::1;26823:7:::0;26779:27:::1;:52::i;:::-;26612:356;;;26864:47;:27;::::0;::::1;26892:9:::0;26903:7;26864:27:::1;:47::i;:::-;26936:9;26926:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;26612:356;23247:1;26473:502:::0;;:::o;23734:123::-;22896:10;;;;22882;:24;22874:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23812:29:::1;;23844:5;23812:29:::0;;;:18:::1;:29;::::0;;;;:37;;;::::1;::::0;;23734:123::o;29438:140::-;29506:7;29533:37;29564:5;29533:26;29545:13;;29533:7;:11;;:26;;;;:::i;:37::-;29526:44;29438:140;-1:-1:-1;;29438:140:0:o;23264:93::-;22896:10;;;;22882;:24;22874:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23337:12;;::::1;::::0;:4:::1;::::0;:12:::1;::::0;::::1;::::0;::::1;:::i;22274:50::-:0;;;;;;;;;;;;;;;:::o;27622:158::-;23009:10;;;;22995;:24;;:52;;-1:-1:-1;23037:10:0;;;;23023;:24;22995:52;22987:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27756:5:::1;::::0;27720:52:::1;::::0;27756:5:::1;27720:27:::0;;::::1;::::0;27756:5:::1;27764:7:::0;27720:27:::1;:52::i;23484:111::-:0;22896:10;;;;22882;:24;22874:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23563:10:::1;:24:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;23484:111::o;24652:266::-;23009:10;;;;22995;:24;;:52;;-1:-1:-1;23037:10:0;;;;23023;:24;22995:52;22987:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24751:29:::1;::::0;::::1;;::::0;;;:18:::1;:29;::::0;;;;;::::1;;24743:51;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24849:4;;;;;;;;;;;24813:40;;24823:9;24813:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;24813:32:0;:40:::1;;;24805:58;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24874:24;:36:::0;;::::1;::::0;;::::1;;;::::0;;;::::1;::::0;;;::::1;::::0;;24652:266::o;22206:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24147:365::-;23009:10;;;;22995;:24;;:52;;-1:-1:-1;23037:10:0;;;;23023;:24;22995:52;22987:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24325:29:::1;::::0;::::1;;::::0;;;:18:::1;:29;::::0;;;;;::::1;;24317:51;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24379:16;::::0;;;:10:::1;:16;::::0;;;;;:37;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;24427:22:0;::::1;:31:::0;24469:24:::1;;:35:::0;24147:365::o;22136:29::-;;;;:::o;27449:165::-;23009:10;;;;22995;:24;;:52;;-1:-1:-1;23037:10:0;;;;23023;:24;22995:52;22987:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27582:9:::1;27572:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;22004:33:::0;;;;;;:::o;23996:111::-;23009:10;;;;22995;:24;;:52;;-1:-1:-1;23037:10:0;;;;23023;:24;22995:52;22987:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24075:14:::1;:24:::0;23996:111::o;3649:181::-;3707:7;3739:5;;;3763:6;;;;3755:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4113:136;4171:7;4198:43;4202:1;4205;4198:43;;;;;;;;;;;;;;;;;:3;:43::i;5037:471::-;5095:7;5340:6;5336:47;;-1:-1:-1;5370:1:0;5363:8;;5336:47;5407:5;;;5411:1;5407;:5;:1;5431:5;;;;;:10;5423:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5984:132;6042:7;6069:39;6073:1;6076;6069:39;;;;;;;;;;;;;;;;;:3;:39::i;14906:211::-;15050:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15073:23;15050:58;;;15023:86;;15043:5;;15023:19;:86::i;4552:226::-;4672:7;4708:12;4700:6;;;;4692:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4744:5:0;;;4552:226::o;6612:312::-;6732:7;6767:12;6760:5;6752:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6791:9;6807:1;6803;:5;;;;;;;6612:312;-1:-1:-1;;;;;6612:312:0:o;17367:774::-;17791:23;17817:69;17845:4;17817:69;;;;;;;;;;;;;;;;;17825:5;17817:27;;;;:69;;;;;:::i;:::-;17901:17;;17791:95;;-1:-1:-1;17901:21:0;17897:237;;18056:10;18045:30;;;;;;;;;;;;;;;-1:-1:-1;18045:30:0;18037:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11832:230;11969:12;12001:53;12024:6;12032:4;12038:1;12041:12;12001:22;:53::i;:::-;11994:60;11832:230;-1:-1:-1;;;;11832:230:0:o;13320:1020::-;13493:12;13526:18;13537:6;13526:10;:18::i;:::-;13518:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13652:12;13666:23;13693:6;:11;;13712:8;13722:4;13693:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13651:76;;;;13742:7;13738:595;;;13773:10;-1:-1:-1;13766:17:0;;-1:-1:-1;13766:17:0;13738:595;13887:17;;:21;13883:439;;14150:10;14144:17;14211:15;14198:10;14194:2;14190:19;14183:44;14098:148;14286:20;;;;;;;;;;;;;;;;;;;;14293:12;;14286:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8892:444;9272:20;9320:8;;;8892:444::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

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