© AVM GmbH 2004-2009. All rights reserved. www.avm.de

This documentation and the relevant programs (both herein referred to
as "Software") are protected by copyright.

Software is delivered in machine-readable format only (object code
format). Under all AVM intellectual property rights, AVM hereby grants
licensee the non-exclusive right to use the Software. Unless agreed
for a limited time period, the right to use the Software is for an
unlimited time period. Licensee shall be entitled to make a copy
exclusively reserved for personal backup purposes (backup copy).
Unless granted by mandatory law (including but not limited to Art. 69
German Copyright Act for decompiling), licensee shall not be entitled
to modify, disassemble, reverse engineer, decompile or otherwise alter
the Software in whole or in part. AVM reserves all intellectual
property rights except as expressly granted herein. Licensee shall not
be entitled to modify or delete alpha-numerical or other
identification codes on data median and shall transfer such
identification codes onto any legal backup copy. Without the prior
written approval of AVM, licensee shall not be entitled to transmit
any infomation made available herein.

If licensee has received the Software not for commercial puposes of
resale (end user), licensee shall be obliged to transmit the right to
use the Software to a third party only in connection with the product
licensee acquired together with the Software. In the event that
licensee transfers the right to use the Software to a third party,
licensee shall ensure not to grant further rights to this third party
than originally granted to AVM, and licensee shall ensure to impose
this third party the obligations of the present license terms. In such
case, licensee shall not withhold any backup copy. Licensee shall not
be entitled to grant sublicenses. In the event licensee transmits the
Software to a third party, licensee shall be responsible for and shall
release AVM insofar from the compliance of export control laws and
obligations.

If and insofar AVM provides Software for which AVM is only granted a
derived right to use (Third Party Software), the license terms for
such Third Party Software shall additionally apply and prevail. If and
insofar certain Third Party Software in object code format by Texas
Instrument („TI Software“) is provided together with this Software,
licensee may only distribute such TI Software pursuant to a written
license agreement which restricts use to TI Software embedded in the
AVM hardware product licensee acquired together with the Software and
prohibits (unless granted by mandatory law) copying, reverse
engineering, decompiling or disassembling of TI Software. If Open
Source Software is provided, the license terms for such Open Source
Software shall additionally apply and prevail. AVM shall provide
licensee with the corresponding source code of relevant Open Source
Software, if the respective license terms of the Open Source Software
include such obligation. AVM shall inform if the Software contains
Third Party Software and/or Open Source Software and make available
the corresponding license terms on request.

This Software has been produced with all due care and checked for
correctness in accordance with state of the art. AVM hereby disclaims
all liability and warranties, whether express or implied, relating to
this Software’s quality, performance or suitability for any specific
purpose which deviates from the performance specifications contained
in the Software description. AVM shall not be liable for damages
arising directly or indirectly from the use of the manual or related
software, nor for incidental or consequential damages, except in case
of intent or gross negligence. AVM expressly disclaims all liability
for loss of or damage to hardware, software or data as a result of
direct or indirect errors or destruction and for any costs, including
ISDN, GSM and DSL connection charges, related to the Software supplied
and due to incorrect installations not performed by AVM itself.

AVM shall not be obliged to offer any software services. The
information in this Software is subject to change without notice for
the purpose of technical improvement.

AVM offers a manufacturer's warranty for this original product. The
conditions of this warranty are contained in the WARRANTY.PDF file in
the SOFTWARE/INFO folder on the product CD included with delivery.

Trademarks: Unless otherwise indicated, all trademarks mentioned are
legally protected trademarks owned by AVM GmbH. This is especially
true for product names and logos. Microsoft, Windows and the Windows
logo are trademarks owned by Microsoft Corporation in the USA and/or
other countries. All other product and company names are trademarks of
their respective owners.
