Contract Overview
Balance: 314.725621917441828498 Ether
Ether Value: $33,323.15 (@ $105.88/ETH)
Transactions: 601 txns
 Latest 25 transactions from a total of 601 transactions

TxHash Age From To Value [TxFee]
0x1e229a2244aabdaacb8ba16de1d27ca581922841f93518c435e3a51d1f9347782 hrs 56 mins ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000204102
0x4b1dd4b21ba19f21f349fa0a53d3009a0fbe7f9ae57487be3de4af5a442ce32f3 hrs 1 min ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000238119
0x3c465016753f87b7a75fd0ef893e71881d9eb257467758aee63fe40a2d1b39f01 day 3 hrs ago0xa27243046e16ee596d19ff3091719160527e469a  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.0006101743
0xf0b68e93c927dfca328a8e2cb52f79638448a75cf14562ffb20f80bc108d575b1 day 12 hrs ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.1 Ether0.000154794
0x537b02c602ac6ca3b01330801264873fbf8b8f2eedf0ccba888272591d522c321 day 12 hrs ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.1 Ether0.000232767
0xcd45d42dd057086195f221d61209242c319992e54759a1460723b7dbe783e4901 day 16 hrs ago0xa27243046e16ee596d19ff3091719160527e469a  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.0003276922
0x2b4036bdf9193994738cfc74e77def903762e93ccaa414dc5d913f8533d485961 day 17 hrs ago0xdaa172456f5815256831aee19c8a370a83522871  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.00031584
0x8385597590392a9732a1ccc7860c83c1dbecd1ad77b840b277de9b974eb097db1 day 21 hrs ago0xdaa172456f5815256831aee19c8a370a83522871  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.0000617435
0x765ce8682f3451949961eebe539fe52e788289a7c5c5d65c68d0bcedb3611b442 days 6 mins ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000102435
0xd9ff37e8b3b5f2522fbb13d8b296609b147300f2038c446c77d84729f13cb49a2 days 17 mins ago0xa27243046e16ee596d19ff3091719160527e469a  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000446661
0xb45a9360a6afe5a312e191c60105b99fa355e14cdaa63edf4549f96685fefd312 days 17 mins ago0xa27243046e16ee596d19ff3091719160527e469a  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000446661
0x039f8c77f58c51a6a0853db1186c06fbf57ff8c839488cdaf93bd471a5d1fe0d2 days 31 mins ago0xa27243046e16ee596d19ff3091719160527e469a  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.0006104367
0x0895e54e73a8402394484cbc794bb4210ae033a250166ceeb031a7e8b1cc271c2 days 31 mins ago0xa27243046e16ee596d19ff3091719160527e469a  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.0006099119
0x07677560fc8be7f874dca76b41edeb94d466b7c9392612f4ceb6ffe0640d6f052 days 10 hrs ago0x31fc1b87112167f1ca5b855f26ca467b44d84e06  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000125703
0x31b752c91dd751bac1acfc69a64f1ebf99384767e586b6a2cb904051eff1d1642 days 11 hrs ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.00011757945
0x2a03277d84e1c6727fee313b97df179cceb0c9b3d7dfa6b66dc202469709de0e3 days 1 hr ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.0000782391
0x846379f546a62cb5272293a0151b15aa3940e16bfb7d39485dcf915f641184d73 days 1 hr ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000102051
0x25be3a79b777382b1ea29faa9abbf0f40aee7bc85292036d1490940057868d8a3 days 1 hr ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000114956
0x0993022621a9998921c01c95f94c1f05e425c13f51e40e7013dda1b09fc897533 days 1 hr ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000135812
0xaf9d6d56cd862465f4b2e456a423bf61f5fd82b248c1a691e223d9d9da8371fa4 days 19 hrs ago0xdaa172456f5815256831aee19c8a370a83522871  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000261828
0xa6da90b921ddde867e681278066e46b3c5184b415616b9a6227f85febd99ba284 days 20 hrs ago0xdaa172456f5815256831aee19c8a370a83522871  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.00010738
0x0cbaa0007ee27f2cdb025772da5fb9d82f579b9d39e5e7ff65eca33898dcb41d5 days 4 hrs ago0xaaa5f258a2734c99f0739750e9ddde2780d1e058  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.0000825396
0xf669d224568badc569d66b07d30044118a5c7cbadafdb548413cb9aec246d7455 days 7 hrs ago0xdaa172456f5815256831aee19c8a370a83522871  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.00020805
0xb46617dfff294b399dae1dbdfb17579e49bbab72a9606d7c0b2b647ddb3865ca5 days 7 hrs ago0xdaa172456f5815256831aee19c8a370a83522871  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.00029805
0x6803596a71eab49013d1e81119a2c8cbac477b7e0920ca1a10ccdfdf50d7ff885 days 8 hrs ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000976554
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0xc7d4af6c1784e3d765b6241dcb8c41177671b296e5379a68a988d0e51b01741a69143235 hrs 16 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x77fef5b705dcdf53eb910eebced2c5aee3e79f25b06a93290e417bfb1f0291b469143075 hrs 20 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0xb8c7f380a7f4e41f98f87c9ea5e788ab11bcef640d2b0e21172e606508804a9f69142045 hrs 45 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0xeb1c67c2d376b1a0e98affed937b079f7d5130112edd38df508d3381b286b406691114318 hrs 20 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x7294f248e5bb2f77673a8ce3442069deff6df8624d34690896dd1b0b0301d239691100218 hrs 56 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x121f8489e16387368af32b688a4c0dd337a585f5576cae15080ad3488ba803d8691032921 hrs 32 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x55d3cfb2307a07423e089035369896c5feec6fa7460cf2c04d409397bba27d9e691032921 hrs 32 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x6d59c7546300f08086cf1158418e104ab449504bc54b57f3318e2b47785da14a691032121 hrs 34 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x78581aeaa9d7ce24e6a9d25fbf26128eb66013a73e49cb7a263e92a938f742bf691027221 hrs 45 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0xf72e83c627b297c74b4a4c52eeb1532042e6f8050a6c3c65690e9f2be6c74a82691025921 hrs 48 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0xf63db373247ff3407a58b1e8bbd0054ad3488a3bfb16a16c7cfa1179a3b648e8691025921 hrs 48 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x41070332e242755ccdd25cbe1574aa64aec22cc77b476c205845fa58e28f5b83691025321 hrs 49 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0xb230fe7eacd04ab48f3b17bc482dc2e330ab91d4bac6aae02948fa7537c656c7691025121 hrs 49 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x9ba2ee26d19338d6905716b408dc8839c7340213e0016195ea6004fd5ecedfae691025121 hrs 49 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x20c5ce95726bf38f4c090d4175501b0a4f5149c24ff7af208ac05382b4cdbdbe691024721 hrs 50 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x11e4018d5f4e8eb1a92af74b73df648887acbb42698342d7c0725eed18748184691024121 hrs 51 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x5d511bce141c6035a3d49a8b5c4011ce563c71040511587f9bd45235dede23be691022821 hrs 54 mins ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0xfbcc3820e559812304352aedafd7ccaced56c2f3cd14f58d2cd373b5ef2cd18369094251 day 1 hr ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x9f9037838f84d5688025257f6cb56064c5c68a15370018433344797a3d473dd769083831 day 5 hrs ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0xca5481abf1e028e9d17f3d0c2ed05d78b7c48df7da55d7a82f703984284b7b7469083771 day 5 hrs ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0xe2b403e356d090a189fe2a56a9be711a7246233f4bfebdaf52ce1d447865549069083761 day 5 hrs ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0xadf0251b1fc48f399a4071a618c74f00a3c936204add4eb90ce59d8c720299e669083681 day 5 hrs ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x0f90dbfdc4c17f720bed781ef5421c40d2c1a5742805f53bfbffcc3388c77ee469083661 day 5 hrs ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x23873488b8b75133fe1696da35063702cc21c97724588cf5fd8a4dce6307689569083641 day 5 hrs ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0xd1f91807fadfe02f021c73be7ed2e23580b5e306968b8809a8b10c2266b632eb69083641 day 5 hrs ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: GivethBridge
Compiler Text: v0.4.21+commit.dfe3193c
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

