contract Pausable is Ownable {
    /*
    * @dev Event to notify listeners about pause.
    * @param pauseReason  string Reason the token was paused for.
    */
    event Pause(string pauseReason);
    /*
    * @dev Event to notify listeners about pause.
    * @param unpauseReason  string Reason the token was unpaused for.
    */
    event Unpause(string unpauseReason);

    bool public isPaused;
    string public pauseNotice;

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

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

    /**
    * @dev called by the owner to pause, triggers stopped state
    * @param _reason string The reason for the pause.
    */
    function pause(string _reason) OnlyOwner IsNotPaused public {
        isPaused = true;
        pauseNotice = _reason;
        emit Pause(_reason);
    }

    /**
     * @dev called by the owner to unpause, returns to normal state
     * @param _reason string Reason for the un pause.
     */
    function unpause(string _reason) OnlyOwner IsPaused public {
        isPaused = false;
        pauseNotice = _reason;
        emit Unpause(_reason);
    }
}
/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
function unpause(string _reason) OnlyOwner IsPaused public {
    isPaused = false;
    pauseNotice = _reason;
    emit Unpause(_reason);
}

/**
 * @dev called by the owner to unpause, returns to normal state
 * @param _reason string Reason for the un pause.
 */