ETH Price: $3,647.24 (+0.93%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Lets Withdraw_on...104561082020-07-14 6:41:181637 days ago1594708878IN
Zapper.Fi: Zap Out V2
0 ETH0.0053717736
Lets Withdraw_on...104467502020-07-12 19:56:171638 days ago1594583777IN
Zapper.Fi: Zap Out V2
0 ETH0.0030006117
Lets Withdraw_on...104286982020-07-10 1:05:211641 days ago1594343121IN
Zapper.Fi: Zap Out V2
0 ETH0.0038699523
Lets Withdraw_on...104278302020-07-09 21:59:371641 days ago1594331977IN
Zapper.Fi: Zap Out V2
0 ETH0.0075898323
Lets Withdraw_on...104272332020-07-09 19:41:511641 days ago1594323711IN
Zapper.Fi: Zap Out V2
0 ETH0.004392926
Lets Withdraw_on...104265212020-07-09 17:07:471641 days ago1594314467IN
Zapper.Fi: Zap Out V2
0 ETH0.0119314637
Lets Withdraw_on...104264352020-07-09 16:48:381641 days ago1594313318IN
Zapper.Fi: Zap Out V2
0 ETH0.0076526545
Lets Withdraw_on...104220462020-07-09 0:15:351642 days ago1594253735IN
Zapper.Fi: Zap Out V2
0 ETH0.0089098127
Lets Withdraw_on...104206302020-07-08 19:02:581642 days ago1594234978IN
Zapper.Fi: Zap Out V2
0 ETH0.0108897633
Lets Withdraw_on...104169362020-07-08 5:21:211643 days ago1594185681IN
Zapper.Fi: Zap Out V2
0 ETH0.0128697239
Lets Withdraw_on...104156902020-07-08 0:48:161643 days ago1594169296IN
Zapper.Fi: Zap Out V2
0 ETH0.0062700919
Lets Withdraw_on...104141862020-07-07 19:13:581643 days ago1594149238IN
Zapper.Fi: Zap Out V2
0 ETH0.0096594628
Lets Withdraw_on...104141612020-07-07 19:08:421643 days ago1594148922IN
Zapper.Fi: Zap Out V2
0 ETH0.0035152521
Lets Withdraw_on...104123102020-07-07 12:32:091644 days ago1594125129IN
Zapper.Fi: Zap Out V2
0 ETH0.0141896943
Lets Withdraw_on...104110492020-07-07 7:55:491644 days ago1594108549IN
Zapper.Fi: Zap Out V2
0 ETH0.015509147
Lets Withdraw_on...104101552020-07-07 4:30:001644 days ago1594096200IN
Zapper.Fi: Zap Out V2
0 ETH0.0095697929
Lets Withdraw_on...104076352020-07-06 19:08:161644 days ago1594062496IN
Zapper.Fi: Zap Out V2
0 ETH0.004204825
Lets Withdraw_on...104048612020-07-06 8:40:371645 days ago1594024837IN
Zapper.Fi: Zap Out V2
0 ETH0.0133575141
Lets Withdraw_on...104035392020-07-06 3:47:101645 days ago1594007230IN
Zapper.Fi: Zap Out V2
0 ETH0.0059730918.1
Lets Withdraw_on...104011442020-07-05 19:02:211645 days ago1593975741IN
Zapper.Fi: Zap Out V2
0 ETH0.0039937924
Lets Withdraw_on...103995092020-07-05 12:57:471646 days ago1593953867IN
Zapper.Fi: Zap Out V2
0 ETH0.0098997930
Lets Withdraw_on...103990672020-07-05 11:17:311646 days ago1593947851IN
Zapper.Fi: Zap Out V2
0 ETH0.0107507733
Lets Withdraw_on...103989742020-07-05 10:58:171646 days ago1593946697IN
Zapper.Fi: Zap Out V2
0 ETH0.0060171232
Lets Withdraw_on...103981832020-07-05 7:57:311646 days ago1593935851IN
Zapper.Fi: Zap Out V2
0 ETH0.0076891123.3
Lets Withdraw_on...103979892020-07-05 7:09:311646 days ago1593932971IN
Zapper.Fi: Zap Out V2
0 ETH0.003073118.2
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
105021822020-07-21 10:23:311630 days ago1595327011
Zapper.Fi: Zap Out V2
1.88698891 ETH
105021822020-07-21 10:23:311630 days ago1595327011
Zapper.Fi: Zap Out V2
1.88698891 ETH
104995122020-07-21 0:06:541630 days ago1595290014
Zapper.Fi: Zap Out V2
0.59550849 ETH
104995122020-07-21 0:06:541630 days ago1595290014
Zapper.Fi: Zap Out V2
0.59550849 ETH
104990502020-07-20 22:27:101630 days ago1595284030
Zapper.Fi: Zap Out V2
0.97430867 ETH
104990502020-07-20 22:27:101630 days ago1595284030
Zapper.Fi: Zap Out V2
0.97430867 ETH
104676092020-07-16 1:35:291635 days ago1594863329
Zapper.Fi: Zap Out V2
1.41072685 ETH
104676092020-07-16 1:35:291635 days ago1594863329
Zapper.Fi: Zap Out V2
1.41072685 ETH
104593592020-07-14 18:54:231636 days ago1594752863
Zapper.Fi: Zap Out V2
0.93293302 ETH
104593592020-07-14 18:54:231636 days ago1594752863
Zapper.Fi: Zap Out V2
0.93293302 ETH
104561082020-07-14 6:41:181637 days ago1594708878
Zapper.Fi: Zap Out V2
0.54458423 ETH
104467502020-07-12 19:56:171638 days ago1594583777
Zapper.Fi: Zap Out V2
1.19898757 ETH
104467502020-07-12 19:56:171638 days ago1594583777
Zapper.Fi: Zap Out V2
1.19898757 ETH
104286982020-07-10 1:05:211641 days ago1594343121
Zapper.Fi: Zap Out V2
10.12061351 ETH
104286982020-07-10 1:05:211641 days ago1594343121
Zapper.Fi: Zap Out V2
10.12061351 ETH
104278302020-07-09 21:59:371641 days ago1594331977
Zapper.Fi: Zap Out V2
2.03134601 ETH
104278302020-07-09 21:59:371641 days ago1594331977
Zapper.Fi: Zap Out V2
2.03134601 ETH
104272332020-07-09 19:41:511641 days ago1594323711
Zapper.Fi: Zap Out V2
0.29357322 ETH
104272332020-07-09 19:41:511641 days ago1594323711
Zapper.Fi: Zap Out V2
0.29357322 ETH
104265212020-07-09 17:07:471641 days ago1594314467
Zapper.Fi: Zap Out V2
0.2219128 ETH
104265212020-07-09 17:07:471641 days ago1594314467
Zapper.Fi: Zap Out V2
0.2219128 ETH
104264352020-07-09 16:48:381641 days ago1594313318
Zapper.Fi: Zap Out V2
0.25435083 ETH
104264352020-07-09 16:48:381641 days ago1594313318
Zapper.Fi: Zap Out V2
0.25435083 ETH
104220462020-07-09 0:15:351642 days ago1594253735
Zapper.Fi: Zap Out V2
0.34880942 ETH
104220462020-07-09 0:15:351642 days ago1594253735
Zapper.Fi: Zap Out V2
0.34880942 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniSwapRemoveLiquityGeneral_v1

Compiler Version
v0.5.13+commit.5b0b510c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv2 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-05-01
*/

// File: @openzeppelin/upgrades/contracts/Initializable.sol

pragma solidity >=0.4.24 <0.6.0;


/**
 * @title Initializable
 *
 * @dev Helper contract to support initializer functions. To use it, replace
 * the constructor with a function that has the `initializer` modifier.
 * WARNING: Unlike constructors, initializer functions must be manually
 * invoked. This applies both to deploying an Initializable contract, as well
 * as extending an Initializable contract via inheritance.
 * WARNING: When used with inheritance, manual care must be taken to not invoke
 * a parent initializer twice, or ensure that all initializers are idempotent,
 * because this is not dealt with automatically as with constructors.
 */
contract Initializable {

  /**
   * @dev Indicates that the contract has been initialized.
   */
  bool private initialized;

  /**
   * @dev Indicates that the contract is in the process of being initialized.
   */
  bool private initializing;

  /**
   * @dev Modifier to use in the initializer function of a contract.
   */
  modifier initializer() {
    require(initializing || isConstructor() || !initialized, "Contract instance has already been initialized");

    bool isTopLevelCall = !initializing;
    if (isTopLevelCall) {
      initializing = true;
      initialized = true;
    }

    _;

    if (isTopLevelCall) {
      initializing = false;
    }
  }

  /// @dev Returns true if and only if the function is running in the constructor
  function isConstructor() private view returns (bool) {
    // extcodesize checks the size of the code stored in an address, and
    // address returns the current address. Since the code is still not
    // deployed when running a constructor, any checks on its code size will
    // yield zero, making it an effective way to detect if a contract is
    // under construction or not.
    uint256 cs;
    assembly { cs := extcodesize(address) }
    return cs == 0;
  }

  // Reserved storage space to allow for layout changes in the future.
  uint256[50] private ______gap;
}

// File: @openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol

pragma solidity ^0.5.0;

/**
 * @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.
     *
     * _Available since v2.4.0._
     */
    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.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        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.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: @openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol

pragma solidity ^0.5.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
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-ethereum-package/contracts/utils/ReentrancyGuard.sol

pragma solidity ^0.5.0;


/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 */
contract ReentrancyGuard is Initializable {
    // counter to allow mutex lock with only one SSTORE operation
    uint256 private _guardCounter;

    function initialize() public initializer {
        // The counter starts at one to prevent changing it from zero to a non-zero
        // value, which is a more expensive operation.
        _guardCounter = 1;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _guardCounter += 1;
        uint256 localCounter = _guardCounter;
        _;
        require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call");
    }

    uint256[50] private ______gap;
}

// File: contracts/UpdatedZaps/WIP/UniSwapRemoveLiquidityGeneral_v1.sol

// Copyright (C) 2019, 2020 dipeshsukhani, nodarjonashi, toshsharma, suhailg

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// Visit <https://www.gnu.org/licenses/>for a copy of the GNU Affero General Public License

/**
 * WARNING: This is an upgradable contract. Be careful not to disrupt
 * the existing storage layout when making upgrades to the contract. In particular,
 * existing fields should not be removed and should not have their types changed.
 * The order of field declarations must not be changed, and new fields must be added
 * below all existing declarations.
 *
 * The base contracts and the order in which they are declared must not be changed.
 * New fields must not be added to base contracts (unless the base contract has
 * reserved placeholder fields for this purpose).
 *
 * See https://docs.zeppelinos.org/docs/writing_contracts.html for more info.
*/

pragma solidity ^0.5.0;





///@author DeFiZap
///@notice this contract implements one click conversion from Unipool liquidity tokens to ETH

interface IuniswapFactory_UniSwapRemoveLiquityGeneral_v1 {
    function getExchange(address token)
        external
        view
        returns (address exchange);
}

interface IuniswapExchange_UniSwapRemoveLiquityGeneral_v1 {
    // for removing liquidity (returns ETH removed, ERC20 Removed)
    function removeLiquidity(
        uint256 amount,
        uint256 min_eth,
        uint256 min_tokens,
        uint256 deadline
    ) external returns (uint256, uint256);

    // to convert ERC20 to ETH and transfer
    function getTokenToEthInputPrice(uint256 tokens_sold)
        external
        view
        returns (uint256 eth_bought);
    function tokenToEthTransferInput(
        uint256 tokens_sold,
        uint256 min_eth,
        uint256 deadline,
        address recipient
    ) external returns (uint256 eth_bought);
    /// -- optional
    function tokenToEthSwapInput(
        uint256 tokens_sold,
        uint256 min_eth,
        uint256 deadline
    ) external returns (uint256 eth_bought);

    // to convert ETH to ERC20 and transfer
    function getEthToTokenInputPrice(uint256 eth_sold)
        external
        view
        returns (uint256 tokens_bought);
    function ethToTokenTransferInput(
        uint256 min_tokens,
        uint256 deadline,
        address recipient
    ) external payable returns (uint256 tokens_bought);
    /// -- optional
    function ethToTokenSwapInput(uint256 min_tokens, uint256 deadline)
        external
        payable
        returns (uint256 tokens_bought);

    // converting ERC20 to ERC20 and transfer
    function tokenToTokenTransferInput(
        uint256 tokens_sold,
        uint256 min_tokens_bought,
        uint256 min_eth_bought,
        uint256 deadline,
        address recipient,
        address token_addr
    ) external returns (uint256 tokens_bought);

    // misc
    function allowance(address _owner, address _spender)
        external
        view
        returns (uint256);
    function balanceOf(address _owner) external view returns (uint256);
    function transfer(address _to, uint256 _value) external returns (bool);
    function transferFrom(address from, address to, uint256 tokens)
        external
        returns (bool success);

}

contract UniSwapRemoveLiquityGeneral_v1 is Initializable, ReentrancyGuard {
    using SafeMath for uint256;

    // state variables

    // - THESE MUST ALWAYS STAY IN THE SAME LAYOUT
    bool private stopped;
    address payable public owner;
    IuniswapFactory_UniSwapRemoveLiquityGeneral_v1 public UniSwapFactoryAddress;
    uint16 public goodwill;
    address public dzgoodwillAddress;
    mapping(address => uint256) private userBalance;
    IERC20 public DaiTokenAddress;

    // events
    event details(
        IuniswapExchange_UniSwapRemoveLiquityGeneral_v1 indexed ExchangeAddress,
        IERC20 TokenAdddress,
        address _user,
        uint256 LiqRed,
        uint256 ethRec,
        uint256 tokenRec,
        string indexed func
    );

    // circuit breaker modifiers
    modifier stopInEmergency {
        if (stopped) {
            revert("Temporarily Paused");
        } else {
            _;
        }
    }
    modifier onlyOwner() {
        require(isOwner(), "you are not authorised to call this function");
        _;
    }

    function initialize(
        address _UniSwapFactoryAddress,
        uint16 _goodwill,
        address _dzgoodwillAddress,
        address _DaiTokenAddress
    ) public initializer {
        ReentrancyGuard.initialize();
        stopped = false;
        owner = msg.sender;
        UniSwapFactoryAddress = IuniswapFactory_UniSwapRemoveLiquityGeneral_v1(
            _UniSwapFactoryAddress
        );
        goodwill = _goodwill;
        dzgoodwillAddress = _dzgoodwillAddress;
        DaiTokenAddress = IERC20(_DaiTokenAddress);
    }

    function set_new_UniSwapFactoryAddress(address _new_UniSwapFactoryAddress)
        public
        onlyOwner
    {
        UniSwapFactoryAddress = IuniswapFactory_UniSwapRemoveLiquityGeneral_v1(
            _new_UniSwapFactoryAddress
        );

    }

    function set_new_goodwill(uint16 _new_goodwill) public onlyOwner {
        require(
            _new_goodwill >= 0 && _new_goodwill <= 10000,
            "GoodWill Value not allowed"
        );
        goodwill = _new_goodwill;

    }

    function set_new_dzgoodwillAddress(address _new_dzgoodwillAddress)
        public
        onlyOwner
    {
        dzgoodwillAddress = _new_dzgoodwillAddress;
    }

    function LetsWithdraw_onlyETH(
        address _TokenContractAddress,
        uint256 LiquidityTokenSold
    ) public payable stopInEmergency nonReentrant returns (bool) {
        IuniswapExchange_UniSwapRemoveLiquityGeneral_v1 UniSwapExchangeContractAddress = IuniswapExchange_UniSwapRemoveLiquityGeneral_v1(
            UniSwapFactoryAddress.getExchange(_TokenContractAddress)
        );
        uint256 maxtokensPermitted = UniSwapExchangeContractAddress.allowance(
            msg.sender,
            address(this)
        );
        require(
            LiquidityTokenSold <= maxtokensPermitted,
            "Permission to DeFiZap is less than requested"
        );
        uint256 goodwillPortion = SafeMath.div(
            SafeMath.mul(LiquidityTokenSold, goodwill),
            10000
        );
        require(
            UniSwapExchangeContractAddress.transferFrom(
                msg.sender,
                address(this),
                SafeMath.sub(LiquidityTokenSold, goodwillPortion)
            ),
            "error2:defizap"
        );
        require(
            UniSwapExchangeContractAddress.transferFrom(
                msg.sender,
                dzgoodwillAddress,
                goodwillPortion
            ),
            "error3:defizap"
        );

        (uint256 ethReceived, uint256 erc20received) = UniSwapExchangeContractAddress
            .removeLiquidity(
            SafeMath.sub(LiquidityTokenSold, goodwillPortion),
            1,
            1,
            SafeMath.add(now, 1800)
        );

        uint256 eth_againstERC20 = UniSwapExchangeContractAddress
            .getTokenToEthInputPrice(erc20received);
        IERC20(_TokenContractAddress).approve(
            address(UniSwapExchangeContractAddress),
            erc20received
        );
        UniSwapExchangeContractAddress.tokenToEthTransferInput(
            erc20received,
            SafeMath.div(SafeMath.mul(eth_againstERC20, 98), 100),
            SafeMath.add(now, 1800),
            msg.sender
        );
        userBalance[msg.sender] = ethReceived;
        require(send_out_eth(msg.sender), "issue in transfer ETH");
        emit details(
            UniSwapExchangeContractAddress,
            IERC20(_TokenContractAddress),
            msg.sender,
            SafeMath.sub(LiquidityTokenSold, goodwillPortion),
            ethReceived,
            erc20received,
            "onlyETH"
        );
        return true;
    }

    function LetsWithdraw_onlyERC(
        address _TokenContractAddress,
        uint256 LiquidityTokenSold,
        bool _returnInDai
    ) public payable stopInEmergency nonReentrant returns (bool) {
        IuniswapExchange_UniSwapRemoveLiquityGeneral_v1 UniSwapExchangeContractAddress = IuniswapExchange_UniSwapRemoveLiquityGeneral_v1(
            UniSwapFactoryAddress.getExchange(_TokenContractAddress)
        );
        IuniswapExchange_UniSwapRemoveLiquityGeneral_v1 DAIUniSwapExchangeContractAddress = IuniswapExchange_UniSwapRemoveLiquityGeneral_v1(
            UniSwapFactoryAddress.getExchange(address(DaiTokenAddress))
        );
        uint256 maxtokensPermitted = UniSwapExchangeContractAddress.allowance(
            msg.sender,
            address(this)
        );
        require(
            LiquidityTokenSold <= maxtokensPermitted,
            "Permission to DeFiZap is less than requested"
        );
        uint256 goodwillPortion = SafeMath.div(
            SafeMath.mul(LiquidityTokenSold, goodwill),
            10000
        );
        require(
            UniSwapExchangeContractAddress.transferFrom(
                msg.sender,
                address(this),
                SafeMath.sub(LiquidityTokenSold, goodwillPortion)
            ),
            "error2:defizap"
        );
        require(
            UniSwapExchangeContractAddress.transferFrom(
                msg.sender,
                dzgoodwillAddress,
                goodwillPortion
            ),
            "error3:defizap"
        );
        (uint256 ethReceived, uint256 erc20received) = UniSwapExchangeContractAddress
            .removeLiquidity(
            SafeMath.sub(LiquidityTokenSold, goodwillPortion),
            1,
            1,
            SafeMath.add(now, 1800)
        );
        if (_returnInDai) {
            require(
                _TokenContractAddress != address(DaiTokenAddress),
                "error5:defizap"
            );
            DAIUniSwapExchangeContractAddress.ethToTokenTransferInput.value(
                ethReceived
            )(1, SafeMath.add(now, 1800), msg.sender);
            IERC20(_TokenContractAddress).approve(
                address(UniSwapExchangeContractAddress),
                erc20received
            );
            UniSwapExchangeContractAddress.tokenToTokenTransferInput(
                erc20received,
                1,
                1,
                SafeMath.add(now, 1800),
                msg.sender,
                address(DaiTokenAddress)
            );
            emit details(
                UniSwapExchangeContractAddress,
                IERC20(_TokenContractAddress),
                msg.sender,
                SafeMath.sub(LiquidityTokenSold, goodwillPortion),
                ethReceived,
                erc20received,
                "onlyDAI"
            );
        } else {
            UniSwapExchangeContractAddress.ethToTokenTransferInput.value(
                ethReceived
            )(1, SafeMath.add(now, 1800), msg.sender);
            IERC20(_TokenContractAddress).transfer(msg.sender, erc20received);
            emit details(
                UniSwapExchangeContractAddress,
                IERC20(_TokenContractAddress),
                msg.sender,
                SafeMath.sub(LiquidityTokenSold, goodwillPortion),
                ethReceived,
                erc20received,
                "onlyERC"
            );
        }

        return true;
    }

    function send_out_eth(address _towhomtosendtheETH) internal returns (bool) {
        require(userBalance[_towhomtosendtheETH] > 0, "error4:DefiZap");
        uint256 amount = userBalance[_towhomtosendtheETH];
        userBalance[_towhomtosendtheETH] = 0;
        (bool success, ) = _towhomtosendtheETH.call.value(amount)("");
        require(success, "error5:DefiZap");
        return true;
    }

    // - fallback function let you / anyone send ETH to this wallet without the need to call any function
    function() external payable {}

    // Should there be a need to withdraw any other ERC20 token
    function withdrawERC20Token(IERC20 _targetContractAddress)
        public
        onlyOwner
    {
        uint256 OtherTokenBalance = _targetContractAddress.balanceOf(
            address(this)
        );
        _targetContractAddress.transfer(owner, OtherTokenBalance);
    }

    // - to Pause the contract
    function toggleContractActive() public onlyOwner {
        stopped = !stopped;
    }

    // - to withdraw any ETH balance sitting in the contract
    function withdraw() public onlyOwner {
        owner.transfer(address(this).balance);
    }

    // - to kill the contract
    function destruct() public onlyOwner {
        selfdestruct(owner);
    }

    /**
     * @return true if `msg.sender` is the owner of the contract.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == owner;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address payable newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address payable newOwner) internal {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        owner = newOwner;
    }

}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IuniswapExchange_UniSwapRemoveLiquityGeneral_v1","name":"ExchangeAddress","type":"address"},{"indexed":false,"internalType":"contract IERC20","name":"TokenAdddress","type":"address"},{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"LiqRed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethRec","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenRec","type":"uint256"},{"indexed":true,"internalType":"string","name":"func","type":"string"}],"name":"details","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"DaiTokenAddress","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_TokenContractAddress","type":"address"},{"internalType":"uint256","name":"LiquidityTokenSold","type":"uint256"},{"internalType":"bool","name":"_returnInDai","type":"bool"}],"name":"LetsWithdraw_onlyERC","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_TokenContractAddress","type":"address"},{"internalType":"uint256","name":"LiquidityTokenSold","type":"uint256"}],"name":"LetsWithdraw_onlyETH","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"UniSwapFactoryAddress","outputs":[{"internalType":"contract IuniswapFactory_UniSwapRemoveLiquityGeneral_v1","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"destruct","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dzgoodwillAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"goodwill","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_UniSwapFactoryAddress","type":"address"},{"internalType":"uint16","name":"_goodwill","type":"uint16"},{"internalType":"address","name":"_dzgoodwillAddress","type":"address"},{"internalType":"address","name":"_DaiTokenAddress","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_UniSwapFactoryAddress","type":"address"}],"name":"set_new_UniSwapFactoryAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_dzgoodwillAddress","type":"address"}],"name":"set_new_dzgoodwillAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_new_goodwill","type":"uint16"}],"name":"set_new_goodwill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"toggleContractActive","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_targetContractAddress","type":"address"}],"name":"withdrawERC20Token","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50611f93806100206000396000f3fe6080604052600436106101095760003560e01c8063849e25f411610095578063b10e1dbc11610064578063b10e1dbc146102f5578063c3a8fcb014610323578063f2fde38b14610338578063f882cbcc1461036b578063fa6723421461039f57610109565b8063849e25f4146102515780638da5cb5b146102845780638f32d59b14610299578063ae4de7fa146102c257610109565b80633ccfd60b116100dc5780633ccfd60b14610199578063525d509e146101ae5780635de0398e146101c357806367abbc82146101ef5780638129fc1c1461023c57610109565b80631385d24c1461010b5780632a0d86d9146101205780632b68b9c6146101515780633bdebbe114610166575b005b34801561011757600080fd5b506101096103cb565b34801561012c57600080fd5b50610135610422565b604080516001600160a01b039092168252519081900360200190f35b34801561015d57600080fd5b50610109610431565b34801561017257600080fd5b506101096004803603602081101561018957600080fd5b50356001600160a01b0316610487565b3480156101a557600080fd5b506101096105ce565b3480156101ba57600080fd5b50610135610655565b3480156101cf57600080fd5b506101d8610664565b6040805161ffff9092168252519081900360200190f35b3480156101fb57600080fd5b506101096004803603608081101561021257600080fd5b506001600160a01b03813581169161ffff6020820135169160408201358116916060013516610675565b34801561024857600080fd5b5061010961078b565b34801561025d57600080fd5b506101096004803603602081101561027457600080fd5b50356001600160a01b0316610831565b34801561029057600080fd5b50610135610896565b3480156102a557600080fd5b506102ae6108aa565b604080519115158252519081900360200190f35b3480156102ce57600080fd5b50610109600480360360208110156102e557600080fd5b50356001600160a01b03166108c0565b34801561030157600080fd5b506101096004803603602081101561031857600080fd5b503561ffff16610925565b34801561032f57600080fd5b506101356109e5565b34801561034457600080fd5b506101096004803603602081101561035b57600080fd5b50356001600160a01b03166109f4565b6102ae6004803603606081101561038157600080fd5b506001600160a01b0381351690602081013590604001351515610a40565b6102ae600480360360408110156103b557600080fd5b506001600160a01b0381351690602001356113b9565b6103d36108aa565b61040e5760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b6066805460ff19811660ff90911615179055565b606a546001600160a01b031681565b6104396108aa565b6104745760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b60665461010090046001600160a01b0316ff5b61048f6108aa565b6104ca5760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561051457600080fd5b505afa158015610528573d6000803e3d6000fd5b505050506040513d602081101561053e57600080fd5b50516066546040805163a9059cbb60e01b81526101009092046001600160a01b03908116600484015260248301849052905192935084169163a9059cbb916044808201926020929091908290030181600087803b15801561059e57600080fd5b505af11580156105b2573d6000803e3d6000fd5b505050506040513d60208110156105c857600080fd5b50505050565b6105d66108aa565b6106115760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b6066546040516001600160a01b036101009092049190911690303180156108fc02916000818181858888f19350505050158015610652573d6000803e3d6000fd5b50565b6067546001600160a01b031681565b606754600160a01b900461ffff1681565b600054610100900460ff168061068e575061068e611ad5565b8061069c575060005460ff16155b6106d75760405162461bcd60e51b815260040180806020018281038252602e815260200180611f05602e913960400191505060405180910390fd5b600054610100900460ff16158015610702576000805460ff1961ff0019909116610100171660011790555b61070a61078b565b606680546001600160a81b0319166101003302179055606780546001600160a01b03199081166001600160a01b038881169190911761ffff60a01b1916600160a01b61ffff89160217909255606880548216868416179055606a80549091169184169190911790558015610784576000805461ff00191690555b5050505050565b600054610100900460ff16806107a457506107a4611ad5565b806107b2575060005460ff16155b6107ed5760405162461bcd60e51b815260040180806020018281038252602e815260200180611f05602e913960400191505060405180910390fd5b600054610100900460ff16158015610818576000805460ff1961ff0019909116610100171660011790555b60016033558015610652576000805461ff001916905550565b6108396108aa565b6108745760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b606880546001600160a01b0319166001600160a01b0392909216919091179055565b60665461010090046001600160a01b031681565b60665461010090046001600160a01b0316331490565b6108c86108aa565b6109035760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b606780546001600160a01b0319166001600160a01b0392909216919091179055565b61092d6108aa565b6109685760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b6127108161ffff1611156109c3576040805162461bcd60e51b815260206004820152601a60248201527f476f6f6457696c6c2056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b6067805461ffff909216600160a01b0261ffff60a01b19909216919091179055565b6068546001600160a01b031681565b6109fc6108aa565b610a375760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b61065281611adb565b60665460009060ff1615610a90576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b6033805460010190819055606754604080516303795fb160e11b81526001600160a01b038881166004830152915160009392909216916306f2bf6291602480820192602092909190829003018186803b158015610aec57600080fd5b505afa158015610b00573d6000803e3d6000fd5b505050506040513d6020811015610b1657600080fd5b5051606754606a54604080516303795fb160e11b81526001600160a01b039283166004820152905193945060009391909216916306f2bf62916024808301926020929190829003018186803b158015610b6e57600080fd5b505afa158015610b82573d6000803e3d6000fd5b505050506040513d6020811015610b9857600080fd5b505160408051636eb1769f60e11b815233600482015230602482015290519192506000916001600160a01b0385169163dd62ed3e916044808301926020929190829003018186803b158015610bec57600080fd5b505afa158015610c00573d6000803e3d6000fd5b505050506040513d6020811015610c1657600080fd5b5051905080871115610c595760405162461bcd60e51b815260040180806020018281038252602c815260200180611f33602c913960400191505060405180910390fd5b606754600090610c8190610c79908a90600160a01b900461ffff16611b48565b612710611ba8565b9050836001600160a01b03166323b872dd3330610c9e8c86611bea565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b5051610d74576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72323a646566697a61760941b604482015290519081900360640190fd5b606854604080516323b872dd60e01b81523360048201526001600160a01b039283166024820152604481018490529051918616916323b872dd916064808201926020929091908290030181600087803b158015610dd057600080fd5b505af1158015610de4573d6000803e3d6000fd5b505050506040513d6020811015610dfa57600080fd5b5051610e3e576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72333a646566697a61760941b604482015290519081900360640190fd5b600080856001600160a01b031663f88bf15a610e5a8c86611bea565b600180610e6942610708611c2c565b6040518563ffffffff1660e01b8152600401808581526020018481526020018381526020018281526020019450505050506040805180830381600087803b158015610eb357600080fd5b505af1158015610ec7573d6000803e3d6000fd5b505050506040513d6040811015610edd57600080fd5b508051602090910151909250905088156111aa57606a546001600160a01b038c811691161415610f45576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72353a646566697a61760941b604482015290519081900360640190fd5b846001600160a01b031663ad65d76d836001610f6342610708611c2c565b336040518563ffffffff1660e01b815260040180848152602001838152602001826001600160a01b03166001600160a01b0316815260200193505050506020604051808303818588803b158015610fb957600080fd5b505af1158015610fcd573d6000803e3d6000fd5b50505050506040513d6020811015610fe457600080fd5b50506040805163095ea7b360e01b81526001600160a01b038881166004830152602482018490529151918d169163095ea7b3916044808201926020929091908290030181600087803b15801561103957600080fd5b505af115801561104d573d6000803e3d6000fd5b505050506040513d602081101561106357600080fd5b50506001600160a01b03861663f552d91b8260018061108442610708611c2c565b606a54604080516001600160e01b031960e089901b16815260048101969096526024860194909452604485019290925260648401523360848401526001600160a01b031660a48301525160c48083019260209291908290030181600087803b1580156110ef57600080fd5b505af1158015611103573d6000803e3d6000fd5b505050506040513d602081101561111957600080fd5b505060408051666f6e6c7944414960c81b815290519081900360070190206001600160a01b0387167fe9fe044b3557c78a96b97e3deb80d2bf7d9460225802982c02ea824b6bb8db038d3361116e8f89611bea565b604080516001600160a01b03948516815292909316602083015281830152606081018790526080810186905290519081900360a00190a3611351565b856001600160a01b031663ad65d76d8360016111c842610708611c2c565b336040518563ffffffff1660e01b815260040180848152602001838152602001826001600160a01b03166001600160a01b0316815260200193505050506020604051808303818588803b15801561121e57600080fd5b505af1158015611232573d6000803e3d6000fd5b50505050506040513d602081101561124957600080fd5b50506040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b038d169163a9059cbb9160448083019260209291908290030181600087803b15801561129a57600080fd5b505af11580156112ae573d6000803e3d6000fd5b505050506040513d60208110156112c457600080fd5b505060408051666f6e6c7945524360c81b815290519081900360070190206001600160a01b0387167fe9fe044b3557c78a96b97e3deb80d2bf7d9460225802982c02ea824b6bb8db038d336113198f89611bea565b604080516001600160a01b03948516815292909316602083015281830152606081018790526080810186905290519081900360a00190a35b6001975050505050505060335481146113b1576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b509392505050565b60665460009060ff1615611409576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b6033805460010190819055606754604080516303795fb160e11b81526001600160a01b038781166004830152915160009392909216916306f2bf6291602480820192602092909190829003018186803b15801561146557600080fd5b505afa158015611479573d6000803e3d6000fd5b505050506040513d602081101561148f57600080fd5b505160408051636eb1769f60e11b815233600482015230602482015290519192506000916001600160a01b0384169163dd62ed3e916044808301926020929190829003018186803b1580156114e357600080fd5b505afa1580156114f7573d6000803e3d6000fd5b505050506040513d602081101561150d57600080fd5b50519050808511156115505760405162461bcd60e51b815260040180806020018281038252602c815260200180611f33602c913960400191505060405180910390fd5b60675460009061157090610c79908890600160a01b900461ffff16611b48565b9050826001600160a01b03166323b872dd333061158d8a86611bea565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156115f557600080fd5b505af1158015611609573d6000803e3d6000fd5b505050506040513d602081101561161f57600080fd5b5051611663576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72323a646566697a61760941b604482015290519081900360640190fd5b606854604080516323b872dd60e01b81523360048201526001600160a01b039283166024820152604481018490529051918516916323b872dd916064808201926020929091908290030181600087803b1580156116bf57600080fd5b505af11580156116d3573d6000803e3d6000fd5b505050506040513d60208110156116e957600080fd5b505161172d576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72333a646566697a61760941b604482015290519081900360640190fd5b600080846001600160a01b031663f88bf15a6117498a86611bea565b60018061175842610708611c2c565b6040518563ffffffff1660e01b8152600401808581526020018481526020018381526020018281526020019450505050506040805180830381600087803b1580156117a257600080fd5b505af11580156117b6573d6000803e3d6000fd5b505050506040513d60408110156117cc57600080fd5b508051602091820151604080516395b68fe760e01b81526004810183905290519295509093506000926001600160a01b038916926395b68fe7926024808201939291829003018186803b15801561182257600080fd5b505afa158015611836573d6000803e3d6000fd5b505050506040513d602081101561184c57600080fd5b50516040805163095ea7b360e01b81526001600160a01b038981166004830152602482018690529151929350908c169163095ea7b3916044808201926020929091908290030181600087803b1580156118a457600080fd5b505af11580156118b8573d6000803e3d6000fd5b505050506040513d60208110156118ce57600080fd5b50506001600160a01b038616637237e031836118f56118ee856062611b48565b6064611ba8565b61190142610708611c2c565b604080516001600160e01b031960e087901b1681526004810194909452602484019290925260448301523360648301525160848083019260209291908290030181600087803b15801561195357600080fd5b505af1158015611967573d6000803e3d6000fd5b505050506040513d602081101561197d57600080fd5b505033600081815260696020526040902084905561199a90611c86565b6119e3576040805162461bcd60e51b81526020600482015260156024820152740d2e6e6eaca40d2dc40e8e4c2dce6cccae4408aa89605b1b604482015290519081900360640190fd5b60408051660dedcd8f28aa8960cb1b815290519081900360070190206001600160a01b0387167fe9fe044b3557c78a96b97e3deb80d2bf7d9460225802982c02ea824b6bb8db038c33611a368e8a611bea565b604080516001600160a01b03948516815292909316602083015281830152606081018890526080810187905290519081900360a00190a3600197505050505050506033548114611acd576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b505b92915050565b303b1590565b6001600160a01b038116611b205760405162461bcd60e51b8152600401808060200182810382526026815260200180611e926026913960400191505060405180910390fd5b606680546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600082611b5757506000611acf565b82820282848281611b6457fe5b0414611ba15760405162461bcd60e51b8152600401808060200182810382526021815260200180611ee46021913960400191505060405180910390fd5b9392505050565b6000611ba183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d95565b6000611ba183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e37565b600082820183811015611ba1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260696020526040812054611ce1576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72343a446566695a61760941b604482015290519081900360640190fd5b6001600160a01b038216600081815260696020526040808220805490839055905190929083908381818185875af1925050503d8060008114611d3f576040519150601f19603f3d011682016040523d82523d6000602084013e611d44565b606091505b5050905080611d8b576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72353a446566695a61760941b604482015290519081900360640190fd5b5060019392505050565b60008183611e215760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611de6578181015183820152602001611dce565b50505050905090810190601f168015611e135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611e2d57fe5b0495945050505050565b60008184841115611e895760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611de6578181015183820152602001611dce565b50505090039056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373796f7520617265206e6f7420617574686f726973656420746f2063616c6c20746869732066756e6374696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645065726d697373696f6e20746f20446546695a6170206973206c657373207468616e20726571756573746564a265627a7a72315820b38ee8c0d7db04d43e5c8478f31704af5efd7b186dbf79d92c86b5f50c709af664736f6c634300050d0032

Deployed Bytecode

0x6080604052600436106101095760003560e01c8063849e25f411610095578063b10e1dbc11610064578063b10e1dbc146102f5578063c3a8fcb014610323578063f2fde38b14610338578063f882cbcc1461036b578063fa6723421461039f57610109565b8063849e25f4146102515780638da5cb5b146102845780638f32d59b14610299578063ae4de7fa146102c257610109565b80633ccfd60b116100dc5780633ccfd60b14610199578063525d509e146101ae5780635de0398e146101c357806367abbc82146101ef5780638129fc1c1461023c57610109565b80631385d24c1461010b5780632a0d86d9146101205780632b68b9c6146101515780633bdebbe114610166575b005b34801561011757600080fd5b506101096103cb565b34801561012c57600080fd5b50610135610422565b604080516001600160a01b039092168252519081900360200190f35b34801561015d57600080fd5b50610109610431565b34801561017257600080fd5b506101096004803603602081101561018957600080fd5b50356001600160a01b0316610487565b3480156101a557600080fd5b506101096105ce565b3480156101ba57600080fd5b50610135610655565b3480156101cf57600080fd5b506101d8610664565b6040805161ffff9092168252519081900360200190f35b3480156101fb57600080fd5b506101096004803603608081101561021257600080fd5b506001600160a01b03813581169161ffff6020820135169160408201358116916060013516610675565b34801561024857600080fd5b5061010961078b565b34801561025d57600080fd5b506101096004803603602081101561027457600080fd5b50356001600160a01b0316610831565b34801561029057600080fd5b50610135610896565b3480156102a557600080fd5b506102ae6108aa565b604080519115158252519081900360200190f35b3480156102ce57600080fd5b50610109600480360360208110156102e557600080fd5b50356001600160a01b03166108c0565b34801561030157600080fd5b506101096004803603602081101561031857600080fd5b503561ffff16610925565b34801561032f57600080fd5b506101356109e5565b34801561034457600080fd5b506101096004803603602081101561035b57600080fd5b50356001600160a01b03166109f4565b6102ae6004803603606081101561038157600080fd5b506001600160a01b0381351690602081013590604001351515610a40565b6102ae600480360360408110156103b557600080fd5b506001600160a01b0381351690602001356113b9565b6103d36108aa565b61040e5760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b6066805460ff19811660ff90911615179055565b606a546001600160a01b031681565b6104396108aa565b6104745760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b60665461010090046001600160a01b0316ff5b61048f6108aa565b6104ca5760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561051457600080fd5b505afa158015610528573d6000803e3d6000fd5b505050506040513d602081101561053e57600080fd5b50516066546040805163a9059cbb60e01b81526101009092046001600160a01b03908116600484015260248301849052905192935084169163a9059cbb916044808201926020929091908290030181600087803b15801561059e57600080fd5b505af11580156105b2573d6000803e3d6000fd5b505050506040513d60208110156105c857600080fd5b50505050565b6105d66108aa565b6106115760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b6066546040516001600160a01b036101009092049190911690303180156108fc02916000818181858888f19350505050158015610652573d6000803e3d6000fd5b50565b6067546001600160a01b031681565b606754600160a01b900461ffff1681565b600054610100900460ff168061068e575061068e611ad5565b8061069c575060005460ff16155b6106d75760405162461bcd60e51b815260040180806020018281038252602e815260200180611f05602e913960400191505060405180910390fd5b600054610100900460ff16158015610702576000805460ff1961ff0019909116610100171660011790555b61070a61078b565b606680546001600160a81b0319166101003302179055606780546001600160a01b03199081166001600160a01b038881169190911761ffff60a01b1916600160a01b61ffff89160217909255606880548216868416179055606a80549091169184169190911790558015610784576000805461ff00191690555b5050505050565b600054610100900460ff16806107a457506107a4611ad5565b806107b2575060005460ff16155b6107ed5760405162461bcd60e51b815260040180806020018281038252602e815260200180611f05602e913960400191505060405180910390fd5b600054610100900460ff16158015610818576000805460ff1961ff0019909116610100171660011790555b60016033558015610652576000805461ff001916905550565b6108396108aa565b6108745760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b606880546001600160a01b0319166001600160a01b0392909216919091179055565b60665461010090046001600160a01b031681565b60665461010090046001600160a01b0316331490565b6108c86108aa565b6109035760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b606780546001600160a01b0319166001600160a01b0392909216919091179055565b61092d6108aa565b6109685760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b6127108161ffff1611156109c3576040805162461bcd60e51b815260206004820152601a60248201527f476f6f6457696c6c2056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b6067805461ffff909216600160a01b0261ffff60a01b19909216919091179055565b6068546001600160a01b031681565b6109fc6108aa565b610a375760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b61065281611adb565b60665460009060ff1615610a90576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b6033805460010190819055606754604080516303795fb160e11b81526001600160a01b038881166004830152915160009392909216916306f2bf6291602480820192602092909190829003018186803b158015610aec57600080fd5b505afa158015610b00573d6000803e3d6000fd5b505050506040513d6020811015610b1657600080fd5b5051606754606a54604080516303795fb160e11b81526001600160a01b039283166004820152905193945060009391909216916306f2bf62916024808301926020929190829003018186803b158015610b6e57600080fd5b505afa158015610b82573d6000803e3d6000fd5b505050506040513d6020811015610b9857600080fd5b505160408051636eb1769f60e11b815233600482015230602482015290519192506000916001600160a01b0385169163dd62ed3e916044808301926020929190829003018186803b158015610bec57600080fd5b505afa158015610c00573d6000803e3d6000fd5b505050506040513d6020811015610c1657600080fd5b5051905080871115610c595760405162461bcd60e51b815260040180806020018281038252602c815260200180611f33602c913960400191505060405180910390fd5b606754600090610c8190610c79908a90600160a01b900461ffff16611b48565b612710611ba8565b9050836001600160a01b03166323b872dd3330610c9e8c86611bea565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b5051610d74576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72323a646566697a61760941b604482015290519081900360640190fd5b606854604080516323b872dd60e01b81523360048201526001600160a01b039283166024820152604481018490529051918616916323b872dd916064808201926020929091908290030181600087803b158015610dd057600080fd5b505af1158015610de4573d6000803e3d6000fd5b505050506040513d6020811015610dfa57600080fd5b5051610e3e576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72333a646566697a61760941b604482015290519081900360640190fd5b600080856001600160a01b031663f88bf15a610e5a8c86611bea565b600180610e6942610708611c2c565b6040518563ffffffff1660e01b8152600401808581526020018481526020018381526020018281526020019450505050506040805180830381600087803b158015610eb357600080fd5b505af1158015610ec7573d6000803e3d6000fd5b505050506040513d6040811015610edd57600080fd5b508051602090910151909250905088156111aa57606a546001600160a01b038c811691161415610f45576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72353a646566697a61760941b604482015290519081900360640190fd5b846001600160a01b031663ad65d76d836001610f6342610708611c2c565b336040518563ffffffff1660e01b815260040180848152602001838152602001826001600160a01b03166001600160a01b0316815260200193505050506020604051808303818588803b158015610fb957600080fd5b505af1158015610fcd573d6000803e3d6000fd5b50505050506040513d6020811015610fe457600080fd5b50506040805163095ea7b360e01b81526001600160a01b038881166004830152602482018490529151918d169163095ea7b3916044808201926020929091908290030181600087803b15801561103957600080fd5b505af115801561104d573d6000803e3d6000fd5b505050506040513d602081101561106357600080fd5b50506001600160a01b03861663f552d91b8260018061108442610708611c2c565b606a54604080516001600160e01b031960e089901b16815260048101969096526024860194909452604485019290925260648401523360848401526001600160a01b031660a48301525160c48083019260209291908290030181600087803b1580156110ef57600080fd5b505af1158015611103573d6000803e3d6000fd5b505050506040513d602081101561111957600080fd5b505060408051666f6e6c7944414960c81b815290519081900360070190206001600160a01b0387167fe9fe044b3557c78a96b97e3deb80d2bf7d9460225802982c02ea824b6bb8db038d3361116e8f89611bea565b604080516001600160a01b03948516815292909316602083015281830152606081018790526080810186905290519081900360a00190a3611351565b856001600160a01b031663ad65d76d8360016111c842610708611c2c565b336040518563ffffffff1660e01b815260040180848152602001838152602001826001600160a01b03166001600160a01b0316815260200193505050506020604051808303818588803b15801561121e57600080fd5b505af1158015611232573d6000803e3d6000fd5b50505050506040513d602081101561124957600080fd5b50506040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b038d169163a9059cbb9160448083019260209291908290030181600087803b15801561129a57600080fd5b505af11580156112ae573d6000803e3d6000fd5b505050506040513d60208110156112c457600080fd5b505060408051666f6e6c7945524360c81b815290519081900360070190206001600160a01b0387167fe9fe044b3557c78a96b97e3deb80d2bf7d9460225802982c02ea824b6bb8db038d336113198f89611bea565b604080516001600160a01b03948516815292909316602083015281830152606081018790526080810186905290519081900360a00190a35b6001975050505050505060335481146113b1576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b509392505050565b60665460009060ff1615611409576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b6033805460010190819055606754604080516303795fb160e11b81526001600160a01b038781166004830152915160009392909216916306f2bf6291602480820192602092909190829003018186803b15801561146557600080fd5b505afa158015611479573d6000803e3d6000fd5b505050506040513d602081101561148f57600080fd5b505160408051636eb1769f60e11b815233600482015230602482015290519192506000916001600160a01b0384169163dd62ed3e916044808301926020929190829003018186803b1580156114e357600080fd5b505afa1580156114f7573d6000803e3d6000fd5b505050506040513d602081101561150d57600080fd5b50519050808511156115505760405162461bcd60e51b815260040180806020018281038252602c815260200180611f33602c913960400191505060405180910390fd5b60675460009061157090610c79908890600160a01b900461ffff16611b48565b9050826001600160a01b03166323b872dd333061158d8a86611bea565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156115f557600080fd5b505af1158015611609573d6000803e3d6000fd5b505050506040513d602081101561161f57600080fd5b5051611663576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72323a646566697a61760941b604482015290519081900360640190fd5b606854604080516323b872dd60e01b81523360048201526001600160a01b039283166024820152604481018490529051918516916323b872dd916064808201926020929091908290030181600087803b1580156116bf57600080fd5b505af11580156116d3573d6000803e3d6000fd5b505050506040513d60208110156116e957600080fd5b505161172d576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72333a646566697a61760941b604482015290519081900360640190fd5b600080846001600160a01b031663f88bf15a6117498a86611bea565b60018061175842610708611c2c565b6040518563ffffffff1660e01b8152600401808581526020018481526020018381526020018281526020019450505050506040805180830381600087803b1580156117a257600080fd5b505af11580156117b6573d6000803e3d6000fd5b505050506040513d60408110156117cc57600080fd5b508051602091820151604080516395b68fe760e01b81526004810183905290519295509093506000926001600160a01b038916926395b68fe7926024808201939291829003018186803b15801561182257600080fd5b505afa158015611836573d6000803e3d6000fd5b505050506040513d602081101561184c57600080fd5b50516040805163095ea7b360e01b81526001600160a01b038981166004830152602482018690529151929350908c169163095ea7b3916044808201926020929091908290030181600087803b1580156118a457600080fd5b505af11580156118b8573d6000803e3d6000fd5b505050506040513d60208110156118ce57600080fd5b50506001600160a01b038616637237e031836118f56118ee856062611b48565b6064611ba8565b61190142610708611c2c565b604080516001600160e01b031960e087901b1681526004810194909452602484019290925260448301523360648301525160848083019260209291908290030181600087803b15801561195357600080fd5b505af1158015611967573d6000803e3d6000fd5b505050506040513d602081101561197d57600080fd5b505033600081815260696020526040902084905561199a90611c86565b6119e3576040805162461bcd60e51b81526020600482015260156024820152740d2e6e6eaca40d2dc40e8e4c2dce6cccae4408aa89605b1b604482015290519081900360640190fd5b60408051660dedcd8f28aa8960cb1b815290519081900360070190206001600160a01b0387167fe9fe044b3557c78a96b97e3deb80d2bf7d9460225802982c02ea824b6bb8db038c33611a368e8a611bea565b604080516001600160a01b03948516815292909316602083015281830152606081018890526080810187905290519081900360a00190a3600197505050505050506033548114611acd576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b505b92915050565b303b1590565b6001600160a01b038116611b205760405162461bcd60e51b8152600401808060200182810382526026815260200180611e926026913960400191505060405180910390fd5b606680546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600082611b5757506000611acf565b82820282848281611b6457fe5b0414611ba15760405162461bcd60e51b8152600401808060200182810382526021815260200180611ee46021913960400191505060405180910390fd5b9392505050565b6000611ba183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d95565b6000611ba183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e37565b600082820183811015611ba1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260696020526040812054611ce1576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72343a446566695a61760941b604482015290519081900360640190fd5b6001600160a01b038216600081815260696020526040808220805490839055905190929083908381818185875af1925050503d8060008114611d3f576040519150601f19603f3d011682016040523d82523d6000602084013e611d44565b606091505b5050905080611d8b576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72353a446566695a61760941b604482015290519081900360640190fd5b5060019392505050565b60008183611e215760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611de6578181015183820152602001611dce565b50505050905090810190601f168015611e135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611e2d57fe5b0495945050505050565b60008184841115611e895760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611de6578181015183820152602001611dce565b50505090039056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373796f7520617265206e6f7420617574686f726973656420746f2063616c6c20746869732066756e6374696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645065726d697373696f6e20746f20446546695a6170206973206c657373207468616e20726571756573746564a265627a7a72315820b38ee8c0d7db04d43e5c8478f31704af5efd7b186dbf79d92c86b5f50c709af664736f6c634300050d0032

Deployed Bytecode Sourcemap

16126:10518:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25495:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25495:86:0;;;:::i;16586:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16586:29:0;;;:::i;:::-;;;;-1:-1:-1;;;;;16586:29:0;;;;;;;;;;;;;;25783:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25783:75:0;;;:::i;25170:285::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25170:285:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25170:285:0;-1:-1:-1;;;;;25170:285:0;;:::i;25651:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25651:93:0;;;:::i;16382:75::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16382:75:0;;;:::i;16464:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16464:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17223:550;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17223:550:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;17223:550:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;11370:218::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11370:218:0;;;:::i;18296:168::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18296:168:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18296:168:0;-1:-1:-1;;;;;18296:168:0;;:::i;16347:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16347:28:0;;;:::i;25951:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25951:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;17781:258;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17781:258:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17781:258:0;-1:-1:-1;;;;;17781:258:0;;:::i;18047:241::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18047:241:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18047:241:0;;;;:::i;16493:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16493:32:0;;;:::i;26197:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26197:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26197:117:0;-1:-1:-1;;;;;26197:117:0;;:::i;20995:3546::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20995:3546:0;;;;;;;;;;;;;;;:::i;18472:2515::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18472:2515:0;;;;;;;;:::i;25495:86::-;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25566:7;;;-1:-1:-1;;25555:18:0;;25566:7;;;;25565:8;25555:18;;;25495:86::o;16586:29::-;;;-1:-1:-1;;;;;16586:29:0;;:::o;25783:75::-;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25844:5;;;;;-1:-1:-1;;;;;25844:5:0;25831:19;25170:285;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25308:71;;;-1:-1:-1;;;25308:71:0;;25363:4;25308:71;;;;;;25280:25;;-1:-1:-1;;;;;25308:32:0;;;;;:71;;;;;;;;;;;;;;;:32;:71;;;5:2:-1;;;;30:1;27;20:12;5:2;25308:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25308:71:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25308:71:0;25422:5;;25390:57;;;-1:-1:-1;;;25390:57:0;;25422:5;;;;-1:-1:-1;;;;;25422:5:0;;;25390:57;;;;;;;;;;;;25308:71;;-1:-1:-1;25390:31:0;;;;;:57;;;;;25308:71;;25390:57;;;;;;;;-1:-1:-1;25390:31:0;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;25390:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25390:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;25170:285:0:o;25651:93::-;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25699:5;;:37;;-1:-1:-1;;;;;25699:5:0;;;;;;;;;25722:4;25714:21;25699:37;;;;;;;;;25714:21;25699:5;:37;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25699:37:0;25651:93::o;16382:75::-;;;-1:-1:-1;;;;;16382:75:0;;:::o;16464:22::-;;;-1:-1:-1;;;16464:22:0;;;;;:::o;17223:550::-;1118:12;;;;;;;;:31;;;1134:15;:13;:15::i;:::-;1118:47;;;-1:-1:-1;1154:11:0;;;;1153:12;1118:47;1110:106;;;;-1:-1:-1;;;1110:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1225:19;1248:12;;;;;;1247:13;1267:83;;;;1296:12;:19;;-1:-1:-1;;;;1296:19:0;;;;;1324:18;1311:4;1324:18;;;1267:83;17420:28;:26;:28::i;:::-;17459:7;:15;;-1:-1:-1;;;;;;17485:18:0;17459:15;17493:10;17485:18;;;;17514:21;:118;;-1:-1:-1;;;;;;17514:118:0;;;-1:-1:-1;;;;;17514:118:0;;;;;;;-1:-1:-1;;;;17643:20:0;-1:-1:-1;;;17643:20:0;;;;;;;;17674:17;:38;;;;;;;;;;17723:15;:42;;;;;;;;;;;;;;1368:57;;;;1412:5;1397:20;;-1:-1:-1;;1397:20:0;;;1368:57;17223:550;;;;;:::o;11370:218::-;1118:12;;;;;;;;:31;;;1134:15;:13;:15::i;:::-;1118:47;;;-1:-1:-1;1154:11:0;;;;1153:12;1118:47;1110:106;;;;-1:-1:-1;;;1110:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1225:19;1248:12;;;;;;1247:13;1267:83;;;;1296:12;:19;;-1:-1:-1;;;;1296:19:0;;;;;1324:18;1311:4;1324:18;;;1267:83;11579:1;11563:13;:17;1368:57;;;;1412:5;1397:20;;-1:-1:-1;;1397:20:0;;;11370:218;:::o;18296:168::-;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18414:17;:42;;-1:-1:-1;;;;;;18414:42:0;-1:-1:-1;;;;;18414:42:0;;;;;;;;;;18296:168::o;16347:28::-;;;;;;-1:-1:-1;;;;;16347:28:0;;:::o;25951:91::-;26029:5;;;;;-1:-1:-1;;;;;26029:5:0;26015:10;:19;;25951:91::o;17781:258::-;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17907:21;:122;;-1:-1:-1;;;;;;17907:122:0;-1:-1:-1;;;;;17907:122:0;;;;;;;;;;17781:258::o;18047:241::-;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18184:5;18167:13;:22;;;;18123:120;;;;;-1:-1:-1;;;18123:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18254:8;:24;;;;;;-1:-1:-1;;;18254:24:0;-1:-1:-1;;;;18254:24:0;;;;;;;;;18047:241::o;16493:32::-;;;-1:-1:-1;;;;;16493:32:0;;:::o;26197:117::-;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26278:28;26297:8;26278:18;:28::i;20995:3546::-;16986:7;;21190:4;;16986:7;;16982:102;;;17010:28;;;-1:-1:-1;;;17010:28:0;;;;;;;;;;;;-1:-1:-1;;;17010:28:0;;;;;;;;;;;;;;16982:102;12007:13;:18;;12024:1;12007:18;;;;;21350:21;;:56;;;-1:-1:-1;;;21350:56:0;;-1:-1:-1;;;;;21350:56:0;;;;;;;;;12007:13;;21350:21;;;;;:33;;:56;;;;;;;;;;;;;;;:21;:56;;;5:2:-1;;;;30:1;27;20:12;5:2;21350:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21350:56:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21350:56:0;21574:21;;21616:15;;21574:59;;;-1:-1:-1;;;21574:59:0;;-1:-1:-1;;;;;21616:15:0;;;21574:59;;;;;;21350:56;;-1:-1:-1;21428:81:0;;21574:21;;;;;:33;;:59;;;;;21350:56;;21574:59;;;;;;;:21;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;21574:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21574:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21574:59:0;21684:104;;;-1:-1:-1;;;21684:104:0;;21739:10;21684:104;;;;21772:4;21684:104;;;;;;21574:59;;-1:-1:-1;21655:26:0;;-1:-1:-1;;;;;21684:40:0;;;;;:104;;;;;21574:59;;21684:104;;;;;;;:40;:104;;;5:2:-1;;;;30:1;27;20:12;5:2;21684:104:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21684:104:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21684:104:0;;-1:-1:-1;21821:40:0;;;;21799:134;;;;-1:-1:-1;;;21799:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22030:8;;21944:23;;21970:100;;21997:42;;22010:18;;-1:-1:-1;;;22030:8:0;;;;21997:12;:42::i;:::-;22054:5;21970:12;:100::i;:::-;21944:126;;22103:30;-1:-1:-1;;;;;22103:43:0;;22165:10;22202:4;22226:49;22239:18;22259:15;22226:12;:49::i;:::-;22103:187;;;;;;;;;;;;;-1:-1:-1;;;;;22103:187:0;-1:-1:-1;;;;;22103:187:0;;;;;;-1:-1:-1;;;;;22103:187:0;-1:-1:-1;;;;;22103:187:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22103:187:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22103:187:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22103:187:0;22081:251;;;;;-1:-1:-1;;;22081:251:0;;;;;;;;;;;;-1:-1:-1;;;22081:251:0;;;;;;;;;;;;;;;22456:17;;22365:157;;;-1:-1:-1;;;22365:157:0;;22427:10;22365:157;;;;-1:-1:-1;;;;;22456:17:0;;;22365:157;;;;;;;;;;;;:43;;;;;;:157;;;;;;;;;;;;;;;22456:17;22365:43;:157;;;5:2:-1;;;;30:1;27;20:12;5:2;22365:157:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22365:157:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22365:157:0;22343:221;;;;;-1:-1:-1;;;22343:221:0;;;;;;;;;;;;-1:-1:-1;;;22343:221:0;;;;;;;;;;;;;;;22576:19;22597:21;22622:30;-1:-1:-1;;;;;22622:60:0;;22697:49;22710:18;22730:15;22697:12;:49::i;:::-;22761:1;22777;22793:23;22806:3;22811:4;22793:12;:23::i;:::-;22622:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22622:205:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22622:205:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22622:205:0;;;;;;;;;-1:-1:-1;22622:205:0;-1:-1:-1;22838:1672:0;;;;22930:15;;-1:-1:-1;;;;;22897:49:0;;;22930:15;;22897:49;;22871:125;;;;;-1:-1:-1;;;22871:125:0;;;;;;;;;;;;-1:-1:-1;;;22871:125:0;;;;;;;;;;;;;;;23011:33;-1:-1:-1;;;;;23011:57:0;;23093:11;23120:1;23123:23;23136:3;23141:4;23123:12;:23::i;:::-;23148:10;23011:148;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23011:148:0;-1:-1:-1;;;;;23011:148:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23011:148:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23011:148:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;23174:142:0;;;-1:-1:-1;;;23174:142:0;;-1:-1:-1;;;;;23174:142:0;;;;;;;;;;;;;;;:37;;;;;;:142;;;;;23011:148;;23174:142;;;;;;;;-1:-1:-1;23174:37:0;:142;;;5:2:-1;;;;30:1;27;20:12;5:2;23174:142:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23174:142:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;23331:56:0;;;23406:13;23438:1;;23478:23;23491:3;23496:4;23478:12;:23::i;:::-;23557:15;;23331:257;;;-1:-1:-1;;;;;;23331:257:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23520:10;23331:257;;;;-1:-1:-1;;;;;23557:15:0;23331:257;;;;;;;;;;;;;;;;;;;23557:15;23331:257;;;;5:2:-1;;;;30:1;27;20:12;5:2;23331:257:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23331:257:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;23608:306:0;;;-1:-1:-1;;;23608:306:0;;;;;;;;;;;;-1:-1:-1;;;;;23608:306:0;;;23690:21;23731:10;23760:49;23773:18;23793:15;23760:12;:49::i;:::-;23608:306;;;-1:-1:-1;;;;;23608:306:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22838:1672;;;23947:30;-1:-1:-1;;;;;23947:54:0;;24026:11;24053:1;24056:23;24069:3;24074:4;24056:12;:23::i;:::-;24081:10;23947:145;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23947:145:0;-1:-1:-1;;;;;23947:145:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23947:145:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23947:145:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;24107:65:0;;;-1:-1:-1;;;24107:65:0;;24146:10;24107:65;;;;;;;;;;;;-1:-1:-1;;;;;24107:38:0;;;;;:65;;;;;23947:145;;24107:65;;;;;;;-1:-1:-1;24107:38:0;:65;;;5:2:-1;;;;30:1;27;20:12;5:2;24107:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24107:65:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;24192:306:0;;;-1:-1:-1;;;24192:306:0;;;;;;;;;;;;-1:-1:-1;;;;;24192:306:0;;;24274:21;24315:10;24344:49;24357:18;24377:15;24344:12;:49::i;:::-;24192:306;;;-1:-1:-1;;;;;24192:306:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22838:1672;24529:4;24522:11;;;;;;;;12119:13;;12103:12;:29;12095:73;;;;;-1:-1:-1;;;12095:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17071:1;20995:3546;;;;;:::o;18472:2515::-;16986:7;;18639:4;;16986:7;;16982:102;;;17010:28;;;-1:-1:-1;;;17010:28:0;;;;;;;;;;;;-1:-1:-1;;;17010:28:0;;;;;;;;;;;;;;16982:102;12007:13;:18;;12024:1;12007:18;;;;;18799:21;;:56;;;-1:-1:-1;;;18799:56:0;;-1:-1:-1;;;;;18799:56:0;;;;;;;;;12007:13;;18799:21;;;;;:33;;:56;;;;;;;;;;;;;;;:21;:56;;;5:2:-1;;;;30:1;27;20:12;5:2;18799:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18799:56:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18799:56:0;18906:104;;;-1:-1:-1;;;18906:104:0;;18961:10;18906:104;;;;18994:4;18906:104;;;;;;18799:56;;-1:-1:-1;18877:26:0;;-1:-1:-1;;;;;18906:40:0;;;;;:104;;;;;18799:56;;18906:104;;;;;;;:40;:104;;;5:2:-1;;;;30:1;27;20:12;5:2;18906:104:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18906:104:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18906:104:0;;-1:-1:-1;19043:40:0;;;;19021:134;;;;-1:-1:-1;;;19021:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19252:8;;19166:23;;19192:100;;19219:42;;19232:18;;-1:-1:-1;;;19252:8:0;;;;19219:12;:42::i;19192:100::-;19166:126;;19325:30;-1:-1:-1;;;;;19325:43:0;;19387:10;19424:4;19448:49;19461:18;19481:15;19448:12;:49::i;:::-;19325:187;;;;;;;;;;;;;-1:-1:-1;;;;;19325:187:0;-1:-1:-1;;;;;19325:187:0;;;;;;-1:-1:-1;;;;;19325:187:0;-1:-1:-1;;;;;19325:187:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19325:187:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19325:187:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19325:187:0;19303:251;;;;;-1:-1:-1;;;19303:251:0;;;;;;;;;;;;-1:-1:-1;;;19303:251:0;;;;;;;;;;;;;;;19678:17;;19587:157;;;-1:-1:-1;;;19587:157:0;;19649:10;19587:157;;;;-1:-1:-1;;;;;19678:17:0;;;19587:157;;;;;;;;;;;;:43;;;;;;:157;;;;;;;;;;;;;;;19678:17;19587:43;:157;;;5:2:-1;;;;30:1;27;20:12;5:2;19587:157:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19587:157:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19587:157:0;19565:221;;;;;-1:-1:-1;;;19565:221:0;;;;;;;;;;;;-1:-1:-1;;;19565:221:0;;;;;;;;;;;;;;;19800:19;19821:21;19846:30;-1:-1:-1;;;;;19846:60:0;;19921:49;19934:18;19954:15;19921:12;:49::i;:::-;19985:1;20001;20017:23;20030:3;20035:4;20017:12;:23::i;:::-;19846:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19846:205:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19846:205:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19846:205:0;;;;;;;;20091:83;;-1:-1:-1;;;20091:83:0;;;;;;;;;;19846:205;;-1:-1:-1;19846:205:0;;-1:-1:-1;20064:24:0;;-1:-1:-1;;;;;20091:68:0;;;;;:83;;;;;19846:205;20091:83;;;;;;:68;:83;;;5:2:-1;;;;30:1;27;20:12;5:2;20091:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20091:83:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20091:83:0;20185:130;;;-1:-1:-1;;;20185:130:0;;-1:-1:-1;;;;;20185:130:0;;;;;;;;;;;;;;;20091:83;;-1:-1:-1;20185:37:0;;;;;;:130;;;;;20091:83;;20185:130;;;;;;;;-1:-1:-1;20185:37:0;:130;;;5:2:-1;;;;30:1;27;20:12;5:2;20185:130:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20185:130:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;20326:54:0;;;20395:13;20423:53;20436:34;20449:16;20467:2;20436:12;:34::i;:::-;20472:3;20423:12;:53::i;:::-;20491:23;20504:3;20509:4;20491:12;:23::i;:::-;20326:224;;;-1:-1:-1;;;;;;20326:224:0;;;;;;;;;;;;;;;;;;;;;;;;;20529:10;20326:224;;;;;;;;;;;;;;;;;;;-1:-1:-1;20326:224:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;20326:224:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20326:224:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;20573:10:0;20561:23;;;;:11;20326:224;20561:23;;;;:37;;;20617:24;;:12;:24::i;:::-;20609:58;;;;;-1:-1:-1;;;20609:58:0;;;;;;;;;;;;-1:-1:-1;;;20609:58:0;;;;;;;;;;;;;;;20683:274;;;-1:-1:-1;;;20683:274:0;;;;;;;;;;;;-1:-1:-1;;;;;20683:274:0;;;20757:21;20794:10;20819:49;20832:18;20852:15;20819:12;:49::i;:::-;20683:274;;;-1:-1:-1;;;;;20683:274:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20975:4;20968:11;;;;;;;;12119:13;;12103:12;:29;12095:73;;;;;-1:-1:-1;;;12095:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17071:1;16982:102;18472:2515;;;;:::o;1519:476::-;1959:7;1947:20;1982:7;1519:476;:::o;26420:219::-;-1:-1:-1;;;;;26516:22:0;;26494:110;;;;-1:-1:-1;;;26494:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26615:5;:16;;-1:-1:-1;;;;;26615:16:0;;;;;-1:-1:-1;;;;;;26615:16:0;;;;;;;;;26420:219::o;4422:471::-;4480:7;4725:6;4721:47;;-1:-1:-1;4755:1:0;4748:8;;4721:47;4792:5;;;4796:1;4792;:5;:1;4816:5;;;;;:10;4808:56;;;;-1:-1:-1;;;4808:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4884:1;4422:471;-1:-1:-1;;;4422:471:0:o;5361:132::-;5419:7;5446:39;5450:1;5453;5446:39;;;;;;;;;;;;;;;;;:3;:39::i;3506:136::-;3564:7;3591:43;3595:1;3598;3591:43;;;;;;;;;;;;;;;;;:3;:43::i;3050:181::-;3108:7;3140:5;;;3164:6;;;;3156:46;;;;;-1:-1:-1;;;3156:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;24549:403;-1:-1:-1;;;;;24643:32:0;;24618:4;24643:32;;;:11;:32;;;;;;24635:63;;;;;-1:-1:-1;;;24635:63:0;;;;;;;;;;;;-1:-1:-1;;;24635:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24726:32:0;;24709:14;24726:32;;;:11;:32;;;;;;;;24769:36;;;;24835:42;;24726:32;;;;;24709:14;24835:42;24709:14;24835:42;24726:32;;24835:42;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;24816:61:0;;;24896:7;24888:34;;;;;-1:-1:-1;;;24888:34:0;;;;;;;;;;;;-1:-1:-1;;;24888:34:0;;;;;;;;;;;;;;;-1:-1:-1;24940:4:0;;24549:403;-1:-1:-1;;;24549:403:0:o;6023:345::-;6109:7;6211:12;6204:5;6196:28;;;;-1:-1:-1;;;6196:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6196:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6235:9;6251:1;6247;:5;;;;;;;6023:345;-1:-1:-1;;;;;6023:345:0:o;3979:192::-;4065:7;4101:12;4093:6;;;;4085:29;;;;-1:-1:-1;;;4085:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4085:29:0;-1:-1:-1;;;4137:5:0;;;3979:192::o

Swarm Source

bzzr://b38ee8c0d7db04d43e5c8478f31704af5efd7b186dbf79d92c86b5f50c709af6

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Zap out V2 is an update to the existing Unzap. It adds the ability to remove liquidity into a single asset.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.