///File: giveth-common-contracts/contracts/ERC20.sol

pragma solidity ^0.4.19;


/**
 * @title ERC20
 * @dev A standard interface for tokens.
 * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
 */
contract ERC20 {
  
    /// @dev Returns the total token supply
    function totalSupply() public constant returns (uint256 supply);

    /// @dev Returns the account balance of the account with address _owner
    function balanceOf(address _owner) public constant returns (uint256 balance);

    /// @dev Transfers _value number of tokens to address _to
    function transfer(address _to, uint256 _value) public returns (bool success);

    /// @dev Transfers _value number of tokens from address _from to address _to
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);

    /// @dev Allows _spender to withdraw from the msg.sender's account up to the _value amount
    function approve(address _spender, uint256 _value) public returns (bool success);

    /// @dev Returns the amount which _spender is still allowed to withdraw from _owner
    function allowance(address _owner, address _spender) public constant returns (uint256 remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

}


///File: giveth-common-contracts/contracts/Owned.sol

pragma solidity ^0.4.19;


/// @title Owned
/// @author Adrià Massanet <[email protected]>
/// @notice The Owned contract has an owner address, and provides basic 
///  authorization control functions, this simplifies & the implementation of
///  user permissions; this contract has three work flows for a change in
///  ownership, the first requires the new owner to validate that they have the
///  ability to accept ownership, the second allows the ownership to be
///  directly transfered without requiring acceptance, and the third allows for
///  the ownership to be removed to allow for decentralization 
contract Owned {

    address public owner;
    address public newOwnerCandidate;

    event OwnershipRequested(address indexed by, address indexed to);
    event OwnershipTransferred(address indexed from, address indexed to);
    event OwnershipRemoved();

    /// @dev The constructor sets the `msg.sender` as the`owner` of the contract
    function Owned() public {
        owner = msg.sender;
    }

    /// @dev `owner` is the only address that can call a function with this
    /// modifier
    modifier onlyOwner() {
        require (msg.sender == owner);
        _;
    }
    
    /// @dev In this 1st option for ownership transfer `proposeOwnership()` must
    ///  be called first by the current `owner` then `acceptOwnership()` must be
    ///  called by the `newOwnerCandidate`
    /// @notice `onlyOwner` Proposes to transfer control of the contract to a
    ///  new owner
    /// @param _newOwnerCandidate The address being proposed as the new owner
    function proposeOwnership(address _newOwnerCandidate) public onlyOwner {
        newOwnerCandidate = _newOwnerCandidate;
        OwnershipRequested(msg.sender, newOwnerCandidate);
    }

    /// @notice Can only be called by the `newOwnerCandidate`, accepts the
    ///  transfer of ownership
    function acceptOwnership() public {
        require(msg.sender == newOwnerCandidate);

        address oldOwner = owner;
        owner = newOwnerCandidate;
        newOwnerCandidate = 0x0;

        OwnershipTransferred(oldOwner, owner);
    }

    /// @dev In this 2nd option for ownership transfer `changeOwnership()` can
    ///  be called and it will immediately assign ownership to the `newOwner`
    /// @notice `owner` can step down and assign some other address to this role
    /// @param _newOwner The address of the new owner
    function changeOwnership(address _newOwner) public onlyOwner {
        require(_newOwner != 0x0);

        address oldOwner = owner;
        owner = _newOwner;
        newOwnerCandidate = 0x0;

        OwnershipTransferred(oldOwner, owner);
    }

    /// @dev In this 3rd option for ownership transfer `removeOwnership()` can
    ///  be called and it will immediately assign ownership to the 0x0 address;
    ///  it requires a 0xdece be input as a parameter to prevent accidental use
    /// @notice Decentralizes the contract, this operation cannot be undone 
    /// @param _dac `0xdac` has to be entered for this function to work
    function removeOwnership(address _dac) public onlyOwner {
        require(_dac == 0xdac);
        owner = 0x0;
        newOwnerCandidate = 0x0;
        OwnershipRemoved();     
    }
} 


///File: giveth-common-contracts/contracts/Escapable.sol

pragma solidity ^0.4.19;
/*
    Copyright 2016, Jordi Baylina
    Contributor: Adrià Massanet <[email protected]>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 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 General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/





/// @dev `Escapable` is a base level contract built off of the `Owned`
///  contract; it creates an escape hatch function that can be called in an
///  emergency that will allow designated addresses to send any ether or tokens
///  held in the contract to an `escapeHatchDestination` as long as they were
///  not blacklisted
contract Escapable is Owned {
    address public escapeHatchCaller;
    address public escapeHatchDestination;
    mapping (address=>bool) private escapeBlacklist; // Token contract addresses

    /// @notice The Constructor assigns the `escapeHatchDestination` and the
    ///  `escapeHatchCaller`
    /// @param _escapeHatchCaller The address of a trusted account or contract
    ///  to call `escapeHatch()` to send the ether in this contract to the
    ///  `escapeHatchDestination` it would be ideal that `escapeHatchCaller`
    ///  cannot move funds out of `escapeHatchDestination`
    /// @param _escapeHatchDestination The address of a safe location (usu a
    ///  Multisig) to send the ether held in this contract; if a neutral address
    ///  is required, the WHG Multisig is an option:
    ///  0x8Ff920020c8AD673661c8117f2855C384758C572 
    function Escapable(address _escapeHatchCaller, address _escapeHatchDestination) public {
        escapeHatchCaller = _escapeHatchCaller;
        escapeHatchDestination = _escapeHatchDestination;
    }

    /// @dev The addresses preassigned as `escapeHatchCaller` or `owner`
    ///  are the only addresses that can call a function with this modifier
    modifier onlyEscapeHatchCallerOrOwner {
        require ((msg.sender == escapeHatchCaller)||(msg.sender == owner));
        _;
    }

    /// @notice Creates the blacklist of tokens that are not able to be taken
    ///  out of the contract; can only be done at the deployment, and the logic
    ///  to add to the blacklist will be in the constructor of a child contract
    /// @param _token the token contract address that is to be blacklisted 
    function blacklistEscapeToken(address _token) internal {
        escapeBlacklist[_token] = true;
        EscapeHatchBlackistedToken(_token);
    }

    /// @notice Checks to see if `_token` is in the blacklist of tokens
    /// @param _token the token address being queried
    /// @return False if `_token` is in the blacklist and can't be taken out of
    ///  the contract via the `escapeHatch()`
    function isTokenEscapable(address _token) view public returns (bool) {
        return !escapeBlacklist[_token];
    }

    /// @notice The `escapeHatch()` should only be called as a last resort if a
    /// security issue is uncovered or something unexpected happened
    /// @param _token to transfer, use 0x0 for ether
    function escapeHatch(address _token) public onlyEscapeHatchCallerOrOwner {   
        require(escapeBlacklist[_token]==false);

        uint256 balance;

        /// @dev Logic for ether
        if (_token == 0x0) {
            balance = this.balance;
            escapeHatchDestination.transfer(balance);
            EscapeHatchCalled(_token, balance);
            return;
        }
        /// @dev Logic for tokens
        ERC20 token = ERC20(_token);
        balance = token.balanceOf(this);
        require(token.transfer(escapeHatchDestination, balance));
        EscapeHatchCalled(_token, balance);
    }

    /// @notice Changes the address assigned to call `escapeHatch()`
    /// @param _newEscapeHatchCaller The address of a trusted account or
    ///  contract to call `escapeHatch()` to send the value in this contract to
    ///  the `escapeHatchDestination`; it would be ideal that `escapeHatchCaller`
    ///  cannot move funds out of `escapeHatchDestination`
    function changeHatchEscapeCaller(address _newEscapeHatchCaller) public onlyEscapeHatchCallerOrOwner {
        escapeHatchCaller = _newEscapeHatchCaller;
    }

    event EscapeHatchBlackistedToken(address token);
    event EscapeHatchCalled(address token, uint amount);
}


///File: ./contracts/lib/Pausable.sol

pragma solidity ^0.4.21;



/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Owned {
    event Pause();
    event Unpause();

    bool public paused = false;

    /**
    * @dev Modifier to make a function callable only when the contract is not paused.
    */
    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    /**
    * @dev Modifier to make a function callable only when the contract is paused.
    */
    modifier whenPaused() {
        require(paused);
        _;
    }

    /**
    * @dev called by the owner to pause, triggers stopped state
    */
    function pause() onlyOwner whenNotPaused public {
        paused = true;
        emit Pause();
    }

    /**
    * @dev called by the owner to unpause, returns to normal state
    */
    function unpause() onlyOwner whenPaused public {
        paused = false;
        emit Unpause();
    }
}

///File: ./contracts/lib/Vault.sol

pragma solidity ^0.4.21;

/*
    Copyright 2018, Jordi Baylina, RJ Ewing

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 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 General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/// @title Vault Contract
/// @author Jordi Baylina, RJ Ewing
/// @notice This contract holds funds for Campaigns and automates payments. For
///  this iteration the funds will come straight from the Giveth Multisig as a
///  safety precaution, but once fully tested and optimized this contract will
///  be a safe place to store funds equipped with optional variable time delays
///  to allow for an optional escape hatch




/// @dev `Vault` is a higher level contract built off of the `Escapable`
///  contract that holds funds for Campaigns and automates payments.
contract Vault is Escapable, Pausable {

    /// @dev `Payment` is a public structure that describes the details of
    ///  each payment making it easy to track the movement of funds
    ///  transparently
    struct Payment {
        string name;              // What is the purpose of this payment
        bytes32 reference;        // Reference of the payment.
        address spender;          // Who is sending the funds
        uint earliestPayTime;     // The earliest a payment can be made (Unix Time)
        bool canceled;            // If True then the payment has been canceled
        bool paid;                // If True then the payment has been paid
        address recipient;        // Who is receiving the funds
        address token;            // Token this payment represents
        uint amount;              // The amount of wei sent in the payment
        uint securityGuardDelay;  // The seconds `securityGuard` can delay payment
    }

    Payment[] public authorizedPayments;

    address public securityGuard;
    uint public absoluteMinTimeLock;
    uint public timeLock;
    uint public maxSecurityGuardDelay;
    bool public allowDisbursePaymentWhenPaused;

    /// @dev The white list of approved addresses allowed to set up && receive
    ///  payments from this vault
    mapping (address => bool) public allowedSpenders;

    // @dev Events to make the payment movements easy to find on the blockchain
    event PaymentAuthorized(uint indexed idPayment, address indexed recipient, uint amount, address token, bytes32 reference);
    event PaymentExecuted(uint indexed idPayment, address indexed recipient, uint amount, address token);
    event PaymentCanceled(uint indexed idPayment);
    event SpenderAuthorization(address indexed spender, bool authorized);

    /// @dev The address assigned the role of `securityGuard` is the only
    ///  addresses that can call a function with this modifier
    modifier onlySecurityGuard { 
        require(msg.sender == securityGuard);
        _;
    }

    /// By default, we dis-allow payment disburements if the contract is paused.
    /// However, to facilitate a migration of the bridge, we can allow
    /// disbursements when paused if explicitly set
    modifier disbursementsAllowed {
        require(!paused || allowDisbursePaymentWhenPaused);
        _;
    }

    /// @notice The Constructor creates the Vault on the blockchain
    /// @param _escapeHatchCaller The address of a trusted account or contract to
    ///  call `escapeHatch()` to send the ether in this contract to the
    ///  `escapeHatchDestination` it would be ideal if `escapeHatchCaller` cannot move
    ///  funds out of `escapeHatchDestination`
    /// @param _escapeHatchDestination The address of a safe location (usu a
    ///  Multisig) to send the ether held in this contract in an emergency
    /// @param _absoluteMinTimeLock The minimum number of seconds `timelock` can
    ///  be set to, if set to 0 the `owner` can remove the `timeLock` completely
    /// @param _timeLock Initial number of seconds that payments are delayed
    ///  after they are authorized (a security precaution)
    /// @param _securityGuard Address that will be able to delay the payments
    ///  beyond the initial timelock requirements; can be set to 0x0 to remove
    ///  the `securityGuard` functionality
    /// @param _maxSecurityGuardDelay The maximum number of seconds in total
    ///   that `securityGuard` can delay a payment so that the owner can cancel
    ///   the payment if needed
    function Vault(
        address _escapeHatchCaller,
        address _escapeHatchDestination,
        uint _absoluteMinTimeLock,
        uint _timeLock,
        address _securityGuard,
        uint _maxSecurityGuardDelay
    ) Escapable(_escapeHatchCaller, _escapeHatchDestination) public
    {
        absoluteMinTimeLock = _absoluteMinTimeLock;
        timeLock = _timeLock;
        securityGuard = _securityGuard;
        maxSecurityGuardDelay = _maxSecurityGuardDelay;
    }

/////////
// Helper functions
/////////

    /// @notice States the total number of authorized payments in this contract
    /// @return The number of payments ever authorized even if they were canceled
    function numberOfAuthorizedPayments() public view returns (uint) {
        return authorizedPayments.length;
    }

////////
// Spender Interface
////////

    /// @notice only `allowedSpenders[]` Creates a new `Payment`
    /// @param _name Brief description of the payment that is authorized
    /// @param _reference External reference of the payment
    /// @param _recipient Destination of the payment
    /// @param _amount Amount to be paid in wei
    /// @param _paymentDelay Number of seconds the payment is to be delayed, if
    ///  this value is below `timeLock` then the `timeLock` determines the delay
    /// @return The Payment ID number for the new authorized payment
    function authorizePayment(
        string _name,
        bytes32 _reference,
        address _recipient,
        address _token,
        uint _amount,
        uint _paymentDelay
    ) whenNotPaused external returns(uint) {

        // Fail if you arent on the `allowedSpenders` white list
        require(allowedSpenders[msg.sender]);
        uint idPayment = authorizedPayments.length;       // Unique Payment ID
        authorizedPayments.length++;

        // The following lines fill out the payment struct
        Payment storage p = authorizedPayments[idPayment];
        p.spender = msg.sender;

        // Overflow protection
        require(_paymentDelay <= 10**18);

        // Determines the earliest the recipient can receive payment (Unix time)
        p.earliestPayTime = _paymentDelay >= timeLock ?
                                _getTime() + _paymentDelay :
                                _getTime() + timeLock;
        p.recipient = _recipient;
        p.amount = _amount;
        p.name = _name;
        p.reference = _reference;
        p.token = _token;
        emit PaymentAuthorized(idPayment, p.recipient, p.amount, p.token, p.reference);
        return idPayment;
    }

    /// Anyone can call this function to disburse the payment to 
    ///  the recipient after `earliestPayTime` has passed
    /// @param _idPayment The payment ID to be executed
    function disburseAuthorizedPayment(uint _idPayment) disbursementsAllowed public {
        // Check that the `_idPayment` has been added to the payments struct
        require(_idPayment < authorizedPayments.length);

        Payment storage p = authorizedPayments[_idPayment];

        // Checking for reasons not to execute the payment
        require(allowedSpenders[p.spender]);
        require(_getTime() >= p.earliestPayTime);
        require(!p.canceled);
        require(!p.paid);

        p.paid = true; // Set the payment to being paid

        // Make the payment
        if (p.token == 0) {
            p.recipient.transfer(p.amount);
        } else {
            require(ERC20(p.token).transfer(p.recipient, p.amount));
        }

        emit PaymentExecuted(_idPayment, p.recipient, p.amount, p.token);
    }

    /// convience function to disburse multiple payments in a single tx
    function disburseAuthorizedPayments(uint[] _idPayments) public {
        for (uint i = 0; i < _idPayments.length; i++) {
            uint _idPayment = _idPayments[i];
            disburseAuthorizedPayment(_idPayment);
        }
    }

/////////
// SecurityGuard Interface
/////////

    /// @notice `onlySecurityGuard` Delays a payment for a set number of seconds
    /// @param _idPayment ID of the payment to be delayed
    /// @param _delay The number of seconds to delay the payment
    function delayPayment(uint _idPayment, uint _delay) onlySecurityGuard external {
        require(_idPayment < authorizedPayments.length);

        // Overflow test
        require(_delay <= 10**18);

        Payment storage p = authorizedPayments[_idPayment];

        require(p.securityGuardDelay + _delay <= maxSecurityGuardDelay);
        require(!p.paid);
        require(!p.canceled);

        p.securityGuardDelay += _delay;
        p.earliestPayTime += _delay;
    }

////////
// Owner Interface
///////

    /// @notice `onlyOwner` Cancel a payment all together
    /// @param _idPayment ID of the payment to be canceled.
    function cancelPayment(uint _idPayment) onlyOwner external {
        require(_idPayment < authorizedPayments.length);

        Payment storage p = authorizedPayments[_idPayment];

        require(!p.canceled);
        require(!p.paid);

        p.canceled = true;
        emit PaymentCanceled(_idPayment);
    }

    /// @notice `onlyOwner` Adds a spender to the `allowedSpenders[]` white list
    /// @param _spender The address of the contract being authorized/unauthorized
    /// @param _authorize `true` if authorizing and `false` if unauthorizing
    function authorizeSpender(address _spender, bool _authorize) onlyOwner external {
        allowedSpenders[_spender] = _authorize;
        emit SpenderAuthorization(_spender, _authorize);
    }

    /// @notice `onlyOwner` Sets the address of `securityGuard`
    /// @param _newSecurityGuard Address of the new security guard
    function setSecurityGuard(address _newSecurityGuard) onlyOwner external {
        securityGuard = _newSecurityGuard;
    }

    /// @notice `onlyOwner` Changes `timeLock`; the new `timeLock` cannot be
    ///  lower than `absoluteMinTimeLock`
    /// @param _newTimeLock Sets the new minimum default `timeLock` in seconds;
    ///  pending payments maintain their `earliestPayTime`
    function setTimelock(uint _newTimeLock) onlyOwner external {
        require(_newTimeLock >= absoluteMinTimeLock);
        timeLock = _newTimeLock;
    }

    /// @notice `onlyOwner` Changes the maximum number of seconds
    /// `securityGuard` can delay a payment
    /// @param _maxSecurityGuardDelay The new maximum delay in seconds that
    ///  `securityGuard` can delay the payment's execution in total
    function setMaxSecurityGuardDelay(uint _maxSecurityGuardDelay) onlyOwner external {
        maxSecurityGuardDelay = _maxSecurityGuardDelay;
    }

    /// @dev called by the owner to pause the contract. Triggers a stopped state 
    ///  and resets allowDisbursePaymentWhenPaused to false
    function pause() onlyOwner whenNotPaused public {
        allowDisbursePaymentWhenPaused = false;
        super.pause();
    }

    /// Owner can allow payment disbursement when the contract is paused. This is so the
    /// bridge can be upgraded without having to migrate any existing authorizedPayments
    /// @dev only callable whenPaused b/c pausing the contract will reset `allowDisbursePaymentWhenPaused` to false
    /// @param allowed `true` if allowing payments to be disbursed when paused, otherwise 'false'
    function setAllowDisbursePaymentWhenPaused(bool allowed) onlyOwner whenPaused public {
        allowDisbursePaymentWhenPaused = allowed;
    }

    // for overidding during testing
    function _getTime() internal view returns (uint) {
        return now;
    }

}

///File: ./contracts/lib/FailClosedVault.sol

pragma solidity ^0.4.21;

/*
    Copyright 2018, RJ Ewing

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 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 General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */



/**
* @dev `FailClosedVault` is a version of the vault that requires
*  the securityGuard to "see" each payment before it can be collected
*/
contract FailClosedVault is Vault {
    uint public securityGuardLastCheckin;

    /**
    * @param _absoluteMinTimeLock For this version of the vault, it is recommended
    *   that this value is > 24hrs. If not, it will require the securityGuard to checkIn
    *   multiple times a day. Also consider that `securityGuardLastCheckin >= payment.earliestPayTime - timelock + 30mins);`
    *   is the condition to allow payments to be payed. The additional 30 mins is to reduce (not eliminate)
    *   the risk of front-running
    */
    function FailClosedVault(
        address _escapeHatchCaller,
        address _escapeHatchDestination,
        uint _absoluteMinTimeLock,
        uint _timeLock,
        address _securityGuard,
        uint _maxSecurityGuardDelay
    ) Vault(
        _escapeHatchCaller,
        _escapeHatchDestination, 
        _absoluteMinTimeLock,
        _timeLock,
        _securityGuard,
        _maxSecurityGuardDelay
    ) public {
    }

/////////////////////
// Spender Interface
/////////////////////

    /**
    * Disburse an authorizedPayment to the recipient if all checks pass.
    *
    * @param _idPayment The payment ID to be disbursed
    */
    function disburseAuthorizedPayment(uint _idPayment) disbursementsAllowed public {
        // Check that the `_idPayment` has been added to the payments struct
        require(_idPayment < authorizedPayments.length);

        Payment storage p = authorizedPayments[_idPayment];
        // The current minimum delay for a payment is `timeLock`. Thus the following ensuress
        // that the `securityGuard` has checked in after the payment was created
        // @notice earliestPayTime is updated when a payment is delayed. Which may require
        // another checkIn before the payment can be collected.
        // @notice We add 30 mins to this to reduce (not eliminate) the risk of front-running
        require(securityGuardLastCheckin >= p.earliestPayTime - timeLock + 30 minutes);

        super.disburseAuthorizedPayment(_idPayment);
    }

///////////////////////////
// SecurityGuard Interface
///////////////////////////

    /**
    * @notice `onlySecurityGuard` can checkin. If they fail to checkin,
    * payments will not be allowed to be disbursed, unless the payment has
    * an `earliestPayTime` <= `securityGuardLastCheckin`.
    * @notice To reduce the risk of a front-running attack on payments, it
    * is important that this is called with a resonable gasPrice set for the
    * current network congestion. If this tx is not mined, within 30 mins
    * of being sent, it is possible that a payment can be authorized w/o the
    * securityGuard's knowledge
    */
    function checkIn() onlySecurityGuard external {
        securityGuardLastCheckin = _getTime();
    }
}

///File: ./contracts/GivethBridge.sol

pragma solidity ^0.4.21;

/*
    Copyright 2017, RJ Ewing <[email protected]>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 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 General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/





/**
* @notice It is not recommened to call this function outside of the giveth dapp (giveth.io)
* this function is bridged to a side chain. If for some reason the sidechain tx fails, the donation
* will end up in the givers control inside LiquidPledging contract. If you do not use the dapp, there
* will be no way of notifying the sender/giver that the giver has to take action (withdraw/donate) in
* the dapp
*/
contract GivethBridge is FailClosedVault {

    mapping(address => bool) tokenWhitelist;

    event Donate(uint64 giverId, uint64 receiverId, address token, uint amount);
    event DonateAndCreateGiver(address giver, uint64 receiverId, address token, uint amount);
    event EscapeFundsCalled(address token, uint amount);

    //== constructor

    /**
    * @param _escapeHatchCaller The address of a trusted account or contract to
    *  call `escapeHatch()` to send the ether in this contract to the
    *  `escapeHatchDestination` in the case on an emergency. it would be ideal 
    *  if `escapeHatchCaller` cannot move funds out of `escapeHatchDestination`
    * @param _escapeHatchDestination The address of a safe location (usually a
    *  Multisig) to send the ether held in this contract in the case of an emergency
    * @param _absoluteMinTimeLock The minimum number of seconds `timelock` can
    *  be set to, if set to 0 the `owner` can remove the `timeLock` completely
    * @param _timeLock Minimum number of seconds that payments are delayed
    *  after they are authorized (a security precaution)
    * @param _securityGuard Address that will be able to delay the payments
    *  beyond the initial timelock requirements; can be set to 0x0 to remove
    *  the `securityGuard` functionality
    * @param _maxSecurityGuardDelay The maximum number of seconds in total
    *   that `securityGuard` can delay a payment so that the owner can cancel
    *   the payment if needed
    */
    function GivethBridge(
        address _escapeHatchCaller,
        address _escapeHatchDestination,
        uint _absoluteMinTimeLock,
        uint _timeLock,
        address _securityGuard,
        uint _maxSecurityGuardDelay
    ) FailClosedVault(
        _escapeHatchCaller,
        _escapeHatchDestination,
        _absoluteMinTimeLock,
        _timeLock,
        _securityGuard,
        _maxSecurityGuardDelay
    ) public
    {
        tokenWhitelist[0] = true; // enable eth transfers
    }

    //== public methods

    /**
    * @notice It is not recommened to call this function outside of the giveth dapp (giveth.io)
    * this function is bridged to a side chain. If for some reason the sidechain tx fails, the donation
    * will end up in the givers control inside LiquidPledging contract. If you do not use the dapp, there
    * will be no way of notifying the sender/giver that the giver has to take action (withdraw/donate) in
    * the dapp
    *
    * @param giver The address to create a 'giver' pledge admin for in the liquidPledging contract
    * @param receiverId The adminId of the liquidPledging pledge admin receiving the donation
    */
    function donateAndCreateGiver(address giver, uint64 receiverId) payable external {
        donateAndCreateGiver(giver, receiverId, 0, 0);
    }

    /**
    * @notice It is not recommened to call this function outside of the giveth dapp (giveth.io)
    * this function is bridged to a side chain. If for some reason the sidechain tx fails, the donation
    * will end up in the givers control inside LiquidPledging contract. If you do not use the dapp, there
    * will be no way of notifying the sender/giver that the giver has to take action (withdraw/donate) in
    * the dapp
    *
    * @param giver The address to create a 'giver' pledge admin for in the liquidPledging contract
    * @param receiverId The adminId of the liquidPledging pledge admin receiving the donation
    * @param token The token to donate. If donating ETH, then 0x0. Note: the token must be whitelisted
    * @param _amount The amount of the token to donate. If donating ETH, then 0x0 as the msg.value will be used instead.
    */
    function donateAndCreateGiver(address giver, uint64 receiverId, address token, uint _amount) whenNotPaused payable public {
        require(giver != 0);
        require(receiverId != 0);
        uint amount = _receiveDonation(token, _amount);
        emit DonateAndCreateGiver(giver, receiverId, token, amount);
    }

    /**
    * @notice It is not recommened to call this function outside of the giveth dapp (giveth.io)
    * this function is bridged to a side chain. If for some reason the sidechain tx fails, the donation
    * will end up in the givers control inside LiquidPledging contract. If you do not use the dapp, there
    * will be no way of notifying the sender/giver that the giver has to take action (withdraw/donate) in
    * the dapp
    *
    * @param giverId The adminId of the liquidPledging pledge admin who is donating
    * @param receiverId The adminId of the liquidPledging pledge admin receiving the donation
    */
    function donate(uint64 giverId, uint64 receiverId) payable external {
        donate(giverId, receiverId, 0, 0);
    }

    /**
    * @notice It is not recommened to call this function outside of the giveth dapp (giveth.io)
    * this function is bridged to a side chain. If for some reason the sidechain tx fails, the donation
    * will end up in the givers control inside LiquidPledging contract. If you do not use the dapp, there
    * will be no way of notifying the sender/giver that the giver has to take action (withdraw/donate) in
    * the dapp
    *
    * @param giverId The adminId of the liquidPledging pledge admin who is donating
    * @param receiverId The adminId of the liquidPledging pledge admin receiving the donation
    * @param token The token to donate. If donating ETH, then 0x0. Note: the token must be whitelisted
    * @param _amount The amount of the token to donate. If donating ETH, then 0x0 as the msg.value will be used instead.
    */
    function donate(uint64 giverId, uint64 receiverId, address token, uint _amount) whenNotPaused payable public {
        require(giverId != 0);
        require(receiverId != 0);
        uint amount = _receiveDonation(token, _amount);
        emit Donate(giverId, receiverId, token, amount);
    }

    /**
    * The `owner` can call this function to add/remove a token from the whitelist
    *
    * @param token The address of the token to update
    * @param accepted Wether or not to accept this token for donations
    */
    function whitelistToken(address token, bool accepted) whenNotPaused onlyOwner external {
        tokenWhitelist[token] = accepted;
    }

    /**
    * Transfer tokens/eth to the escapeHatchDestination.
    * Used as a safety mechanism to prevent the bridge from holding too much value
    *
    * before being thoroughly battle-tested.
    * @param _token the token to transfer. 0x0 for ETH
    * @param _amount the amount to transfer
    */
    function escapeFunds(address _token, uint _amount) external onlyEscapeHatchCallerOrOwner {
        // @dev Logic for ether
        if (_token == 0) {
            escapeHatchDestination.transfer(_amount);
        // @dev Logic for tokens
        } else {
            ERC20 token = ERC20(_token);
            require(token.transfer(escapeHatchDestination, _amount));
        }
        emit EscapeFundsCalled(_token, _amount);
    }

    /**
    * Allow the escapeHatchDestination to deposit eth into this contract w/o calling donate method
    */
    function depositEscapedFunds() external payable {
        require(msg.sender == escapeHatchDestination);
    }

    //== internal methods

    /**
    * @dev used to actually receive the donation. Will transfer the token to to this contract
    */
    function _receiveDonation(address token, uint _amount) internal returns(uint amount) {
        require(tokenWhitelist[token]);
        amount = _amount;

        // eth donation
        if (token == 0) {
            amount = msg.value;
        }

        require(amount > 0);

        if (token != 0) {
            require(ERC20(token).transferFrom(msg.sender, this, amount));
        }
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"maxSecurityGuardDelay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"accepted","type":"bool"}],"name":"whitelistToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"checkIn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"giver","type":"address"},{"name":"receiverId","type":"uint64"},{"name":"token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"donateAndCreateGiver","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"escapeFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newTimeLock","type":"uint256"}],"name":"setTimelock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"escapeHatchCaller","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"securityGuardLastCheckin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"giverId","type":"uint64"},{"name":"receiverId","type":"uint64"},{"name":"token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"donate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"}],"name":"disburseAuthorizedPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_dac","type":"address"}],"name":"removeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"allowed","type":"bool"}],"name":"setAllowDisbursePaymentWhenPaused","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numberOfAuthorizedPayments","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwnerCandidate","type":"address"}],"name":"proposeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_authorize","type":"bool"}],"name":"authorizeSpender","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"},{"name":"_delay","type":"uint256"}],"name":"delayPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"allowDisbursePaymentWhenPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_idPayments","type":"uint256[]"}],"name":"disburseAuthorizedPayments","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_token","type":"address"}],"name":"isTokenEscapable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"giver","type":"address"},{"name":"receiverId","type":"uint64"}],"name":"donateAndCreateGiver","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"authorizedPayments","outputs":[{"name":"name","type":"string"},{"name":"reference","type":"bytes32"},{"name":"spender","type":"address"},{"name":"earliestPayTime","type":"uint256"},{"name":"canceled","type":"bool"},{"name":"paid","type":"bool"},{"name":"recipient","type":"address"},{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"securityGuardDelay","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"escapeHatch","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"securityGuard","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newSecurityGuard","type":"address"}],"name":"setSecurityGuard","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"depositEscapedFunds","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"giverId","type":"uint64"},{"name":"receiverId","type":"uint64"}],"name":"donate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"timeLock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwnerCandidate","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newEscapeHatchCaller","type":"address"}],"name":"changeHatchEscapeCaller","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"allowedSpenders","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_maxSecurityGuardDelay","type":"uint256"}],"name":"setMaxSecurityGuardDelay","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"absoluteMinTimeLock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_reference","type":"bytes32"},{"name":"_recipient","type":"address"},{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_paymentDelay","type":"uint256"}],"name":"authorizePayment","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"escapeHatchDestination","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_escapeHatchCaller","type":"address"},{"name":"_escapeHatchDestination","type":"address"},{"name":"_absoluteMinTimeLock","type":"uint256"},{"name":"_timeLock","type":"uint256"},{"name":"_securityGuard","type":"address"},{"name":"_maxSecurityGuardDelay","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"giverId","type":"uint64"},{"indexed":false,"name":"receiverId","type":"uint64"},{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Donate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"giver","type":"address"},{"indexed":false,"name":"receiverId","type":"uint64"},{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"DonateAndCreateGiver","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EscapeFundsCalled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"},{"indexed":true,"name":"recipient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"reference","type":"bytes32"}],"name":"PaymentAuthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"},{"indexed":true,"name":"recipient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"token","type":"address"}],"name":"PaymentExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"}],"name":"PaymentCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"authorized","type":"bool"}],"name":"SpenderAuthorization","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"}],"name":"EscapeHatchBlackistedToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EscapeHatchCalled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"by","type":"address"},{"indexed":true,"name":"to","type":"address"}],"name":"OwnershipRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"OwnershipRemoved","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60606040526005805460ff19169055341561001957600080fd5b60405160c080611cc283398101604052808051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03338116600160a060020a0319928316178355600280549b82169b83169b909b17909a5560038054998b1699821699909917909855600896909655600994909455505060078054959091169490931693909317909155600a919091558052600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c805460ff19166001179055611bca806100f86000396000f3006060604052600436106101df5763ffffffff60e060020a6000350416630b2e742381146101e45780630ffb1d8b14610209578063183ff0851461022f5780631870c10f146102425780631b28591c1461026d5780631e891c0a1461028f5780631f6eb6e7146102a55780632af4c31e146102d45780633f487b8b146102f35780633f4ba83a146103065780634c4316c71461031957806352892478146103435780635c975abb14610359578063666a342714610380578063672f412c1461039f57806368b8c5a1146103b7578063710bf322146103ca578063793c0fd4146103e957806379ba50971461040d5780638422927d146104205780638456cb5914610436578063846a5dde14610449578063859bcc7114610462578063863da00014610475578063892db057146104c45780638da5cb5b146104e357806391f5c3a8146104f6578063a0927a6a14610517578063a142d608146105fb578063b2ca3ec41461061a578063bb2a51d11461062d578063bd541ad01461064c578063bde60ac914610654578063d085835a1461066f578063d091b55014610682578063d836fbe814610695578063d8528af0146106b4578063da4793ac146106d3578063ea8a66c7146106e9578063f37b74ca146106fc578063f5b6123014610736575b600080fd5b34156101ef57600080fd5b6101f7610749565b60405190815260200160405180910390f35b341561021457600080fd5b61022d600160a060020a0360043516602435151561074f565b005b341561023a57600080fd5b61022d6107a5565b61022d600160a060020a0360043581169067ffffffffffffffff6024351690604435166064356107cd565b341561027857600080fd5b61022d600160a060020a0360043516602435610881565b341561029a57600080fd5b61022d6004356109ca565b34156102b057600080fd5b6102b86109f9565b604051600160a060020a03909116815260200160405180910390f35b34156102df57600080fd5b61022d600160a060020a0360043516610a08565b34156102fe57600080fd5b6101f7610a9c565b341561031157600080fd5b61022d610aa2565b61022d67ffffffffffffffff60043581169060243516600160a060020a0360443516606435610b06565b341561034e57600080fd5b61022d600435610bbb565b341561036457600080fd5b61036c610c33565b604051901515815260200160405180910390f35b341561038b57600080fd5b61022d600160a060020a0360043516610c3c565b34156103aa57600080fd5b61022d6004351515610cb9565b34156103c257600080fd5b6101f7610cf8565b34156103d557600080fd5b61022d600160a060020a0360043516610cff565b34156103f457600080fd5b61022d600160a060020a03600435166024351515610d70565b341561041857600080fd5b61022d610dea565b341561042b57600080fd5b61022d600435610e6a565b341561044157600080fd5b61022d610f1e565b341561045457600080fd5b61022d600435602435610f5d565b341561046d57600080fd5b61036c611013565b341561048057600080fd5b61022d600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061101c95505050505050565b34156104cf57600080fd5b61036c600160a060020a036004351661105a565b34156104ee57600080fd5b6102b8611079565b61022d600160a060020a036004351667ffffffffffffffff60243516611088565b341561052257600080fd5b61052d600435611095565b604051602081018a9052600160a060020a03808a16604083015260608201899052871515608083015286151560a083015285811660c0830152841660e082015261010081018390526101208101829052610140808252819081018c818151815260200191508051906020019080838360005b838110156105b757808201518382015260200161059f565b50505050905090810190601f1680156105e45780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b341561060657600080fd5b61022d600160a060020a03600435166111a9565b341561062557600080fd5b6102b86113ca565b341561063857600080fd5b61022d600160a060020a03600435166113d9565b61022d611416565b61022d67ffffffffffffffff60043581169060243516611431565b341561067a57600080fd5b6101f761143e565b341561068d57600080fd5b6102b8611444565b34156106a057600080fd5b61022d600160a060020a0360043516611453565b34156106bf57600080fd5b61036c600160a060020a03600435166114ab565b34156106de57600080fd5b61022d6004356114c0565b34156106f457600080fd5b6101f76114e0565b341561070757600080fd5b6101f7602460048035828101929101359035600160a060020a036044358116906064351660843560a4356114e6565b341561074157600080fd5b6102b8611698565b600a5481565b60055460ff161561075f57600080fd5b60005433600160a060020a0390811691161461077a57600080fd5b600160a060020a03919091166000908152600e60205260409020805460ff1916911515919091179055565b60075433600160a060020a039081169116146107c057600080fd5b6107c86116a7565b600d55565b60055460009060ff16156107e057600080fd5b600160a060020a03851615156107f557600080fd5b67ffffffffffffffff8416151561080b57600080fd5b61081583836116ab565b90507f300ed237d4114d1c2df9984e698721646d6c45633d6c1c5430450cdecf61571d85858584604051600160a060020a03948516815267ffffffffffffffff909316602084015292166040808301919091526060820192909252608001905180910390a15050505050565b60025460009033600160a060020a03908116911614806108af575060005433600160a060020a039081169116145b15156108ba57600080fd5b600160a060020a038316151561090257600354600160a060020a031682156108fc0283604051600060405180830381858888f1935050505015156108fd57600080fd5b610981565b506003548290600160a060020a038083169163a9059cbb91168460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561095f57600080fd5b5af1151561096c57600080fd5b50505060405180519050151561098157600080fd5b7f4ccddcd1a4e33721aee316370fb3e014294985be0755a68c88009b31e1dc4ae38383604051600160a060020a03909216825260208201526040908101905180910390a1505050565b60005433600160a060020a039081169116146109e557600080fd5b6008548110156109f457600080fd5b600955565b600254600160a060020a031681565b6000805433600160a060020a03908116911614610a2457600080fd5b600160a060020a0382161515610a3957600080fd5b5060008054600160a060020a03838116600160a060020a031980841691909117938490556001805490911690559081169116817f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600d5481565b60005433600160a060020a03908116911614610abd57600080fd5b60055460ff161515610ace57600080fd5b6005805460ff191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60055460009060ff1615610b1957600080fd5b67ffffffffffffffff85161515610b2f57600080fd5b67ffffffffffffffff84161515610b4557600080fd5b610b4f83836116ab565b90507fc77b8feedf86922981aed41179f4a071d80467c7f17c5c13837269e363ac545b8585858460405167ffffffffffffffff9485168152929093166020830152600160a060020a03166040808301919091526060820192909252608001905180910390a15050505050565b60055460009060ff161580610bd25750600b5460ff165b1515610bdd57600080fd5b6006548210610beb57600080fd5b6006805483908110610bf957fe5b9060005260206000209060080201905060095481600301540361070801600d5410151515610c2657600080fd5b610c2f8261178c565b5050565b60055460ff1681565b60005433600160a060020a03908116911614610c5757600080fd5b610dac600160a060020a03821614610c6e57600080fd5b60008054600160a060020a03199081169091556001805490911690557f94e8b32e01b9eedfddd778ffbd051a7718cdc14781702884561162dca6f74dbb60405160405180910390a150565b60005433600160a060020a03908116911614610cd457600080fd5b60055460ff161515610ce557600080fd5b600b805460ff1916911515919091179055565b6006545b90565b60005433600160a060020a03908116911614610d1a57600080fd5b60018054600160a060020a031916600160a060020a0383811691909117918290559081169033167f13a4b3bc0d5234dd3d87c9f1557d8faefa37986da62c36ba49309e2fb2c9aec460405160405180910390a350565b60005433600160a060020a03908116911614610d8b57600080fd5b600160a060020a0382166000818152600c602052604090819020805460ff19168415151790557f801f568efbc3346a6ae3d0c3eb335a30d64e0d3cf08f1c39626d62cd5c82728190839051901515815260200160405180910390a25050565b60015460009033600160a060020a03908116911614610e0857600080fd5b506000805460018054600160a060020a0319808416600160a060020a03838116919091179586905591169091559081169116817f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000805433600160a060020a03908116911614610e8657600080fd5b6006548210610e9457600080fd5b6006805483908110610ea257fe5b60009182526020909120600890910201600481015490915060ff1615610ec757600080fd5b6004810154610100900460ff1615610ede57600080fd5b60048101805460ff19166001179055817ffdf197ed54809861dafe0b4d391843652730ac67274c1e9e46db7687dccaa30160405160405180910390a25050565b60005433600160a060020a03908116911614610f3957600080fd5b60055460ff1615610f4957600080fd5b600b805460ff19169055610f5b6119ad565b565b60075460009033600160a060020a03908116911614610f7b57600080fd5b6006548310610f8957600080fd5b670de0b6b3a7640000821115610f9e57600080fd5b6006805484908110610fac57fe5b90600052602060002090600802019050600a548282600701540111151515610fd357600080fd5b6004810154610100900460ff1615610fea57600080fd5b600481015460ff1615610ffc57600080fd5b600781018054830190556003018054909101905550565b600b5460ff1681565b6000805b82518210156110555782828151811061103557fe5b90602001906020020151905061104a81610bbb565b600190910190611020565b505050565b600160a060020a031660009081526004602052604090205460ff161590565b600054600160a060020a031681565b610c2f82826000806107cd565b60068054829081106110a357fe5b9060005260206000209060080201600091509050806000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561114f5780601f106111245761010080835404028352916020019161114f565b820191906000526020600020905b81548152906001019060200180831161113257829003601f168201915b5050505060018301546002840154600385015460048601546005870154600688015460079098015496979496600160a060020a039485169650929460ff80841695610100850490911694620100009094048116939216918a565b600254600090819033600160a060020a03908116911614806111d9575060005433600160a060020a039081169116145b15156111e457600080fd5b600160a060020a03831660009081526004602052604090205460ff161561120a57600080fd5b600160a060020a038316151561129c57600354600160a060020a033081163193501682156108fc0283604051600060405180830381858888f19350505050151561125357600080fd5b7fa50dde912fa22ea0d215a0236093ac45b4d55d6ef0c604c319f900029c5d10f28383604051600160a060020a03909216825260208201526040908101905180910390a1611055565b5081600160a060020a0381166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156112ec57600080fd5b5af115156112f957600080fd5b5050506040518051600354909350600160a060020a03808416925063a9059cbb91168460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561135f57600080fd5b5af1151561136c57600080fd5b50505060405180519050151561138157600080fd5b7fa50dde912fa22ea0d215a0236093ac45b4d55d6ef0c604c319f900029c5d10f28383604051600160a060020a03909216825260208201526040908101905180910390a1505050565b600754600160a060020a031681565b60005433600160a060020a039081169116146113f457600080fd5b60078054600160a060020a031916600160a060020a0392909216919091179055565b60035433600160a060020a03908116911614610f5b57600080fd5b610c2f8282600080610b06565b60095481565b600154600160a060020a031681565b60025433600160a060020a039081169116148061147e575060005433600160a060020a039081169116145b151561148957600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b600c6020526000908152604090205460ff1681565b60005433600160a060020a039081169116146114db57600080fd5b600a55565b60085481565b6005546000908190819060ff16156114fd57600080fd5b600160a060020a0333166000908152600c602052604090205460ff16151561152457600080fd5b60068054925082906115399060018301611a13565b50600680548390811061154857fe5b60009182526020909120600890910201600281018054600160a060020a03191633600160a060020a03161790559050670de0b6b3a764000084111561158c57600080fd5b6009548410156115a7576009546115a16116a7565b016115b2565b836115b06116a7565b015b600382015560048101805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a038a1602179055600681018590556115fa818b8b611a3f565b5060018101889055600581018054600160a060020a031916600160a060020a038881169190911791829055600483015460068401546201000090910482169285927fd11935115aa93b9f1f616d0d7702f4593572daa610390123241b3785430281c49291168c604051928352600160a060020a0390911660208301526040808301919091526060909101905180910390a35098975050505050505050565b600354600160a060020a031681565b4290565b600160a060020a0382166000908152600e602052604081205460ff1615156116d257600080fd5b5080600160a060020a03831615156116e75750345b600081116116f457600080fd5b600160a060020a038316156117865782600160a060020a03166323b872dd33308460405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561176457600080fd5b5af1151561177157600080fd5b50505060405180519050151561178657600080fd5b92915050565b60055460009060ff1615806117a35750600b5460ff165b15156117ae57600080fd5b60065482106117bc57600080fd5b60068054839081106117ca57fe5b60009182526020808320600260089093020191820154600160a060020a03168352600c905260409091205490915060ff16151561180657600080fd5b80600301546118136116a7565b101561181e57600080fd5b600481015460ff161561183057600080fd5b6004810154610100900460ff161561184757600080fd5b60048101805461ff0019166101001790556005810154600160a060020a031615156118b3576004810154600682015462010000909104600160a060020a0316906108fc81150290604051600060405180830381858888f1935050505015156118ae57600080fd5b611941565b600581015460048201546006830154600160a060020a039283169263a9059cbb92620100009004169060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561191f57600080fd5b5af1151561192c57600080fd5b50505060405180519050151561194157600080fd5b600481015460068201546005830154600160a060020a036201000090930483169285927f354f3c0c8efabe1a1a07cf222842b008ef284ac185e63bdf8245be8cd2d97f5192909116604051918252600160a060020a031660208201526040908101905180910390a35050565b60005433600160a060020a039081169116146119c857600080fd5b60055460ff16156119d857600080fd5b6005805460ff191660011790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b815481835581811511611055576008028160080283600052602060002091820191016110559190611abd565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611a805782800160ff19823516178555611aad565b82800160010185558215611aad579182015b82811115611aad578235825591602001919060010190611a92565b50611ab9929150611b3d565b5090565b610cfc91905b80821115611ab9576000611ad78282611b57565b50600060018201819055600282018054600160a060020a03199081169091556003830182905560048301805475ffffffffffffffffffffffffffffffffffffffffffff191690556005830180549091169055600682018190556007820155600801611ac3565b610cfc91905b80821115611ab95760008155600101611b43565b50805460018160011615610100020316600290046000825580601f10611b7d5750611b9b565b601f016020900490600052602060002090810190611b9b9190611b3d565b505600a165627a7a723058202c93896a99ed00f70c3be01dbfcc817d0371f619dedcd25175f540c4e980677a00290000000000000000000000001e9f6746147e937e8e1c29180e15af0bd5fd64bb00000000000000000000000016fda2fcc887dd7ac65c46be144473067cff86540000000000000000000000000000000000000000000000000000000000015f90000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000daa172456f5815256831aee19c8a370a835228710000000000000000000000000000000000000000000000000000000000278d00

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

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000001e9f6746147e937e8e1c29180e15af0bd5fd64bb
Arg [1] : 00000000000000000000000016fda2fcc887dd7ac65c46be144473067cff8654
Arg [2] : 0000000000000000000000000000000000000000000000000000000000015f90
Arg [3] : 000000000000000000000000000000000000000000000000000000000002a300
Arg [4] : 000000000000000000000000daa172456f5815256831aee19c8a370a83522871
Arg [5] : 0000000000000000000000000000000000000000000000000000000000278d00


   Swarm Source:
bzzr://2c93896a99ed00f70c3be01dbfcc817d0371f619dedcd25175f540c4e980677a

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.